はじめに
測定器を使って「1秒ごとにデータを取る」といったインターバル測定をすることがあります。
電圧であったり、電流であったり、温度であったり、測定対象は様々ですが、
測定が長期に及ぶこともあり、これを手作業でやると大変な労力を要します。
そんな時はやはり測定器をPCで制御するのがベストで、
Sequence Makerを使えばとても簡単に実現できてしまいます。
今回はAgilentの34401Aマルチメーターを使用して、
1秒ごとに電圧を取得してみたいと思います。
送信前ウェイトを使ってみる
まずは単純に、Sequence Makerの機能である「送信前ウェイト」を使ってみます。
送信前ウェイトを設定すると、コマンドを送る前に、
この時間だけ待ってから送ってくれるので、
「1秒」と設定すればやりたいことが実現できそうです。
また、オプションの「日時を出力」にチェックを入れておくと、
コマンドを送受信したタイムスタンプが出力されるので、チェックを入れておきます。
それでは、、、実際に測定してみます。
タイムスタンプを見ると、まぁまぁ1秒間隔になっているような気もしますが、
時々2秒くらい飛んでいる部分もあり、なんだか気持ち悪い感じです。
これは、「送信前ウェイト」の機能が「コマンドを送る前のウェイト時間」なので、
①1秒待つ
②:READ?コマンドを送ってトリガーをかける
③測定器で測定(サンプリング)が行われる
④測定値の応答を受信する
という流れになっており、1回の測定に1秒以上かかってしまうためです。
さてさてどうしましょうか。
もうちょっと正確にインターバル測定する
より正確にインターバル測定するために、
ここでは「送信前ウェイト」を使わずに、自分でExcelの関数を組み合わせて
測定シーケンスを作ってみます。
今回やりたいのは、ウェイト時間を固定で1秒にするのでは無く、
1秒からコマンドの送受信時間と測定時間を引いた時間だけウェイトを
取るようにすることで、正確にインターバル測定を行います。
ただ、コマンドの送受信時間と測定時間を調べるのは面倒なので、
「日時を出力」で出力したタイムスタンプを元に、ウェイトを取るようにします。
実際の例を示します。
C8セルに記入した
=IF(NOW()<D7+TIME(0,0,$C$2),"#JMP("&ADDRESS(ROW(),COLUMN(),4)&")",$C$3)
という関数が、今回のキモになります。
IF文の中身がやや複雑なので、詳しく説明します。
それでは、実行してみましょう。
タイムスタンプを見ると、キレイに1秒間隔になりました。
やったね!
サンプルExcelファイル
今回使用したExcelファイルは以下からダウンロード可能です。
:READ?コマンドを変更すれば、他の測定器でも使えると思います。