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

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

3天内不再提示

基于树莓派的示波器项目

科技观察员 来源:circuitdigest 作者:伊曼纽尔·奥敦拉 2022-11-17 17:20 次阅读

大家好,欢迎来到今天的帖子。成为创客最迷人的事情之一是知道如何开发临时工具,当您拥有这种多功能性时,您将永远不会陷入任何项目的工作。所以今天,我将分享如何构建电气/电子工程中最重要的工具之一的基于Raspberry Pi的临时版本;示波器

示波器是一种电子测试仪器,可以可视化和观察变化的信号电压,通常作为二维图,其中一个或多个信号与时间的关系图。今天的项目将寻求使用Raspberry Pi和模数转换器模块复制示波器的信号可视化功能。

项目流程:

使用 Raspberry Pi 复制示波器的信号可视化将需要以下步骤;

1. 执行输入信号的数字到模拟转换

2. 准备结果数据以进行表示

3. 在实时图上绘制数据

该项目的简化框图如下图所示。

poYBAGN1_MeAEvW5AAAg7G3gO9M746.png

项目要求

该项目的要求可分为两类:

硬件要求

软件要求

硬件要求

要构建此项目,需要以下组件/部件;

树莓派 2(或任何其他型号)

8 或 16GB SD

局域网/以太网电缆

电源USB 数据线

ADS1115 模数转换器

LDR(可选,用于测试)

10k 或 1k 电阻

跳线

面包板

监视器或任何其他查看 pi 桌面的方式(包括 VNC)

软件要求

该项目的软件要求基本上是用于数据可视化的python模块(matplotlib和drawnow)和用于与ADS1115 ADC芯片接口的Adafruit模块。在我们继续时,我将展示如何在树莓派上安装这些模块。

虽然本教程无论使用哪种树莓派操作系统都可以工作,但我将使用树莓派拉伸操作系统,我假设您熟悉使用 Raspbian 拉伸操作系统设置 Raspberry Pi,并且您知道如何使用 putty 等终端软件 SSH 进入树莓派。如果您对此有任何问题,本网站上有大量的树莓派教程可以提供帮助。

所有硬件组件就绪后,让我们创建原理图并将组件连接在一起。

电路图:

为了将模拟输入信号转换为可以使用Raspberry Pi可视化的数字信号,我们将使用ADS1115 ADC芯片。该芯片变得很重要,因为Raspberry Pi与Arduino和大多数微控制器不同,没有板载模数转换器(ADC)。虽然我们可以使用任何兼容树莓派的ADC芯片,但我更喜欢这款芯片,因为它的高分辨率(16位)和Adafruit的有据可查的数据表和使用说明。您还可以查看我们的树莓派ADC教程以了解更多信息

ADC是基于I2C的器件,应连接到树莓派,如下图所示。

为清楚起见,下面还介绍了两个元件之间的引脚连接。

pYYBAGN1_MmABjxgAADicrp1OBI413.png

ADS1115 和树莓派连接:

VDD – 3.3V

接地 – 接地

SDA – SDA

标准及校正实验所 – 标准及校正实验所

完成所有连接后,启动您的 pi 并继续安装下面提到的依赖项。

poYBAGN1_MqAFY2cAAC4A_Qny1A025.jpg

安装树莓派示波器的依赖项:

在我们开始编写 python 脚本以从 ADC 中提取数据并将其绘制在实时图形上之前,我们需要启用树莓派的I2C 通信接口并安装前面提到的软件要求。这将在以下步骤中完成,以便于遵循:

第 1 步:启用树莓派 I2C 接口

要启用 I2C,请从终端运行;

sudo raspi-config

当配置面板打开时,选择接口选项,选择 I2C,然后单击启用。

第 2 步:更新树莓派

在开始任何项目之前,我要做的第一件事就是更新 Pi。通过这个,我确信操作系统上的每件事都是最新的,我不会遇到与我选择在 Pi 上安装的任何最新软件的兼容性问题。为此,请运行以下两个命令:

sudo apt-get update

sudo apt-get upgrade

第 3 步:为 ADC 安装 Adafruit ADS1115 库

更新完成后,我们现在准备从 ADS115 芯片的 Adafruit python 模块开始安装依赖项。通过运行确保您位于树莓派主目录中;

cd ~

然后通过运行安装构建要素;

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 install

安装后,您的屏幕应如下图所示。

pYYBAGN1_MyAJ967AAD1Sgf0aLQ565.jpg

第 4 步:测试库和 12C 通信

在继续项目的其余部分之前,测试库并确保ADC可以通过I2C与Raspberry Pi通信非常重要。为此,我们将使用库附带的示例脚本。

当仍在 Adafruit_Python_ADS1x15 文件夹中时,通过运行将目录更改为示例目录;

cd examples

接下来,运行 sampletest.py 示例,该示例以表格形式显示ADC上四个通道的值。

使用以下方法运行示例:

python simpletest.py

如果启用了I2C模块并且连接良好,则应看到如下图所示的数据。

poYBAGN1_M-ACJ40AABVmrvgbF8745.png

