2023年1月11日水曜日

自動計測への目覚め ~電源効率の自動測定化から始める~

 おはようございました。

私は技術士という立場上、

『やっちゃいけないことは正々堂々と言っておくべき立場』

なこともあって、敢えて職場の空気読まずに問題発言をバンバン発言します。

他人から見たらきっと、

言っても聞かない(その会社の風土では正しくても世間からすればダメなことは煩い)

見てほしくないものだけは見つけてくれるくせに、自分の仕事はしょうもないミスがたまにある(致命傷になりそうなもの以外は大体鈍感)

その癖問題がありそうな所だけは何故か嗅ぎ付けて割り込んでくる(致命傷には敏感)

そんな、嗅覚以外は大体残念なこともあって、どこの職場でも大体干されている今日この頃、いかがお過ごしでしょうか?

目の前に転がってきた仕事だけはさっさと片付けてしまうので、現場でガチンコしている職人さん意外には大体ウケが悪いという、ガッカリ状態でございます。

こんな状態になると『あいつに話したら粗捜しされる!』となるようで、基本放置プレイが始まります。

そういう干されているというか思えないような状態にあっては、私みたいな“生産的な仕事がないと生きてられない人間”にとっては地獄でしかなく、“何もせずとも金が落ちてくる(給与が支払われる)状況ほど怖いものはない”という恐怖に駆られます。

私自身も過去、優秀な後輩に依存して腐っていたことがあるのですが、そこから戻るためにかかる精神的苦痛って、半端ないんですよ。

はっきり言って、継続的に自律の努力をして、腐らないほうが楽です。

しかしこれがまた結構大変です。

金もかかるわ、情報は常に複数ソースを参照する必要があるわ、世間の多数派は大体残念側なので延々と孤独と戦わねばなりません。

だからこそ、世の中は自分で考えない側に堕ちた人間は、そのほとんどがまともな人間に戻れない訳で、これこそが失われた30年の根本たる原因でしょう。

多くの日本人は自律することを辞めたので今の惨状があるわけです。


さて、そんな訳で真面目に仕事をするので窓際族になってしまったという訳の分からない状況になってしまった私、ここぞ!とばかりに今までやった仕事の中で超絶面倒くさかった作業を半自動化しようと思い始めました。


中でも簡単に片づけられそうなものはないか?と探し始めたところ、偶々中古で校正後間もない電力計、横河電機のWT200(RS-232C付)が転がっていました。

これは何かできそう!と早速落札し、先日まで何かに使える…と遊びで購入した菊水電子工業のPIA4810+OP02-PIA(GPIBからアナログ出力を出せる玩具)と組み合わせて、効率とロードレギュレーションの測定の半自動化をしようと思い立ちました。


さて、最初は私がすでに購入して持っている、ソコソコ良さ気な電源PCR-500Mを使って、

PCR-500M(GPIBで測定データ取り出し)→DUT→電力計(WT200)→PLZ-152WA(+PIA-48140で制御)

みたいな形か、

電源→電力計(WT200)→DUT→ELS-304(GPIBで測定データ取り出し)

で攻めようか?と考えていたのですが、何やら電力計は2台目が出ていることに気づき、素直に

電源→電力計①→DUT→電力計②→PLZ-152WA(+PIA-48140で制御)

という形で進めることにしました。

うちのPCR-500Mの問題かもしれないのですが、RS-232Cで通信してると計測データのヘッダにゴミデータが出たり、うまく通信できないことがある模様。

WT200は結構古い機種なので、クレストファクターの問題があるにせよ、素直にシンプルな構成にしようと思います。


さて、PIA4810のセットアップから始めます。

この機種は純正のコンフィグレーションソフトが必要です。ノード番号と接続する機種を指定せねばそのまま使えないという、なんか微妙に面倒くさい代物だったりします。

中古品は付属CDがない!あっても年月立ったらCDは読み取れなくなる。

しかもダウンロード欄にもこれらのソフトの情報は出てきません。

しかし!計測機ドライバの欄のIVI-COM多重環境計測機ドライバというソフトの中に、必要なソフトがすべて同梱されています。


…分かりにくい…


さて、本体のコントロールボードスロットにOP02-PIAが刺さっていたので、それを利用します。

それぞれのノードに適当な機種を選択します。1つのボードにつき2ch実装されており、コマンド“VOUT”、“IOUT”で出力を決定できます。この時の指定値は選択した機種の最大出力の値に縮尺されるようです。

なので、換算の面倒くさがりな私は10V100Aの機種PAK10-100Aにしました。

それぞれの出力について注意点があるようで、IOUTについては0レベルの出力が困難で、若干出力が出る模様。また最大値も10Vを若干超える値が出ます。

そのため、それなりに精度よく操作したいならば、VOUTの出力一択です。ご注意下さい。

…分かりにくい…

…そのうえ汎用性に乏しい…

菊水電子は多少雑に使っても壊れない&直感で簡単に使える安心感はあるものの、こういう本筋とは違うちょっとしたところが残念仕様なので、注意が必要です。

…PLZシリーズの電流モニタ出力が周波数特性酷いとか、意外と知られていない…



次に電力計WT200の接続です。最大ボーレートが9600bpsなのですが、この速度で通信をしていると、データがうまく出力されないときがあり、たまに通信エラーが出ます。素直に4800bpsで進めましょう。

こういう罠を平気でぶっ込んでくる辺り、さすがは横河電機といったところ…


そしてこれらをExcelのVBAで実装してゆきます。RS-232Cが2ch以上あるので、いつものEasy-Commを使うのはちょっと面倒です。そのため、素直にVISA COMでの実装をしてゆきます。

今時の業界標準はコレなので、合わせてみようと持った次第。


そんな訳でこんな感じで実装してみました。汚いExcel VBAソースですがご容赦を…

Option Explicit


' 効率測定自動化用マクロ

' PCR500M - WT200 - DUT - WT200 - PLZ152WA or ELS-304(負荷量はアナログ制御) の組み合わせ

' 効率を100%負荷から0%負荷まで1%毎に計測してゆく


Dim RunFlag As Boolean      ' 動作中はTrueとなるフラグ


' スタートボタンクリック時のプログラム

Sub btnStart_Click()

    

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

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

    Dim WT_ReadErrorFlag As Boolean         ' WT200の計測ミス時のフラグ

    Counter = 0

    

    ' 2重起動の防止

    If RunFlag Then Exit Sub

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

    

    ' GPIB 初期設定

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

    

    ' PIA4801初期設定

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

    Set PIA4810.IO = RM.Open("GPIB0::" & Range("C4") & "::INSTR")   ' GPIBアドレスの設定

    PIA4810.WriteString "NODE1"                                     ' NODE1 を選択

    PIA4810.WriteString "CH1"                                       ' CH1 を選択

    PIA4810.WriteString "VSET0"                                     ' 出力は0V

    

    ' WT200 電源側 初期設定

    If Range("E3").Value = True Then

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

        Set WT200_IN.IO = RM.Open("ASRL" & Range("C3") & "::INSTR")      ' COMポートアドレスの設定

        WT200_IN.WriteString "DL0"                         ' ターミネータをCR+LFに設定

        WT200_IN.WriteString "DS1"                         ' 表示は5桁に設定

        WT200_IN.WriteString "H0"                          ' 出力にヘッダをつけない

        WT200_IN.WriteString "FL1"                         ' 周波数判定用のフィルタはONに設定

        WT200_IN.WriteString "AA1"                         ' 電流をオートレンジに設定

        WT200_IN.WriteString "AV1"                         ' 電圧をオートレンジに設定

        WT200_IN.WriteString "AC1"                         ' 平均化回数を8回に設定

        WT200_IN.WriteString "AG1"                         ' 平均化を有効に設定

        WT200_IN.WriteString "AT0"                         ' 平均化を指数化平均演算に設定

        WT200_IN.WriteString "DA1"                         ' ディスプレイAを電圧に設定

        WT200_IN.WriteString "DB2"                         ' ディスプレイBを電流に設定

        WT200_IN.WriteString "DC3"                         ' ディスプレイCを電力に設定

        WT200_IN.WriteString "HD0"                         ' 出力データはサンプルレートで更新

        WT200_IN.WriteString "MN0"                         ' 出力データはRMS=実効値に設定

        WT200_IN.WriteString "OFD0"                        ' 通信出力は通常測定用初期設定

    End If

    

    

    ' WT200 電子負荷側 初期設定

    If Range("E6").Value = True Then

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

        Set WT200_OUT.IO = RM.Open("ASRL" & Range("C6") & "::INSTR")      ' COMポートアドレスの設定

        WT200_OUT.WriteString "DL0"                         ' ターミネータをCR+LFに設定

        WT200_OUT.WriteString "DS1"                         ' 表示は5桁に設定

        WT200_OUT.WriteString "H0"                          ' 出力にヘッダをつけない

        WT200_OUT.WriteString "FL1"                         ' 周波数判定用のフィルタはONに設定

        WT200_OUT.WriteString "AA1"                         ' 電流をオートレンジに設定

        WT200_OUT.WriteString "AV1"                         ' 電圧をオートレンジに設定

        WT200_OUT.WriteString "AC1"                         ' 平均化回数を8回に設定

        WT200_OUT.WriteString "AG1"                         ' 平均化を有効に設定

        WT200_OUT.WriteString "AT0"                         ' 平均化を指数化平均演算に設定

        WT200_OUT.WriteString "DA1"                         ' ディスプレイAを電圧に設定

        WT200_OUT.WriteString "DB2"                         ' ディスプレイBを電流に設定

        WT200_OUT.WriteString "DC3"                         ' ディスプレイCを電力に設定

        WT200_OUT.WriteString "HD0"                         ' 出力データはサンプルレートで更新

        WT200_OUT.WriteString "MN0"                         ' 出力データはRMS=実効値に設定

        WT200_OUT.WriteString "OFD0"                        ' 通信出力は通常測定用初期設定

    End If

    

    If Range("E5").Value = True Then

        ' PCR500M 初期設定

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

        Set PCR500M.IO = RM.Open("ASRL" & Range("C5") & "::INSTR")      ' COMポートアドレス設定

        PCR500M.WriteString "OUTP:COUP AC"                              ' カップリングAC設定

        PCR500M.WriteString "CURR 2.5"                                  ' AC2.5Aでリミットをかける

        PCR500M.WriteString "FREQ 60"                                   ' 周波数は60Hz

        PCR500M.WriteString "VOLT 100"                                  ' AC電圧は100V

        PCR500M.WriteString "VOLT:OFFS 0"                               ' DC電圧は0V

        PCR500M.WriteString "VOLT:RANG:AUTO"                            ' 電圧レンジは自動に設定

        PCR500M.WriteString "OUTP 1"                                    ' 出力ON

        Application.Wait [NOW()] + 500 / 86400000                       ' 出力安定までの待ち時間 500ms

    End If

            

    If Range("E7").Value = True Then

        ELS304.WriteString "SW1"                                        ' 負荷ON

        Application.Wait [NOW()] + 500 / 86400000                       ' 出力安定までの待ち時間 500ms

    End If

            

    ' 取得データのタイトルを書く

    ' 入力のデータ

    Range("A9") = "取得回数"        ' Aは取得回数を記載

    Range("B9") = "時間"            ' Bは時間を記載

    

    If Range("E3").Value = True Then

        Range("C9") = "入力電圧"        ' Cは電圧を記載

        Range("D9") = "入力電流"        ' Dは電流を記載

        Range("E9") = "入力電力"        ' Eは電流を記載

        Range("F9") = "入力周波数"      ' Fは電流を記載

    End If

    

    ' 出力のデータ

    If Range("E6").Value = True Then

        Range("H9") = "出力電圧"        ' Hは電圧を記載

        Range("I9") = "出力電流"        ' Iは電流を記載

        Range("J9") = "出力電力"        ' Jは電流を記載

        Range("K9") = "出力周波数"      ' Kは電流を記載

    End If

        

    ' いきなり最大負荷なので、最初は電力計のオートレンジを安定させる

    PIA4810.WriteString "VSET10"                                '10V出力

    Application.Wait [NOW()] + 3000 / 86400000                  ' 数値安定までの待ち時間 3000ms

    

    For Counter = 0 To Range("G2")

        DoEvents

        PIA4810.WriteString "VSET" & Round((10 - Counter * 10 / Range("G2")), 1) '(10-カウンタの値×10÷測定点数)V出力

        Application.Wait [NOW()] + 7000 / 86400000                   ' 出力安定までの待ち時間 7000ms

        Range("A10").Offset(Counter, 0) = Counter                    ' 取得回数の書き出し

        

        ' WT200入力側からのデータ読み出し

        If Range("E3").Value = True Then

            WT_ReadErrorFlag = False

            Do

                DoEvents

                If WT_ReadErrorFlag = True Then

                    Application.Wait [NOW()] + 1000 / 86400000              ' 読み込みエラーで戻ってきた場合は待ち時間 1000ms 待って再取得

                    WT_ReadErrorFlag = False

                End If

                WT200_IN.WriteString "OD"                                   ' WT200入力側測定値の問い合わせ

                

                Rdata = WT200_IN.ReadString                                 ' 電圧データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("C10").Offset(Counter, 0) = Val(Rdata)                ' 電圧データの書き込み

                

                Rdata = WT200_IN.ReadString                                 ' 電流データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("D10").Offset(Counter, 0) = Val(Rdata)                ' 電流データの書き込み

                

                Rdata = WT200_IN.ReadString                                 ' 電力データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("E10").Offset(Counter, 0) = Val(Rdata)                ' 電力データの書き込み

                

                Rdata = WT200_IN.ReadString                                 ' 周波数データの取得

                Range("F10").Offset(Counter, 0) = Left(Rdata, 11)           ' 周波数データの書き込み

                Rdata = WT200_IN.ReadString                                 ' データ"END"の取得

                Range("G10").Offset(Counter, 0) = Rdata


            Loop While WT_ReadErrorFlag = True                              ' エラーがあったら読み込みやり直し

        End If

        

        ' WT200出力側からのデータ読み出し

        If Range("E6").Value = True Then

            WT_ReadErrorFlag = False

            Do

                DoEvents

                If WT_ReadErrorFlag = True Then

                    Application.Wait [NOW()] + 1000 / 86400000              ' 読み込みエラーで戻ってきた場合は待ち時間 1000ms 待って再取得

                    WT_ReadErrorFlag = False

                End If

                WT200_OUT.WriteString "OD"                                  ' WT200出力側測定値の問い合わせ

                

                Rdata = WT200_OUT.ReadString                                ' 電圧データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("H10").Offset(Counter, 0) = Val(Rdata)                ' 電圧データの書き込み

                

                Rdata = WT200_OUT.ReadString                                ' 電流データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("I10").Offset(Counter, 0) = Val(Rdata)                ' 電流データの書き込み

                

                Rdata = WT200_OUT.ReadString                                ' 電力データの取得

                If Rdata Like "*999999.E+3*" Then                           ' Like演算子で数値エラーがが含まれているか判定する

                    WT_ReadErrorFlag = True                                 ' エラー有ならフラグを立てる

                End If

                Range("J10").Offset(Counter, 0) = Val(Rdata)                ' 電力データの書き込み

                

                Rdata = WT200_OUT.ReadString                                ' 周波数データの取得

                Range("K10").Offset(Counter, 0) = Left(Rdata, 11)           ' 周波数データの書き込み

                Rdata = WT200_OUT.ReadString                                ' データ"END"の取得

                Range("L10").Offset(Counter, 0) = Rdata


            Loop While WT_ReadErrorFlag = True                              ' エラーがあったら読み込みやり直し

        End If

            

        

        Range("B10").Offset(Counter, 0) = Format(Now, "hh:mm:ss")   ' 採取時間の書き出し

    

    Next

    

    If Range("E5").Value = True Then

        PCR500M.WriteString "OUTP 0"                                    ' PCR500M 出力OFF

        PCR500M.WriteString "SYST:LOC"                                  ' ローカルに戻す

    End If

    

    PIA4810.WriteString "VSET 0"                                        ' 電子負荷の出力最小状態


    ' 終了処理

    If Range("E5").Value = True Then

        PCR500M.IO.Close

        Set PCR500M = Nothing

    End If

    PIA4810.IO.Close

    

    If Range("E3").Value = True Then

        WT200_IN.IO.Close

        Set WT200_IN = Nothing

    End If

    

    If Range("E6").Value = True Then

        WT200_OUT.IO.Close

        Set WT200_OUT = Nothing

    End If

    

    Set PIA4810 = Nothing

    

    Set RM = Nothing

    

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

    MsgBox "終了しました"

