0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

虚拟电子实验室:如何使用Python编程语言和ADALM2000创建示波器

星星科技指导员 来源:ADI 作者:Arnie Mae Baes 和 Ch 2023-06-15 14:56 次阅读

Arnie Mae BaesChristian Garcia

虚拟电子实验室是一系列基于软件的仪器。这是作为软件应用实现的仿真电子实验室环境,用户可以在该环境中开展大量电子实验。功能齐全的物理实验室可能造价昂贵且难以管理。想象一下,如果能够构建一个可放入口袋的电子实验室;将带来无限可能!

本文旨在演示用户如何使用ADALM2000开发自己的虚拟实验室仪器。本文将使用Python这种简单的开源编程语言。将Python与ADALM2000相结合,可以开发多个虚拟实验室仪器,如示波器信号发生器、数字万用表等。但本文将重点讨论一种仪器——示波器。从该仪器入手是个不错的选择,这是我们在实际电子实验室中常用的基本仪器之一。

简介

仪器仪表行业正稳定迅速地朝着虚拟化方向发展。基于软件的仪器托管在PC上,PC使用尽可能少的专业硬件将其连接到必须测量/控制的设备。该硬件通常包括用于直接将信号数字化或控制独立仪器的接插板。

虚拟仪器仪表因其灵活性、模块化和可移植性而闻名。ADI公司为客户提供适合几乎所有用例的电子模块,其中ADALM2000就是一个很好的例子。

通过ADALM2000,工程师或开发人员可根据具体需求创建自己的虚拟电子实验室。通过libm2k库,用户可以使用C++C#或Python开发用于控制ADALM2000的软件应用。后面部分将详细讨论ADALM2000和libm2k。

什么是示波器?

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

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

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

ADALM2000是什么?

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

开始使用

安装Python和PyCharm

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

安装库

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

Libm2k

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

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

AnalogOut 用于信号发生器。

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

PowerSupply 用于恒压发电机

DMM 用于数字万用表。

安装Libm2k

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

转到 发布页面。

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

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

wKgZomSKttWAXE7iAACsKSVwguk036.png

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

Matplotlib

若要创建示波器显示,您需要使用matplotlib库。该库备受欢迎且易于使用,用于在Python中定制和显示可视化内容。

NumPy

简单的示波器仍将需要大量数学计算。NumPy库可以为复杂的计算提供简单的函数。

安装Matplotlib和NumPy

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

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

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

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

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

点击安装软件包按钮。

wKgZomSKtsaAEL2jAAEnzBIoQ_k539.png

图3. 在PyCharm中安装库包。

硬件设置

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

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

ADALM2000

探头和限幅器

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

wKgZomSKteOAOV8KAAB04b-U0fM802.jpg

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

信号发生器 ADALM2000
Ch1 正极引线 (+) 1+
Ch1 地 1–
Ch2 正极引线 (+) 2+
Ch2 地 2–

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

简单的虚拟示波器

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

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

wKgaomSKteWABl-xAADQttinbhc812.jpg

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

wKgZomSKteeAU_QOAAHsSkSj1hQ620.jpg

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

wKgaomSKtemAX8w2AAD9XmjfEK4082.jpg

ADCDAC运行校准。这是确保我们将获得准确测量的重要步骤。

wKgZomSKteqAIkesAAEPJ7xa8dM296.jpg

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

wKgZomSKteyAdUlPAAFVXooxoSE657.jpg

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

wKgaomSKte6AUdIsAAJMXT40ED0226.jpg

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

在该示例中,起始值是0,结束值是设置的时长,也就是3。对于样本数,将durationsample_rate相乘,即可获得所需的总样本数,也就是3000个样本。这3000个样本将均匀放置在0和3之间。该数组将存储在time_x中。

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

wKgZomSKtfCAC_MLAAFAyWiJl0M942.jpg

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

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

wKgaomSKtfGAOWUoAAGKp0cENOk859.jpg

显示图形。

wKgZomSKtfKAOpkgAABwLQW2Pv0265.jpg

在代码末尾销毁上下文。

wKgZomSKtfSAIYWEAACVFTijVHw000.jpg

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

wKgaomSKtfaAIWxiAAB3QgkWe1I586.jpg

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

双通道虚拟示波器

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

若要添加另一个通道,请复制ocsi.enableChannelocsi.setRange行代码,并将第一个参数从libm2k.ANALOG_IN_CHANNEL_1更改为libm2k.ANALOG_IN_CHANNEL_2

wKgaomSKtfeAc6TUAANrJ131bRI685.jpg

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

wKgZomSKtfmAd1MHAAI5xA-TN2E913.jpg

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

wKgaomSKtfqAXpZ-AACGlno5z9M115.jpg

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

虚拟示波器的其他功能

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

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

wKgZomSKtfyAaDaAAAEZQSSEUz0280.jpg

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

wKgaomSKtf6AcE_DAAJ-txMQsVk063.jpg

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

wKgZomSKtgCAXm9fAAIgoLhWUA0554.jpg

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

wKgaomSKtgGADIJCAAKEHJvx0Lg415.jpg

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

wKgZomSKtgOAIfu_AALZU79rPY8426.jpg

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

wKgaomSKtgWAKW_4AAJzVWo3Jqo548.jpg

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

wKgZomSKtgeATmOdAAKCTjd9uCo282.jpg

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

