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

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

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

如何制作功能為自動量程的簡易示波器?

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

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

因為本人也沒學(xué)幾天,學(xué)識淺薄,有錯誤問題難以避免。

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

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

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

波形自動量程功能

仍需完善的功能

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

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

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

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

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

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

實現(xiàn)過程

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

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

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

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

項目的一些細節(jié)部分:

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

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

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

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

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

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

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

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

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

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

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

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

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

未來完善功能

能夠兼容所有波形的頻率測算功能

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

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

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

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

責(zé)任編輯:haq

聲明:本文內(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

    文章

    6150

    瀏覽量

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

    關(guān)注

    45

    文章

    5521

    瀏覽量

    115400

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    羅德與施瓦茨RTB2004示波器:深度解析信號波形

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

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

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

    如何使用數(shù)字示波器自動測量功能

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

    示波器分段存儲功能介紹

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

    示波器的種類和功能介紹

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

    示波器濾波功能怎么用

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

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

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

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

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

    示波器功能及用途

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

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

    示波器fft功能-示波器中的快速傅立葉變換 FFT功能非常有用。是德科技與您分享keysight示波器fft調(diào)出來的方法。Keysight
    的頭像 發(fā)表于 03-19 18:04 ?2645次閱讀
    <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 ?688次閱讀
    【電磁兼容技術(shù)文檔分享】頻譜儀應(yīng)用案例&amp;amp;<b class='flag-5'>簡易</b>探頭的<b class='flag-5'>制作</b>

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

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

    電流自動量程切換方法有哪些

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

    基于STM32制作的500KHz示波器項目

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

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

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