End Sub


' ストップボタンクリックイベント

Sub btnStop_Click()

    RunFlag = False

    ' 終了処理

    If Range("E5").Value = True Then

        PCR500M.WriteString "OUTP 0"                                    ' PCR500M 出力OFF

        PCR500M.WriteString "SYST:LOC"                                  ' ローカルに戻す

        PCR500M.IO.Close

        Set PCR500M = Nothing

    End If

    

    If Range("E3").Value = True Then

        WT200_IN.IO.Close

        Set WT200_IN = Nothing

    End If

    

    If Range("E6").Value = True Then

        WT200_OUT.IO.Close

        Set WT200_OUT = Nothing

    End If

        

    PIA4810.WriteString "VSET 0"                                        ' 電子負荷の出力最小状態

    PIA4810.IO.Close

    Set PIA4810 = Nothing

    

    Set RM = Nothing

End Sub



' クリアボタンクリックイベント

Sub btnClear_Click()

    If RunFlag Then

        If MsgBox("停止してデータをクリアしてよろしいですか?", vbExclamation + vbOKCancel) = vbOK Then

            Range("A9:Z65536").ClearContents

            RunFlag = False

        End If

        Exit Sub

    End If

    

    If MsgBox("データをクリアします", vbInformation + vbOKCancel) = vbOK Then

        Range("A9:Z65536").ClearContents

    End If

End Sub


'----ここまで


そして適当なAC-DCコンバータの特性を測ってみます。

ちょうど秋月電子の5V2AのACアダプタ(GF12-US0520)があったので、こいつを生贄に捧げます。

そして測定した結果がこれ…。


今までの手作業では、無負荷から軽負荷の立ち上がり部分は数%刻み、中間は10%刻みぐらいで測定していました。

しかも計器のデジタル表示を目測で使用していて、手書きのメモ用紙に羅列を書き込み、後でExcelの表にする、そしてグラフ化して…という1系統1回の計測で大体合計1~3時間かかっていました。

しかも超絶面倒くさいので、やるというハードルもかなり高いです。

やる気になるまでにモチベーションをガッツリ上げてハイになる必要があるのです。

正直な話、電源インピーダンスやPSRRの測定よりもやりたくない測定でした。


しかし、この半自動化をすることによって、これでソコソコ正確な値を1%刻みぐらいでもガッツリ計測できるようになりました。しかも測定器の準備から30分ソコソコで1系統、2系統目からは15分弱で測定可能です。

しかもボタンを押したら後はコーヒータイム(緊急停止の心づもりだけしてれば良い)

※測定器のウォームアップは加味しない


今回電子負荷はPLZ-152WAやELS-304をアナログで使用しているので、最初に最大負荷電流を設定しておいて、10V出力でその負荷電流に設定してしまいます。

あとはPIA-4810を使って外部制御で1%刻みぐらいまでなら余裕をもって目標値への制御が効くので、綺麗に測定ができます。

何なら軽負荷の時はもっと細かくとってもいいかもしれません。


また、負荷を変化させた時の待ち時間を削ればもっと短くできそうですが、とりあえず安全圏の値1000msとしました。

