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

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

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

如何制作功能為自動(dòng)量程的簡易示波器?

電子森林 ? 來源:電子森林 ? 作者:馬尚清 ? 2021-04-01 10:15 ? 次閱讀

這是南信大馬尚清同學(xué)的作品

因?yàn)楸救艘矝]學(xué)幾天,學(xué)識(shí)淺薄,有錯(cuò)誤問題難以避免。

已經(jīng)實(shí)現(xiàn)的功能

Ain通道示波功能(量程為0-3.3V)

示波器相關(guān)數(shù)據(jù)顯示功能(通過二級(jí)菜單顯示)

波形自動(dòng)量程功能

仍需完善的功能

波形頻率測(cè)量(軟件測(cè)量波形周期代碼編寫過于簡單,測(cè)試對(duì)于規(guī)則的上下對(duì)稱的波形還可以測(cè)量,而對(duì)于其他的則測(cè)量偏差太大,仍需完善)

未能實(shí)現(xiàn)的功能

采樣速度的調(diào)節(jié)功能(對(duì)于采樣率,時(shí)鐘之間聯(lián)系的理解不夠,如果簡單的改變采樣間距會(huì)導(dǎo)致波形變形,造成偏差)

快速傅里葉變換(不太能理解快速傅里葉變換是如何實(shí)現(xiàn)的,直接帶入網(wǎng)上代碼也會(huì)導(dǎo)致占用空間過大)

上位機(jī)通訊功能(對(duì)于DMA理解不夠,不知道應(yīng)該如何將DMA中讀取到ADC的數(shù)據(jù)上傳到上位機(jī)中)

采集板上的音頻信號(hào)(采集信號(hào)波形與實(shí)際情況不合,故在設(shè)置中將MIC對(duì)應(yīng)的PA1管腳關(guān)閉,后續(xù)可以繼續(xù)優(yōu)化)

實(shí)現(xiàn)過程

這個(gè)項(xiàng)目是我第一次接觸stm32系列的項(xiàng)目,也是第一次用HAL庫來開發(fā)項(xiàng)目(雖然建議使用LL庫來減少空間的占用,但是對(duì)于LL庫,本人有點(diǎn)更難理解,所以就沒有采用)。所以在實(shí)現(xiàn)的過程中,遇到了很多的困難,加上HAL庫的教程也比較少,并且G031系列單片機(jī)也是比較新的產(chǎn)品線,所以沒有多少能夠借鑒的例子,所以一些看似很簡單的功能,在實(shí)現(xiàn)他們時(shí)反倒難住了我,包括OLED屏幕點(diǎn)亮,ADC采樣,波形顯示等等問題。

示波器實(shí)現(xiàn)過程的原理其實(shí)并不困難:由ADC采樣到數(shù)據(jù),將數(shù)據(jù)乘以330 除以4096,從而得到實(shí)時(shí)電壓值,在把數(shù)據(jù)進(jìn)行量化之后,儲(chǔ)存進(jìn)數(shù)組(數(shù)組內(nèi)成員個(gè)數(shù)需要大于波形顯示區(qū)域的橫向像素點(diǎn)),通過數(shù)組的比較函數(shù),得到數(shù)組內(nèi)的最大電壓以及最小電壓(由于數(shù)組的最大值與最小值受到之前測(cè)量數(shù)值的影響,于是我采用每隔一段時(shí)間就復(fù)位一次來達(dá)到最大值和最小值能夠隨著測(cè)量進(jìn)行不斷更新而不會(huì)卡死在某一數(shù)值)。

