作者: Arnie Mae Baes and Christian 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#,MATLAB和LabVIEW的可用绑定,并具有以下功能:®®
模拟输入用于示波器或电压表。我们将重点关注这一点。
模拟输出用于信号发生器。
数字用于逻辑分析仪或模式发生器。
电源用于恒压发生器。
数字万用表适用于数字万用表。
有关此库的详细信息可以在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。
指定要安装的版本(选择最新版本)。
单击安装包按钮。
图3.在 PyCharm 中安装库包。
硬件设置
在开始编码之前,让我们设置硬件组件。以下 需要硬件组件:
信号源(或信号发生器,如果有)
ADALM2000
探头和剪刀
如果信号发生器可用,请将ADALM2000器件连接到通道1,然后 带有探头和/或快波器的通道 2,使用图 4 所示的配置。
信号发生器 | ADALM2000 |
通道 1 正极线 (+) | 1+ |
通道 1 接地 | 1– |
通道 2 正极线 (+) | 2+ |
通道 2 接地 | 2– |
您也可以对其他可用信号源遵循相同的配置。 最后,通过USB端口将ADALM2000器件连接到PC。
简单虚拟示波器
在本节中,我们将逐个块介绍程序块。我们还将讨论代码的作用以及编写它们的原因。我们将在后续部分中演示其他示例,在这些示例中,我们将修改此基本代码,以表明我们可以添加更多功能以最适合开发人员的用例。
首先,导入我们将用于开发虚拟示波器的三个库(libm2k、matplotlib 和 NumPy)。
统一资源标识符(URI)是每个ADALM2000的唯一标识符 已连接到电脑。该代码块可确保ADALM2000连接到PC。如果没有ADALM2000,代码将自动退出 设备已插入电脑。
使用检测到的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 用于创建均匀分布的样本数组。我们将使用这个 用于创建时间 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中使用的相同数量的样本。
创建我们将要操纵的图形。plt.subplots 函数将返回 图形对象(存储在图中)和轴对象(存储在 AX 中),它们将是 用于自定义整个情节。
我们可以添加网格作为波形的指南。添加轴标签 和 y 限制以添加有关绘图的更多详细信息。
显示图表。
销毁代码末尾的上下文。
运行代码,并期望看到类似于图 5 的图。
图5.单通道正弦波输出;一个信号发生器输出:10 Hz,2 V 峰峰值。
2通道虚拟示波器
在本节中,我们将使用上一节中的代码并添加更多 代码块使其成为 2 通道虚拟示波器。
要添加另一个通道,请复制 ocsi.enableChannel 和 ocsi.setRange 行,并从 libm2k 更改第一个参数。ANALOG_IN_CHANNEL_1 libm2k。ANALOG_IN_CHANNEL_2。
在创建图形时,为通道 2 添加另一个图。通道 2 的数据位于 数组data_y[1]。我们还可以自定义两个图的颜色,以轻松区分它们。在此示例中,我们对通道 1 使用了浅珊瑚 和钢蓝色用于通道 2。
运行代码,您应该看到类似于图 6 的结果。
图6.双通道正弦波输出。通道 1 信号发生器输出:10 Hz,2 V 峰峰值;通道 2 信号发生器输出:5 Hz,3 V 峰峰值。
虚拟示波器的附加功能
在本节中,我们将为虚拟示波器添加其他功能 使其更具交互性。Matplotlib提供了几个我们可以的小部件 用。在此示例中,我们将使用文本标签和滑块小部件。我们还将 继续上一节中的代码。
为 matplotlib 滑块添加另一个导入。
将时间和数据数组转换为 NumPy 数组。这些将用于 我们将在下一个代码块上进行计算。
由于我们获取了所有波形数据,是什么阻止我们提取 这些波形的性质是什么?在下面的代码块中,我们提取了 VPP/ 5大道和 V有效值从两个通道的获取数据中。计算 VPP, 我们添加了在 data_y numpy 数组。计算 V 的步骤大道,我们只需要除以 VPP到圆周率。自 V 的计算有效值,我们需要除以 VPP到 2 乘以 2 的平方根。
此代码块与前面的部分类似。唯一的区别是 我们使用 NumPy 数组作为绘图,而不是使用原始数组。我们 还从绘图创建了波形对象。我们稍后将使用这些对象。
显示计算的 VPP/ <>大道和 V有效值在图中,我们将利用文本 来自 Matplotlib 库的标签小部件。创建字符串标签、label_ch1 和 label_ch2,然后连接这两个字符串以创建最终标签 fin_label。我们将使用 plt.text 来创建文本标签。第一个和第二个 参数 (0.2, 3) 是文本的 x 和 y 位置。第三个参数是 要显示的字符串。第四和第五个参数是文本样式和 框,分别。
接下来,让我们创建偏移滑块。此滑块的目的是调整 波形的参考电平。将主图调整到左侧以提供空间 滑块。plt.轴定义 滑 块。滑块功能用于为偏移滑块创建对象 特定属性。
创建update_offset函数并将其注册到offset_slider对象。每次我们更改滑块的值时,此功能都会向波形添加偏移量。
运行代码,并期望看到类似于图 7 的图形。
图7.默认 2 通道正弦波输出,带偏移滑块。
尝试使用滑块调整偏移量。您将看到波形向上移动 或实时关闭。
图8.调整偏移滑块(左侧滑块)以调整两个通道输出的偏移。
总结
本文解释了拥有虚拟电子实验室的重要性和便利性。它还演示了如何使用 ADALM2000和Python。软件要求和硬件设置 在介绍三个例子之前进行了讨论。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !