新闻资讯
您当前的位置 : 首 页 > 新闻资讯 > 技术资讯

Python编程控制示波器

2022-05-23 11:35:01

    示波器作为电子工程师常用的测试测量仪器之一,在有些情况下,需要编程控制示波器采集数据,并进行数据处理和分析,实现对示波器的自动化操作完成自动测试。

    有些特殊场合由于安全问题,需要把示波器放到封闭实验室环境下进行测试,也需要编程控制示波器采集数据安全地完成测试任务。

实现对示波器的自动设置和远程采集数据,成为很多前沿科学研究和实验,以及生产自动化的必需环节。


    由于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编程控制示波器完整源代码感兴趣的,可在线沟通,或致电客服!

近期浏览: