0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于樹莓派的示波器項目

科技觀察員 ? 來源:circuitdigest ? 作者:伊曼紐爾·奧敦拉 ? 2022-11-17 17:20 ? 次閱讀

大家好,歡迎來到今天的帖子。成為創(chuàng)客最迷人的事情之一是知道如何開發(fā)臨時工具,當(dāng)您擁有這種多功能性時,您將永遠(yuǎn)不會陷入任何項目的工作。所以今天,我將分享如何構(gòu)建電氣/電子工程中最重要的工具之一的基于Raspberry Pi的臨時版本;示波器

示波器是一種電子測試儀器,可以可視化和觀察變化的信號電壓,通常作為二維圖,其中一個或多個信號與時間的關(guān)系圖。今天的項目將尋求使用Raspberry Pi和模數(shù)轉(zhuǎn)換器模塊復(fù)制示波器的信號可視化功能。

項目流程:

使用 Raspberry Pi 復(fù)制示波器的信號可視化將需要以下步驟;

1. 執(zhí)行輸入信號的數(shù)字到模擬轉(zhuǎn)換

2. 準(zhǔn)備結(jié)果數(shù)據(jù)以進行表示

3. 在實時圖上繪制數(shù)據(jù)

該項目的簡化框圖如下圖所示。

poYBAGN1_MeAEvW5AAAg7G3gO9M746.png

項目要求

該項目的要求可分為兩類:

硬件要求

軟件要求

硬件要求

要構(gòu)建此項目,需要以下組件/部件;

樹莓派 2(或任何其他型號)

8 或 16GB SD

局域網(wǎng)/以太網(wǎng)電纜

電源USB 數(shù)據(jù)線

ADS1115 模數(shù)轉(zhuǎn)換器

LDR(可選,用于測試)

10k 或 1k 電阻

跳線

面包板

監(jiān)視器或任何其他查看 pi 桌面的方式(包括 VNC)

軟件要求

該項目的軟件要求基本上是用于數(shù)據(jù)可視化的python模塊(matplotlib和drawnow)和用于與ADS1115 ADC芯片接口的Adafruit模塊。在我們繼續(xù)時,我將展示如何在樹莓派上安裝這些模塊。

雖然本教程無論使用哪種樹莓派操作系統(tǒng)都可以工作,但我將使用樹莓派拉伸操作系統(tǒng),我假設(shè)您熟悉使用 Raspbian 拉伸操作系統(tǒng)設(shè)置 Raspberry Pi,并且您知道如何使用 putty 等終端軟件 SSH 進入樹莓派。如果您對此有任何問題,本網(wǎng)站上有大量的樹莓派教程可以提供幫助。

所有硬件組件就緒后,讓我們創(chuàng)建原理圖并將組件連接在一起。

電路圖:

為了將模擬輸入信號轉(zhuǎn)換為可以使用Raspberry Pi可視化的數(shù)字信號,我們將使用ADS1115 ADC芯片。該芯片變得很重要,因為Raspberry Pi與Arduino和大多數(shù)微控制器不同,沒有板載模數(shù)轉(zhuǎn)換器(ADC)。雖然我們可以使用任何兼容樹莓派的ADC芯片,但我更喜歡這款芯片,因為它的高分辨率(16位)和Adafruit的有據(jù)可查的數(shù)據(jù)表和使用說明。您還可以查看我們的樹莓派ADC教程以了解更多信息。

ADC是基于I2C的器件,應(yīng)連接到樹莓派,如下圖所示。

為清楚起見,下面還介紹了兩個元件之間的引腳連接。

pYYBAGN1_MmABjxgAADicrp1OBI413.png

ADS1115 和樹莓派連接:

VDD – 3.3V

接地 – 接地

SDA – SDA

標(biāo)準(zhǔn)及校正實驗所 – 標(biāo)準(zhǔn)及校正實驗所

完成所有連接后,啟動您的 pi 并繼續(xù)安裝下面提到的依賴項。

poYBAGN1_MqAFY2cAAC4A_Qny1A025.jpg

安裝樹莓派示波器的依賴項:

在我們開始編寫 python 腳本以從 ADC 中提取數(shù)據(jù)并將其繪制在實時圖形上之前,我們需要啟用樹莓派的I2C 通信接口并安裝前面提到的軟件要求。這將在以下步驟中完成,以便于遵循:

第 1 步:啟用樹莓派 I2C 接口

要啟用 I2C,請從終端運行;

sudo raspi-config

當(dāng)配置面板打開時,選擇接口選項,選擇 I2C,然后單擊啟用。

第 2 步:更新樹莓派

在開始任何項目之前,我要做的第一件事就是更新 Pi。通過這個,我確信操作系統(tǒng)上的每件事都是最新的,我不會遇到與我選擇在 Pi 上安裝的任何最新軟件的兼容性問題。為此,請運行以下兩個命令:

sudo apt-get update

sudo apt-get upgrade

第 3 步:為 ADC 安裝 Adafruit ADS1115 庫

更新完成后,我們現(xiàn)在準(zhǔn)備從 ADS115 芯片的 Adafruit python 模塊開始安裝依賴項。通過運行確保您位于樹莓派主目錄中;

cd ~

然后通過運行安裝構(gòu)建要素;

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

安裝后,您的屏幕應(yīng)如下圖所示。

pYYBAGN1_MyAJ967AAD1Sgf0aLQ565.jpg

第 4 步:測試庫和 12C 通信。

在繼續(xù)項目的其余部分之前,測試庫并確保ADC可以通過I2C與Raspberry Pi通信非常重要。為此,我們將使用庫附帶的示例腳本。

當(dāng)仍在 Adafruit_Python_ADS1x15 文件夾中時,通過運行將目錄更改為示例目錄;

cd examples

接下來,運行 sampletest.py 示例,該示例以表格形式顯示ADC上四個通道的值。

使用以下方法運行示例:

python simpletest.py

如果啟用了I2C模塊并且連接良好,則應(yīng)看到如下圖所示的數(shù)據(jù)。

poYBAGN1_M-ACJ40AABVmrvgbF8745.png

如果發(fā)生錯誤,請檢查以確保ADC與PI連接良好,并且在Pi上啟用了I2C通信。

第 5 步:安裝Matplotlib

為了可視化數(shù)據(jù),我們需要安裝 matplotlib 模塊,該模塊用于在 python 中繪制所有類型的圖形。這可以通過運行來完成;

sudo apt-get install python-matplotlib

您應(yīng)該會看到如下圖所示的結(jié)果。

pYYBAGN1_NCAHAQ0AAD3AAQAuw0283.jpg

第 6 步:安裝Drawnowpython 模塊

最后,我們需要安裝 drawnow python 模塊。該模塊可幫助我們提供數(shù)據(jù)圖的實時更新。

我們將通過 python 包安裝程序安裝 drawnow;pip,所以我們需要確保它已安裝。這可以通過運行來完成;

sudo apt-get install python-pip

然后,我們可以使用 pip 通過運行以下命令來安裝 drawnow 包:

sudo pip install drawnow

運行它后,您應(yīng)該得到如下圖所示的結(jié)果。

poYBAGN1_NGAB9UVAACHiZ8ShOM857.png

安裝完所有依賴項后,我們現(xiàn)在可以編寫代碼了。

Raspberry Pi 示波器的 Python 代碼:

這個Pi示波器的python代碼相當(dāng)簡單,特別是如果你熟悉python matplotlib模塊。在向我們展示整個代碼之前,我將嘗試將其分解為一部分并解釋代碼的每個部分在做什么,以便您有足夠的知識來擴展代碼以執(zhí)行更多操作。

在此階段,切換到顯示器或使用VNC查看器非常重要,通過它可以看到Raspberry Pi的桌面,因為正在繪制的圖形不會顯示在終端上。

以監(jiān)視器為界面打開一個新的python文件。你可以叫它任何你想要的名字,但我會稱它為 scope.py。

sudo nano scope.py

創(chuàng)建文件后,我們要做的第一件事是導(dǎo)入我們將使用的模塊;

import time

import matplotlib.pyplot as plt

from drawnow import *

import Adafruit_ADS1x15

接下來,我們創(chuàng)建一個指定 ADS1115 ADC 的 ADS1x15 庫實例

