一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

怎樣制作基本的ArduinoPC示波器

454398 ? 來(lái)源:工程師吳畏 ? 2019-08-02 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

將簡(jiǎn)單的Arduino Uno(以及一些Python代碼)轉(zhuǎn)換為粗略的示波器,以查看波形和電壓電平。

示波器非常有用,但通常帶有很大的價(jià)格標(biāo)簽。幸運(yùn)的是,有一些專用示波器的替代方案,所以在這個(gè)項(xiàng)目中,我們將把一個(gè)簡(jiǎn)單的Arduino Uno(以及一些Python代碼)轉(zhuǎn)換成可以用來(lái)查看波形和電壓電平的粗略示波器!

工作原理:Arduino

示波器的硬件/固件端非常簡(jiǎn)單,并利用內(nèi)置的模塊Arduino,ADC。 ADC代表模擬數(shù)字轉(zhuǎn)換器,是一個(gè)可以采用模擬電壓(0V和5V之間)并將其轉(zhuǎn)換為二進(jìn)制數(shù)的模塊。 Arduino有一個(gè)10位ADC,這意味著最大電壓5V表示為1023(1111111111),最小電壓0V表示為0(0000000000)。但是,由于Arduino是一個(gè)8位機(jī)器,無(wú)符號(hào)字符的大小為8位(稍后你會(huì)看到原因),我們只使用ADC結(jié)果中的前8位。這意味著5V現(xiàn)在表示為255,0V表示為0V。由于有256個(gè)可能的值,每個(gè)位代表5/256伏或0.02V(大約)。因此,0x0F的值表示0.3V,0x80的值表示2.56V,值0x3E表示1.22V。

雖然Arduino默認(rèn)啟用ADC,因此不需要設(shè)置代碼,但我們?nèi)詫⒛M引腳配置為輸入。我們將用于獲取讀數(shù)的引腳為A0,即引腳編號(hào)14.除引腳配置外,我們還將配置UART模塊以實(shí)現(xiàn)PC通信的快速波特率(115200波特),并初始化一些變量。

主循環(huán)中的代碼首先從ADC模塊中讀取100個(gè)讀數(shù)。從ADC讀取模擬數(shù)據(jù)非常簡(jiǎn)單,可以使用函數(shù)analogRead(引腳號(hào))完成,該函數(shù)返回一個(gè)整數(shù),其中10位ADC結(jié)果來(lái)自引腳號(hào)指定的引腳。在我們的例子中,input0指的是引腳14,它是A0。一旦讀取完畢,下一段要執(zhí)行的代碼就是延遲。延遲的大?。ㄒ晕⒚霝閱挝唬┯?a href="http://www.www27dydycom.cn/tags/ti/" target="_blank">timeBase定義,默認(rèn)為100。盡管是100us延遲,但讀數(shù)之間的真實(shí)間距是延遲的大小加上ADC轉(zhuǎn)換時(shí)間(100us),這給出了200us的讀取間隔。為簡(jiǎn)單起見,這個(gè)項(xiàng)目將被忽略。

一旦完成所有100個(gè)讀數(shù),就可以將這些數(shù)據(jù)發(fā)送到PC用于繪圖。為確保接收器能夠正確區(qū)分?jǐn)?shù)據(jù)事務(wù),Arduino只會(huì)在Arduino發(fā)送請(qǐng)求“R?”后接收方發(fā)送字母“K”后發(fā)送數(shù)據(jù)。

一次Arduino和PC已經(jīng)成功地相互交談,所有的數(shù)據(jù)都流出來(lái)了。但是,UART工作在8位,并且嘗試在UART上發(fā)送整數(shù)將需要復(fù)雜的轉(zhuǎn)換,這將使事情變得相當(dāng)困難。因此,我們只將模擬讀數(shù)作為單個(gè)字節(jié)發(fā)送,我們使用函數(shù)highByte()來(lái)完成。 Arduino中的整數(shù)大小為16位,這意味著我們需要取10位結(jié)果并將它們向左移動(dòng),直到前8位包含我們的數(shù)據(jù)。為此,我們將數(shù)據(jù)向左移動(dòng)六次,這意味著我們丟失了ADC讀數(shù)的最低2位,但對(duì)于我們的基本示波器無(wú)關(guān)緊要。

