如何使用Python编程语言和ADALM2000创建虚拟示波器

发布者:EE小广播最新更新时间:2022-07-25 来源: EEWORLD作者: ADI软件系统工程师Christian Jason Garcia & Arnie Mae Baes关键字:ADI  Python  编程语言  虚拟示波器 手机看文章 扫描二维码
随时随地手机看文章

一个功能齐全的物理实验室造价不菲,其中的各式实验仪器常常价格昂贵,而且管理复杂。试想如果能够构建一个可放入口袋、随时便携的虚拟电子实验室,那么将为未来带来无限的可能。虚拟电子实验室,是通过一系列基于软件的应用来实现的仿真电子仪器所组成的模拟实验室环境,用户可以在该环境中开展大量电子实验。


本文旨在演示用户如何使用ADI ADALM2000和简单的开源编程语言Python开发所需的虚拟实验室仪器。通过Python与ADALM2000相结合,可以开发多种虚拟实验室仪器,如示波器、信号发生器、数字万用表等。其中,示波器作为物理电子实验室中常用的基本仪器之一,是个不错的入门选择,将在下文中重点讨论。


什么是示波器?


示波器可用于常见电路和复杂电路的信号分析,是电子工程的重要组成部分。如今的示波器能够与计算机连接,因此在示波器中捕获的信号能够以数字形式存储,供日后分析。


 image.png

图1.示波器示意图


示波器用于直观呈现模拟或数字波形的电压和时间特性。前面板控件(放大器触发、扫描时间和显示屏)用于调整显示内容,以更好地直观呈现信号。


示波器可展示信号输入在特定时间段内的行为,这对于分析常见电路至关重要。此外,它有助于验证这些电路的功能。这也是示波器成为不可或缺的电子实验设备的主要原因。ADI允许工程师定制自己的示波器来满足需求,从而可以改进特定电子电路的分析。


ADALM2000是什么?


ADALM2000是主动学习模块,具有数字示波器、函数发生器、逻辑分析仪、电压表、频谱和数字总线分析仪,以及两个可编程的电源。对于基础用户或学生,可以将Scopy与ADALM2000连接。对于应用开发人员,可使用libm2k库开发应用接口。对于固件开发人员,还可以选择开发能够直接在ADALM2000上运行的定制软件或HDL。


开始使用


安装Python和PyCharm


Python是功能强大、简单易学的开源编程语言。Python可从Python官方网站下载。如果不确定要使用哪个版本,请选择Python 3.7。


Python可在没有集成开发环境(IDE)的情况下使用,但为了更轻松地下载库和进行调试,可以使用PyCharm。PyCharm是一个IDE,为开发人员提供多个必需的工具,因而是用于Python开发的热门IDE。在JetBrains官方网站下载最新版PyCharm Community。


安装库


Python库包含可用于特定应用的方法或函数。在本文中,将使用libm2k、matplotlib和NumPy。

Libm2k


若要使用Python与ADALM2000交互,需要安装libm2k库。这是C++库,带有可用于Python、C#、MATLAB®和LabVIEW®的绑定,具备以下功能:


u AnalogIn用于示波器或电压表。我们将重点介绍该功能。

u AnalogOut用于信号发生器。

u Digital用于逻辑分析仪或模式发生器。

u PowerSupply用于恒压发电机。

u DMM用于数字万用表。


安装Libm2k


安装该库的一种方法是按照以下步骤操作:


u 转到发布页面。

下载该库的最新可执行版本。示例:Libm2k-0.4.0-Windows-Setup.exe

u 运行可执行文件。当“设置”窗口提示选择其他任务时,请务必选择安装libm2k Python绑定。


 image.png

图2.Libm2k安装窗口


u 安装结束。Libm2k将安装在Python的默认环境中。


Matplotlib


若要创建示波器显示,您需要使用matplotlib库。该库备受欢迎且易于使用,用于在Python中定制和显示可视化内容。有关该库的详细信息,请访问matplotlib网站。


NumPy


简单的示波器仍将需要大量数学计算。NumPy库可以为复杂的计算提供简单的函数。有关该库的详细信息,请访问NumPy网站。


安装Matplotlib和NumPy


若要安装matplotlib和NumPy,请在PyCharm中按照以下步骤操作:


u 转到“文件”>“设置”>“项目解释器”。

u 点击“设置”窗口右侧的+图标。

u 将出现“可用软件包”窗口。在搜索框中,搜索matplotlib和NumPy。

u 指定要安装的版本(选择最新版本)。

u 点击安装软件包按钮。


 

image.png

图3.在PyCharm中安装库包


