大家好,欢迎来到今天的帖子 成为制造商最着迷的事情之一就是知道如何开发临时工具,如果您具有这种多功能性,那么您永远不会卡在任何项目上。因此,今天,我将分享如何构建基于Raspberry Pi的临时版本,该版本是电气/电子工程中最重要的工具之一。示波器。
示波器是一种电子测试仪器,它可以可视化和观察变化的信号电压,通常为二维图,其中一个或多个信号随时间变化。今天的项目将寻求使用Raspberry Pi和模数转换器模块来复制示波器的信号可视化功能。
项目流程:
使用Raspberry Pi复制示波器的信号可视化将需要执行以下步骤:
1.对输入信号进行数模转换
2.准备结果数据以表示
3.将数据绘制在实时图表上
该项目的简化框图如下图所示。
项目要求
该项目的需求可以分为两类:
- 硬件要求
- 软件需求
硬件要求
要构建此项目,需要以下组件/部件;
- Raspberry pi 2(或任何其他型号)
- 8或16GB SD卡
- 局域网/以太网电缆
- 电源或USB电缆
- ADS1115 ADC
- LDR(可选,用于测试)
- 10k或1k电阻
- 跳线
- 面包板
- 监视或以其他方式查看pi的桌面(包括VNC)
软件需求
该项目的软件需求基本上是将用于数据可视化的python模块( matplotlib和drawow )以及用于与ADS1115 ADC芯片接口的Adafruit模块。我们将继续介绍如何在Raspberry Pi上安装这些模块。
尽管本教程无论使用什么树莓派OS都可以运行,但我将使用Raspberry Pi Stretch OS,并且假定您熟悉使用Raspbian Stretch OS设置Raspberry Pi的知识,并且知道如何通过SSH进入树莓派。 pi使用类似腻子的终端软件。如果您对此有任何疑问,此网站上有大量的Raspberry Pi教程可以提供帮助。
在所有硬件组件都准备就绪的情况下,让我们创建原理图并将组件连接在一起。
电路原理图:
要将Raspberry Pi的模拟输入信号转换为数字信号,我们将使用ADS1115 ADC芯片。该芯片非常重要,因为与Arduino和大多数微控制器不同,Raspberry Pi没有板载模数转换器(ADC)。虽然我们可以使用任何与raspberry pi兼容的ADC芯片,但我更喜欢该芯片,因为它具有高分辨率(16位)和详细记录的数据手册,并使用Adafruit的说明。您也可以查看我们的Raspberry Pi ADC教程以了解更多信息。
ADC是基于I2C的设备,应连接到Raspberry Pi,如下图所示。
为了清楚起见,下面还将介绍两个组件之间的引脚连接。
ADS1115和Raspberry Pi连接:
VDD – 3.3v
GND – GND
SDA – SDA
SCL – SCL
完成所有连接后,打开pi电源并继续安装下面提到的依赖项。
安装Raspberry Pi示波器的依赖项:
在开始编写Python脚本以从ADC提取数据并将其绘制在实时图形上之前,我们需要启用raspberry pi的I2C通信接口并安装前面提到的软件要求。这将通过以下步骤完成,因此易于遵循:
步骤1:启用Raspberry Pi I2C界面
要启用I2C,请从终端运行;
须藤raspi-config
当配置面板打开时,选择接口选项,选择I2C,然后单击启用。
步骤2:更新Raspberry Pi
开始任何项目之前,我要做的第一件事就是更新Pi。这样,我可以确定操作系统上的所有内容都是最新的,并且不会遇到与我选择在Pi上安装的任何最新软件的兼容性问题。为此,请运行以下两个命令:
sudo apt-get更新 sudo apt-get升级
步骤3:安装用于ADC的Adafruit ADS1115库
完成更新后,我们现在准备从ADS115芯片的Adafruit python模块开始安装依赖项。通过运行来确保您位于Raspberry Pi主目录中;
光盘〜
然后通过运行安装build-essentials;
sudo apt-get install build-essential python-dev python-smbus git
接下来,通过运行为该库克隆Adafruit git文件夹;
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
转到克隆文件的目录并运行安装文件;
cd Adafruit_Python_ADS1x1z sudo python setup.py安装
安装后,您的屏幕应如下图所示。
步骤4:测试库和12C通讯。
在继续进行其余项目之前,重要的是测试库并确保ADC可以通过I2C与树莓派进行通信。为此,我们将使用该库随附的示例脚本。
仍在Adafruit_Python_ADS1x15文件夹中时,通过运行将目录更改为示例目录;
cd的例子
接下来,运行sampletest.py示例,以表格形式显示ADC上四个通道的值。
使用以下示例运行示例:
python simpletest.py
如果启用了I2C模块并且连接良好,您应该看到如下图所示的数据。
如果发生错误,请检查以确保ADC正确连接到PI,并且在Pi上启用了I2C通信。
步骤5:安装 Matplotlib
为了可视化数据,我们需要安装 matplotlib 模块,该模块用于在python中绘制各种图形。这可以通过运行来完成;
须藤apt-get install python-matplotlib
您应该看到如下图所示的结果。
步骤6:安装 Drawingow python模块
最后,我们需要安装 drawow python模块。此模块可帮助我们实时更新数据图。
我们将通过python软件包安装程序安装 drawow ; pip ,因此我们需要确保已安装它。这可以通过运行来完成;
须藤apt-get install python-pip
然后,我们可以使用pip通过运行以下命令安装 drawow 软件包:
sudo pip安装drawow
运行后,您应该得到如下图所示的结果。
安装了所有依赖项之后,我们现在就可以编写代码了。
Raspberry Pi示波器的Python代码:
Pi示波器的python代码非常简单,尤其是如果您熟悉python matplotlib 模块。在向我们展示整个代码之前,我将尝试将其分解为一部分,并解释代码的每个部分在做什么,以便您有足够的知识来扩展代码以做更多的工作。
在此阶段,重要的是切换到显示器或使用VNC查看器,通过它您可以查看Raspberry Pi桌面的任何内容,因为所绘制的图形不会显示在终端上。
使用监视器作为界面,打开一个新的python文件。您可以将其命名为任意名称,但我将其命名为scope.py。
须藤nano scope.py
创建文件后,我们要做的第一件事就是导入将要使用的模块。
导入时间 从drawow导入matplotlib.pyplot as plt 导入* 导入Adafruit_ADS1x15
接下来,我们创建一个ADS1x15库实例,指定ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115()
接下来,我们设置ADC的增益。增益范围不同,应根据在ADC输入端所期望的电压进行选择。在本教程中,我们估计0 – 4.09v,因此我们将使用1的增益。有关增益的更多信息,请查看ADS1015 / ADS1115数据手册。
增益= 1
接下来,我们需要创建数组变量,该变量将用于存储要绘制的数据,另一个变量用作计数。
Val = CNT = 0
接下来,我们知道了使图交互式的意图,以便使我们能够实时绘制数据。
plt.ion()
接下来,我们开始连续ADC转换,指定ADC通道(在这种情况下为通道0),还指定增益。
应当注意,ADS1115上的所有四个ADC通道都可以同时读取,但是一个通道就足够了。
adc.start_adc(0,增益=增益)
接下来,我们创建一个函数 def makeFig ,以创建并设置将保存实时图形的图形属性。首先,我们使用 ylim 设置y轴的 界限 ,然后输入图的标题和标签名称,然后使用 plt.plot() 指定要绘制的数据及其图样式和颜色。 。 我们还可以声明通道(如通道0所述),以便在使用ADC的四个通道时可以识别每个信号。 plt.legend 用于指定我们希望在何处显示有关该信号的信息(例如,通道0)。
plt.ylim(-5000,5000) plt.title('Osciloscope') plt.grid(True) plt.ylabel('ADC输出') plt.plot(val,'ro-',label ='lux') plt.legend(loc ='右下')
接下来,我们编写 while 循环,该循环将不断用于从ADC读取数据并相应地更新绘图。
我们要做的第一件事是读取ADC转换值
值= adc.get_last_result()
接下来,我们在终端上打印该值,只是为我们提供了另一种确认绘图数据的方式。我们在打印后等待几秒钟,然后将数据追加到为存储该通道的数据而创建的列表(值)中。
print('Channel 0:{0}'。format(value) ) time.sleep(0.5)val.append(int(value))
然后,我们调用 drawow 更新情节。
drawow(makeFig)
为了确保最新数据是该图上可用的数据,我们每隔50个数据计数就删除索引0处的数据。
cnt = cnt + 1 if(cnt> 50): val.pop(0)
就这样!
在完整的Python代码在本教程的最后给出。
Raspberry Pi示波器正在使用中:
复制完整的python代码并粘贴到我们之前创建的python文件中,请记住,我们将需要一个监视器来查看绘图,因此所有这些操作都应由VNC或连接的监视器或屏幕来完成。
保存代码并运行;
须藤python scope.py
如果您使用除scope.py以外的其他名称,请不要忘记更改此名称以使其匹配。
几分钟后,您应该会在终端上看到ADC数据正在打印。有时您可能会从 matplotlib中 收到警告(如下图所示),该警告应予以抑制,但无论如何不会影响正在显示的数据或绘图。但是,为了消除警告,可以在我们的代码中的导入行之后添加以下代码行。
导入警告 导入matplotlib.cbook warnings.filterwarnings(“ ignore”,category = matplotlib.cbook.mplDeprecation)
对于本教程的家伙来说,就是这样,为了全面测试示波器,您可以将电位计之类的模拟设备连接到ADC的通道,并且应该看到电位计每转一圈数据都会变化。或者,您可以输入正弦波或方波来测试输出。
感谢您的阅读,如果您有任何问题或希望我添加的内容,请给我留言。
直到下一次,继续努力!