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