龐成康,黎海明,舒向航,李 慧,李德明
(廣西師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,廣西 桂林 541004)
示波器是一種用途廣泛、易于使用且功能強大的電子測量儀器,用于觀測、分析和記錄各種電信號的變化。示波器通過把被測電壓隨時間的變化關(guān)系轉(zhuǎn)換為可視的波形圖像,提供直觀的研究各種電信號變化的波形。按照信號處理方式不同分類,示波器可分為模擬示波器和數(shù)字示波器兩大類,該課題研究的數(shù)字示波器是通過模數(shù)轉(zhuǎn)換器(ADC)把被測模擬信號轉(zhuǎn)換為數(shù)字信號,再以數(shù)字信號處理的方式將信號隨時間的變化波形繪制在顯示設(shè)備上。該數(shù)字示波器的測量帶寬為0 到20KHz,帶寬決定了示波器所能檢測到的信號頻率范圍,最高帶寬越高,能夠檢測的最高信號頻率越高。而實時采樣率與帶寬密切相關(guān),其決定了示波器ADC在單位時間間隔內(nèi)可采集的樣本點數(shù),直接影響信號波形的還原程度,實時采樣率越高,采樣速度越快,波形失真越小[2,9]。本課題研究基于STM32 單片機設(shè)計的便攜式簡易數(shù)字示波器,實現(xiàn)數(shù)據(jù)采集、儲存和顯示,實現(xiàn)示波器的所具有的基本功能,具有體積小、便于攜帶和性價比高等特點[3]。
該設(shè)計以STM32 單片機為核心,加上其他外圍模塊一起組成示波器的硬件系統(tǒng)。主控制器采用STM32單片機,其主要作用是對采集的數(shù)據(jù)進行處理,并控制其他模塊的運行。系統(tǒng)設(shè)計總體框圖如圖1 所示。
圖1 系統(tǒng)設(shè)計總體框圖
輸入部分由四部分組成,第一部分是對采樣的模擬信號進行前級處理,擴大測量范圍并避免輸入電壓過大造成芯片損壞;第二部分是AD 轉(zhuǎn)換部分,將采集的模擬信號通過ADC 轉(zhuǎn)換為數(shù)字量,再通過單片機處理數(shù)據(jù);第三部分是人機交互部分,通過獨立按鍵對LCD 上的圖像進行放大和縮小,便于觀察;第四部分是供電電路,給整個系統(tǒng)進行供電。輸出部分即顯示部分,包含液晶屏顯示模塊,主要用于顯示當(dāng)前波形。
以STM32F103RCT6 為主控芯片通過單片機驅(qū)動16 位8080 時序TFT 顯示屏;輸入信號經(jīng)過前級調(diào)理電路后實現(xiàn)信號衰減和疊加直流電壓,把輸入信號調(diào)理為0~ 3.0 V 電壓范圍,通過單片機自帶的ADC 將輸入的信號轉(zhuǎn)化為數(shù)字量,經(jīng)過單片機處理后在TFT 液晶模塊顯示出波形,用獨立按鍵調(diào)整波形顯示模式,使其便于觀察。
該系統(tǒng)以STM32F103RCT6 作為主控芯片,STM32F103 為通用增強型32 位微控制器,主時鐘頻率可達(dá)72 MHz,工作速度快。另外其內(nèi)部資源豐富,有256 KB 的Flash、48 KB 的SRAM、8 個定時器、2 個DMA和3 個12 位的ADC,且所有的IO 口都可以配置為外部中斷源[4-7]。最小系統(tǒng)電路如圖2 所示。
圖2 STM32F103RCT6 最小系統(tǒng)電路
該系統(tǒng)將液晶LCD_RST 復(fù)位與單片機復(fù)位引腳相連,上電時與單片機一起復(fù)位;LCD_BL 為背光控制引腳,內(nèi)部通過一個8050 三極管實現(xiàn)開關(guān)控制,LCD_BL 引腳通過1K 電阻與基極相連接,基極拉高時三極管導(dǎo)通,背光燈點亮,反之截止,其原理圖如圖3 所示。T_MISO,T_MOSI,T_PEN,T_CS,T_CLK 為通過XPT2046 驅(qū)動的電阻觸摸屏接口,方便以后擴展。
圖3 TFT 原理圖
該系統(tǒng)所需的供電電壓為5V、-5V、3.3V、1.5V。其中5V 通過USB Type-C 6Pin 接口供給,并以5V 電源為基礎(chǔ)轉(zhuǎn)換其他電源電壓,原理圖如圖4 所示。本設(shè)計用到了3.3V 和1.5V 給單片機供電,鑒于該系統(tǒng)工作特性,對電源精度要求比較高,且為非功率電路,電流相對較小,因此選擇LDO (Low Dropout Regulator)低壓差線性穩(wěn)壓芯片。-5V 電壓通過一個高效率電源極性反轉(zhuǎn)器ICL7660 電荷泵產(chǎn)生,原理圖如圖5 所示。
圖4 5V 供電電路
圖5 LDO 穩(wěn)壓電路
該設(shè)計使用單片機自帶的ADC 進行采樣處理,因為其輸入電壓范圍為0-3.3V,因此在A/D 采樣前加上處理電路顯得很有必要。信號輸入后經(jīng)過阻容式分壓電路進行降壓處理,如圖6 所示,C27,C28 為補償電容,防止分布電容對高頻信號造成衰減,R11,R14 為分壓電阻,將信號縮減為原來的1/4 倍。然后通過4 個1N4148 高速開關(guān)二極管兩兩方向相同并聯(lián)反向接地,二極管導(dǎo)通壓降0.7V 左右,因此通過4 個二極管將電壓鉗位在±1.4V,防止輸入IO 口的電壓過大,保護單片機。經(jīng)過前級處理后的信號還包含負(fù)電壓,ADC 仍然不能采樣,因此設(shè)計了TL074 運算放大器加法電路將負(fù)電壓抬升,原理圖如圖6 所示。
圖6 前級處理與運放偏置電路圖
按鍵電路是人機交互的核心,系統(tǒng)一共需要四個按鍵,按鍵一端連接單片機輸入端口,另外一端接地,當(dāng)按鍵被按下閉合時輸入口與地連通,通過判斷輸入口為低電平證明有按鍵按下,因此將按鍵連接的端口配置為上拉輸入模式,檢測端口為為低電平時系統(tǒng)做出相應(yīng)操作[5]。其電路如圖7 所示。
圖7 按鍵電路圖
系統(tǒng)在硬件設(shè)計完成后,接下來對STM32 進行編程,控制其相應(yīng)外設(shè),使系統(tǒng)按照設(shè)計功能運行。軟件設(shè)計內(nèi)容主要分為AD 采樣、DMA 調(diào)用、液晶屏顯示、按鍵處理和程序算法幾個方面。ADC 采集信號和液晶屏顯示程序相對復(fù)雜,故采用模塊化編程的方式,方便查看和修改。因為單片機外設(shè)眾多,為了降低功耗,需要使能相應(yīng)的時鐘才能工作,因此配置外設(shè)的基本步驟為初始化,使能時鐘,配置相應(yīng)外設(shè)。軟件設(shè)計系統(tǒng)主流程圖如圖8 所示。
圖8 軟件系統(tǒng)主流程圖
根據(jù)按鍵電路圖特點,將單片機的GPIO 配置為上拉輸入口,在按鍵沒有按下時輸入口保持高電平,有按鍵按下時接地從而電平被拉低,程序可以識別電平值判斷按鍵按下[6]。在按鍵按下時由于機械振蕩出現(xiàn)電平不穩(wěn)定的抖動現(xiàn)象,因此還需要軟件消抖處理,方法是判斷按鍵按下后延時20 毫秒,再次判斷按鍵電平狀態(tài),如果還是低電平,則認(rèn)為按鍵按下穩(wěn)定,可執(zhí)行按鍵控制的相關(guān)語句。
系統(tǒng)采用320*240 分辨率的彩色液晶屏,顯示屏采用8080 讀寫時序,其時序圖如圖9 所示,在RD 或WR 的上升沿讀取或?qū)懭霐?shù)據(jù)到驅(qū)動芯片上[6]。程序設(shè)計主要通過調(diào)用屏幕配套的庫函數(shù)開發(fā),包括調(diào)用畫線函數(shù)、畫點函數(shù)、字符串顯示函數(shù)和數(shù)字顯示函數(shù)。
圖9 8080 時序圖
顯示函數(shù)配置只需要在主函數(shù)調(diào)用相應(yīng)的函數(shù)和配置好變量就能按照要求顯示數(shù)字和字符串,畫點函數(shù)的2 個變量為該點的橫縱坐標(biāo);畫線函數(shù)的4 個變量分別為起止點的橫縱坐標(biāo),通過兩點即可確定一條直線;數(shù)字顯示函數(shù)的5 個變量分別為起點坐標(biāo)、顯示的數(shù)值、數(shù)字位數(shù)和大??;字符串顯示函數(shù)的6 個變量分別為起點坐標(biāo)、顯示區(qū)域的寬高、字體大小和顯示的字符串。上電時先顯示3 秒的啟動界面。通過畫線函數(shù)繪制主界面的框架,其次通過字符串顯示函數(shù)將固定值顯示出來形成主界面的基本框架。ADC 采樣一次,會得到1024 個數(shù)據(jù),將其存到數(shù)組中,通過處理將其表示為液晶屏的縱坐標(biāo)數(shù)值,橫坐標(biāo)數(shù)值為特定時間自加 1,將分別將前后的點連起來就即可顯示波形。
該設(shè)計采用單片機片內(nèi)自帶的ADC 模數(shù)轉(zhuǎn)換器,每個ADC 有18 個通道,內(nèi)部通過模擬開關(guān)選擇通道,同一時刻一個ADC 只能選擇一個通道,其分配如圖10 所示,因為ADC2 不能調(diào)用DMA,因此本設(shè)計選擇ADC1 的通道2 即對應(yīng)引腳PA2[8]。
圖10 STM32F103RCxxADC 分配圖
ADC 的配置需要將其配置為模擬輸入,先使能ADC 的時鐘,時鐘頻率越大,采樣速度越快,但是對于STM32F1 單片機的ADC 的時鐘分頻不能超過14 MHz,對系統(tǒng)時鐘進行6 分頻得到ADC 工作時鐘,即72/6=12 MHz。ADC 配置部分選擇直接操作寄存器的方式。模數(shù)轉(zhuǎn)換器為12 位逐次逼近型ADC,其內(nèi)部Vref+與VDDA 接3.3V 電壓,Vref-與VSSA 接GND,因此ADC 的轉(zhuǎn)換精度為:
根據(jù)A/D 采樣轉(zhuǎn)換的數(shù)字量,可以計算出對應(yīng)的電壓值,計算公式如下:
公式(2)是信號直接輸入單片機 ADC 轉(zhuǎn)換的計算公式,該設(shè)計需要將信號經(jīng)過前級分壓處理,因此需要結(jié)合硬件電路進行計算,得出其公式為:
公式(3)中V 為調(diào)理電路的輸入電壓,Vin 為ADC 采集轉(zhuǎn)換得到的電壓。
數(shù)據(jù)經(jīng)過AD 轉(zhuǎn)換后變?yōu)閿?shù)據(jù)量存儲在內(nèi)部,通過計算將其表示為液晶屏坐標(biāo)軸上的縱坐標(biāo)值,在其存入緩存的同時,定義一個最大值,將其命名為adcmax,若后續(xù)存入的值比它大,則將其賦值為adcmax。同理計算出最小值adcmin,計算最大值與最小值的差即為峰峰值Vpp。
波形的頻率主要由幅值最大的頻率成分求得,根據(jù)采樣率變化的變量計算,同一采樣率下幅值最大的頻率成分除以采樣點數(shù)再乘上相應(yīng)采樣率的比值即為頻率。
信號經(jīng)過傅里葉變換后變?yōu)轭l域,這里主要通過分析波形頻域的基波分量和諧波分量來判斷波形,主要識別正弦波,方波和三角波。由傅里葉變換可知,所有波形都由正弦波組合得到,因此正弦波只有基波分量;方波的三次諧波分量為基波分量的三分之一;三角波的三次諧波分量為基波分量的九分之一,采用FFT 函數(shù)庫對數(shù)據(jù)進行處理,通過波形自身的規(guī)律,將各次頻率和對應(yīng)的幅值提取,從大到小求其幅值,求出來之后和兩側(cè)的值比較,從而判斷出波形類別。
焊接好示波器電路板實物如圖11 所示,利用相關(guān)測試儀器確保器件焊接可靠,通電后用萬用表測量確保電源供電正常,同時確認(rèn)單片機程序能正常下載,單片機能正常運行。然后下一步就可以進行編程設(shè)計和功能調(diào)試,并根據(jù)設(shè)計指標(biāo)進行測試。
圖11 示波器電路板實物圖
基本功能測試:示波器的基本功能是測量顯示信號波形,測試時采用信號源產(chǎn)生標(biāo)準(zhǔn)波形,并用“RIGOL DS1104Z”示波器的測量結(jié)果與本設(shè)計的測量結(jié)果比較,記錄測試數(shù)據(jù)并計算誤差,主要測試了正弦波、方波和三角波,信號頻率為10 Hz、1 KHz 和20 KHz,幅度分別為500 mV、2000 mV、4000 mV、6000 mV 和7000 mV。測試圖片如圖12 所示。
圖12 波形采集測試圖
從上圖的照片可知,該示波器能較好的還原出各種波形,測量頻率的誤差較小,但是隨著測量的幅度值的增大,測量的峰峰值的誤差逐漸增大,如下表1、2、3 所示分別為該簡易示波器與DS1104Z 示波器測試數(shù)據(jù)對比和誤差分析。
表1 正弦波測試數(shù)據(jù)表
表2 方波測試數(shù)據(jù)表
表3 三角波測試數(shù)據(jù)表
由上表的數(shù)據(jù)可知該簡易示波器系統(tǒng)能夠較為準(zhǔn)確的測量各種波形的頻率和幅值,由于線材的差異和信號發(fā)生器的輸出誤差,這里采用了成品示波器的測量結(jié)果為基準(zhǔn),用本設(shè)計與其對比求誤差。但由于帶寬的限制,隨著頻率的升高,所測量的電壓幅度誤差逐漸增大。
該系統(tǒng)最初的設(shè)計指標(biāo)是實現(xiàn)簡易數(shù)字示波器功能,能夠采集周期信號和非周期信號并實時顯示,并且做到便攜和低成本。最終完成設(shè)計測試證明該示波器可以測量±6V 范圍內(nèi)的輸入信號,具有100 KHz 的測量帶寬,可以用移動電源供電做到便攜式使用,已基本滿足了設(shè)計要求。該系統(tǒng)對數(shù)字示波器進行初步設(shè)計研究,尚有一些設(shè)計可以進一步改善:一是可以采用鋰電池供電,設(shè)計充放電管理和升壓電路得到5V 電壓,擺脫外接電源的限制;二是信號調(diào)理電路中加上程控放大電路,使毫伏級的小信號也能較好采集顯示。