お手軽ツールで今更学ぶアナログ(149) WaveForms、測定データのセーブあれこれ

Joseph Halfmoon

『StudentZone』の日本語記事の先頭に追い付いたので、今回はDigilent AD2、WaveFormの練習に戻りたいと思います。WaveFormの練習の前回では単純な電圧/電流計として測定結果を画面に出力しました。しかしWaveFormは波形データを内部に保持しているのでスクリプトからファイル出力もできます。

※「お手軽ツールで今更学ぶアナログ」投稿順 indexはこちら

※ 練習している「学習用」万能測定ツールは、Digilent製 Analog Discovery 2です。その制御ソフトウエアはVersion 3.18.1のWaveForms(Windows版)です。WaveFormsのマニュアルの在処は以下です。

WaveForms Reference Manual

DUT(Device Under Test)

まあ、DUT言うほど大層なものじゃないのですが、今回練習に使った回路のLTspice上での記述が以下です。1N4148ダイオードに三角波の電圧をかけて、電流、電圧を測定するもの。ダイオードのIV特性を測るつもりだよね。1N4148_DUT_cir

LTspice上でのトランジェント解析の結果が以下に。黄緑がV1の入力電圧波形、赤色がR1を流れる電流、青色がダイオード1N4148にかかっている電圧です。電圧目盛りが左、電流目盛りが右っす。ほぼほぼダイオードにかかる電圧が0.6Vになると電流が流れ始めますです。予定通り。1N4148_DUT_tim

実機上での動作

抵抗1個とダイオード1本持ってきてブレッドボード上でAD2の端子に接続しました。接続図が以下に。WaveGenのチャネル1で電圧(三角波)を与えて、オシロスコープのチャネル2でR1の両端の電圧を測り(330Ωで割れば電流値ね)、チャネル1でダイオードの両端の電圧を測るという段取りです。1N4148_DUT_AD2schematic

WaveGenの設定が以下に。Script使わず手動で設定してます。waveGenSetting

三角波1周期分のの時間波形が以下に。LTspiceでは右半面部分しかやりませんでしたが、ここでは入力を負からはじめてます。黄色C1がシミュレーションの青色波形で、水色C2がシミュレーションの赤色波形該当です。色がちがってややこしい?AD2tim

ダイオードのIV特性の波形が以下に。AD2xy1

ファイルにセーブ

今回実際に動かすための設定は皆手動でやってしまいました。ここからがテーマのファイルにセーブのくだりっす。

通常、WaveFormのメニューからExportという項目を選ぶとデータセーブのための以下の画面を開くことができます。

AD2ExportMenu

これにより生データをファイルとして保存することができます。ただしGUIからいろいろ手動設定して行かなばならないので正直だるいっす。そこでスクリプトでやっつけるっと。

以下にいくつか指定方法を変えてスクリプトから出力を試みたコードをかかげます。注意点が一つ。

ファイルPATHの区切りは “/” が良い。

最初、Windowsなので”\”で区切ったらばうまく動きませなんだ。もしかすると”\\”にしたらば良かったの?でも”/”で区切れば問題ないです。なお、パス指定せず、ファイル名のみ指定すると手元のWindows版ではDocumentフォルダの直下にファイルを生成してました。

Wavegen1.run();
Scope.single();
if(!Scope.wait()) throw "Stopped";
Scope.Export("C:/tmp/1N4148_acq.csv", szView="Acquisition", fComments=true, fHeader=true, fLabel=true);
Scope.Export("C:/tmp/1N4148_xy1.csv", szView="XY1", fComments=true, fHeader=true, fLabel=true);
File("C:/tmp/CH1.csv").write(Scope1.Channel1.data);
File("C:/tmp/CH2.csv").write(Scope1.Channel2.data);

結論からいうと、Scope.Export()でセーブできる形式がメニューからExportを選んだときと同様な「人間可読な」形式でした。一方、File().write()の形式でセーブするとcsv形式で文字こそ可読ですが、途中一切改行なし、カンマ区切りは有りのデータオンリです。こちらはリファレンス波形としてセーブ、ロードするときにはちょうどいい感じです。必要に応じて使い分けろ、ということでしょうね。なお、Export()の場合 パラメータszViewに与える文字列によってセーブする対象、形式が変化します。

実例:1N4148_acq.csv、時刻を含むCH1、CH2の測定電圧を出力。

#Digilent WaveForms Oscilloscope Acquisition
#Device Name: Discovery2
# ~途中略~

Time (s),Channel 1 (V),Channel 2 (V)
-0.005119375000000001,0.07896619224681849,-0.002345435944951345
-0.005118125,0.07729380751137654,-0.0020078640712344253
# ~以降略~

実例:1N4148_xy1.csv、時刻含まないCH1、CH2の測定電圧を出力。

#Digilent WaveForms Oscilloscope XY
#Device Name: Discovery2
# ~途中略~

Channel 1 (V),Channel 2 (V)
0.07896619224681849,-0.002345435944951345
0.07729380751137654,-0.0020078640712344253
# ~以降略~

実例:CH1.csv、CH1の生データの羅列。

0.07896619224681849,0.07729380751137654,0.07729380751137654,0.07495246888175781,0.07394903804049265,0.07328008414631587,0.07227665330505069,0.07093874551669714,0.0689318838341668,0.0689318838341668,0.06725949909872485,0.06692502215163647,~以降略~

これで生データのセーブもバッチリ。ホントか?

お手軽ツールで今更学ぶアナログ(148) LEDをライトセンサとして使う、実用になるじゃん へ戻る

お手軽ツールで今更学ぶアナログ(150) WaveForms、実験自動化最初の一歩? へ進む