ja1yaz’s diary

感動したいおやじの備忘録的ブログ 

RaspberryPiでオシロスコープ制御 Keysight EDUX1052G

オシロスコープのメーカーに問い合わせをしたところ、RaspberryPiOSにドライバソフトがインストールできないのでUSB機器として認識することはできないとの回答だった。ほかのLINUX OSでは、インストールできるのだそうだ。

本当かなとは思いつつも、メーカーが言うのだから仕方がない。

USB接続はあきらめて、Ethernet経由での制御に切り替えることにした。

Python自体ほとんどはじめてに近いので、何もわからない中でのプログラミングとなる。RaspberryPiを購入したときに少しだけ、本の内容を打ち込んだ経験しかないのだ。

 

オシロスコープのデータをCSVに落とすところは、RaspberryPi 計測機器制御 CSV保存などのキーワードで検索すると参考になる部分が見つかった。

下記の様なプログラムを作って、信号発生器で出した80nsのパルス幅を10回計測してCSVデータとしてSAVEしてみた。

間違っているかもしれないが、これは何とかエラーが出ずに動くようだ。

Keysightのオシロスコープのコマンドは、Tektronixとは異なるコマンド形態なので勉強しなおす必要がありそうだ。

しかし、オシロスコープのマニュアルの例文にPythonがあるのは、助かる。気もする。

しかし、あまり参考にはならなかった。

 

import pyvisa as visa
import datetime
import csv
rm = visa.ResourceManager('@py')
address="TCPIP::192.168.1.1::inst0::INSTR"
inst = rm.open_resource(address)

print(inst.query("*idn?"))
inst.write("recall:setup 2")
inst.write(":WGEN:FREQuency 1000")
i=0
with open("/home/pi/log_test.csv", "w",newline='') as f:
writer=csv.writer(f)
writer.writerow(["Date","Pulse width"])
for i in range(10):

  inst.write("sing")
  inst.query("*OPC?")
  inst.write("measure:source channel1")
  time1=datetime.datetime.now()
  PWIDTH=inst.query("MEASURE:PWIDTH?")
  print(time1,PWIDTH)
  data=[time1,PWIDTH]
  writer.writerow(data)

inst.close()
rm.close()

 

 

f:id:ja1yaz:20210516152848p:plain

80ns Pulse width

下記のCSVファイルから、1kHzの信号で、1秒間に10回程度の取り込みができているようだ。

これで、長時間の電圧変化なども取り込んでデータにすることができそうだ。

 

f:id:ja1yaz:20210516160055p:plain

CSV File