adc = Adafruit_ADS1x15.ADS1115()

接下來,我們設(shè)置ADC的增益。有不同的增益范圍,應(yīng)根據(jù)ADC輸入端的預(yù)期電壓進行選擇。在本教程中,我們估計 0 – 4.09v,因此我們將使用 1 的增益。有關(guān)增益的更多信息,請查看 ADS1015/ADS1115 數(shù)據(jù)表。

GAIN = 1

接下來,我們需要創(chuàng)建數(shù)組變量,這些變量將用于存儲要繪制的數(shù)據(jù),另一個變量用作計數(shù)。

Val = [ ]

cnt = 0

接下來,我們了解我們使繪圖具有交互性的意圖,以便我們能夠?qū)崟r繪制數(shù)據(jù)。

plt.ion()

接下來,我們開始連續(xù)ADC轉(zhuǎn)換,指定ADC通道,在本例中為通道0,我們還指定增益。

應(yīng)該注意的是,ADS1115上的所有四個ADC通道可以同時讀取,但1個通道足以進行本演示。

adc.start_adc(0, gain=GAIN)

接下來,我們創(chuàng)建一個函數(shù) def makeFig,以創(chuàng)建和設(shè)置將保存我們的實時圖的圖形的屬性。我們首先使用 ylim 設(shè)置 y 軸的極限,然后輸入繪圖的標(biāo)題和標(biāo)簽名稱,然后使用 plt.plot() 指定要繪制的數(shù)據(jù)及其繪圖樣式和顏色。我們還可以聲明通道(如通道0所示),以便在使用ADC的四個通道時識別每個信號。plt.legend 用于指定我們希望在圖上顯示有關(guān)該信號的信息(例如通道 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 循環(huán),該循環(huán)將用于不斷從 ADC 讀取數(shù)據(jù)并相應(yīng)地更新圖。

我們要做的第一件事是讀取ADC轉(zhuǎn)換值

value = adc.get_last_result()

接下來,我們在終端上打印值,只是為了給我們另一種確認(rèn)繪制數(shù)據(jù)的方法。我們在打印后等待幾秒鐘,然后將數(shù)據(jù)附加到為存儲該通道的數(shù)據(jù)而創(chuàng)建的列表 (val) 中。

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

time.sleep(0.5)

val.append(int(value))

然后我們調(diào)用 drawnow 來更新繪圖。

drawnow(makeFig)

為了確保最新數(shù)據(jù)是圖上可用的數(shù)據(jù),我們在每 50 個數(shù)據(jù)計數(shù)后刪除索引 0 處的數(shù)據(jù)。

cnt = cnt+1

if(cnt>50):

val.pop(0)

就這樣!

完整的 Python 代碼在本教程末尾給出。

樹莓派示波器的實際應(yīng)用:

復(fù)制完整的 python 代碼并粘貼到我們之前創(chuàng)建的 python 文件中,請記住我們需要一臺顯示器來查看繪圖,因此所有這些都應(yīng)該通過 VNC 或連接的顯示器或屏幕完成。

保存代碼并使用運行;

sudo python scope.py

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

幾分鐘后,您應(yīng)該會看到終端上打印的ADC數(shù)據(jù)。有時,您可能會收到來自 matplotlib 的警告(如下圖所示),該警告應(yīng)被禁止顯示,但它不會影響正在顯示的數(shù)據(jù)或繪圖。但是,為了禁止顯示警告,可以在代碼中的導(dǎo)入行之后添加以下代碼行。

Import warnings

import matplotlib.cbook

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

pYYBAGN1_NOAPrtxAABX7GXF_aU745.png

poYBAGN1_NSAN_kNAAAtVE3Rybc018.png

這就是本教程的伙計們,要全面測試示波器,您可以將電位計等模擬設(shè)備連接到ADC上的通道,您應(yīng)該看到數(shù)據(jù)隨著電位計的每一次轉(zhuǎn)動而變化。

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)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 示波器
    +關(guān)注

    關(guān)注

    113

    文章

    6266

    瀏覽量

    185326
