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

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

3天内不再提示

如何使用Python和ADALM2000创建示波器

星星科技指导员 来源:ADI 作者:Arnie Mae Baes and Ch 2022-12-14 16:07 次阅读

作者:Arnie Mae BaesandChristian 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可以从Python官方网站下载。如果不确定要使用哪个版本,请选择 Python 3.7。

Python可以在没有集成开发环境(IDE)的情况下使用,但为了使下载库和调试变得无忧无虑,可以使用PyCharm。PyCharm是一个IDE,为开发人员提供了几个基本工具,使其成为用于Python开发的最受欢迎的IDE。在JetBrains 官方网站上下载最新版本的 PyCharm 社区。

库的安装

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

Libm2k

要使用 Python 与 ADALM2000 接口,您需要安装 libm2k 库。这是一个C++库,具有适用于Python,C#,MATLABLabVIEW的可用绑定,并具有以下功能:®®

模拟输入用于示波器或电压表。我们将重点关注这一点。

模拟输出用于信号发生器。

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

电源用于恒压发生器。

数字万用表适用于数字万用表。

有关此库的详细信息可以在libm2k wiki页面上找到。

安装 libm2k

安装此库的一种方法是执行以下步骤:

转到发布页面。

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

运行可执行文件。确保在以下情况下选择安装 libm2k Python 绑定“设置”窗口会提示您选择其他任务。

完成安装。Libm2k 将安装在默认环境中 的蟒蛇。

Matplotlib

要创建示波器显示,您需要使用 matplotlib 库。这 库很流行,易于使用,用于在 Python 中自定义和显示可视化。有关此库的详细信息可以在matplotlib 网站上找到。

数字派

一个简单的示波器仍然需要大量的数学计算。这 NumPy库可以通过为复杂的计算提供简单的函数来提供帮助。 有关此库的详细信息可以在NumPy网站上找到。

安装 Matplotlib 和 NumPy

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

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

单击位于设置窗口右侧的 + 图标。

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

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

单击安装包按钮。

pYYBAGOZhEuAERY_AAD2jhIQ0mw434.jpg?h=270&hash=A505A06B2DE7C70D2CFDA3D8798E4501&imgver=1

图3.在 PyCharm 中安装库包。

硬件设置

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

信号源(或信号发生器,如果有)

ADALM2000

探头和剪刀

如果信号发生器可用,请将ADALM2000器件连接到通道1,然后 带有探头和/或快波器的通道 2,使用图 4 所示的配置。

信号发生器 ADALM2000
通道 1 正极线 (+) 1+
通道 1 接地 1–
通道 2 正极线 (+) 2+
通道 2 接地 2–

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

简单虚拟示波器

在本节中,我们将逐个块介绍程序块。我们还将讨论代码的作用以及编写它们的原因。我们将在后续部分中演示其他示例,在这些示例中,我们将修改此基本代码,以表明我们可以添加更多功能以最适合开发人员的用例。

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

pYYBAGOZhFCAS_HJAAAfXx6O3fA720.jpg?la=en&imgver=1

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

poYBAGOZhFGAV6wUAABdawkRFfo062.jpg?la=en&imgver=1

使用检测到的URI连接到ADALM2000。uri[0]与 检测到第一个ADALM2000器件的URI(以防有多个器件) 设备已连接。

pYYBAGOZhFSAXHDtAAApRqzQ2LE664.jpg?la=en&imgver=1

运行 ADCDAC 的校准。这是确保我们将 获得准确的测量结果。

poYBAGOZhFaAdtQ_AAAu84pKLnk604.jpg?la=en&imgver=1

设置采样率和持续时间。可用的采样率为 1 kHz、10 kHz、 100 kHz、1 MHz、10 MHz 和 100 MHz。采样率是我们 在 1 秒内获取样本,持续时间是我们获得这些样本的时间。为 例如,如果我们将采样率设置为 1000,持续时间设置为 3,我们将得到 每秒 1000 个样本,持续 3 秒。这使得总共 3000 个样本。

pYYBAGOZhFiAFEZMAAA5Xh6N-3o762.jpg?la=en&imgver=1

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

poYBAGOZhFqAOuomAAB_b2yx6cU804.jpg?la=en&imgver=1

Linspace用于创建均匀分布的样本数组。我们将使用这个 用于创建时间 x 轴数据数组的 NumPy 函数。此函数的第一个和第二个参数分别指示数组的开始值和结束值。 最后一个参数是我们想要在其中生成的样本数 开始值和结束值。

在此示例中,起始值为 0,结束值为设置的持续时间,即 为 3。对于样本数量,我们将持续时间sample_rate相乘得到 我们需要的总样本,即 3000 个样本。这 3000 个样本将 均匀地放置在 0 和 3 之间。此数组将存储在time_x中。

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

pYYBAGOZhFuAe70AAAA8Pe-71Mo305.jpg?la=en&imgver=1

