示波器作为电子工程师常用的测试测量仪器之一,在有些情况下,需要编程控制示波器采集数据,并进行数据处理和分析,实现对示波器的自动化操作完成自动测试。
有些特殊场合由于安全问题,需要把示波器放到封闭实验室环境下进行测试,也需要编程控制示波器采集数据安全地完成测试任务。
实现对示波器的自动设置和远程采集数据,成为很多前沿科学研究和实验,以及生产自动化的必需环节。
由于Python免费、开源、语法简单、开发效率高,深受广大工程师的喜爱。今天以实时示波器为例,介绍利用Python编程控制示波完成采集数据并显示波形。 相应的方法同样适用于其它开发工具和其它测试仪器,例如采样示波器、频谱分析仪、任意波形发生器AWG,源表SMU,函数发生器AFG等。
利用Python编程控制示波器▽
编程前的准备工作
利用Python控制仪器,需要安装相应的功能模块库才能实现控制仪器。下面介绍Python编程之前的准备工作。
1、安装Python
可登录Python官方网站www.python.org下载Python,然后安装Python 3.10.4新版。
2、安装PyVISA
PyVISA是用来控制各种测量仪器的Python包,可支持GPIB、RS232、USB、Ethernet等接口。可以自由的运行在Windows,Linux和Mac上,适用于不同仪器厂家。PyVISA也可以通过pip命令安装(pip install pyvisa)。
3、安装NI-VISA
为了PyVISA可靠工作,还需要安装一个VISA。建议安装NI-VISA库,可以去NI官方网站下载安装。
4、接口的选择和设置
根据仪器支持的接口,可选用GPIB、RS232、USB、Ethernet等接口来编程控制仪器,本文利用Python通过以太网接口编程控制示波器为例。
控制接口的选取
a. LAN
[TCPIP0::192.168.0.1::inst0::INSTR]
b. GPIB
[GPIB0::1::INSTR]
c. Serial
[serial('COM1','BaudRate',4800)]
d. USB
[USB::XXX::XXX::XXX::INSTR]
示波器和PC的设置(以LAN为例)
a. 设置示波器的IP地址 例如: 192.168.0.2
b. 设置PC的IP地址 例如: 192.168.0.1
c. 关闭示波器和PC的防火墙
d. 在PC端 ping 192.168.0.2,看是否ping通
Python控制示波器实战
利用Python控制示波器,通过发送SCPI指令实现对示波器的控制和操作,设置示波器的参数,然后采集示波器的数据并显示。
1、调用功能模块
利用import调用相关的功能模块。
import time
import pyvisa
import matplotlib.pyplot as plt
import numpy as np
2、连接示波器
Python可以利用GPIB、RS232、USB、Ethernet等接口控制示波器,今天利用以太网口控制示波器为例。
visa_address = 'TCPIP0::192.168.0.2::inst0::INSTR'
rm = pyvisa.ResourceManager()
scope = rm.open_resource(visa_address)
print(scope.query('*idn?'))
3、设置示波器
利用Wrtie发送SCPI命令设置的参数,参考示波器的编程手册。
Reset 示波器
scope.write('*RST')
自动设置示波器
scope.write('AUTOSET EXECUTE')
设置示波器的采样率
scope.write('HORIZONTAL:SAMPLERATE 25e9')
设置示波器运行
scope.write('acquire:state 1')
4、读取测量结果
先用Wrtie发送SCPI命令设置测量项和参数,然后用Query读取测量结果。
添加测量项
scope.write("MEASU:MEAS1:TYPE PERIOD")
设置测量通道
scope.write('MEASU:MEAS1:SOU CH1')
读取测量结果
scope.query(MEASU:MEAS1:VAL?')
5、读取波形数据
可以利用query_ascii_values读取ASCII数据,也可以利用read_raw()读取数据,还可以query_binary_values读取读二进制数据,今天我利用query_binary_values读取示波器的数据为例,注意:读取的数据还需要转换成电压,如何转换电压,请看上面的视频。
bin_wave = scope.query_binary_values('curve?', datatype='b', container=np.array)
6、画波形图
利用plt把示波器采集的波形数据画图。
plt.plot(scaled_time, scaled_wave)
plt.title('channel 1')
plt.xlabel('time (s)')
plt.ylabel('voltage (V)')
plt.minorticks_on()
plt.show()
7、断开仪器连接
利用close断开与示波器通信连接。
scope.close()
rm.close()
总结:本文介绍如何利用Python语言编程控制示波器采集数据并显示波形,从而实现对示波器的自动化操作,完成自动测试和分析,大大提高工作效率。如果对Python编程控制示波器完整源代码感兴趣的,可在线沟通,或致电客服!