D-Lab



ADCMT社製デジタルマルチメーター(DMM)7351Eを用いた電圧測定(USB編)

(step1)通信の確認

■最初にusb経由でちゃんと測定機器が接続されているか確認します。

・コマンドプロンプト上でjupyter notebookと入力(notebookを起動する)
→ 適当な場所(フォルダ)でNew → Python3(ipykernel)

(コード例)
   import pyvisa
   rm = pyvisa.ResourceManager()
   visa_list = rm.list_resources()
   visa_list

図をクリックすると大きな画像を表示








・visa_listを実行(Shiftキー押しながらEnter)したときに, USB0::0x..... が表示されればOK。
(2番目の'ASRL1::は気にしない)
(注)もしUSB0::0x... が表示されない場合は,計測器ドライバにNI-VISAが設定されていないかも知れません( →こちらの資料を参照)

(MEMO)
ここでpythonでは0,1,2とゼロから順番に数えるため,visa_listに格納された装置のうち,ゼロ番目がUSB::0x1334...(=今はこれが7351E)で,1番目がASRL1::INSTRという意味


■usb_1という変数に7351Eを指定して,IDN?を実行
   usb_1 = visa_list[0]   #(←リストのゼロ番目だから[0])
   inst = rm.open_resource(ust_1)
   print(inst.query('*IDN?'))

(実行結果) ADC Corp.,7351E,162900173,C03
こんな感じの表示がでればOK(クリックで実際の画面を表示)
特に2台以上の装置をUSBケーブルで接続する場合など,visa_listの何番目の装置が何に当たるか*IDN?で確認しておく!
(MEMO)
query(クエリ)はwrite & read (データちょうだいって計測器にwrite()して結果を読み取る際はqueryを使用)


(step2)1秒おきのデータ測定

ADCMT社の7351Eはusb通信の場合,"ADCコマンド"という規格が使用されます。(大抵のマニュアルは分厚くて読むのキツいですが,コマンド欄はチェック必須。)
ADCコマンドの場合,例えばF1と命令すると直流電圧測定,F3なら抵抗測定のモードに切り替わります。
測定モードを指定したり,(別途説明)直流電源などで通電を開始する,といった命令は特に「装置から何かを読み取る」必要はなく,このような場合はinst.writeを使用します。


抵抗(20kΩ)を接続して,抵抗測定モード(F3)で10秒間データを取得するプログラム例

サンプルコード dmm1.ipynb (Jupyter notebook形式) (←右クリックしてリンク先を別名で保存)

サンプルコード dmm1.py (python形式) (←右クリックしてリンク先を別名で保存)

図をクリックすると大きな画像を表示

pythonではインデント(空欄)が重要な働きをして,コードの読みやすさにも繋がっています。例えばwhileの後は4つのスペースが入っています。
(while i<=10: の次の行
i=i+1の前に4つスペース)














(MEMO)
whileは「ある条件を達するまで以下のコードを繰り返せ!」という命令文。
import time
とtimeモジュールを読み込んで,time.sleep(1)と指定すると,1秒おきにwhile以下が実行され,time.sleepはデータ集録で必須と思います。
while以下には*TRGがクエリされており,これは「現在の値を読み込め!」というコマンドです。
次行のprint文は結果を画面表示せよ,というもので,無くても構いません(単にあぁちゃんと測定してくれているなぁ,という安心感のため)。
with openの部分で保存ファイル名を指定する(例ではtest.txtという名前で保存される)
保存される内容はi(=ループ回数,今回は1秒に1回測定するので,iはそのまま経過時間(s)に対応)
と抵抗値です。
[注]