※2023/01/15:WT200の平均化処理の都合で、待ち時間を7秒に増やしました。

仕事でもないし、大量に測定するわけでもありません。

世間の電源で癖の強い奴にあっては、安定するまで結構時間がかかるものもあります。

そんな訳で、毎回待ち時間を設定するのもどうか?と思うし、ここから削っても高々知れたもんです。とりあえずは外に待ち時間のパラメータを出さずに進めようと思います。


(と言いながら、実際は会社での仕事をこれでやる羽目になるんだろうけども…)


さて、これを見た方は気づいたかもしれません。

『少し前に電子負荷ELS-304を買ったときに、PCR-500Mと組み合わせて測定できたんじゃないの?』

と…。

『うん!それ、PIA-4810とWT200買って、VBA組んでいる後半で気づいた!』

…左遷にパワハラに、何分心に余裕がなかったんですよ…

ということで許してもらおう…。


さて、そんな訳で、

『こいつの効率や特性はどうなってんの?』

とか、現物持ってて知りたい方はご連絡ください。

勿論PC用のATX電源なんかの特性も測れます。

気が向いたらお手伝い(内職)できるかもしれません。

気が向いたら、私にご相談ください。


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

2022年11月30日水曜日

ノイズ・電源インピーダンスを測るためのDCブロック・ハイパスフィルタの特性測定

こっち(広島)に来て測定器のノイズがなんか酷いのだが、ひょっとしてAC電源(=コンセント)が屑なんじゃねぇの?

おはようございました。

見習い変ジニア@電源に疑問を持ち始めた 漢です。


測定器のノイズについて、自宅(米子)では何の問題もなかったのですが、広島に左遷されてからというもの、ずっとなんだかよく分らない周期的なノイズ(30kHzぐらい?)にかなり悩まされております。

特にレトロな装置を愛する(というよりは中古装置しか買えないことが多い)我が家のお財布事情と、測定器類を絶対に買わせない!という何らかの確固たる意志を持った職場の圧力にあっては、中古機器を整備してそれなりの測定品質とよろしくない不確かさの前提で色々作り込むしかない訳です。

おまけに会社自体に測定器を持ち込むには重量がものすごく、とんでもなく面倒くさいので、実質自宅に引きこもりながら色々測定するという有様。

時々タイムカード押しに会社に来るとかふざけた出勤状態なこともある訳です。

そんな、測定器を愛してやまない?生活にあっては、私の愛器が米子から広島に移った際に何やら調子が悪い症状が続いており、測定器に触るとなんかビリビリする…ということも屡々…。


古い測定器は

トランスで変圧→電解コンデンサで平滑→リニアレギュレータで商用周波数帯のPSRR確保で綺麗で理想的電源ですね?ニッコリ!

という単純な方式であります。

なので、AC電源自体が高周波まみれのクソ汚い電源である可能性についてはあまり考慮されていません

リニアレギュレータのPSRR特性を測ってみればわかりますが、少しでも周波数が高い領域は完全に門外漢なのです。かといって、発熱万歳なリニアレギュレータ業界において、高速なリニアレギュレータの開発は絶望的です。

とりあえずレトロな装置類には高周波系のノイズを消せるようにパスコン打ち増し・良い電解コンデンサに打ち換えで何とか耐えていますが、狭い装置に於いては逃げようもありません。


こりゃあ何とかせんといかんなぁ~と思い、カードの締め日のおかげで良さげな代物をボーナス一括払いができたことから、ついつい測定の下準備から始めようと思った次第。


電源品質の可視化について、単純なやり方としては、50Hz、60Hzといった商用周波数帯をフィルタリングして、他の周波数帯の成分を解析するとか、素直に電源品質アナライザ使うとかを思いつきます。

今回の対象は単純に電力系統にぶら下がる受動部品側の問題ではなさそうです。そのため、インバータから放射される基本周波数が比較的高めのノイズに絞ることにしました。


また、今回のボーナスでは、会社で使う開発用PCを自腹で買うことになったので、電源品質アナライザは残りのポケットマネーではとても手が届きません

諦めて、良さげなハイパスフィルタで検討してみることにします。


え?何で会社用のPC買うのかって?

会社では組み込みソフトも扱うんですが、会社の事務用PCにはそのソフト入れてはならないって決まりがあります。

それでも出張が無い間はこっそり入れて何とかやってたんですが、出先でビルドしなおせ!とか訳の分からんことを言い始める上司のせいで、自腹で買う羽目になったのです。

勿論1年半前からソフトウェア開発用のPCが絶対いるから買って!って言い続けているのです。

しかし、その上司は自分に都合の悪いことは全て忘れるわ、自分の保身のために

『予算使いたくないから…』

個人の測定器を徴用する絵に描いたような素晴らしいクソ上司共だったりします。

1年半言い続けたうえに何もせず(寧ろ言う度にキレてくる)、この前ついに会社のセキュリティー担当に見つかって怒鳴られて

『(セキュリティー部門に対して改善策として)買う!』

と話がまとまったものの、

『買う!(但し、すぐに買うとは言っていない。永遠に先延ばししても問題ない)』

だったようで、結果的にどうしようもなくなったので、私は個人でしぶしぶ買うという選択肢を迫られたわけです。

また、別件で会社で4Kの動画編集をさせられそうになったこともあるのですが、会社の事務PCではスペック的にきつかったようで、H.264のエンコード時にメモリ不足で落ちるという症状に見舞われて、『PCが残念スペック過ぎてできません!』と言ったら『家でやって持ってこい!』としつこいぐらいに圧迫を受けました…。

『分かるかなぁ~?これがコンプライアンスとか騒いでいる企業において、取締役が堂々とコンプライアンス違反を強要する日本のごく一般企業の実態なんだぜぇ~』