之后進(jìn)行需要將電壓值轉(zhuǎn)換成應(yīng)在應(yīng)該顯示在屏幕上的坐標(biāo)(其中我將128*64的OLED顯示屏的取107*47作為波形顯示部分,因此右側(cè)和下側(cè)顯示區(qū)域只留有不到16像素點(diǎn),而正常的OLED顯示程序里面字體是遠(yuǎn)大于此,所以我們需要使用0806字體,否則會(huì)造成字體顯示錯(cuò)位),如果是固定量程則是由測(cè)量值與量程之間的比值得到示波器縱向坐標(biāo)的比值,從而達(dá)到計(jì)算出點(diǎn)坐標(biāo)。如果是動(dòng)態(tài)范圍則是測(cè)量值與數(shù)組范圍內(nèi)最大值與最小值的差之間的比值得到,此外還需要根據(jù)最大值和最小值更新網(wǎng)格線旁邊的數(shù)值,這里就使用sprintf函數(shù)來達(dá)到不斷更新字符串的目的,在通過OLED的字符串顯示函數(shù)顯示到OLED屏幕的指定位置上。之后波形的繪制則是通過ADC不斷的采樣,寫入數(shù)組,讀取數(shù)組,進(jìn)行畫點(diǎn),更新數(shù)組,從而達(dá)到連續(xù)不斷的顯示輸入波形的效果。

而按鍵功能的實(shí)現(xiàn)可以通過按鍵中斷回調(diào)函數(shù)(本人使用過程中會(huì)出現(xiàn)中斷不了的現(xiàn)象,可能是中斷優(yōu)先級(jí)配置的問題)或者自行編寫按鍵判斷函數(shù),放入while函數(shù)中不斷循環(huán)運(yùn)行從而達(dá)到不斷掃描按鍵的效果。按鍵觸發(fā)的邏輯也需要自己仔細(xì)的考慮,否則會(huì)造成連擊,無法觸發(fā),循環(huán)觸發(fā)等出乎意料的現(xiàn)象。此外而按鍵功能的設(shè)計(jì)一定要有嚴(yán)密的執(zhí)行邏輯,否則容易造成按鍵沖突,或者程序卡死。此外需要設(shè)立按鍵標(biāo)志位,來判斷按鍵觸發(fā)的次數(shù),從而達(dá)到按鍵多用的功能。

項(xiàng)目的一些細(xì)節(jié)部分:

波形的顯示函數(shù)中加入插值函數(shù),這樣才能使得示波器有能夠輕易看出的連續(xù)波形,而不是一個(gè)個(gè)離散的點(diǎn)。

按鍵的讀取需要進(jìn)行延時(shí)消顫處理,并加上觸發(fā)判斷,不然按鍵會(huì)多次激發(fā),或者不激發(fā),影響操作。

按鍵多次觸發(fā)功能是通過按鍵中斷中簡單的計(jì)數(shù)函數(shù)來判斷按鍵被按下幾次,判斷按鍵是否進(jìn)行長按與短按則是通過延時(shí)判斷來的。

波形顯示時(shí),需要將超出量程的值限制為最大值,否則會(huì)導(dǎo)致顯示在其他區(qū)域。

自動(dòng)量程,通過測(cè)量值與最小值的差與數(shù)組內(nèi)最大值與最小值差的比來算得測(cè)量值應(yīng)該在OLED屏幕上的坐標(biāo),并且將示波器旁的數(shù)值改變?yōu)樽畲笾蹬c最小值,從而達(dá)到動(dòng)態(tài)量程的效果。

示波器的背景網(wǎng)格線最好不要使用圖片顯示,而使用間隔畫點(diǎn)功能,從而達(dá)到繪制背景網(wǎng)格線的效果。否則容易造成OLED顯示錯(cuò)亂和頻閃等情況。

在進(jìn)行單片機(jī)數(shù)值計(jì)算時(shí)候,一定要注意運(yùn)算完成后,數(shù)據(jù)類型已經(jīng)精度問題,否則容易造成數(shù)據(jù)不準(zhǔn)確,甚至錯(cuò)誤數(shù)據(jù)的出現(xiàn)。

實(shí)現(xiàn)功能注意事項(xiàng):

注意OLED屏幕顯示函數(shù)的位置坐標(biāo),有的代碼是以默認(rèn)的OLED最下方一排為0,有的進(jìn)行了反相。

OLED Clear()函數(shù)不能夠完全清屏,會(huì)有殘留。

使用OLED直接操縱點(diǎn)顯示的函數(shù)時(shí),一定要注意運(yùn)行頻率,否則會(huì)造成閃屏。

實(shí)現(xiàn)項(xiàng)目的感觸