如果发生错误,请检查以确保ADC与PI连接良好,并且在Pi上启用了I2C通信。

第 5 步:安装Matplotlib

为了可视化数据,我们需要安装 matplotlib 模块,该模块用于在 python 中绘制所有类型的图形。这可以通过运行来完成;

sudo apt-get install python-matplotlib

您应该会看到如下图所示的结果。

pYYBAGN1_NCAHAQ0AAD3AAQAuw0283.jpg

第 6 步:安装Drawnowpython 模块

最后,我们需要安装 drawnow python 模块。该模块可帮助我们提供数据图的实时更新。

我们将通过 python 包安装程序安装 drawnow;pip,所以我们需要确保它已安装。这可以通过运行来完成;

sudo apt-get install python-pip

然后,我们可以使用 pip 通过运行以下命令来安装 drawnow 包:

sudo pip install drawnow

运行它后,您应该得到如下图所示的结果。

poYBAGN1_NGAB9UVAACHiZ8ShOM857.png

安装完所有依赖项后,我们现在可以编写代码了。

Raspberry Pi 示波器的 Python 代码:

这个Pi示波器的python代码相当简单,特别是如果你熟悉python matplotlib模块。在向我们展示整个代码之前,我将尝试将其分解为一部分并解释代码的每个部分在做什么,以便您有足够的知识来扩展代码以执行更多操作。

在此阶段,切换到显示器或使用VNC查看器非常重要,通过它可以看到Raspberry Pi的桌面,因为正在绘制的图形不会显示在终端上。

以监视器为界面打开一个新的python文件。你可以叫它任何你想要的名字,但我会称它为 scope.py。

sudo nano scope.py

创建文件后,我们要做的第一件事是导入我们将使用的模块;

import time

import matplotlib.pyplot as plt

from drawnow import *

import Adafruit_ADS1x15

接下来,我们创建一个指定 ADS1115 ADC 的 ADS1x15 库实例

adc = Adafruit_ADS1x15.ADS1115()

接下来,我们设置ADC的增益。有不同的增益范围,应根据ADC输入端的预期电压进行选择。在本教程中,我们估计 0 – 4.09v,因此我们将使用 1 的增益。有关增益的更多信息,请查看 ADS1015/ADS1115 数据表。

GAIN = 1

接下来,我们需要创建数组变量,这些变量将用于存储要绘制的数据,另一个变量用作计数。

Val = [ ]

cnt = 0

接下来,我们了解我们使绘图具有交互性的意图,以便我们能够实时绘制数据。

plt.ion()

接下来,我们开始连续ADC转换,指定ADC通道,在本例中为通道0,我们还指定增益。

应该注意的是,ADS1115上的所有四个ADC通道可以同时读取,但1个通道足以进行本演示。

adc.start_adc(0, gain=GAIN)

接下来,我们创建一个函数 def makeFig,以创建和设置将保存我们的实时图的图形的属性。我们首先使用 ylim 设置 y 轴的极限,然后输入绘图的标题和标签名称,然后使用 plt.plot() 指定要绘制的数据及其绘图样式和颜色。我们还可以声明通道(如通道0所示),以便在使用ADC的四个通道时识别每个信号。plt.legend 用于指定我们希望在图上显示有关该信号的信息(例如通道 0)的位置。

plt.ylim(-5000,5000)

plt.title('Osciloscope')

plt.grid(True)

plt.ylabel('ADC outputs')

plt.plot(val, 'ro-', label='lux')

plt.legend(loc='lower right')

接下来,我们编写 while 循环,该循环将用于不断从 ADC 读取数据并相应地更新图。

我们要做的第一件事是读取ADC转换值

value = adc.get_last_result()

接下来,我们在终端上打印值,只是为了给我们另一种确认绘制数据的方法。我们在打印后等待几秒钟,然后将数据附加到为存储该通道的数据而创建的列表 (val) 中。

print('Channel 0: {0}'.format(value))

time.sleep(0.5)

val.append(int(value))

然后我们调用 drawnow 来更新绘图。

drawnow(makeFig)

为了确保最新数据是图上可用的数据,我们在每 50 个数据计数后删除索引 0 处的数据。

cnt = cnt+1

if(cnt>50):

val.pop(0)

就这样!

完整的 Python 代码在本教程末尾给出。

树莓派示波器的实际应用:

复制完整的 python 代码并粘贴到我们之前创建的 python 文件中,请记住我们需要一台显示器来查看绘图,因此所有这些都应该通过 VNC 或连接的显示器或屏幕完成。

保存代码并使用运行;

sudo python scope.py

如果您使用了 scope.py 以外的其他名称,请不要忘记更改此名称以匹配。

几分钟后,您应该会看到终端上打印的ADC数据。有时,您可能会收到来自 matplotlib 的警告(如下图所示),该警告应被禁止显示,但它不会影响正在显示的数据或绘图。但是,为了禁止显示警告,可以在代码中的导入行之后添加以下代码行。

Import warnings

import matplotlib.cbook

warnings.filterwarnings(“ignore”, category=matplotlib.cbook.mplDeprecation)

pYYBAGN1_NOAPrtxAABX7GXF_aU745.png