…まぁ、そんな訳で、移動開発用PCとして15万ぐらい飛びました(泣


ということで、残り少ないポケットマネーでできることと言えば精々フィルタを買うことぐらいな訳です…。

(くそぅ、移動開発用PCが無けりゃあ電源品質アナライザに手を出せたものを…いや、それも会社で買えよ!って突っ込みが入りそうですが…)

元々家で開発PCとして2年前に買ったPCを使い回してたので、“移動”の必要性さえなければそれで済んでいたのですが…


そんな訳で、前置きが長くなりましたが私が目先でできることはフィルタの特性測って、問題ないレベルの差動プローブで測って、

『AC電源(=コンセント)がクソだったね、残念!』

と、転職覚悟で米子に戻るか次のボーナスでノイズカットトランスを買うか、どちらかの理由の証明することぐらいしかない訳です。



さて、今手持ちの課題としている電源品質のクソ加減を知る手立てのほかに、SMAのDCカットの低周波域の測りたいという内情があります。

これの理由としては、シャントスルー法による電源インピーダンス測定のための下準備です。

『電源インピーダンスを測定する際に、電子負荷で低域を測定したのち、高域をシャントスルー法にて測定するのだが、どの辺でデータを合わせるか?』という指標が必要になります。

そのため、電源印加時にネットワークアナライザが壊れないように、DCカットフィルタの使用が必要となりますが、そいつがどんな素性か?を知らない状態で使うのは大変危険です。

とは言え私は貧乏変ジニア…nanoVNAやLiteVNAみたいなお手頃装置をこよなく愛している高級機など触ったこともない貧乏変ジニアなのです。

高域で信頼できるような測定器はないので、低域の素性だけでも測っておこうと思った次第。


さて、今回は入手性の高い物でテストすることにしました。

DigiKeyにて販売していたCRYSTEK CBLK-300-3

AMAZONに転がっていたレーザーマーキング済みのDCカット


そして今回追加で投資購入した

THORLABS で販売している 5kHzのハイパスフィルタ EF115


です。

5kHzを選んだ理由ですが、

  • 5kHzなら最近のインバータならばだいたい基本周波数を超えているので、そこそこ測れそう
  • 代表特性のサイドローブの特性が一番奇麗だった

…えぇ、理由なんてそんなもんです。


さてお待ちかね、フィルタの特性です。

入出力はだいたい50Ωで終端してあります。また、EF115の測定に当たっては、低域の減衰傾向を正しく測定するために、kHz以下の低域の減衰はHP3563Aにて測定を行いました。

流石は専用機!ダイナミックレンジがデカくてものすごい優秀ですよね!!

持っててよかった専用機!予備機(HP3562A)があるので壊れても安心です。

そんな訳で、MHz帯も綺麗に広いダイナミックレンジで測れる装置が欲しい今日この頃であります。

CRYSTEK CBLK-300-3の低域の暴れている件は、面倒くさい(私は使わない前提)という理由でHP3563Aでは測っていないため、S/Nが悪くてギザギザになっていますが、凡その傾向は取れているのでOKとしました。(こいつの使用目的は商用周波数のカット目的ではないですし…)

御覧の通り、本来高速な電子負荷でそこそこ確実な測定環境が準備できる場合は CRYSTEK CBLK-300-3 一択だと思います。

出どころの分からない中国製の物はかなりコンデンサが大きいので、DCバイアスやACの波形が結構動くときに歪むんじゃねぇか?(どうせ安物のコンデンサでしょ?)と少々心配になります。ただ、私みたいな貧弱な測定環境の数kHz以降は全てシャントスルー法に任せる前提なら非常に有用です。


電源ノイズのの調査については、当初の目論見通り THORLABS の EF115 を使えば、インバーター関連のノイズだけをうまく抽出できそうな感じです。

2kHzを少し超えても-57dBは稼げています。スペック通り5kHzから上は-3dB以内で軽く揺れる程度ですし、20~30MHzまでは取れるということなので、凡その傾向を取る手段としては許容範囲でしょう。

肝心の商用周波数の減衰はおおよそ90dB弱ですので、141Vのピーク電圧が5mVまで減衰できることを示唆しています。

その後もそこそこ減衰できていますから、インバータ依存の高周波を絞って撮れそうです。自宅(米子)に転がっているインバータで試して行けそうなら、広島の宿舎や外でも試験してみたい…と思います。


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

2022年10月31日月曜日

実際のところ日本は、生半可な努力では修復不可能なほどに技術力は低下しているのではなかろうか?という話

某企業の開発系お偉いさん『技術のない奴は開発したらあかんのか?』

おはようございました。

見習い変ジニア@(゚Д゚)ハァ?…何言ってんだお前…中々のパワーワードを食らった漢 です。

毎年同じミスして成果を出せてなもんだから、私が最低限度比較検討できる資料用意したので、最低限それを読んでから議論しましょうね?って言ったらこれですよ…。


開発の担当者、しかもマネージャークラスが技術力なんてなくてもいいと断言する様は、ものすごいカルチャーショックです。素人のガラガラポンが許される時代なんて1990年より少し前あたりでとっくに終わった話と思っていたのですが、この組織ではそうではなかった模様。


実はこのお方、部下に作れと命令した資料に関しては、できあがったよ?と渡しても一切見ません。

製品の開発中に起きている障害の原因と対策についての資料を提出しても一切目を通しません。

おまけに自分の言ったことですら数日後にはすべて忘れます。

やるから手を出すな!と言ってくる発注処理は6カ月以上延ばします。

そのくせ業者と身内には一生懸命マウントとってきやがるのです。

所謂プロジェクトクラッシャーなのですが、頑張っている振りは欠かせませんし、昔ながらの方々との飲み会は大好きです。

さらに口先では解った振りしてそれっぽい事並べて煙に巻いてくるもんですから、技術開発の『ぎ』もわからんような経営層な方々には大層可愛がられていまして、かなり面倒くさい状況にあります。(というか、この企業の役員クラスの方々が、これの上位互換なところを見ると、上司の真似をしてのし上がろうとしている劣化コピーなだけの気もしますが…)

この世代特有の文句ばっかり言ってる声だけデカい奴は重宝される症状かもしれませんが、当事者になることだけは避けたいですよね…。


自社技術!とか言いたいなら技術の分かる役員が居ないと駄目だっていう典型例ですよね。

せめて技術士が普通に取れるレベルになってから技術的な判断しろよ…と思うわけです。今まで見てきた潰れた企業や某自動車企業、某家電企業様方と同じ構図です。

さて、そんな日本の衰退した理由がよく見えたってことで今日の話題です。


最近色々と慌ただしいことが多く、
爺になったら時間が余ってくるもんだと思っていたのですが、ガキの時よりも全く自由な時間が取れないという、何とも情けない状況に陥りつつあります。

さて、そんな今日は失われた30年での技術衰退が実はとんでもない事になってんじゃないか?って話です。

ご存じの通り、バブル期の後半から拝金主義醸成。そして小泉&竹中による自己責任論醸成、そしてとどめの新自由主義(銭ゲバ崇拝)推進&TPPによる全ての関税自主権放棄によって、日本は海外の汚い銭ゲバどもの草刈り場になりまして、国民が普通に住む水準でいられるためにはもうそろそろ食うところが無いんじゃないか?っていうぐらい一気に衰退しております。

まぁ、そっち系の輩はそれでも金を絞りたい連中ですから、食・水といった生活基盤にガッツリ牙を立てながら我々を食い尽くそうと躍起になっています。
某国様はドイツを玩具にする気でイエローモンキーは軽くる叩く程度だと思っていたのに、イエローモンキーに噛みつかれたのがよっぽど嫌だったんだろうなぁ~なんて思うところです。
尤も、今は完全に下僕の奴隷化しておりますが

さて、こんな自己責任論を掲げた世の中において、我々エンジニアの世界においても非常に厄介な風習が根付いてしまった事に気づかれているでしょうか?
そう、『OJTという言い訳を模した放置プレイ』です。
成果主義と言えば聞こえはいいのですがその実ひどいものでして、ちょっとでも自分で勉強しない奴は速攻で切り捨てるという恐ろしい言い訳です。

ここ数年技術的な相談をされる方の大半は『自社で教えてもらえる環境にない』という、ずいぶんとふざけた状況にあるようで、それ、『社員の育成放棄だよね?』『教育コスト分の給料を上乗せしろよ』と突っ込まずにはいられません。
かくいう私も成人して就いた職からは基本的に毎月の手取りの給与のうちの数万円は機材や書籍に行かざるを得ない環境にありますし、今の職に当たっては開発環境だけでなく、測定器すら私の持ち物を使わされるという中々酷い有様であります。
えぇ、『必要なものあったら買うかもしれなから申請して』などと甘い事言われ、『必要な測定器類をすべて挙げていっているにも関わらず、いまだ1台も買ってもらった試しがない』という有様です。1年半前からこの問題を指摘していますが、一向に改善されません。
電気屋さんではない方のための例えばの話ですが、
測量屋さん的に言えば、『TS(トータルステーション)は会社で用意していないけど、測量はしなさい』っていう状況です。
機械屋さんで言えば『工具一切補填しないけど、この切削加工をしなさい』って感じです。
ソフト屋さんなら『開発PC?、ネットでつながっていないXPの古い奴使え』(いや、それ今どきのソフト動かないし、個人向けのライセンスフリーの物を違法で事業用に使う前提?オンラインじゃないとうごかないんですが?無理やり動かすためにUNIXOS入れたらお前キレるでしょ?)…これは現実に今起きてることですがという勢い。

ね?なかなか酷いでしょ?
これで開発部とか名乗ってんだぜ?
早く現場に戻りたい(現場のほうがある程度自由に資材が調達できたので…)…できれば米子近辺

自虐ネタはさておき、本日の本題の本筋へ
さて、先ほど挙げた会社が投資しない問題にあっては、大小あれどどこの会社も似たような風潮にあります。理由はいたって簡単でして、一般企業の投資のうちで金をかける順はコストの低い順なので、
人材投資 >> 設備投資 >> 技術開発投資
そして資金回収の早い順は基本的に、
人材投資 >>設備投資 >>技術開発投資
という感じで、設備や技術開発は人よりは優先度が低くなります。おまけに人に属する技術も投資コストがかかるので、頭数で何とかするという舵の取り方にならざるを得ないのです。

そんな訳で拝金主義は人身売買となるのは自然の摂理になります。
ちなみに当たった時の資金回収の割合で言うと、
技術開発投資 >>> 設備投資 >>> 人材投資
なのは言うまでもありません。ポッキーや青色LEDヨロシク一発当てたらかなりの長期にわたって市場を独占に近い形で牛耳れます。
しかも技術開発投資や、設備投資というものは最低限度しなければならない限度額があり、それを下回ると会社はそもそも存続できなくなります。

さて、
人材投資 << 設備投資<< 技術開発投資
という順位で必要な資金と時間が要求されますが、下手に銭ゲバの短期的思考な輩が上を占める組織になると、必ずと言っていいほど短期利益主義に走ります。
そう、普通は最低2年、場合によっては1年の間で損さえしなけりゃいい!という経営者としては腐った考え方に走ります。
日産のゴーンがgoneした件でも私は昔から述べてましたが、アレはコストカットするだけして私腹を肥やして投資を全部切り捨て、小さな親会社(ルノー)が大企業(日産と三菱)を買い取る典型的な企業買収手法でありまして、招いてはいけない屑野郎な訳です。

実際フランスのスパイだってことが今頃になって分かったし、フランスの資本が入っている関西国際空港から逃げたし、実質フランスの植民地のレバノンへ逃げたという経緯もあり、国家ぐるみだったことが露骨に明確化したでしょ?

それでも見る目のないうっかり経営者や日経系の中共様信奉誌に毒された残念経営者様はゴーンの汚い銭ゲバによる見た目の金銭創出という魔法の様なやり方に心を奪われてしまった訳で、『どうせ数年で昇進するんだから、それまで耐えれればそれでよい』と、どこかで見た『今だけ、金だけ、自分だけ』(by 鈴木宣弘 氏)の生き字引的な行動に手を染めたわけです。

酷いとホリエモンすら神格化し始めます。彼の起業当初はともかく、アレ、道徳的に見たら合法な詐欺でしかないですからね?


それでも最初はまだよかったんです。単純に高い測定器のグレード下げるとか、先行の研究開発凍結とか(これはこれで相当拙いけども…)程度だったんです。
でもそこからためておくべき設備更新費用を切り崩して設備更新を遅らせる行為が始まりました。
そして次は人材の教育関連費用を一切合切削除。おまけに消費税の節税対策で派遣化するとか今ならアウトな手法にも手を染める始末
そして実力主義という名を借りた賃金の上昇抑制も相まって、実力が無いならば相手を叩きのめせば相対的に給与が伸びるという訳の分からない風潮が会社に蔓延しはじめました。
おかげで本来 OJT(On the Job Training) は、Off Job Training(=机上や練習場での学習)の実践訓練という位置付けであるので、先輩や指導者が一緒に作業することが前提であるにもかかわらず、堂々と放置して OJT をしているとか言い出す構図になり始めました。
これ、現在の我々技術者業界において非常に拙い事でして、できる人とできない人の格差が広がるしかないという現実を生み出します。
黙っていたら誰も助けませんし、誰も直そうともしません、あまつさえ仕事ができない人は自分の立ち位置と給与を守る(=保身)のため、伸びそうな人を懸命に潰しにかかります。
と、ここまでが新自由主義と銭ゲバ、『今だけ、金だけ、自分だけ』が一体何を生み出したかが理解できる流れです。

さて、厄介なことにこの流れが既に30年間発生しています。
つまり、会社の中で正しい投資を知らない連中が新卒入社で既に中堅か役員クラスなのです。ということは、投資の仕方を知らない人しか残っていない可能性が高い。また、少し前はバブルで浮かれていて何も考えずに土地や不動産、ゴルフ会員権まで手を出していたわけですから、投資を知っていてもそれが正しい投資のありかたかどうかなんてわからない連中が会社を動かしているという事実が見えてきます。
私みたいに個人で自分に教育や機材にガンガン突っ込んで、測定器買ったのでボーナスが出る前に赤字確定!なんていう投資経験豊富な人は極稀な変人ですし、隣人を叩かないで上に上がれる組織なんて極稀になっていますから、人としての道徳性というべきか?それとも民度というべきか?も期待できません。

おまけに投資していない裏返しで何も残っていないという現実が目の前に立ちふさがっています。
つまり、今残っている会社であっても、そのほとんどにあっては投資を真面目にできていないし、中では孤立化と叩き合いで凌ぎを削っているわけですから、結果衰退する以外の選択肢を採ることは非常に困難と言う窮地に立っていることが容易に想像できます。

これ、非常に拙くないですか?

私も今の職場が余りにも酷くて考えようかとも思っている矢先なのですが、地雷だらけで選び方すら分からん有様です。
昔は別に住むところはどこでもいいし、とりあえず転職ガチャ回しとこう!
的なノリでガンガン行けたのですが、なまじ今住んでる米子が近隣の関係や地理的に頗る快適なこともあり、選べる選択肢が一気に狭まってきています。

そんな訳で、誰か山陰地方でまじめに仕事したい会社様は私を雇ってください
離れもあるのでそこを仮事務所にして山陰進出!でもいいですよ?


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


2022年10月13日木曜日

FETプローブをさらに追加で手に入れられた記念に、EBAZ4205の比較的低域電源インピーダンスを測定してみた

 おはようございました。


少し前にEBAZ4205の電源が糞だという噂がある』という話で、実際のリップルノイズを見た件を投稿しておりました。
皆様覚えていらっしゃるでしょうか?本日はその続きです。

うっかり2台目のFETプローブ『Tektronix P6243』を手に入れましたので、家に転がっているDL1740で再測定してみました。
CH1:3.3V
CH2:1.5V(VCC-DDR)
1.8V系のノイズ?を受けて振動している状態をズームしました。

CH1:1.8V(VCCA)
CH2:1.0V(VCCP)
1.8V系のノイズ?の発生状態をズームしました。
拡大すると…
パッシブプローブなら完全にノイズに埋もれて見えなかったノイズもこんなにくっきり…
ノイズ調査に良いプローブが欠かせないことは良く分かりましたね?
私は貧乏人であり、現職は電子回路系の技術者は冷遇されますし、技術士ですら公然とお払い箱の扱いを受けるので、良いプローブを(どころかちょっとした消耗品すらも)買えませんが、電源触るならプローブに金をかけろ!と強く言っておきます。
ついでにこんな私を拾ってくれる会社があればよろしくお願いいたします…(結構切実)

だがしかし!今回はこれだけでは終わらないッ!

久しぶりに玩具を出したついでに、さらに面倒臭そうな心配事も一緒に…と電源インピーダンスも測ってしまいます。
以前昨今の電源電圧低電圧化と大容量化に伴い、電源側の設計がかなり面倒くさい事になっているという話もさせていただきました。
さてそんな中、たとえ糞であっても動いている実物が現存するという事実は、実際の設計における指針の一つになります。
ということで、先ずは非破壊でできる低域の電源インピーダンスを測定したので、XilinxFPGAZynq-7000シリーズのz-7010の設計の際には
『低域のインピーダンスはこれぐらいは守ってないと製品として糞認定される』
指針にして頂ければと思います。
そもそも高域について、アートワーク上でのデバイスを含めたインピーダンスは、結構な企業様方がそれなりのノウハウを蓄積されておられますし、解析突っ込んでそれなりにできる環境も構築されているので、実際のところは低域のほうが面倒くさいだろうと思って公開した次第。
例えば入手の問題とか、会社の制限とか糞上司の命令とか、営業絡みの問題とかで…

さて、このEBAZ4205の電源は、3.3V1.8V(VCCA)1.5V(VCC-DDR)1.0V(VCCP)4系統があります。
巷に転がっている
回路図上のVCCPのは1V9となっている電源ですが、1.9Vではなく1.0V弱です。(ややこしい…)
ご存じの通り、一番条件的にきついのはコア電源の1.0Vで、リップルとノイズの限界値もさることながら、コアの消費電力変化による電源電圧変動を含めた形で電圧変動を規定値内に収めねばなりません
ここら辺の回路周りの数値は出回っている回路図に間違いが存在するかもしれません。
動いている現物のほうが正しい!という、昔にあったような心意気で現物以外信用しないようにしましょう。
1.8V
突っ込んだら間違いなくFPGAが死にます。(何で前回気づかったのか最近この手の業界から離れているとはいえ大失態です)

さて、ここから提示するネタについてですが、いくらか注意事項があります。
  • 金の頂いていない私的な落書きなので、すべて私の妄想の世界の中での出来事であること
  • 我が家の測定機環境はそこまで優れている訳ではなく、校正なんてしていない品物であること
(アホみたいに高い電子負荷やFETプローブなんて個人じゃ普通は持たない物を使ってますが、所詮はその程度です)
  • 傾向さえ見えれば満足で、不確かさの検証なんて面倒くさいのでやる訳もない事
  • 60Hzの高調波(3倍、5倍、7)のノイズの問題は私の家の電源環境が糞なだけであって、本来はない物として思え
ということで、私の妄想の結果だということに納得できるお方は次の結果を見てみましょう。
大事なことなので、2回言っておきました!




見ての通り、コア電源だけはコンデンサガンガンに積んで実装されているICから十分制御可能な制御帯域内から位相がぐるっとコンデンサ側に振っているいることがよく分る構図となっております。
また、グラフの位相の暴れは信頼の薄さにも相当します。
FETプローブ使ったりそれなりの構成で気を使ていることもあってオーダーはそれなりの精度で採れてはいるのですが、周囲のノイズもそこそこ酷く、あまり綺麗に採れるわけでもありません。
非破壊でやれる範囲ということで小信号での測定でリード引き出しということもあり、100[kHz]以上はだんだんと測定精度が怪しくなってきています。
とはいえ、傾向はつかめる程度には取れていると思います。

しかしまぁ、コア以外はかなり適当でこれで本当にいいの?と思わざるを得ない結果です。
コア以外も頑張って100[kHz]ぐらいまで0.01[Ω]切りを目指せよと思うわけですが、そうもいかなかった模様。
ちなみに、私が過去に設計していたちょっと気合の入れた電源では+12[V]で、100[kHz]で0.01[Ω]、MHzに入るまで普通に0.1[Ω]切ってました。(100400[W]での使用電源だけど…)

ですがそもそもこの帯域(数百kHz)になり始めるとデバイス端での測定を行わねば正確に判定できません
素直にシャントスルー法を使って測定しましょうと言いたいのですが、誰かやってくれんだろうか?
え?お前がやれって?誰か投げ銭してくれたら考えます(と言ってみるテスト)

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

2022年9月30日金曜日

AMAZONで売っている格安ノイズソースの挙動について曝す

 おはようございました。


ついこの前まで小電力無線がらみ、伝搬特性がらみの仕事をしておりました。
この手の仕事をするときに必要なものは様々ありますが、その中でも皆様にとって有用であろうというネタの一つ、ノイズソースの特性について曝してゆこうかと思います。

ノイズソースは広域な周波数において、そこそこ平坦な出力のノイズを出したい道具でありまして、雑音指数の計測、アンプの各種特性の採取、フィルタの大まかな特性や、伝搬の特性、ホワイトノイズ耐性の測定なんかにも使えます。

さて、今回使用したのはAMAZONで転がっていたこの2種類。



緑色の奴と黒色の奴です。
とりあえず動作の挙動が分からないと使いようがないので、さくっと調べることにします。
受信側のスペアナはたまたま近くに転がっていた借り物の、テクトロニクス社製のRSA306
玩具のスペアナと違って、これならそれなりに信用できそうな傾向が得られると思います。

さて、とりあえず1台目の緑の奴から


とてもフラットとは言えないノイズです。低い周波数領域に幾らかのピークがあり、なおかつ周波数が上がるとだんだん落ちる前提での使用をお勧めします。


次に2台目の黒い奴





2GHzちょっとの所と、2.47GHz付近になんかピークや突起が出ています。
ですがそれ以外はかなりフラットに近いので、このピークや突起がある前提で、2GHzまでで遊びに使うには十分かもしれません。フィルタを合わせて使いましょう。

どちらも元々2GHzまでで使うような代物だということがよく分ると思います。

こういった測定器の補助道具は、必ずまともな計測器でどのような挙動を示すか確認してから調査に用いましょう。

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

2022年8月18日木曜日

告知:『中小企業ひろしま 8月号』に寄稿しました

おはようございました。


一方的な告知です。
広島県中小企業団体中央会
http://www.chuokai-hiroshima.or.jp/index.php
の発行する会誌である『中小企業ひろしま8月号』に寄稿しましたのでご報告いたします。

お題目は『機器開発の潮流変化と導入の課題』です。

来るデジタル化の波と乗り遅れの失敗例について、2020年度版ものづくり白書も絡めてお話ししています。
https://www.meti.go.jp/report/whitepaper/mono/2020/index.html

https://www.youtube.com/watch?v=crkerQ_iJCY


2022
年度は技術士の方々が毎月寄稿するというイベントがありますので、なかなか濃い内容が見れるかもしれません。

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

2022年6月23日木曜日

うっかりDigital Discoveryに手を出してしまう

おはようございました。

皆様におかれましても、そろそろボーナス払いが解禁される頃合いですね。


相変わらず私は、税金と電気周りだけ魔改造中の家のローン、重なってくる2台分の車検代に殆ど消えるのですが、それでも悪あがきをしようと一歩ずつ前に歩んでいます。


そう!ついに手を出してしまった『Digital Discovery』!!

少し前のネタで『¥1500ほどで出回っている2D LiDAR(360度の距離の測れるセンサー) MB-1R2T』の話を振ったのですが、プロトコルをいろいろと調べている間に手持ちの測定器では限界が見えてしまったのです。


1回の送信で40点分の位置を送る様な通信データなのですが、我が家のDL1740はUARTの解析機能はないし、Analog Discoveryでは記録メモリの少なさから欲しいデータが少し見えたところで途中で切れてしまいます。

最近LiDARを仕事で触ることも多く、結構長いパケットを調べることが多いのです。

『仕事でも使えるし、まぁいいっか…』

と、

『いや、会社で買えよ!』

なんて突っ込まれそうな気もしますが、

『会社で買うならもうちょっとマシな物を買いたいのだけど、それだと一部の上がハンコ押しそうにない』

ということで悩んでおります。

かと言って、

『買ったら同じ機能に見えるものは絶対買い替えさせてくれない』

という動きの方が圧倒的に強い気がするので、なかなか動けないでいるのです。


会社の測定器や工具は私物より残念な代物ばかりなので、

欲しいものばかりで大変困っている(というか必要なので、家が実質第2の開発室化してる)状況。

誰か社内で投げ銭してくれませんかねぇ~

なんて思ってしまう今日この頃です。


前回のブログではデーターのヘッダを追記してあるのですが、Digital Discoveryみたいにメモリがそこそこ多いものを使うと、細かい挙動が見えてきました。


さて、例の『MB-1R2T』ですが、最初のテキストデータ送信後はこんな感じでデータが出ることが分かってきました。


1バイト目: AA ヘッダ1

2バイト目: 55 ヘッダ2

3バイト目: 3C コマンド種類?時々変わる

4バイト目: 28 データの個数 時々変わる

5バイト目: xx 開始角度下位

6バイト目: xx 開始角度上位

7バイト目: xx 終了角度下位

8バイト目: xx 終了角度上位

9バイト目: xx 不明(エラー訂正用?)

10バイト目: xx 不明(エラー訂正用?)

11バイト目: xx 信号品質

12バイト目: xx 距離下位

13バイト目: xx 距離上位

14バイト目: xx 信号品質

15バイト目: xx 距離下位

16バイト目: xx 距離上位

…以降データの個数分『信号品質、距離下位、距離上位』が続く…

角度のデータは0xB400が360度である可能性が高いです。(というかほぼ確定だと思う)

流れてくるデータとしてはこんな感じです。


こんな感じでたまに小さいパケットも飛んできます。




1個しかないデータはコマンド?(3C)としている部分まで変わります。

流れてくるデータ的には距離っぽいのですが…


秋月電子での値上げとカードの支払日の関係から、昨日Digital Discoveryが届いたばかりですので、データの個数が変わる条件がまだ絞り込めてませんが、普段は40個(0x28)連続していますが、たまに個数が不確定に減ります。

各々の角度と長さを求めるには開始位置と終了位置の差分を(データ個数-1)で除算せねばならないので、マイコンの方が圧倒的に楽です。

私は個人的都合でFPGA使ってますので、この除算まで含めて実装すべきか?

動作確認程度の実装だし、少しのデータなので、無視して飛ばすか?

少々悩んでおります。

まぁ、どっちにしてもこんなしょうもない機能にCPUリソース食いたくないので、本気でやるならFPGAで除算実装して、XY座標化や補間も実装しますが…


そんな訳で、今更この手のLiDARに手を出された方には参考になればと思います。


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