通過這次寒假在家練項(xiàng)目,收獲頗豐。通過自己親自參與到項(xiàng)目的實(shí)現(xiàn)過程來,才能夠發(fā)現(xiàn)問題,分析問題,尋找解決思路,從而解決問題。作為剛剛接觸到STM32的萌新,這項(xiàng)項(xiàng)目讓我能夠快速學(xué)習(xí)。之前學(xué)習(xí)他人教程,覺得思路很清晰,實(shí)現(xiàn)起來很簡單。但是當(dāng)自己真正的接觸到一項(xiàng)陌生的項(xiàng)目,沒有現(xiàn)成的答案和結(jié)果等著自己的時(shí)候,才發(fā)現(xiàn)自己原來很多都不知道。正是由于項(xiàng)目中一個(gè)個(gè)出乎意料的問題的出現(xiàn),才能逼迫著自己去查找資料,學(xué)習(xí)大神們寫的代碼,并嘗試自己去解決。

未來完善功能

能夠兼容所有波形的頻率測(cè)算功能

學(xué)習(xí)快速傅里葉算法,簡化FFT函數(shù),使其能夠在單片機(jī)剩余空間內(nèi)實(shí)現(xiàn)

波形發(fā)生器以及其他附加功能的開發(fā)

原文標(biāo)題:具有自動(dòng)量程功能的簡易示波器

文章出處:【微信公眾號(hào):FPGA入門到精通】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    113

    文章

    6104

    瀏覽量

    183399
  • 電壓
    +關(guān)注

    關(guān)注

    45

    文章

    5425

    瀏覽量

    115118

原文標(biāo)題:具有自動(dòng)量程功能的簡易示波器

文章出處:【微信號(hào):xiaojiaoyafpga,微信公眾號(hào):電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    羅德與施瓦茨RTB2004示波器:深度解析信號(hào)波形

    羅德與施瓦茨RTB2004示波器是一款功能強(qiáng)大的數(shù)字示波器,廣泛應(yīng)用于電子工程、通信、自動(dòng)化等領(lǐng)域。其出色的性能和豐富的功能使其成為科研人員
    的頭像 發(fā)表于 08-30 16:00 ?163次閱讀
    羅德與施瓦茨RTB2004<b class='flag-5'>示波器</b>:深度解析信號(hào)波形

    闡述示波器探頭上的衰減開關(guān)功能

    示波器探頭上的衰減開關(guān)在示波器測(cè)量中扮演著至關(guān)重要的角色,其主要功能可以歸納如下: 一、功能概述 衰減開關(guān)用于調(diào)整探頭對(duì)輸入信號(hào)的衰減倍數(shù),從而控制信號(hào)在
    的頭像 發(fā)表于 08-09 14:43 ?212次閱讀

    如何使用數(shù)字示波器自動(dòng)測(cè)量功能

    數(shù)字示波器是一種廣泛應(yīng)用于電子工程領(lǐng)域的測(cè)試儀器,它能夠?qū)崟r(shí)顯示電信號(hào)的波形,幫助工程師對(duì)電子設(shè)備進(jìn)行分析和調(diào)試。數(shù)字示波器自動(dòng)測(cè)量功能是其核心
    的頭像 發(fā)表于 07-17 17:39 ?349次閱讀

    示波器分段存儲(chǔ)功能介紹

    在電子測(cè)量領(lǐng)域,示波器作為一種重要的測(cè)試工具,廣泛應(yīng)用于信號(hào)分析、故障診斷等領(lǐng)域。隨著技術(shù)的不斷發(fā)展,示波器功能也越來越強(qiáng)大。其中,分段存儲(chǔ)功能作為
    的頭像 發(fā)表于 05-29 17:11 ?460次閱讀

    示波器的種類和功能介紹

    示波器,作為電子測(cè)量領(lǐng)域的重要工具,其種類繁多,功能各異。從傳統(tǒng)的模擬示波器到現(xiàn)代的數(shù)字示波器,每一種示波器都具備其獨(dú)特的性能和適用場(chǎng)景。本
    的頭像 發(fā)表于 05-20 16:50 ?468次閱讀

    示波器濾波功能怎么用

    示波器,作為電子工程師和科研人員的得力助手,在信號(hào)處理、電路調(diào)試、通信分析等領(lǐng)域扮演著不可或缺的角色。而在示波器的眾多功能中,濾波功能尤為重要。濾波
    的頭像 發(fā)表于 05-17 17:23 ?1139次閱讀

    示波器自動(dòng)觸發(fā)、標(biāo)準(zhǔn)觸發(fā)、單次觸發(fā)三者之間的區(qū)別

    。本文將詳細(xì)探討示波器自動(dòng)觸發(fā)、標(biāo)準(zhǔn)觸發(fā)和單次觸發(fā)三種觸發(fā)方式之間的區(qū)別,旨在幫助讀者更好地理解和應(yīng)用示波器的觸發(fā)功能。
    的頭像 發(fā)表于 05-17 16:49 ?1550次閱讀

    示波器探頭的量程怎么看?

    示波器探頭的量程是指探頭能夠測(cè)量的電壓范圍,它是一個(gè)重要的參數(shù),決定了探頭適用的測(cè)量場(chǎng)景。
    的頭像 發(fā)表于 05-13 15:22 ?828次閱讀

    示波器功能及用途

    示波器功能及用途非常廣泛,以下是對(duì)其主要功能和常見用途的詳細(xì)描述。
    的頭像 發(fā)表于 05-07 15:23 ?1339次閱讀

    示波器的 FFT 功能怎么調(diào)?

    示波器fft功能-示波器中的快速傅立葉變換 FFT功能非常有用。是德科技與您分享keysight示波器fft調(diào)出來的方法。Keysight
    的頭像 發(fā)表于 03-19 18:04 ?2342次閱讀
    <b class='flag-5'>示波器</b>的 FFT <b class='flag-5'>功能</b>怎么調(diào)?

    【電磁兼容技術(shù)文檔分享】頻譜儀應(yīng)用案例&amp;amp;簡易探頭的制作

    【電磁兼容技術(shù)文檔分享】頻譜儀應(yīng)用案例&簡易探頭的制作
    的頭像 發(fā)表于 02-19 13:20 ?601次閱讀
    【電磁兼容技術(shù)文檔分享】頻譜儀應(yīng)用案例&amp;amp;<b class='flag-5'>簡易</b>探頭的<b class='flag-5'>制作</b>

    什么是示波器觸發(fā)?示波器的區(qū)域觸發(fā)功能!

    什么是示波器觸發(fā)?示波器的區(qū)域觸發(fā)功能示波器觸發(fā)是示波器中一項(xiàng)重要的功能,它用于在輸入信號(hào)中
    的頭像 發(fā)表于 01-22 13:40 ?1142次閱讀

    電流自動(dòng)量程切換方法有哪些

    電流自動(dòng)量程切換是電流測(cè)量中的一種常用技術(shù),它可以根據(jù)電路中的電流變化自動(dòng)選擇合適的量程,以確保測(cè)量結(jié)果的準(zhǔn)確性和精度。在本文中,將詳細(xì)介紹電流自動(dòng)量程切換的幾種方法。 一、基于模擬電
    的頭像 發(fā)表于 12-26 10:27 ?1671次閱讀

    基于STM32制作的500KHz示波器項(xiàng)目

    今天小編給大家?guī)韲獾腗aker Mirko Pavleskid的基于STM32制作的500KHz示波器項(xiàng)目。
    的頭像 發(fā)表于 12-03 10:07 ?1487次閱讀
    基于STM32<b class='flag-5'>制作</b>的500KHz<b class='flag-5'>示波器</b>項(xiàng)目

    數(shù)字示波器的主要功能和應(yīng)用介紹

    數(shù)字示波器的主要功能和應(yīng)用介紹? 數(shù)字示波器(Digital Oscilloscope)是一種用來顯示和測(cè)量電信號(hào)波形的電子儀器。它用數(shù)字技術(shù)代替了傳統(tǒng)的模擬示波器,具有更高的精度、更
    的頭像 發(fā)表于 11-07 10:18 ?2196次閱讀