前回、アナログ学習ツールADALM1000(以下M1K)のMATH機能、「使い方が良くわかっていなかった」件発覚。今回はその復習(復讐ではない)であります。実を言えば、1年以上前にも同様なことをしていました。記憶力が衰えているとは言え、今度こそ憶えてね、自分。
※「お手軽ツールで今更学ぶアナログ」投稿順 indexはこちら
M1Kの制御ソフトウエアAlice DesktopのMATH機能というのは、測定値をもとに計算をして、新たな「トレース」(グラフの線)を表示に書き加える機能です。例えば抵抗にかかる電圧の測定値があれば、流れる電流を求めることができますし、前回求められたように「エネルギー」を計算することもできる便利機能です。まあ、大抵のデジタル化されたオシロスコープには搭載されている機能。
実は以前も、MATH機能の使い方で混乱して、自分なりに使い方を整理したつもりの回があったのです。
お手軽ツールで今更学ぶアナログ(4) AliceでFormula波形表示
その折は、「X-Yプロット」、今回は「差分(微分)値の計算」と躓いた場所は異なってはいるものの、同じMATH機能に引っかかりました。だいたい約1年まえに同じような投稿をしていたことすら忘れていたし。
今回こそ、ちゃんと使い方を覚えてチャキチャキ使えるようにしないと。
ADALM1000 (M1K)のユーザガイド
原典たる、アナデバ社(ADI社)の公式ユーザガイドは以下です。これを熟読すれば「分かるはず」、ではあるです。しかしいまいちなのは、老人の忘却力か。凡人は実例を眺めて、繰り返し手を動かさないと憶えないからでありましょう。
Active Learning Interface (for) Circuits (and) Electronics M1K:
なお、ユーザガイドの中で “MATH” について詳細に説明しているページは以下です。
Oscilloscope and X-Y Plotting Virtual Instruments for ADALM1000 in ALICE 1.3
上記を見れば書かれていることですが、以下は原理原則です。
-
- Formulaで記述できる式は Python の式そのものである
- 計測値はPythonでは定番のnumpy配列(大域変数名は上記ページで列挙されている)に格納
Alice Desktopソフトウエア自体がPythonで記述されているので、プログラム内部のハラワタを直接操作するような「危ない」機能です。でも自分の測定のために自分で操作するのに何をためらうことがる、OKという感じ。PythonのMath関数なども使えるので、記述力に不足はありません。当然ですが文法間違えればPythonのエラーを引き起こします(トラップされる。)
Math Formulaウインドウ
オシロスコープ画面などの右上にある Mathボタンを押すことで現れる小さなウインドウは以下のような感じ。通常は、左肩のnoneラジオボタンが選択されている筈。
none状態で、CH-Aの電圧、電流、CH-Bの電圧、電流など測定値をCurvesで設定すれば、そのまま素直に測定値を画面表示してくれます。以下の図は、CH-A、Bとも電圧のみ表示の例。
簡単に使えるのは、左側にある Built-in Expです。CH-AとCH-Bの演算の組み合わせをラジオボタンで選択できるようになっています。選択した瞬間に表示に反映されるので分かり易いです。
例えば、CH-Bの電圧(オレンジ)からCH-Aの電圧(緑)を引いた結果が紫のMATHの線。
Formulaを記述
右側で、「Math Trace」、「X Math Trace」、「Y Math Trace」と3つのTrace毎にFormulaを書き込める欄があるのですが、大事なのは、
Built-in Expの一番下のFormulaで選択されるのは「Math Trace」
であることです。X、Yの方は後で説明しますが、ラジオボタンの選択はnoneで良いです(忘れそう。。。)
ここで再び原則。
-
- オシロスコープ画面でのMathは時間軸に対するFormulaのプロット
- サンプリングの時刻 t は10u秒刻み
Alice Desktopは内部に2画面分に相当する計測データのnumpy配列を持っているようなので、そこから計算してオシロスコープのY軸にする感じです。そのとき、単位がボルトなのか、アンペアなのか指定するのがUnits欄であり、表示するときに対応づけるY軸(CH-Aの電圧軸ならV-Aという具合)を指定するのがAxis欄です。この軸の指定をなにげに忘れそう。
また欄に記入した後、CheckとApplyボタンを押さないといけません。これまた忘れるんだ。
下は、Built-in Expでもできる計算をあえてFormulaでやったもの。先ほどは正弦波でしたが今度は三角波。
続いて電圧から電流を求めてみます。抵抗値は2kΩなので、CH-Aの電圧を2kΩで割ればCH-Aの電流が求まる筈なのですが、表示軸にあわせたmA単位の電流を求めるためには、2kで割って、1000倍しないとなりません(端折って2で割っている。)UnitsのAやVは次元のチェックのため?この辺まだあやふやな感じがする。
実測した電流値(水色)と、Formulaで計算した電流値(紫)を両方プロットしたもの。実測電流値は1mAくらいと絶対値が小さく、測定限界(いくつだ?)に近いからか細かく揺れていますが、一応、実測値と計算値が重なっている感じ。
さて、次は、懸案の微分(差分)の計算、時刻 t と時刻 t-1 の差を求めてみます。インターバルは10μ秒固定、これに対して画面上の時刻スケールは1目盛2msなので、傾きの計算値表示を100倍してCH-Aの電圧軸で表示させてみます(目盛り上で1Vであれば、実際には0.001V/μsあるいは1V/ms。)
細かい値の差分を取って100倍もすると、かなり値がバタつく感じです。それでも3角波の上下勾配にあわせて、正負の値を繰り返しています。期待どおりかね。勾配はだいたい0.8V/msくらいと読めます。半周期5msなので、4V上がって、4V下がると、期待通りの動作。ようやく、前回うまく行かなかった微分(差分)の計算がうまく行きました。
X Math TraceとY Math Trace
X-Yプロッタでは、それぞれX軸、Y軸にアサインすることもできるこれらのFormulaですが、オシロスコープ画面では、どちらも時間に対してのトレースとなります。機能的には単なる Math Traceがもう2チャンネルある感じ。ただし、MathウインドウでFormulaを選択するのではなく、noneにしておいてオシロ画面のCurvesボタンから、Math-X、Math-Yを選択する必要があります。こんな感じ。
Math-Xの設定がこちら。CH-Aの電流の実測値に-1をかけてやって、疑似的な電圧?を求めている。
プロットさせたものがこちら。予定どおりの反転波形。やはり電流実測値は値そのものが小さいのでゆらゆらが大きいようです。
今度こそは記憶したか。でもね、年寄りは直ぐに忘れるんだ、直ぐに。