文/陳羽
對于電壓電流的測量,若被測信號是在小范圍內變化,要做到精確測量并不困難。但當被測信號在較大范圍內變化時,為了保證精度,常用的方式是切換量程。然而在很多時候,為了做到測量的實時性,不允許采用手動換擋形式,因此本文中采用了STM32單片機技術,根據被測信號的大小,自動地選擇合適的增益和衰減,實現了自動量程切換的電壓電流測量。

圖1:系統組成
本文設計的功率測量直流電壓范圍為0~30V,能自動進行量程轉換。功率測量的原理方框圖如圖1所示,以STM32作為電路的核心部件,采用軟件編程和硬件相結合的形式。輸入信號經放大后,由單片機測出其大小,從而選擇合適的信號去控制擋位的選擇,實現量程自動切換功能,單片機根據A/D轉換的值和擋位情況算出當前的電壓和電流,在LCD屏上顯示出來。
本系統中采用32位的中容量STM32F103作為處理器。STM32F103是基于32位的Cortex—M3內核,工作頻率為72MHz。片內資源及輸入輸出接口豐富,帶有兩個12位的ADC、一個12位的雙通道DAC和11個16位的計時器。
電壓采樣電路如圖2所示。采用同相比例放大電路(MCP602),假設輸入為Ui,輸出為Uo,得到Uo=(1+R6/R5)Ui,可以得知放大倍數為3.4倍。

圖2:電壓采樣電路

圖3:電流采樣電路

圖4:主程序設計

圖5:AD轉換程序

圖6:量程切換程序
同相比例運算電路具有高輸入電阻,低輸出電阻的優點,但因為集成運放有共模輸入,所以為了提高運算精度,應當選用高共模抑制比的集成運放。從另一個角度看,在對電路進行誤差分析時,應特別注意共模信號的影響。
電流采樣電路如圖3所示。采樣電阻串聯在被測電路中,毫歐級電阻R7實現電流取樣,從而提高測量精度。電流采樣信號同樣采用同相比例放大,輸入輸出關系是Uo=(1+R10/R9)Ui,可以得知放大倍數為48倍。單片機測得運放輸出的電壓值,經過計算,就可得到被測信號的電流值。
STM32內部的12位ADC模塊,通過軟件設置,可以直接測量運放輸出的電壓值。繼電器與精密電阻網絡構成分壓檔位調整電路,原理框圖如圖2所示。0-30V的被測電源輸入后,當運放輸出電壓PA0超過3V時,PB5輸出高電平;運放輸出電壓沒超過3V時,PB5輸出低電平,從而控制輸出繼電器,如此實現自動切換量程。
量程自動切換功率測量的程序采用模塊化設計,用C語言編程。程序由主程序、量程切換子程序、LCD顯示子程序、A/D轉換子程序等組成。
上電后程序通過初始化,進入監控狀態,顯示待機界面等待測量。A/D啟動后,首先選擇最大量程對外部數據進行采樣計算并判斷,確定合適的量程。切換量程后再次采樣,記錄得到的數據,通過相應的計算,得到測量的電壓并顯示電壓電流值。系統流程圖如圖4所示。
STM32 內部自帶A/D 轉換功能,只需調用固件庫,即可實現 STM32的A/D轉換功能。此設計采用雙通道模式,用 ADC0采樣輸入電壓,用 ADC1采樣輸入電流。為提高 A/D 轉換的精確度,可對連續采樣的10 次 AD 轉換結果求取平均值。程序流程圖如圖5所示。
將A/D測量得到的數據與設置的閾值進行比較,若超出閾值,則超出原量程的范圍,則進行升擋,直至升到合適的擋位,并根據此擋位的電路連接情況進行數據處理,得到相應的電壓電流值;若低于所設值,則進行降擋處理,直至降到合適的擋位,并進行數據處理,得到相應的電壓電流值。流程如圖6所示。
借助STM32內部自帶的12 位逐次逼近型 A/D 轉換功能,完成了對電源的電流與電壓的測量,從而設計出了一款具有較高分辨率的功率測量裝置。相比于傳統的機械換擋測量,STM32通過閾值電壓的判斷,自動完成量程的切換,具有自動測量的效果。此外,此自動測量裝置具有響應速度快,性能穩定,在電子測量領域,尤其是對微電壓的精確測量方面,具有很好的實際應用價值。