poYBAGN1_NSAN_kNAAAtVE3Rybc018.png

这就是本教程的伙计们,要全面测试示波器,您可以将电位计等模拟设备连接到ADC上的通道,您应该看到数据随着电位计的每一次转动而变化。

import time

import matplotlib.pyplot as plt

#import numpy

from drawnow import *

# Import the ADS1x15 module.

import Adafruit_ADS1x15

# Create an ADS1115 ADC (16-bit) instance.

adc = Adafruit_ADS1x15.ADS1115()


GAIN = 1

val = [ ]

cnt = 0

plt.ion()

# Start continuous ADC conversions on channel 0 using the previous gain value.

adc.start_adc(0, gain=GAIN)

print('Reading ADS1x15 channel 0')

#create the figure function

def makeFig():

plt.ylim(-5000,5000)

plt.title('Osciloscope')

plt.grid(True)

plt.ylabel('ADC outputs')

plt.plot(val, 'ro-', label='Channel 0')

plt.legend(loc='lower right')

while (True):

# Read the last ADC conversion value and print it out.

value = adc.get_last_result()

print('Channel 0: {0}'.format(value))

# Sleep for half a second.

time.sleep(0.5)

val.append(int(value))

drawnow(makeFig)

plt.pause(.000001)

cnt = cnt+1

if(cnt>50):

val.pop(0)

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

    关注

    113

    文章

    6116

    浏览量

    183590
收藏 人收藏

    评论

    相关推荐

    【转载DIY】最好的15个树莓项目

    上次在***看到有人发了15个最好的Arduino 项目,做为树莓粉的我就在想着树莓也有很多好玩的创意和
    发表于 07-14 10:30

    树莓装机教程

    树莓装机教程树莓装机教程树莓装机教程树莓
    发表于 11-25 10:14 52次下载

    树莓的种类_树莓安装教程

    树莓(Raspberry Pi)是尺寸仅有信用卡大小的一个小型电脑,您可以将树莓连接电视、显示器、键盘鼠标等设备使用。目前,树莓
    发表于 11-27 22:01 5295次阅读

    树莓3wifi配置_树莓3开启wifi热点_树莓3的wifi使用教程

    树莓3在2016年2月29号正式发布了,树莓3几乎和树莓2代板型一致,大外观没什么变化小电
    发表于 12-08 11:47 3.1w次阅读

    树莓3硬件配置_树莓3都能装什么系统_树莓3系统安装教程

    树莓3一直颇受电子发烧友的青睐,这篇文章主要讨论的就是树莓3的硬件配置、树莓3都能装什么系
    发表于 12-08 14:36 2.6w次阅读

    树莓有什么用_树莓能用来做啥_树莓新手入门教程

    本文首先介绍了树莓的功能,其次介绍了树莓的用途,最后详细介绍了树莓新手入门教程。
    的头像 发表于 05-08 14:15 3.3w次阅读

    适合树莓初学者的10个项目

    下面小编就为初学者筛选了10个适合的树莓开发项目,这10个项目能够很好地帮助初学者对树莓的硬
    发表于 05-10 10:28 4.7w次阅读

    树莓是什么树莓的简单介绍

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓的神秘面纱,了解
    发表于 05-15 18:09 30次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的简单介绍

    树莓3和树莓4的原理图免费下载

    本文档的主要内容详细介绍的是树莓3和树莓4的原理图免费下载。
    发表于 01-07 10:23 223次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>3和<b class='flag-5'>树莓</b><b class='flag-5'>派</b>4的原理图免费下载

    树莓ATEM Tally开源项目

    电子发烧友网站提供《树莓ATEM Tally开源项目.zip》资料免费下载
    发表于 07-05 15:01 0次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>ATEM Tally开源<b class='flag-5'>项目</b>

    40v树莓电压调节帽开源项目

    电子发烧友网站提供《40v树莓电压调节帽开源项目.zip》资料免费下载
    发表于 07-12 09:30 1次下载
    40v<b class='flag-5'>树莓</b><b class='flag-5'>派</b>电压调节帽开源<b class='flag-5'>项目</b>

    树莓计算模块开源项目

    电子发烧友网站提供《树莓计算模块开源项目.zip》资料免费下载
    发表于 08-05 09:25 1次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>计算模块开源<b class='flag-5'>项目</b>

    Quantum项目中替换树莓

    电子发烧友网站提供《Quantum项目中替换树莓.zip》资料免费下载
    发表于 10-28 09:43 2次下载
    Quantum<b class='flag-5'>项目</b>中替换<b class='flag-5'>树莓</b><b class='flag-5'>派</b>

    树莓控制步进电机

    树莓控制步进电机 前言 设备 连接 源码 前言 测试步进电机 设备 名称 型号 树莓 3B+ 步进电机 28BYJ-48-5V 步进电机驱动板 UL2003芯片驱动板连接
    发表于 03-21 11:39 0次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>控制步进电机

    树莓监视器开源项目

    电子发烧友网站提供《树莓监视器开源项目.zip》资料免费下载
    发表于 06-14 11:33 6次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>监视器开源<b class='flag-5'>项目</b>