如何使用Python编程语言和ADALM2000创建虚拟示波器
off999 2024-11-10 10:30 19 浏览 0 评论
一个功能齐全的物理实验室造价不菲,其中的各式实验仪器常常价格昂贵,而且管理复杂。试想如果能够构建一个可放入口袋、随时便携的虚拟电子实验室,那么将为未来带来无限的可能。虚拟电子实验室,是通过一系列基于软件的应用来实现的仿真电子仪器所组成的模拟实验室环境,用户可以在该环境中开展大量电子实验。
本文旨在演示用户如何使用ADI ADALM2000和简单的开源编程语言Python开发所需的虚拟实验室仪器。通过Python与ADALM2000相结合,可以开发多种虚拟实验室仪器,如示波器、信号发生器、数字万用表等。其中,示波器作为物理电子实验室中常用的基本仪器之一,是个不错的入门选择,将在下文中重点讨论。
什么是示波器?
示波器可用于常见电路和复杂电路的信号分析,是电子工程的重要组成部分。如今的示波器能够与计算机连接,因此在示波器中捕获的信号能够以数字形式存储,供日后分析。
图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绑定。
图2.Libm2k安装窗口
u 安装结束。Libm2k将安装在Python的默认环境中。
Matplotlib
若要创建示波器显示,您需要使用matplotlib库。该库备受欢迎且易于使用,用于在Python中定制和显示可视化内容。有关该库的详细信息,请访问matplotlib网站。
NumPy
简单的示波器仍将需要大量数学计算。NumPy库可以为复杂的计算提供简单的函数。有关该库的详细信息,请访问NumPy网站。
安装Matplotlib和NumPy
若要安装matplotlib和NumPy,请在PyCharm中按照以下步骤操作:
u 转到“文件”>“设置”>“项目解释器”。
u 点击“设置”窗口右侧的+图标。
u 将出现“可用软件包”窗口。在搜索框中,搜索matplotlib和NumPy。
u 指定要安装的版本(选择最新版本)。
u 点击安装软件包按钮。
图3.在PyCharm中安装库包
硬件设置
在开始编码前,我们先设置硬件组件。需要使用以下硬件组件:
u 信号源(或信号发生器,如适用)
u ADALM2000
u 探头和限幅器
如果信号发生器可用,请按照图4中显示的配置,使用探头和/或限幅器将ADALM2000设备连接到通道1和通道2。
图4.使用信号发生器和ADALM2000的实际设置
表1.引脚配置
对于其他可用的信号源,也可以遵循相同配置。最后,通过USB端口将ADALM2000设备连接到PC。
简单的虚拟示波器
在这一部分将逐个代码块介绍程序,还将讨论代码的作用,并说明以这些方式编写代码的原因。随后的部分中将演示修改基础代码,以添加更多功能,从而满足开发人员用例要求。
首先,导入将用于开发虚拟示波器的三个库(libm2k、matplotlib和NumPy)。
统一资源标识符(URI)是连接到PC的每个ADALM2000的唯一标识符。该代码块确保ADALM2000连接到PC。如果没有ADALM2000设备插入PC,代码将自动退出。
通过检测到的URI连接到ADALM2000。“uri[0]”是在连接了多个设备的情况下检测到的第一个ADALM2000设备的URI。
对ADC和DAC运行校准。这是确保获得准确测量的重要步骤。
设置采样速率和时长。可用采样速率有1 kHz、10 kHz、100 kHz、1 MHz、10 MHz和100 MHz。采样速率是在1秒内获得样本的次数,时长是获得这些样本的持续采样时间。例如,如果将采样速率设为1000,时长设为3,那么每秒将获得1000个样本,并持续采样3秒。因此,共有3000个样本。
启用并将通道1设置为示波器的模拟输入。
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相同的样本数量。
创建将处理的图形。plt.subplots函数将返回图形对象(存储在g中)和轴对象(存储在ax中),这些对象将用于自定义整个图形。
这里可以添加网格线,作为波形的参考坐标。添加轴标签和y限制,以添加有关图形的更多细节。
显示图形。
在代码末尾销毁上下文。
运行代码,将会看到类似图5的图形。
图5.单通道正弦波输出;一个信号发生器输出:10 Hz,2 V p-p
双通道虚拟示波器
在这一部分,将使用上一部分中的代码,并添加更多代码块,以创建双通道虚拟示波器。
若要添加另一个通道,请复制ocsi.enableChannel和ocsi.setRange行代码,并将第一个参数从
在创建图形时,为通道2添加另一个图形。通道2的数据在data_y[1]阵列中。也可以自定义两个图形的颜色,以便轻松区分二者。在该示例中,通道1使用浅珊瑚色,通道2使用钢蓝色。
运行代码,应该会得到类似图6的结果。
图6.双通道正弦波输出。通道1信号发生器输出:10 Hz,2 V p-p;通道2信号发生器输出:5 Hz,3 V p-p。
虚拟示波器的其他功能
在这一部分,将为虚拟示波器添加其他功能,以提升交互性。Matplotlib提供我们可以使用的多个小部件。在该示例中,将使用文本标签和滑块小部件,并将继续使用上一部分中的代码。
为matplotlib滑块添加另一次导入。
将时间和数据阵列转换为NumPy阵列。在下一个代码块进行的计算中,将使用这些阵列。
获取所有波形数据后,提取这些波形的特性将不在话下。在以下代码块中,从获取的两个通道的数据中提取了Vpp、Vave和Vrms。要计算Vpp,将data_y numpy阵列中找到的最大值和最小值的绝对值相加。要计算Vave,只需用Vpp除以pi。要计算Vrms,用Vpp除以2乘以√2。
该代码块与前面部分类似。唯一的区别是,为图形使用NumPy阵列,而不是使用原始阵列。同时还根据图形创建了波形对象。稍后将使用这些对象。
为了在图形中显示计算的Vpp、Vave和Vrms,将利用matplotlib库中的文本标签小部件。创建字符串标签label_ch1和label_ch2,然后连接这两个字符串,以创建最终标签n_label。通过使用plt.text创建文本标签。第一和第二个参数(0.2, 3)是文本的x和y位置。第三个参数是要显示的字符串。第四和第五个参数分别是文本和框的样式。
接下来,创建偏移滑块。该滑块用于调整波形的参考电平。将主图形向左调整,为滑块留出空间。plt.axes定义滑块的尺寸、位置和表面颜色。Slider函数用于为偏移滑块创建具有特定特性的对象。
创建update_offset函数,并将其注册到offset_slider对象。每次更改滑块的值时,该函数都会向波形添加偏移量。
运行代码,将会看到类似图7的图形。
图7.带偏移滑块的默认双通道正弦波输出
尝试使用滑块调整偏移量。将会看到波形实时上下移动。
图8.调整偏移量滑块(向左滑动),用于调整两个通道输出的偏移量
总结
本文解释了拥有虚拟电子实验室的重要性和便利性。文中还演示了如何使用ADALM2000和Python开发虚拟示波器。讨论了软件要求和硬件设置,并提供了3个示例供参考。
相关推荐
- pps网络电视官方下载(pps网络电视tv版)
-
你的网速不好吧,不行就把任务删除在重新下一次试试,在不行的话就重新安装客户端建议可以电视和手机同一WiFi里安装悟空遥控器,然后手机下载你需要安装到电视的软件APP,使用手机上的悟空遥控器安装本地...
- 腾讯qq免费下载安装最新版(腾讯qq下载安装2019版免费)
-
出现此种情况是由于电脑上之前安装的QQ软件某些后台程序还在运行当中,并没有关闭掉,解决方法:1、点开始-控制面板-添加删除程序,找到QQ程序删除,然后安装新的QQ版本。2、点开始-注销或者重启计算机都...
-
- qq极速版下载官网(·qq极速版下载)
-
极速版就是把完整版分成三部分。第一部分是飞车可以运行的最基础部分,这部分下载玩了就可以跑图了。余下部分会在不跑图的时间内自动下载。也可以自己设置。简单来说,极速就是在最少时间内可以玩到游戏。不可以,没有头条极速qq登录。只听说过头条极速登...
-
2026-01-17 12:51 off999
- 洛克王国东哥辅助(洛克王国东哥辅助最新版)
-
洛克王国东哥辅助拥有非常丰富并且强大的辅助功能,功能分类为宠物区、洛助手、人物区、娱乐区、每日区、每周区、迷之岛、WPE模拟区、激战赛,这些功能可以帮助洛克玩家更加轻松地玩游戏。以下是提高洛克王国东哥...
- 英语听力每日一听(英语听力每日一听1小时)
-
一般来说,每天半小时,时间不宜过长,有损听力的,坚持三个月吧,语感就会有提升。如果厌倦,也可以听听英文歌曲。其实,当你真正对英语有了兴趣,会发现她是一种美丽的语言(当然没有汉语博大精深那是肯定的),听...
- 永久免费的网站服务器有哪些
-
网通大区的暗黑之城最好,法老诅咒,电信大区的狂热之约,神之图腾,艾可丽森,以及联通大区的六翼天使,加百列之魂等服务器,都是永久60级的免费的云服务器,国内IDC老牌供应商三丰云,提供免费云服务器和免费...
- 53短视频全部解锁版(五三软件)
-
欢乐五子棋53关残局解法如下:首先,观察棋盘上的情况,寻找可以利用的棋子。在53关残局中,你可能需要利用棋盘上的已有棋子,构建出连续五子连线。其次,要注意对方的棋子布局,尽量避免被对方阻止。在放置棋子...
- cf单机版手机版破解版(cf单机版手游破解版)
-
想玩这个游戏在应用宝中下载就可以了,应用宝它可是目前面对安卓系统开放的最专业的软件下载平台,里面几乎什么样的软件都有的,而且还都是支持一键下载和自动安装的呢。穿越火线是一款热门的网络游戏,但是如果想要...
-
- 腾讯会议下载(腾讯会议下载的文件保存在什么地方了)
-
1.打开电脑浏览器搜索【腾讯会议】,选择打开软件官网,往下滑动点击【立即下载】。2.在弹出的页面上选择要下载的【安装版本】,支持【windows系统】和【macOS】系统。3.接下来选择文件的【保存位置】,点击【下载】保存安装包。4.下载完...
-
2026-01-17 11:15 off999
-
- 游戏盒子电脑版(电脑板游戏盒子)
-
除了Steam之外,比较有名的电脑游戏盒子有WeGame。WeGame是腾讯游戏平台的升级版本,该平台面向全球及国内玩家,直接将游戏开发者与用户连接起来,为两者创造更多的沟通与互动。WeGame平台提供一站式服务,包括游戏的资讯、购买、下载...
-
2026-01-17 11:03 off999
- 欢乐斗地主下载安装(欢乐斗地主下载安装免费 app)
-
您可以按照以下步骤在华为手机上下载欢乐斗地主游戏:1.打开华为手机上的应用商店(一般为华为应用市场或者AppGallery)。2.在应用商店的搜索栏中输入"欢乐斗地主",然后点击搜...
- 腾讯游戏全部停服一天(明天腾讯游戏停服一天)
-
关服停运的游戏通常是没有收益的原因。腾讯游戏通常关服停运的游戏是因为没有成本收益,无法支持游戏的正常运行,所以会进行关服停运,这是最重要的原因。一人之下手游停止运营了,原因是氪金太严重。3年的等待,中...
- 设置来电铃声50首(免费手机铃声100首)
-
1.首先找到并点击打开华为手机桌面上的【设置】,2.在设置菜单下点击进入【声音】选项,3.点击【来电铃声】进行设置,如果有两张卡,这里会显示卡1来电铃声、卡2来电铃声,点击选择需要设置电话铃声的卡即可...
- 10个比1688便宜的拿货网(比阿里巴巴便宜的货源网站)
-
比1688便宜的进货渠道有:1、53货源网53货源网主要经营的是3c电子数码。产品的质量及售都是不错的,做3C的朋友可以去看看。2、58食品网该网站主要经营奶制品、饮品等批发;还有许多小零...
- 诺基亚8800(诺基亚8800e真假图片)
-
这部手机定位就是高端机,它的做功和机身材质都比较好,用料有皮料,宝石等,还是金属外壳,它卖的不是功能,就是身价,它的定位不同于n73这种街机,价格高买的人就相对比较少,再加上不会大量生产.买8800a...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