硬件设置


在开始编码前,我们先设置硬件组件。需要使用以下硬件组件:

u 信号源(或信号发生器,如适用)

u ADALM2000

u 探头和限幅器


如果信号发生器可用,请按照图4中显示的配置,使用探头和/或限幅器将ADALM2000设备连接到通道1和通道2。


 image.png

图4.使用信号发生器和ADALM2000的实际设置


表1.引脚配置

image.png



对于其他可用的信号源,也可以遵循相同配置。最后,通过USB端口将ADALM2000设备连接到PC。


简单的虚拟示波器


在这一部分将逐个代码块介绍程序,还将讨论代码的作用,并说明以这些方式编写代码的原因。随后的部分中将演示修改基础代码,以添加更多功能,从而满足开发人员用例要求。


首先,导入将用于开发虚拟示波器的三个库(libm2k、matplotlib和NumPy)。

 image.png


统一资源标识符(URI)是连接到PC的每个ADALM2000的唯一标识符。该代码块确保ADALM2000连接到PC。如果没有ADALM2000设备插入PC,代码将自动退出。

 image.png


通过检测到的URI连接到ADALM2000。“uri[0]”是在连接了多个设备的情况下检测到的第一个ADALM2000设备的URI。

 image.png


对ADC和DAC运行校准。这是确保获得准确测量的重要步骤。

 image.png


设置采样速率和时长。可用采样速率有1 kHz、10 kHz、100 kHz、1 MHz、10 MHz和100 MHz。采样速率是在1秒内获得样本的次数,时长是获得这些样本的持续采样时间。例如,如果将采样速率设为1000,时长设为3,那么每秒将获得1000个样本,并持续采样3秒。因此,共有3000个样本。

 image.png


启用并将通道1设置为示波器的模拟输入。

 image.png


Linspace用于创建等间距的样本阵列,并可使用该NumPy函数创建时间x轴数据阵列。该函数的第一和第二个参数分别表示阵列的起始和结束值。最后一个参数是希望在起始和结束值范围内生成的样本数。


在该示例中,起始值是0,结束值是设置的时长,也就是3。对于样本数,将duration与sample_rate相乘,即可获得所需的总样本数,也就是3000个样本。这3000个样本将

均匀放置在0和3之间。该数组将存储在time_x中。


data_y存储我们使用ADALM2000设备收集的波形样本。通道1的样本存储在data_y[0]中,通道2的样本存储在data_y[1]中。为了显示精确的波形频率,必须使用与time_x相同的样本数量。

 image.png


创建将处理的图形。plt.subplots函数将返回图形对象(存储在g中)和轴对象(存储在ax中),这些对象将用于自定义整个图形。


这里可以添加网格线,作为波形的参考坐标。添加轴标签和y限制,以添加有关图形的更多细节。

 image.png


显示图形。

 

在代码末尾销毁上下文。

 image.png

运行代码,将会看到类似图5的图形。

 

image.png

图5.单通道正弦波输出;一个信号发生器输出:10 Hz,2 V p-p


双通道虚拟示波器


在这一部分,将使用上一部分中的代码,并添加更多代码块,以创建双通道虚拟示波器。

若要添加另一个通道,请复制ocsi.enableChannel和ocsi.setRange行代码,并将第一个参数从

 image.png


在创建图形时,为通道2添加另一个图形。通道2的数据在data_y[1]阵列中。也可以自定义两个图形的颜色,以便轻松区分二者。在该示例中,通道1使用浅珊瑚色,通道2使用钢蓝色。

 image.png

运行代码,应该会得到类似图6的结果。


 image.png

图6.双通道正弦波输出。通道1信号发生器输出:10 Hz,2 V p-p;通道2信号发生器输出:5 Hz,3 V p-p。


虚拟示波器的其他功能


在这一部分,将为虚拟示波器添加其他功能,以提升交互性。Matplotlib提供我们可以使用的多个小部件。在该示例中,将使用文本标签和滑块小部件,并将继续使用上一部分中的代码。


为matplotlib滑块添加另一次导入。

 

将时间和数据阵列转换为NumPy阵列。在下一个代码块进行的计算中,将使用这些阵列。

 image.png


获取所有波形数据后,提取这些波形的特性将不在话下。在以下代码块中,从获取的两个通道的数据中提取了Vpp、Vave和Vrms。要计算Vpp,将data_y numpy阵列中找到的最大值和最小值的绝对值相加。要计算Vave,只需用Vpp除以pi。要计算Vrms,用Vpp除以2乘以√2。

 image.png