使用8位結(jié)果發(fā)送,最后一項(xiàng)任務(wù)是等待計(jì)算機(jī)的響應(yīng)通知Arduino結(jié)果已被正確讀取。 Arduino只是停留在一個(gè)循環(huán)中,等待串口上的字符“K”。一旦讀完,整個(gè)循環(huán)就會(huì)自行重復(fù)!

工作原理:Python代碼

Python代碼以及一些額外的庫(kù)是什么一個(gè)簡(jiǎn)單的Arduino數(shù)據(jù)記錄器到一個(gè)基本的示波器。但是,Python本身無(wú)法執(zhí)行某些任務(wù),如圖形例程和串口通信,因此我們需要先獲取幾個(gè)庫(kù)。幸運(yùn)的是,如果安裝了PIP,安裝這些庫(kù)是輕而易舉的。如果你不這樣做,請(qǐng)先在這里按照本教程獲取點(diǎn)子。安裝pip后,打開命令提示符并按順序輸入以下命令(一次一個(gè)):

pip install pyserial

pip install PyGame

一旦成功安裝了這兩個(gè)軟件包,我們就可以直接進(jìn)入我們的圖形應(yīng)用程序!雖然串行包很容易理解,但pygame包有點(diǎn)復(fù)雜,所以這里只介紹基礎(chǔ)知識(shí)。我們Python程序的第一個(gè)任務(wù)是導(dǎo)入所需的庫(kù),它們是pygame(用于生成圖形界面),serial(用于Arduino通信)和時(shí)間(用于時(shí)間延遲)。下一個(gè)代碼塊用于變量聲明和初始化,其中包括pygame的布爾值,字符串和顏色。 pygame中使用的顏色是RGB類型,其中三個(gè)字節(jié)(0-255)表示紅色,綠色和/或藍(lán)色的數(shù)量。

完成變量定義后,下一個(gè)任務(wù)是初始化pygame,這是通過(guò)調(diào)用pygame.init()來(lái)完成的。由于我們計(jì)劃將文本打印到我們的窗口應(yīng)用程序,我們還需要初始化字體引擎,這是通過(guò)調(diào)用pygame.font.init()來(lái)完成的。除了初始化字體引擎之外,我們還將創(chuàng)建一個(gè)字體對(duì)象,我們將使用它作為渲染字體(將是等寬字體)。 pygame初始化代碼的最后一位將是創(chuàng)建一個(gè)窗口(大小為700×500)并將窗口的標(biāo)題設(shè)置為“PyScopeUno”。

下一個(gè)任務(wù)涉及配置串行端口以使用與Arduino相匹配的波特率(在本例中為115200)。還必須選擇正確的端口(在我的情況下為“COM8”)并指定超時(shí),以便程序在串行端口循環(huán)期間不會(huì)掛起。配置串口后,最后一步是打開端口!

完成所有初始化代碼后,主程序循環(huán)執(zhí)行,即以while循環(huán)的形式,等待直到布爾變量applicationClose等于true。在窗口上單擊關(guān)閉按鈕時(shí),此值設(shè)置為true,單擊后,串口正常關(guān)閉,pygame關(guān)閉。

顯示我們記錄的數(shù)據(jù)的第一項(xiàng)任務(wù)是從Arduino獲取串行數(shù)據(jù)。為此,我們要等到串口中有數(shù)據(jù)存在。如果此數(shù)據(jù)等于“R?”,我們將Arduino發(fā)送給字符“K”,這導(dǎo)致Arduino將100個(gè)字節(jié)流式傳輸?shù)絇C。程序等待直到收到所有100個(gè)字節(jié),一旦完成,將這些字節(jié)傳送到數(shù)據(jù)緩沖區(qū)。下一行代碼涉及一些有用的基本操作,包括計(jì)算平均值和查找最小/最大值。