创建我们将要操纵的图形。plt.subplots函数将返回 图形对象(存储在图中)和轴对象(存储在AX中),它们将是 用于自定义整个情节。

我们可以添加网格作为波形的指南。添加轴标签 和 y 限制以添加有关绘图的更多详细信息。

poYBAGOZhF2AW_GyAABOH1O7r5E318.jpg?la=en&imgver=1

显示图表。

poYBAGOZhF-AZVV_AAAHEGrDQcg660.jpg?la=en&imgver=1

销毁代码末尾的上下文。

pYYBAGOZhGGAI5HmAAARkb2_oCs010.jpg?la=en&imgver=1

运行代码,并期望看到类似于图 5 的图。

poYBAGOZhGSATi1dAAD7hdCQ6bY621.jpg?h=270&hash=CD7ECE772CDE4D65A4C01690A58E74C9&imgver=1

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

2通道虚拟示波器

在本节中,我们将使用上一节中的代码并添加更多 代码块使其成为 2 通道虚拟示波器。

要添加另一个通道,请复制ocsi.enableChannelocsi.setRange行,并从libm2k 更改第一个参数。ANALOG_IN_CHANNEL_1libm2k。ANALOG_IN_CHANNEL_2

poYBAGOZhGaAJYlyAADJU4YD3ws138.jpg?la=en&imgver=1

在创建图形时,为通道 2 添加另一个图。通道 2 的数据位于 数组data_y[1]。我们还可以自定义两个图的颜色,以轻松区分它们。在此示例中,我们对通道 1 使用了浅珊瑚 和钢蓝色用于通道 2。

poYBAGOZhGiABExNAAB3tFfi320852.jpg?la=en&imgver=1

运行代码,您应该看到类似于图 6 的结果。

pYYBAGOZhGyAcLKdAAEfZCTm4bg853.jpg?h=270&hash=9C96EBF31D4ED049FEF478A4E470C8AC&imgver=1

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

虚拟示波器的附加功能

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

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

pYYBAGOZhG6AZjSyAAAwrhEMyyI578.jpg?la=en&imgver=1

将时间和数据数组转换为 NumPy 数组。这些将用于 我们将在下一个代码块上进行计算。

poYBAGOZhHKAJwP0AACJehcEiqU345.jpg?la=en&imgver=1

由于我们获取了所有波形数据,是什么阻止我们提取 这些波形的性质是什么?在下面的代码块中,我们提取了 VPP/ 5大道和 V有效值从两个通道的获取数据中。计算 VPP, 我们添加了在 data_y numpy 数组。计算 V 的步骤大道,我们只需要除以 VPP到圆周率。自 V 的计算有效值,我们需要除以 VPP到 2 乘以 2 的平方根。

poYBAGOZhHSAS_OHAAB57ROvEWY498.jpg?la=en&imgver=1

此代码块与前面的部分类似。唯一的区别是 我们使用 NumPy 数组作为绘图,而不是使用原始数组。我们 还从绘图创建了波形对象。我们稍后将使用这些对象。

pYYBAGOZhHiAVHJmAACLjh3BR2k673.jpg?la=en&imgver=1

显示计算的 VPP/ <>大道和 V有效值在图中,我们将利用文本 来自 Matplotlib 库的标签小部件。创建字符串标签、label_ch1label_ch2,然后连接这两个字符串以创建最终标签fin_label。我们将使用plt.text来创建文本标签。第一个和第二个 参数(0.2, 3)是文本的 x 和 y 位置。第三个参数是 要显示的字符串。第四和第五个参数是文本样式和 框,分别。

poYBAGOZhHyAUFurAAChLeNEzE8917.jpg?la=en&imgver=1

接下来,让我们创建偏移滑块。此滑块的目的是调整 波形的参考电平。将主图调整到左侧以提供空间 滑块。plt.轴定义 滑 块。滑块功能用于为偏移滑块创建对象 特定属性。

pYYBAGOZhICAcD20AACC3qGwtaA778.jpg?la=en&imgver=1

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

poYBAGOZhIGAWzqqAACH_aGxMek662.jpg?la=en&imgver=1

运行代码,并期望看到类似于图 7 的图形。

pYYBAGOZhIOAJdDpAAFF0RPEgmM812.jpg?h=270&hash=8DFF710150440D4F92E510690143B09C&imgver=1

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

尝试使用滑块调整偏移量。您将看到波形向上移动 或实时关闭。

poYBAGOZhIiAF_JQAAFJ5pYCLhM084.jpg?h=270&hash=163D8E7B5F6A23DDCEEA02685CB5BFEA&imgver=1

图8.调整偏移滑块(左侧滑块)以调整两个通道输出的偏移。

总结

本文解释了拥有虚拟电子实验室的重要性和便利性。它还演示了如何使用 ADALM2000和Python。软件要求和硬件设置 在介绍三个例子之前进行了讨论。

审核编辑:郭婷

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

    关注

    142

    文章

    12416

    浏览量

    210016
  • 示波器
    +关注

    关注

    111

    文章

    5650

    浏览量

    181774
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
收藏 人收藏

    评论

    相关推荐

    学子专区—ADALM2000实验:放大器输出级

    提供拉电流和灌电流能力,需要两个互补跟随器:一个NPN型用于拉电流,一个PNP型用于灌电流。结果就是所谓推挽配置,图1显示了一个简单例子。R1和R2用于检测Q1和Q2的集电极电流,以及在输出过载的情况下限制这些电流。 材料 ► ADALM2000主动学
    的头像 发表于 04-26 20:01 4826次阅读
    学子专区—<b class='flag-5'>ADALM2000</b>实验:放大器输出级

    如何使用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>

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

    一个功能齐全的物理实验室造价不菲,其中的各式实验仪器常常价格昂贵,而且管理复杂。试想如果能够构建一个可放入口袋、随时便携的虚拟电子实验室,那么将为未来带来无限的可能。虚拟电子实验室,是通过一系列基于软件的应用来实现的仿真电子仪器所组成的模拟实验室环境,用户可以在该环境中开展大量电子实验。
    的头像 发表于 09-15 08:53 1196次阅读
    使用<b class='flag-5'>Python</b>编程语言和<b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b>虚拟<b class='flag-5'>示波器</b>

    学子专区—ADALM2000实验:BJT差分对

    本次实验旨在研究一个使用NPN晶体管的简单差分放大器。首先,我们需要做一些关于硬件限制问题的说明。ADALM2000系统中的波形发生器具有高输出带宽,该高带宽代来了宽带噪声。
    发表于 12-14 10:47 2479次阅读
    学子专区—<b class='flag-5'>ADALM2000</b>实验:BJT差分对

    Seeed ADALM2000-M2K 示波器

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

    齐纳二极管稳压器ADALM2000应用示例

    齐纳二极管稳压器ADALM2000应用示例
    发表于 06-17 08:53

    学子专区—ADALM2000实验:MOS差分对

    衰减器和滤波器。材料ADALM2000主动学习模块无焊面包板跳线两个10 kΩ电阻一个15 kΩ电阻(将10 kΩ和4.7 kΩ电阻串联)两个小信号NMOS晶体管(CD4007或ZVN2110A)  说明
    发表于 12-31 08:00

    ADALM2000概述

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

    学子专区—ADALM2000实验:跨阻放大器输入级

    ADALM2000(ADI公司)相连的电路及连接如图1所示。NPN晶体管Q1和Q2以及PNP晶体管Q3和Q4应从VBE匹配最佳的可用器件中选择。
    发表于 02-28 17:42 1480次阅读
    学子专区—<b class='flag-5'>ADALM2000</b>实验:跨阻放大器输入级

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

    本文旨在演示用户如何使用ADALM2000开发自己的虚拟实验室仪器。本文将使用Python这种简单的开源编程语言。将PythonADALM2000相结合,可以开发多个虚拟实验室仪器,
    的头像 发表于 06-15 14:56 790次阅读
    虚拟电子实验室:如何使用<b class='flag-5'>Python</b>编程语言和<b class='flag-5'>ADALM2000</b><b class='flag-5'>创建</b><b class='flag-5'>示波器</b>

    ADALM2000实验:CMOS逻辑电路、D型锁存器

    本实验活动的目标是进一步强化上一个实验活动“ADALM2000实验:使用CD4007阵列构建CMOS逻辑功能”中探讨的CMOS逻辑基本原理,并获取更多使用复杂CMOS门级电路的经验。具体而言,您将了解如何使用CMOS传输门和CMOS反相器来构建D型触发器或锁存器。
    的头像 发表于 07-10 09:55 435次阅读
    <b class='flag-5'>ADALM2000</b>实验:CMOS逻辑电路、D型锁存器

    ADALM2000实验:可调外部触发电路

    本实验活动的目标是研究一种将模拟信号连接到ADALM2000模块的数字式外部触发信号输入的电路。
    的头像 发表于 07-10 09:32 470次阅读
    <b class='flag-5'>ADALM2000</b>实验:可调外部触发电路

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

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

    【官网直购】ADALM2000 高级主动学习模块ADI 官网现货发售!

    ADALM2000 主动学习模块是一种经济实惠的USB供电软件定义仪器,内置以100 MSPS速率运行的12位ADC和DAC,可将高性能实验室设备的功能以手掌大小器件实现,使电气工程学生和爱好者能够
    的头像 发表于 08-04 18:15 402次阅读
    【官网直购】<b class='flag-5'>ADALM2000</b> 高级主动学习模块ADI 官网现货发售!

    ADI 高级主动学习模块ADALM2000 官网现货发售,需要的同学快冲!

    ADALM2000 主动学习模块是一种经济实惠的 USB 供电软件定义仪器,内置以 100 MSPS 速率运行的 12 位 ADC 和 DAC,可将高性能实验室设备的功能以手掌大小器件实现
    的头像 发表于 08-16 07:40 434次阅读