该代码块与前面部分类似。唯一的区别是,为图形使用NumPy阵列,而不是使用原始阵列。同时还根据图形创建了波形对象。稍后将使用这些对象。

 image.png


为了在图形中显示计算的Vpp、Vave和Vrms,将利用matplotlib库中的文本标签小部件。创建字符串标签label_ch1和label_ch2,然后连接这两个字符串,以创建最终标签n_label。通过使用plt.text创建文本标签。第一和第二个参数(0.2, 3)是文本的x和y位置。第三个参数是要显示的字符串。第四和第五个参数分别是文本和框的样式。

 image.png



接下来,创建偏移滑块。该滑块用于调整波形的参考电平。将主图形向左调整,为滑块留出空间。plt.axes定义滑块的尺寸、位置和表面颜色。Slider函数用于为偏移滑块创建具有特定特性的对象。

 image.png


创建update_offset函数,并将其注册到offset_slider对象。每次更改滑块的值时,该函数都会向波形添加偏移量。

 image.png


运行代码,将会看到类似图7的图形。


 image.png

图7.带偏移滑块的默认双通道正弦波输出


尝试使用滑块调整偏移量。将会看到波形实时上下移动。


 image.png

图8.调整偏移量滑块(向左滑动),用于调整两个通道输出的偏移量


总结


本文解释了拥有虚拟电子实验室的重要性和便利性。文中还演示了如何使用ADALM2000和Python开发虚拟示波器。讨论了软件要求和硬件设置,并提供了3个示例供参考。


关键字:ADI  Python  编程语言  虚拟示波器 引用地址:如何使用Python编程语言和ADALM2000创建虚拟示波器

上一篇:虚拟仪器的关键是什么?
下一篇:是德科技推出全新器件建模软件,助力实现一站式工作流程

推荐阅读最新更新时间:2024-11-06 18:05

