馬文博,蔣玉華,閉金杰,廖志賢,黃國(guó)現(xiàn)
(廣西師范大學(xué),廣西桂林,541004)
萬(wàn)用表、示波器等測(cè)量?jī)x表在電子領(lǐng)域有著廣泛的應(yīng)用,號(hào)稱電子工程師的“眼睛”。如何充分利用運(yùn)放、模擬開(kāi)關(guān)等常見(jiàn)器件完成多用儀表的設(shè)計(jì),在保證精度的前提下提高易用性和擴(kuò)展性是需要解決的問(wèn)題。本文結(jié)合軟件和硬件,用盡可能少的電子元器件,并優(yōu)化系統(tǒng)軟硬件,完成系統(tǒng)設(shè)計(jì)。
系統(tǒng)主控采用STM32F103 C8T6 核心板。它是一款基于ARM Cortex-M 內(nèi)核的32 位微控制器,其具有72MHz 時(shí)鐘主頻、37 個(gè)GPIO引腳,12位ADC,價(jià)格低廉,使用廣泛,可以方便地完成設(shè)計(jì)。
本電路采用兩級(jí)LM1117 LDO 芯片串聯(lián)組成。第一級(jí)將輸入電壓轉(zhuǎn)換為5V 輸出;第二級(jí)將5V 電壓轉(zhuǎn)換為3.3V,從而滿足系統(tǒng)各模塊的供電需求。系統(tǒng)中運(yùn)算放大器、模擬開(kāi)關(guān)、電流采樣芯片、繼電器均采用5V 供電,STM32 單片機(jī)、OLED 顯示屏采用3.3V 供電。LDO 芯片具有外圍電路簡(jiǎn)單、低壓差下效率高、輸出紋波小等優(yōu)點(diǎn)。
本電路基于STM32F103C8T6 核心板進(jìn)行設(shè)計(jì),引出部分GPIO 接口用于連接和控制系統(tǒng)各外設(shè)。核心板已集成晶振電路、下載接口等電路。
圖1 系統(tǒng)框圖
圖2 電源輸入電路原理圖
圖3 最小系統(tǒng)板外圍電路圖
圖4 電壓檢測(cè)調(diào)理電路圖
圖5 電流檢測(cè)電路圖
圖6 電阻檢測(cè)電路
圖7 量程切換典型電路圖
圖8 4×4 矩陣鍵盤電路圖
圖9 OLED 屏幕接口
圖10 串行通信接口
圖11 時(shí)鐘樹(shù)配置
圖12 系統(tǒng)軟件總框圖
圖13 電壓測(cè)量流程圖
圖14 樣機(jī)測(cè)試過(guò)程
本電路需要將外部的電壓輸入按比例放大或縮小,轉(zhuǎn)換為STM32 單片機(jī)ADC 端口可以接受的0-3.3V 電壓,并通過(guò)模擬開(kāi)關(guān)實(shí)現(xiàn)量程切換功能。
運(yùn)放芯片采用LM324,該芯片具有4 路獨(dú)立運(yùn)放單元。其中,第一、二路構(gòu)成跟隨器,根據(jù)電阻分壓:
第一和二路輸入電壓分別衰減為輸入的1/11、1/4。第三路構(gòu)成同相比例放大器,放大倍數(shù)關(guān)系為:
其中R32 為平衡電阻,阻值計(jì)算方法為:R3 2 =R31 1//R30。第三路的放大倍數(shù)為11 倍。
量程切換功能通過(guò)模擬開(kāi)關(guān)實(shí)現(xiàn),型號(hào)為CD4052。其A0、A1 連接至單片機(jī)GPIO 作為控制端,Y0B、Y1B、Y2B 作為輸入端,ZB 作為輸出端連接至單片機(jī)ADC 端口。單片機(jī)控制A0、A1 以選通不同電壓等級(jí)輸入作為模擬開(kāi)關(guān)的輸出。
電路需要將外部的電流輸入進(jìn)行采樣,經(jīng)過(guò)處理后送入單片機(jī)ADC 引腳,并通過(guò)繼電器實(shí)現(xiàn)量程切換功能。在設(shè)計(jì)中盡量減小回路阻抗,以減小測(cè)量電路對(duì)被測(cè)電路的影響。
R5、R6 為采樣電阻,阻值選取分別為1Ω、0.1Ω,分別測(cè)量0~100mA、100mA~2A 電流。測(cè)量時(shí),電流由I_IN+流入,由I_IN-流出。
電流感應(yīng)放大芯片U1 選取MAX4080,其放大倍數(shù)為20 倍。測(cè)量時(shí),I_IN+、I_IN-兩端(包含采樣電阻)分得的電壓輸入MAX4080 的RS+、RS-,芯片將該電壓放大20倍后由OUT 端輸出。OUT 端連入單片機(jī)ADC 引腳。
繼電器K1、K2 為量程切換開(kāi)關(guān)。當(dāng)繼電器K1 吸合K2斷開(kāi)時(shí),采樣電阻R5接入電路;當(dāng)繼電器K2吸合K1斷開(kāi)時(shí),采樣電阻R6 接入電路。
電路需要將外部接入的電阻進(jìn)行適當(dāng)處理,接入單片機(jī)ADC 輸入引腳,并通過(guò)控制MOS 管通斷選取不同的分壓電阻,實(shí)現(xiàn)量程切換功能。設(shè)計(jì)中加入運(yùn)放(U2.4)構(gòu)成的跟隨器進(jìn)行隔離,從而避免錯(cuò)誤的輸入損壞單片機(jī)。
圖中,P 溝道MOS 管Q2、Q3、Q5 的柵極連接至單片機(jī)GPIO,當(dāng)單片機(jī)輸出低電平時(shí),漏源極導(dǎo)通。R2、R7、R8 為分壓電阻。
實(shí)際電路中,為實(shí)現(xiàn)自動(dòng)量程切換功能,開(kāi)關(guān)U3、U4、U5 用MOS管代替。R33、R34、R35 為不同量程的分壓電阻,R1 為待測(cè)電阻,阻值未知。該電路利用電阻分壓原理,單片機(jī)通過(guò)讀取待測(cè)電阻上分得電壓,進(jìn)而計(jì)算得到待測(cè)阻值。
根據(jù)電阻分壓公式(1)得被測(cè)電阻阻值計(jì)算公式(3):
式中Rx 為不同量程分壓電阻,Uc 為3.3V 基準(zhǔn)電壓。
(1)外接4×4 矩陣鍵盤用于模式切換等功能,其行、列線與單片機(jī)GPIO 相連。
(2)OLED 屏幕使用中景園電子 1.91 英寸SH1108,其接口類型為SPI。
(3)設(shè)計(jì)有串行通信接口,可將程序運(yùn)行中的數(shù)據(jù)傳至上位機(jī),方便調(diào)試和分析。
軟件主要運(yùn)行于STM32F103C8T6 單片機(jī)上,編寫(xiě)過(guò)程分為初始化代碼生成和主程序邏輯代碼編寫(xiě)。其中初始化代碼配置采用STM32CubeMX 工具生成HAL 庫(kù)代碼。主程序基于該代碼,添加用戶邏輯代碼部分。其主要目的是實(shí)現(xiàn)量程切換電路的控制、按鍵狀態(tài)讀取、測(cè)量結(jié)果處理和送入OLED 屏幕顯示等。
(1)系統(tǒng)時(shí)鐘(HSE)來(lái)源配置為外部時(shí)鐘,運(yùn)行頻率設(shè)置為72MHz。
(2)繼電器、模擬開(kāi)關(guān)、電阻量程切換MOS管GPIO 配置為推挽輸出模式。
(3)矩陣鍵盤行線配置為輸出,列線配置為輸入。
(4)使能ADC2 的4、5、6 通道用于電壓、電流、電阻ADC 采集。
使能多通道掃描模式、非連續(xù)轉(zhuǎn)換模式、軟件觸發(fā)、設(shè)置通道數(shù)為3。為最大程度提高精度,ADC 周期配置為最大(239.5Cycles)。
(5)SPI2 配置為Full-Duplex Master(全雙工主模式)用于驅(qū)動(dòng)OLED 屏幕。
(6)使能串口1 用于程序調(diào)試與上位機(jī)數(shù)據(jù)展示和下發(fā)。
主程序共涉及電壓測(cè)量、電流測(cè)量、電阻測(cè)量、矩陣鍵盤讀取、量程切換控制、串口通信、OLED 屏幕顯示等模塊。其中,電壓測(cè)量、電流測(cè)量、電阻測(cè)量模塊通過(guò)矩陣按鍵進(jìn)行切換,最終將處理后的測(cè)量結(jié)果輸出至OLED 屏幕進(jìn)行顯示、輸出至串口用于上位機(jī)展示功能。
(1)電壓測(cè)量模式
根據(jù)電壓檢測(cè)硬件電路,設(shè)計(jì)實(shí)際電壓換算公式(4)。
式中Vtrue為被測(cè)電壓真實(shí)值,ADCresult為ADC轉(zhuǎn)換結(jié)果,c 為比例系數(shù),參數(shù)b、a 為線性擬合系數(shù),用于提高結(jié)果準(zhǔn)確性。根據(jù)表1 所示電壓測(cè)量電路擋位與調(diào)整比例的關(guān)系,參數(shù)c 在三種擋位分別取值1/4、4、11。根據(jù)STM32F103系列12 位ADC 轉(zhuǎn)換器原理,ADCresult將0~3.3V 電壓表示為0~4096 之間的整數(shù)。上式首先將ADCresult轉(zhuǎn)換為真實(shí)電壓值,再乘以比例系數(shù)c,最后根據(jù)進(jìn)行線性擬合校正參數(shù)b、a 得到真實(shí)被測(cè)電壓值。
表1 設(shè)計(jì)量程與電阻的關(guān)系
表2 量程與采樣電阻的關(guān)系
表3 電阻測(cè)量中量程與分壓電阻的關(guān)系
表4 三種模式測(cè)量平均誤差統(tǒng)計(jì)
程序首先連續(xù)讀取20 次ADC 電壓端口轉(zhuǎn)換結(jié)果,送入滑動(dòng)窗口濾波器進(jìn)行濾波處理得到參數(shù)resultADC,隨后根據(jù)公式(4)計(jì)算得到被測(cè)電壓真實(shí)值。之后程序?qū)㈦妷赫鎸?shí)值送入OLED 屏幕向用戶展示,并向串口打印測(cè)量數(shù)據(jù)。除此之外,該程序還需根據(jù)表1 量程關(guān)系判斷當(dāng)前的擋位是否合適,若不合適則自動(dòng)進(jìn)行擋位切換。若真實(shí)電壓為0~0.7V 范圍則切換為1 檔;若真實(shí)電壓為0.7~9V 范圍則切換為2 檔;若真實(shí)電壓為大于9V 范圍則切換為3 檔。切換檔位后,程序在下次測(cè)量時(shí)將根據(jù)切換后的擋位參數(shù)重新計(jì)算真實(shí)測(cè)量結(jié)果。
(2)電流、電阻測(cè)量模式
電流、電阻測(cè)量模式與電壓測(cè)量模式實(shí)現(xiàn)方法基本相似,此處不展開(kāi)詳細(xì)論述。
電壓、電流擋的測(cè)試方法為:由數(shù)控可調(diào)電源輸入一固定電壓(或電流),連接至設(shè)備,同時(shí)接入U(xiǎn)NI-T UT71C型號(hào)萬(wàn)用表進(jìn)行準(zhǔn)確性比對(duì)。逐次調(diào)節(jié)電壓(或電流)輸入,記錄設(shè)備讀數(shù)和萬(wàn)用表讀數(shù),計(jì)算誤差,并驗(yàn)證其自動(dòng)切換量程功能。電阻擋測(cè)量方法為在電阻測(cè)量端口與GND 端口間接入不同阻值的定值電阻,并用萬(wàn)用表測(cè)量電阻阻值,與設(shè)備測(cè)量結(jié)果進(jìn)行比對(duì)。以上過(guò)程均重復(fù)20 次求平均值。
根據(jù)測(cè)試數(shù)據(jù),三種模式測(cè)量精度均符合預(yù)期指標(biāo)。在電流測(cè)量模式中,較小電流(約0~100mA)測(cè)量時(shí)會(huì)存在較大誤差,原因是較小測(cè)量電流下,采樣芯片和STM32 的ADC 分辨率不足,可以通過(guò)換用較大采樣電阻的方法以降低小電流測(cè)量誤差。
本文主要研究一種多用測(cè)量?jī)x表,以STM32F103C8T6為主要控制單元,從硬件和軟件兩方面對(duì)該系統(tǒng)進(jìn)行了詳細(xì)闡述。最后實(shí)驗(yàn)結(jié)果表明 STM32F103C8T6 能夠正常獲取采樣數(shù)據(jù)并進(jìn)行相應(yīng)處理,能夠?qū)崿F(xiàn)自動(dòng)擋位切換功能,在OLED 屏幕上顯示正確測(cè)量結(jié)果,輸出結(jié)果準(zhǔn)確穩(wěn)定,滿足系統(tǒng)設(shè)計(jì)要求指標(biāo)。
當(dāng)前常用的萬(wàn)用表已作為電子工程師的必備設(shè)備進(jìn)入大眾視野。通過(guò)串行通信接口,可以方便地將萬(wàn)用表與上位機(jī)軟件結(jié)合起來(lái),從而實(shí)現(xiàn)更加豐富的功能。當(dāng)前本設(shè)計(jì)運(yùn)行穩(wěn)定,可靠性良好,成本低,為后續(xù)智能化測(cè)量?jī)x器的設(shè)計(jì)開(kāi)發(fā)與研究奠定了基礎(chǔ)。本設(shè)計(jì)包含完善的保護(hù)電路,在外部輸入超過(guò)設(shè)計(jì)測(cè)量能力時(shí),不會(huì)造成設(shè)備損壞。