收藏 人收藏

    評論

    相關(guān)推薦

    【轉(zhuǎn)載DIY】最好的15個樹莓項目

    上次在***看到有人發(fā)了15個最好的Arduino 項目,做為樹莓粉的我就在想著樹莓也有很多好玩的創(chuàng)意和
    發(fā)表于 07-14 10:30

    樹莓裝機教程

    樹莓裝機教程樹莓裝機教程樹莓裝機教程樹莓
    發(fā)表于 11-25 10:14 ?52次下載

    樹莓的種類_樹莓安裝教程

    樹莓(Raspberry Pi)是尺寸僅有信用卡大小的一個小型電腦,您可以將樹莓連接電視、顯示器、鍵盤鼠標(biāo)等設(shè)備使用。目前,樹莓
    發(fā)表于 11-27 22:01 ?5398次閱讀

    樹莓3wifi配置_樹莓3開啟wifi熱點_樹莓3的wifi使用教程

    樹莓3在2016年2月29號正式發(fā)布了,樹莓3幾乎和樹莓2代板型一致,大外觀沒什么變化小電
    發(fā)表于 12-08 11:47 ?3.1w次閱讀

    樹莓3硬件配置_樹莓3都能裝什么系統(tǒng)_樹莓3系統(tǒng)安裝教程

    樹莓3一直頗受電子發(fā)燒友的青睞,這篇文章主要討論的就是樹莓3的硬件配置、樹莓3都能裝什么系
    發(fā)表于 12-08 14:36 ?2.6w次閱讀

    適合樹莓初學(xué)者的10個項目

    下面小編就為初學(xué)者篩選了10個適合的樹莓開發(fā)項目,這10個項目能夠很好地幫助初學(xué)者對樹莓的硬
    發(fā)表于 05-10 10:28 ?4.8w次閱讀

    樹莓是什么樹莓的簡單介紹

    要想玩轉(zhuǎn)樹莓,首先得知道樹莓是什么。在本節(jié)中,作者將帶領(lǐng)大家揭開樹莓的神秘面紗,了解
    發(fā)表于 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的原理圖免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是樹莓3和樹莓4的原理圖免費下載。
    發(fā)表于 01-07 10:23 ?224次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>3和<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>4的原理圖免費下載

    樹莓ATEM Tally開源項目

    電子發(fā)燒友網(wǎng)站提供《樹莓ATEM Tally開源項目.zip》資料免費下載
    發(fā)表于 07-05 15:01 ?0次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>ATEM Tally開源<b class='flag-5'>項目</b>

    40v樹莓電壓調(diào)節(jié)帽開源項目

    電子發(fā)燒友網(wǎng)站提供《40v樹莓電壓調(diào)節(jié)帽開源項目.zip》資料免費下載
    發(fā)表于 07-12 09:30 ?1次下載
    40v<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>電壓調(diào)節(jié)帽開源<b class='flag-5'>項目</b>

    樹莓計算模塊開源項目

    電子發(fā)燒友網(wǎng)站提供《樹莓計算模塊開源項目.zip》資料免費下載
    發(fā)表于 08-05 09:25 ?1次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>計算模塊開源<b class='flag-5'>項目</b>

    Quantum項目中替換樹莓

    電子發(fā)燒友網(wǎng)站提供《Quantum項目中替換樹莓.zip》資料免費下載
    發(fā)表于 10-28 09:43 ?2次下載
    Quantum<b class='flag-5'>項目</b>中替換<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>

    樹莓監(jiān)視器開源項目

    電子發(fā)燒友網(wǎng)站提供《樹莓監(jiān)視器開源項目.zip》資料免費下載
    發(fā)表于 06-14 11:33 ?7次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>監(jiān)視器開源<b class='flag-5'>項目</b>

    什么是樹莓?樹莓是什么架構(gòu)的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會”開發(fā)的一款為學(xué)習(xí)計算機編程教育而設(shè)計的微型電腦。
    的頭像 發(fā)表于 10-22 17:33 ?1027次閱讀

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    一、樹莓GPIO的用途 樹莓(Raspberry Pi)是一款小巧、功能強大的單板計算機,廣泛應(yīng)用于編程教育、物聯(lián)網(wǎng)項目、家庭媒體中心等
    的頭像 發(fā)表于 10-22 18:09 ?1004次閱讀