wKgZomSKtgiAatKeAACbziOAvEQ812.jpg

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

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

wKgZomSKtgqAHjwXAACY2hy0y3g673.jpg

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

总结

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

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 示波器
    +关注

    关注

    111

    文章

    5650

    浏览量

    181775
  • 信号发生器
    +关注

    关注

    28

    文章

    1276

    浏览量

    107771
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
收藏 人收藏

    评论

    相关推荐

    如何使用PythonADALM2000创建虚拟示波器

    一个功能齐全的物理实验室造价不菲,其中的各式实验仪器常常价格昂贵,而且管理复杂。试想如果能够构建一个可放入口袋、随时便携的虚拟电子实验室,那么将为未来带来无限的可能。
    发表于 09-12 13:14 668次阅读
    如何使用<b class='flag-5'>Python</b>和<b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b><b class='flag-5'>虚拟</b><b class='flag-5'>示波器</b>

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

    一个功能齐全的物理实验室造价不菲,其中的各式实验仪器常常价格昂贵,而且管理复杂。试想如果能够构建一个可放入口袋、随时便携的虚拟电子实验室,那么将为未来带来无限的可能。
    的头像 发表于 09-15 08:53 1196次阅读
    使用<b class='flag-5'>Python</b><b class='flag-5'>编程</b><b class='flag-5'>语言和</b><b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b><b class='flag-5'>虚拟</b><b class='flag-5'>示波器</b>

    虚拟电子实验室目录下x 怎么找

    本人刚出道的菜鸟,从解压包里 文件夹 到安装 文件夹甚至C盘都没找的 。 求高手指点怎么才能找到虚拟电子实验室汉化 目录下x 怎么找 。目录下X:\Program Files\National Instruments\Circuit Des截图给我谢了 !详细点、 、
    发表于 05-14 09:41

    虚拟电子实验室汉化问题,急急急!!!!

    本人刚出道的菜鸟,从解压包里 文件夹 到安装 文件夹甚至C盘都没找的 。 求高手指点怎么才能找到虚拟电子实验室汉化 目录下x 怎么找 。目录下X:\Program Files\National Instruments\Circuit Des截图给我谢了 !详细点、 、
    发表于 05-14 09:45

    虚拟电子实验室最新版

    虚拟电子实验室最新版,加汉化破解,由于文件太大采用分卷压缩,下载请全部下载,一起解压,后安装[hide] 虚拟电子实验室.part5119G网盘下载地址:http://d.119g.c
    发表于 10-20 10:02

    电子实验室建设需求

    欢迎大家提供一些电子实验室建议的建议,比如硬件设备、软件、元器件和常用工具的需求。有清单更好。多谢!
    发表于 02-28 21:00

    如何建设电子实验室

    欢迎大家提供一些电子实验室建设的建议,比如硬件设备、软件、元器件和常用工具的需求。有清单更好。多谢!实验室能够完成电子设备的维修、设计和加工制作一些测量控制设备。
    发表于 02-28 21:03

    基于LabVIEW和Matlab虚拟实验室的实现

    【摘要】 对Matlab和LabVIEW的混合编程进行了探讨,主要研究SIT软件包和动态链接库(DLL)两种技术,并在此基础上以单相半波电路实验为例详细介绍了构建虚拟电力电子实验室的方
    发表于 12-19 22:56

    [EWB虚拟电子实验室:MULTISIM.7&Ultiboard.7.电子电路设计与应用]

    [EWB虚拟电子实验室:MULTISIM.7&Ultiboard.7.电子电路设计与应用
    发表于 02-22 22:51

    Seeed ADALM2000-M2K 示波器

    `ADALM2000 (M2K)示波器是一个经济实惠的 USB 供电数据采集模块。ADALM2000内置采样速率可达 100MSPS 的12位模-数和数-模转换器,是一个高性能掌上实验室
    发表于 11-16 08:37

    创建一个移动电子实验室“SeraLab”的台式电源

    描述移动电子实验室“SeraLab”的台式电源这个实验室工作台电源是为了插入我的移动电子实验室而制造的,这是我创建的一个项目,用于在一个封闭的盒子中组织
    发表于 08-26 06:47

    虚拟电子实验室的设计与应用

    本文主要介绍了虚拟电子实验室的组成,提出了虚拟电子实验室的设计方案,设计了虚拟电子实验室的硬件系
    发表于 08-29 09:45 27次下载

    ADALM2000概述

    ADALM2000概述
    发表于 03-23 18:13 14次下载
    <b class='flag-5'>ADALM2000</b>概述

    如何使用PythonADALM2000创建示波器

    本文旨在演示用户如何使用ADALM2000开发自己的虚拟实验室仪器。本文将使用Python编程语言
    的头像 发表于 12-14 16:07 1153次阅读
    如何使用<b class='flag-5'>Python</b>和<b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b><b class='flag-5'>示波器</b>

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

    本文旨在演示用户如何使用ADI ADALM2000和简单的开源编程语言Python开发所需的虚拟实验室
    的头像 发表于 07-13 16:39 721次阅读
    如何使用<b class='flag-5'>Python</b><b class='flag-5'>编程</b><b class='flag-5'>语言和</b><b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b><b class='flag-5'>虚拟</b><b class='flag-5'>示波器</b>