最后代碼塊涉及繪制數(shù)據(jù),繪制文本和繪制線條,但由于代碼的不言自明的特性,不會(huì)對(duì)此進(jìn)行深入討論。我們的示波器程序中的數(shù)據(jù)不是繪制為單個(gè)點(diǎn),而是作為兩個(gè)數(shù)據(jù)點(diǎn)之間的插值線,因?yàn)榭焖僮兓?a target="_blank">信號(hào)將顯示為散點(diǎn)圖,這很難可視化。為此,繪制一條線,其中第一個(gè)點(diǎn)是第一個(gè)電壓電平,而終點(diǎn)是下一個(gè)數(shù)據(jù)值。由于我們獲取了100個(gè)讀數(shù)但我們的圖形寬度為400像素,因此我們將x坐標(biāo)乘以4以拉伸圖形。這樣可以更容易地查看單個(gè)讀數(shù)。

完整的圖形化程序如下所示。

在不到15分鐘的時(shí)間內(nèi)完成并運(yùn)行這個(gè)項(xiàng)目應(yīng)該很容易和可行??赡軐?dǎo)致最頭疼的步驟是安裝和運(yùn)行Python庫(kù),因?yàn)槊钚邪惭b方法有拋出錯(cuò)誤,無(wú)法找到所需文件或缺少權(quán)限的習(xí)慣。一旦Arduino加載了代碼,它就會(huì)自動(dòng)開始。假設(shè)Python程序有效(確保COM端口正確),那么項(xiàng)目應(yīng)該可以正常工作。

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

    關(guān)注

    113

    文章

    6705

    瀏覽量

    189293
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192205
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    示波器的使用入門

    本節(jié)簡(jiǎn)要介紹怎樣設(shè)置及開始使用示波器,特別是怎樣實(shí)現(xiàn)示波器和用戶接地、設(shè)置示波器控制功能、校準(zhǔn)示波器
    的頭像 發(fā)表于 04-28 09:29 ?850次閱讀
    <b class='flag-5'>示波器</b>的使用入門

    示波器的性能術(shù)語(yǔ)(上)

    現(xiàn)要求的信號(hào)完整性的能力。學(xué)習(xí)新技能通常要學(xué)習(xí)新的術(shù)語(yǔ)表,在學(xué)習(xí)怎樣使用示波器時(shí)也不例外。本節(jié)介紹了部分實(shí)用的測(cè)量和示波器性能術(shù)語(yǔ)。這些術(shù)語(yǔ)用來(lái)描述為應(yīng)用選擇正確
    的頭像 發(fā)表于 03-03 11:52 ?451次閱讀
    <b class='flag-5'>示波器</b>的性能術(shù)語(yǔ)(上)

    使用示波器分析波形的技巧 如何設(shè)置示波器的觸發(fā)功能

    1. 了解示波器的基本操作 在開始之前,確保你熟悉示波器的基本操作,包括如何調(diào)整時(shí)間基準(zhǔn)(Time Base)、垂直刻度(Vertical Scale)、觸發(fā)電平(Trigger Level)等
    的頭像 發(fā)表于 12-06 09:47 ?3145次閱讀

    示波器測(cè)量電壓的步驟 數(shù)字示波器的基本操作方法

    示波器是一種用于觀察和測(cè)量電壓隨時(shí)間變化的電子儀器,它廣泛應(yīng)用于電子電路的調(diào)試和故障診斷中。以下是使用數(shù)字示波器測(cè)量電壓的基本步驟和操作方法: 1. 準(zhǔn)備階段 1.1 檢查設(shè)備 確保示波器電源線
    的頭像 發(fā)表于 12-06 09:45 ?3785次閱讀

    示波器怎么測(cè)波形

    示波器測(cè)量波形是電子測(cè)量中的一項(xiàng)基本技能,以下是示波器測(cè)量波形的基本步驟和注意事項(xiàng):
    的頭像 發(fā)表于 10-03 16:32 ?1935次閱讀

    示波器入門|光標(biāo)功能如何使用?#示波器 #示波器操作 #電工

    示波器
    安泰儀器維修
    發(fā)布于 :2024年09月25日 15:50:42

    示波器入門|光標(biāo)功能如何使用?#電路知識(shí) #示波器 #示波器操作

    示波器
    安泰儀器維修
    發(fā)布于 :2024年09月25日 15:47:26

    示波器入門|光標(biāo)功能如何使用#示波器 #電路知識(shí) #示波器操作

    示波器
    安泰儀器維修
    發(fā)布于 :2024年09月25日 15:46:19

    與模擬示波器相比數(shù)字示波器的優(yōu)點(diǎn)有哪些

    數(shù)字示波器(Digital Storage Oscilloscope, DSO)與模擬示波器(Analog Oscilloscope)是電子測(cè)試領(lǐng)域中用于觀察和分析電信號(hào)波形的重要工具。數(shù)字示波器
    的頭像 發(fā)表于 09-20 09:57 ?2408次閱讀

    示波器ac和dc怎么切換使用

    示波器是一種用于觀察和測(cè)量電信號(hào)波形的電子測(cè)量?jī)x器,廣泛應(yīng)用于電子、通信、電力等領(lǐng)域。示波器的輸入方式有AC(交流)和DC(直流)兩種,根據(jù)測(cè)量信號(hào)的類型和需求,需要在AC和DC之間進(jìn)行切換。 一
    的頭像 發(fā)表于 08-09 15:01 ?3962次閱讀

    示波器探頭衰減設(shè)置在示波器的哪里

    1. 示波器探頭衰減設(shè)置的重要性 在進(jìn)行電子測(cè)量時(shí),示波器是一種常用的測(cè)量工具。示波器探頭是連接被測(cè)信號(hào)和示波器的關(guān)鍵部件。探頭衰減設(shè)置直接影響測(cè)量信號(hào)的幅度和波形的準(zhǔn)確性。如果設(shè)置不
    的頭像 發(fā)表于 08-09 14:55 ?2258次閱讀

    示波器探頭和示波器需要匹配嗎

    示波器探頭和示波器匹配問(wèn)題是一個(gè)非常重要的話題,因?yàn)樗鼈冎g的匹配程度直接影響到測(cè)量結(jié)果的準(zhǔn)確性和可靠性。 示波器探頭的工作原理 示波器探頭是一種用于將被測(cè)信號(hào)傳輸?shù)?/div>
    的頭像 發(fā)表于 08-09 14:33 ?859次閱讀

    示波器探頭補(bǔ)償怎么調(diào)

    示波器探頭補(bǔ)償是一種重要的校準(zhǔn)過(guò)程,用于確保探頭測(cè)量的信號(hào)與實(shí)際信號(hào)一致。 一、示波器探頭概述 示波器探頭的定義 示波器探頭是一種連接示波器
    的頭像 發(fā)表于 08-09 11:27 ?1057次閱讀

    示波器探頭的探測(cè)小提示

    選擇滿足示波器和應(yīng)用需求的探頭,可以使您能夠進(jìn)行必要的測(cè)量。實(shí)際上,進(jìn)行測(cè)量和獲得有用的結(jié)果還取決于怎樣使用工具。下面的探測(cè)小提示將有助于您避免某些常見的測(cè)量問(wèn)題: 補(bǔ)償探頭 大多數(shù)探頭是為與特定
    的頭像 發(fā)表于 07-23 10:53 ?492次閱讀
    <b class='flag-5'>示波器</b>探頭的探測(cè)小提示