改变世界的,永远是极客
从前车马很慢,驾车还得考虑座驾的情绪,那时候的人一定想不到,现如今车辆已经可以实现自动驾驶,这是一个时代的进步,也唯有敢想敢做的人,才能创造这样的奇迹。正如伊塔丽思副总裁李常慧在SugarTalk联合电子元器件分销商贸泽电子(Mouser Electronics)举办的“汽车科技大玩家”主题活动中说到:“改变世界的,永远是极客。”   当然,极客的定义不仅仅是行业的创造者,追赶风与时间的赛车手也可以称为“极客”。华人顶级赛车手董荷斌在会上这样说到:“赛车的不断演变不仅影响汽车行业,还有生活。汽车整机厂在过去也非常热衷于参加赛事,参与其中的开发项目,来使用到路面之上。”一项尖端的技术往往首先使用到军事上,经过不断的试验才能普及到日常
[嵌入式]
ADI最新同步解调器可提高低功耗应用的信号测量灵敏度
Analog Devices, Inc. (NASDAQ: ADI)公司近日发布一款集成度、性能、灵活性和功耗均达行业最佳水平的同步解调器ADA2200。 ADA2200采用ADI正在申请专利、由Lyric半导体有限公司(2011年中期被ADI收购)开发的采样模拟技术(SAT),同时集成一个可配置模拟滤波器;借助该器件,便携式低功耗仪表设计师可以最大限度地延长电池寿命,并在大噪声源条件下对模拟信号进行精密的幅度和相位测量。 与传统分立式方案相比,这种紧凑、集成式解决方案最多可减少25%的PCB电路板占用面积,为设计师带来更大的灵活性,缩短系统设计和优化时间,为电路设计在多种传感器、产品和平台中的重复利用提供便利。 低功耗(
[测试测量]
基于USB接口的高性能虚拟示波器的开发实现
1 引言 虚拟示波器,是将计算机强大的计算处理能力和一般硬件仪器的信号采集,控制能力结合在一起,从而实现一般示波器所不能实现的功能和友好的界面。 随着计算机技术的发展,使得虚拟仪器的实现成为可能,传统仪器的一些专用处理器和设备,被计算机的通用设备所代替,常用的虚拟仪器,多采用PCI或ISA插槽,将各种硬件连接到一起,然而采集卡的数量一般有限,因此组织系统的时候,只能指定特定的计算机,或打开计算机盖装入专门的采集卡,在使用笔记本电脑或工业一体化电脑的场合,根本就不支持PCI或ISA总线的设备。所以,我们需要一种更方便,更有效,更灵活的总线通讯方式来实现虚拟仪器,现代计算机一般都具有USB接口,且USB接口的使用灵活,方便,所以首先
[测试测量]
基于USB接口的高性能<font color='red'>虚拟示波器</font>的开发实现
ADI新款数据采集芯片助力高层数CT扫描仪
      2009年2月11日,中国北京—— Analog Devices, Inc.(纽约证券交易所代码: ADI),全球领先的高性能信号处理解决方案供应商,最新推出一款全新的电流/数字转换器芯片—— ADAS1128,它使得高层数CT系统能够以高精度和丰富信息量捕获实时移动图像(如跳动的心脏)。CT(计算机断层扫描)扫描的应用随着技术进步正在不断增长,已可提供更清晰、更具体的人体图片以供医生分析和诊断。与此同时,医疗保健场所对质量更好、更快和更经济的诊断成像设备的需求也在增长,这款器件完全可以满足这些需求。       ADAS1128是一款24位电流/数字转换器,它可将光电二极管阵列信号转变成数字信号。该器件提供128
[医疗电子]
安森美半导体扩展高分辨率PYTHON CMOS图像传感器系列
新的图像传感器扩展系列的分辨率至超过2500万像素,为工业成像应用带来高分辨率全局快门能力 推动高能效创新的安森美半导体(ON Semiconductor,美国纳斯达克上市代号: ON)已增添4款新的高分辨率器件到获奖的PYTHON CMOS图像传感器系列。现共计9款不同器件提供从VGA到超过2500万像素的分辨率,这高性能系列解决工业成像通用应用的需求,如机器视觉、检查及运动监控、安防、监控和智能交通系统(ITS)等。 新的PYTHON 10K、 PYTHON 12K、 PYTHON 16K和PYTHON 25K 图像传感器结合卓越的影像性能及高速输出架构,满足并超越流行的工业计算机接口如USB3.1、CameraL
[传感器]
Ray Stata荣获GSA最高荣誉表彰
全球半导体行业代言者的全球半导体联盟(GSA)宣布,2017年度“张忠谋博士模范领袖奖”被授予:ADI公司联合创始人兼董事会主席 Ray Stata 先生。Ray Stata 于美国时间12月7日出席了在加利福尼亚州圣克拉拉市圣克拉拉会议中心举行的 GSA 颁奖晚宴,并领取这一成就奖。 Ray Stata ADI联合创始人兼董事会主席,美国国家技术产业教父。1965年联合创立了ADI公司,1971年至1996年担任公司的首席执行官。82岁的他表示:“我仍像以前一样努力工作。我是个技术迷,喜欢学习新事物,喜欢与聪明的年轻人一起工作,这让我不断进步。” 很高兴能够将今年的‘张忠谋博士模范领袖奖’颁发给 Stata 先生,作为半导
[半导体设计/制造]
Ray Stata荣获GSA最高荣誉表彰
亚德诺半导体成为e络盟亚太区“最高电子商务销售增长”公司
首个融合电子商务与在线社区的电子元件分销商e络盟(element14)向亚德诺半导体颁发了“最快电子商务销售增长”大奖。该奖项是对2011年度亚德诺半导体与e络盟之间紧密合作的肯定,亚德诺半导体通过e络盟网站实现了在亚太区出色的销售增长。 在整个2011年度,亚德诺半导体在模拟、混合信号和数字信号处理集成电路方面,持续获得网站访问量、转化和订单的最大涨幅。主要对微机电传感器(MEMS)、实验室电路(带扩展支持的即用型电路)、iCoupler隔离产品,以及有助于解决模拟工程师所遇到的常见问题的其它开发套件进行推广。 e络盟亚太区总裁Gert Labuschagne表示:“2011年,通过每个合作举措,我们与亚德诺半导体的伙伴关系
[半导体设计/制造]
<font color='red'>亚德诺</font>半导体成为e络盟亚太区“最高电子商务销售增长”公司
超声设备AD9272/AD9273(ADI
     ADI公司为满足医疗发展需求,推出了两款新产品,其中AD9272具有业界最低的终端噪声,适合需要获得卓越图像质量的高、中端推车式超声设备;而AD9273在同类产品中,能提供最高的电源效率,满足便携式超声系统的需求。      其实早在2007年4月,ADI推出了全球第一款集成八通道的芯片——AD9271,并已广泛应用于超声设备中,但针对一些高端项目应用,该芯片在功耗上显得心有余而力不足。“如何在高性能与便携式中作出取舍,成为当前超声系统设计工程师面临的挑战,需要在成像质量与诊断能力以及功耗之间进行平衡。”ADI公司大中华区工业及医疗资深业务经理周文胜表示,“AD9272和AD9273就是从AD9271延伸出来的两颗芯
[工业控制]
小广播
最新测试测量文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved