2022年3月13日日曜日

GPIB予備環境構築のため、GP232の予備としてKeysight 82357Bを調達する。そしてHP3562Aの自動計測へ…

 おはようございました。タイトルがなろう系並みに長い漢です。

ここ最近、現場で古い測定器類が不調になり始めることが多くなってまいりました。

我が家の測定器もその心配を寝ねばならない頃合いに差し掛かり、予備がいるよね…。

そんな訳で、一番優先度の高い『GPIB⇔PC』の自動計測周りのインターフェイスもそろそろ考えねばなりません。


現在まで現役だったGP232はずいぶん昔に購入させていただいたもので、このメインのPIC16F876も終息品となり、何かしらの予備が必要です。

しかも近年のEXCELでは標準モジュールはそのまま動かないので、少し改変する必要があります。

まぁ、ソフトは一回書き換えたら使い回しできるので何も問題ないのですが、ハード側の故障はPIC自体が手に入りにくいので致命傷になります。


作者の方は何やら大変な苦労をされていたようで、ありがとうございました以外の感謝の念が絶えません。

ここ数年のコンテンツ消費型のクレクレ君の異様なキチガイっぷりは涙をそそるものがありますよね…。(シミジミ)


さて、そのままPICの変更した奴でUSBってのも(皆がやってるので)あんまり芸がないし、やるなら高速化したい…と、ググってみるとKeysightの82357Bというアダプタの勝手が良いよ?メーカー純正の癖にあの会社にしては意味不明な位安いし…というような感じでしたので、今後会社絡みの仕事を家ですることが増える現実を踏まえてこちらへ移行準備することにしました。


Keysightの82357Bで使用する『Keysight IOライブラリ・スイート』にはVBA周りの環境が整っており、色んなことができるよ?とKeysight自身が色々宣伝されておられ、かなり資料がふんだんにあります。

(ただし、webの資料が結構早めに消えるのは外資故の制限なのかもしれません…)

良い子の皆は『これは使えるッ!』と思った資料は、しっかりローカル保存しときましょうね?


とりあえずメインで使うHP3562A・HP3563Aでのでの取り出し方はこんな感じに落ち着きました。


Sub btnStart_Click()

    

    Dim Rdata       As String               ' 受信データ文字列

    Dim SplitData                           ' 受信されたデータを分割して格納

    Dim PrintData                           ' 配列から個別に取り出したデータ

    Dim Counter         As Long             ' データカウンタ

    Counter = 0

    

    ' 2重起動の防止

    If RunFlag Then Exit Sub

    RunFlag = True                          ' 動作中フラグをセット

    

    ' GPIB 初期設定

    Dim RM As New VisaComLib.ResourceManager        ' リソースマネージャーの定義

    Dim HP356xA As New VisaComLib.FormattedIO488    ' 測定器の定義

    Set HP356xA.IO = RM.Open("GPIB0::1::INSTR")     ' GPIBアドレス 1 の装置設定

            

    ' コマンド送信

    HP356xA.WriteString "DDAS"               'アスキー形式で読み出し

    

    'データ数はヘッダー66+数値801(Re)+数値801(Im)

    'ストリングでごっついので、分割する

    Rdata = HP356xA.ReadString

    SplitData = Split(Rdata, vbCrLf)

    

       ' データの書き込み分割したデータを分けて表示

    For Each PrintData In SplitData

       Range("B5").Offset(Counter, 0) = PrintData

       Counter = Counter + 1

    Next

    

    ' ローカル制御コマンド送信

    HP356xA.WriteString "LCL"

    ' 終了処理

    HP356xA.IO.Close

    Set HP356xA = Nothing

    Set RM = Nothing

    

    RunFlag = False         ' フラグのリセット

    MsgBox "終了しました"

End Sub


ちなみに今まで使用していたGP232であれば、こんな感じです。


Sub btnStart_Click()

    

    Dim Counter         As Long             ' データカウンタ

    Dim Rdata       As String               ' 受信データ文字列

    

    ' 2重起動の防止

    If RunFlag Then Exit Sub

    RunFlag = True                          ' 動作中フラグをセット

    

    ' GPIB 初期設定

    eg.CardOpen                             ' カードオープン処理

    eg.Delimiter = eg.DELIMs.CrLf           ' デリミタの設定

    eg.TimeOut = 3                          ' タイムアウトは3秒


    ' 測定器の初期設定

    eg.ActiveAddress = Range("C2").Value   ' 測定器のアドレス読み取り


    If eg.ErrorHold <> 0 Then

        ' エラーが発生している

         eg.CardCLose               ' カードを閉じます

        Exit Sub                    ' 中止します

    End If

    

            

    ' コマンド送信

    eg.AsciiLine = "DDAS"               'アスキー形式で読み出し

        

    For Counter = 1 To 1669             'データ数はヘッダー66+数値801(Re)+数値801(Im)

        

        Rdata = eg.AsciiLine

     

        Range("A4").Offset(Counter, 0) = Counter         ' データカウンタの書き込み

        Range("A4").Offset(Counter, 1) = Rdata           ' データの書き込み

        

    Next Counter

    

    eg.AsciiLine = "LCL"       '

    

    eg.CardCLose

    RunFlag = False         ' フラグのリセット

    MsgBox "終了しました"

End Sub


どうです?ずいぶんすっきりしたでしょ?GPIBのアドレスはほぼ弄らないし、固定でもいいや…と思ったので面倒臭いから固定にしました。

考えてみればメインの玩具であるHP3562A,HP3563Aのデータ採取は主にこれを使っていた訳で、801点×2軸のデータが数分で取れる素晴らしい道具となっており、この手のツールがないと本当に危険です。しかも今回の変更で数分が数十秒に変わってしまった…

皆様におかれましても、自動計測や周期的なデータ取りで困った際は取り敢えずCSV掃き出し、又はExcel+VBAで逃げるか?程度で試し、先ずはその自動計測が有効か?というのを試されてはいかがでしょうか?

本気でやりたきゃあ後でソフト組めば全然OKです。

動くものが仕様として出てきていれば、ソフト屋さんだって全体像が見れるってもんです。おおよそ外部に依頼するときに上司や余所者や銭ゲバが顔を出してきて余計なものがどっさりついてくるので、保守や費用対効果を考えたら、ひたすらシンプルにして『こんな感じのをバグが出ないようにうまい具合にヨロシク作って?それでUIは現場と一緒に煮詰めよう!』と、お願いするのが一番です。

(いつもの顧客が本当に必要だったものと同じです)


さて、昨今の会社ではさっき言ったことがまさにバンバン行われていて、余計な輩が絡んで元値の10倍に膨らむというのが普通にあったりします。

さらに残念なことに、うっかりスーパーマンに見える私に渡される予算と時間はその開発に必要な額面の100分の1に満たないことが良くあります。

金も時間もないのに成果だけは要求されるというのは、バブル期謳歌のキチガイが上にいる組織ではよくあるパターンです。

皆様におかれましても、何事もシンプルに、バブル期キチガイ上司の言うことは受け流すつもりで仕事にあたり、個人の生活をしっかり充足されていただけることを切に願います。

そんな訳で、個人ごときがやる程度の測定においては、まだまだ安直にLabViewには流れたくないッ!なんて思う今日この頃なのでしたとさ…。(何故か会社の仕事を家の測定器でやってますが…)


誤解の無い様に仕事で使うなら、LabVIEWに流れた方がマジでコスパ良いですよ?とだけは言っておく…。


ではでは、今日はココまで。
またの機会に会える事を楽しみにしています。

2022年3月1日火曜日

EBAZ4205でガッツリ遊ぶ前に電源事情を調べてみることにした

さて、ずいぶん昔?に流行したEBAZ4205の基板の話の続きです。

今回は2.0㎜ピッチコネクタ→2.54mmピッチコネクタの変換ケーブルをサクッと作り、ちょっとした下調べを行ったので記そうと思います。


2.54mmピッチへの変換ケーブルですが、うっかり誤挿入を防ぐために、キーがついているMILコネクタにしようと思いました。

世間様は今だコネクタ周りの樹脂は流通が悪く、どのメーカーも代替品切れ状態が続いております。

オムロンは比較的在庫があるのですが、圧着の端子部が入手困難です。

圧接なら入手可能です。

圧接が嫌(工具がない)なら、ちょっと高いですが日本航空電子の物がまだ手に入ります。

数年前に余計目に買ってなかったことを後悔しながらも、とりあえず今回は13本用意しました。

2.0mmピッチの奴はアリババに転がっているものを使いました。


さて、ここからが本題。

EBAZ4205の電源は残念電源(クソ電源)という話をチラッと風の噂で聞いたことがありまして、基板壊して(壊す可能性を含めて)測るのは嫌なので、とりあえずサクッと出せる範囲でどこら辺が残念なのか?を分かるようにしてあげようと思った次第です。


壊す可能性のある測定というのは、低周波域(概ね1MHz程度まで)の挙動測定です。

ぎりぎりの負荷かけてガンガン動かしてインピーダンスを測ったり、ノイズを重畳してPSRR計測などをすると、どうしてもIC周りのスペックオーバーギリギリの入力をしてしまいます。

FPGAは定格外の領域なので危険です。

電源ICが既知のメーカーの既知のICならいいですが、フットプリントだけTIの製品に似た出どころの怪しそうなICなので、非破壊検査待ったなしでございます。


本来ならもう少し踏み込んで、何枚か壊しながらの測定をしたり、

シャントスルー法で基板のインピーダンス見て、

m9(^Д^)プギャー

してやるべきなのですが、私の懐事情はそれを許してくれませんし、大型特殊のおっさん相手には誰も投げ銭などしてくれません

今回はそこまでの話をする前段階のの中間報告ということで、諦めて頂ければと思います。


また、シャントスルー法でインピーダンスを測るにしても、実際には、DCブロック突っ込んで、ネットワークアナライザ(もしくはTG付スペアナ)を壊さないように、減衰器の減衰量は適切なものを選んで、そのうえで校正かけて、一番S/N比がよく取れそうな減衰器で微調整しながら伝搬の状況を確認する。

勿論条件変われば校正かけなおしなので下手すりゃあ数日潰れる大仕事…


という一連の手順が最低限度必要でして、スペアナへの入力限界を超えないための下調査

を行うためのノイズ調査という括りでもよいかもしれません。

世間ではいまだに電源インピーダンスの測定ですらマイナーな話のなのですが、何時になったらこれらの測定がものすごい重要だということが浸透するのやら…


さて、手始めに起動の電流はどんな感じか?という観点で見ます。

出荷時状態そのままのもので、一切手を入れていません。

運よく電力計をお借りできたので、そいつの波形を貼ろうと思います。

EBAZ4205がこれ





5V0.5Aぐらいでも十分動きそうですが、余力見て最低でも1Aぐらいのものを用意しましょう。


ちなみにQMTECHのボード(XC7Z010)だとこんな感じです。



CPUに負荷がかかっていませんし、FPGAのロジックもほとんど利用されていないので、消費電力はかなり低めの値です。



次に上記のような初期出荷状態の負荷条件で、ノイズの状況を確認しようと思います。

とりあえず家のDL1740ではもうノイズフロアの領域に入ってしまって、全くと言っていいほどまともに計測できません

ですので、急遽準備したマシな物(キーサイトのMSO3000)で測定します。

本当はFETプローブや差動プローブを用意すべきなのですが、『そこそこ見れたし、準備が面倒くさかった』という事で、勘弁してください。


EBZA4205のノイズに危ない兆候がありました。





Ch1:3.3V

Ch2:1.5V(DDR-SDRAM)

Ch3:1.8V(VCC AUX)

Ch4:1.0V(VCC INT) シルク上は1V9というロットも存在するので要注意。

色々なトリガー状態で観察してみたのですが、1.8V系統が主要因であることは間違いないようです。

Ch3が800μ秒程度毎に大きく振動しているのがわかります。

150mV近いです、明らかに問題のある挙動ですよね。

それ以外はいたって平穏な様子。

また、この振動を拡大すると…


こんな感じで120~150MHzで振動が起きていることがわかります。

PCBパターンやレイアウトの設計上の問題でしょうか?

共振しやすい周波数があるようです。中華製のこの手のボードはビア打ちが結構甘くて、しょうもないところでインピーダンスがガッツリ狂ってモードが立っていたり、とりあえずは繋げてみたら運良く動いた!的な回路のまま出してくる輩も結構まだいます。

一回シャントスルーでガッツリ測った方が良いかもしれません。

その他の電源は、この1.8Vの振動に揺られて若干の被害を受けている模様。

ただ、動作の支障となるまでには至っていないようです。

こういうところにPSRRを測る理由があるんですが、いまだに一般的ではないんだよなぁ~残念。


念のため、ZYNQ特有の問題ではないことをしっかり確認したいので、QMTECHのボード(XC7Z010)でも1.8V(VCC AUX)の挙動を確認しておきます。



こちらは問題なし…と言いたいですが、スペック的に危険領域です。

パスコンの容量と数がデータシート上はNGです。

ですので、パスコンを極限まで削って強引に動かしている…

という認識でいたほうが良いかもしれません。

パスコンを増やしてノイズの幅を減らしたいですが、それをすると否が応でもループゲインが下がります。

下がるとインピーダンスを補うためのコンデンサが必要になります。

そうやってガッツリ沼に嵌るので、結局は電源ICを良い物(でかい電流流せて高い周波数領域をカバーする品)にせざるを得なくなるのです。

ちょっとコンデンサを増やす分には電気的には問題ありませんが、今回のQMTECHのボード(XC7Z010)では基板自体の空き空間がありません。

内層数を増やして信号を中に持っていくか?基板サイズを上げてゆとりを持たすか?お高い高級なコンデンサで一発逆転を図るか?IC変えて高周波数&広帯域化しまうか?の程度の選択肢になります。

というわけで、基本機能検証用のお試しボードだからと割り切った設計になっています。


とまぁこんな感じなので、玩具・評価用として遊ぶには程よい品物ですが、ガッツリ本気の用途には格安ボードは基本使ってはいけないことを十分認識しておきましょう。


ここからは超個人的見解ですが、EBAZ4205の落としどころの経緯は、TIのTPS563201の劣化版互換電源ICを使ったら制御帯域が低すぎてリップルノイズも大きく、電源スペック守れんのでパスコンバンバン置く羽目になった。

だが、パスコン置いたら高い周波数領域カバーできるようなパターン・レイアウトが困難になった。

おまけに一発目の負荷急変の電源供給の容量がカバーできても、数発連続で来るような急な負荷動作の時はやっぱり高い周波数で振動してしまう。

…どうせ大した制御(主制御)ではないし数年で終わる代物、見なかったことにしよう…

と、そのまま出荷…こんなドラマを感じてしまいました。


ではでは、今日はココまで。
またの機会に会える事を楽しみにしています。