裝備蓄電池組工作電壓和電流實現檢測的需求,利用運算放大器構建了正負雙向電流量累積求和及跟蹤反向的預處理電路,基於stm32f103控制器片內ad實現了12位電壓和電流的信號採集轉換。最後給出了主要程式片段和如何提高adc精度的一些措施。
基本介紹
- 中文名:蓄電池雙向電流檢測
- 外文名:Detection of bidirectional current of battery.
- 套用:電流實現檢測的需求
簡介,硬體設計,軟體設計,提高信號檢測精度的措施,
簡介
在某裝備的研製過程中,為保障裝備效能的正常發揮,需要實時掌握其內部集成的鉛酸蓄電池組的工作狀態(主要狀態參數包括電池組電壓和充放電電流),要求監控系統做到精度高、可靠、簡單。具體參數指標是:蓄電池組標稱值DC 24V,充放電電流在5A以內;電壓檢測精度要求0.01V,電流檢測精度要求0.01A,即小數點後保證兩位有效數字。設計了以STM32F103系列嵌入式控制器為核心的具有信號處理、採樣和計算的軟硬體控制系統。
硬體設計
蓄電池組信號採集和處理的工作原理如圖1所示。功能上包括獨立的兩部分:電壓檢測和電流檢測。其中電壓檢測實現較為簡單。系統充放電電流的實時檢測選用瑞士LEM公司的LA28-NP電流感測器。
ST公司推出的STM32F103系列控制器採用高性能的ARM Cortex-M3 32位的RISC核心,工作頻率為72MHz。該器件內置高速存儲器(高達128 KB的快閃記憶體和20KB的SRAM),豐富的增強I/O連線埠和連線到兩條APB匯流排的外設;具有3個通用16位定時器和1個PWM定時器,以及2個I2C和2個SPI、3個USART、1個USB和1個CAN通信接口;工作於- 40~ + 105℃的溫度範圍,供電電壓為2.0~ 3.6 V,一系列的省電模式保證低功耗套用的要求。STM32F103系列處理器不但具有高速可靠、資源豐富、工作溫度和供電電壓範圍寬、功耗低、性價比高的特點,而且內部集成雙路A/D轉換器(16通道,12位精度,1μs轉換時間)。
1)電壓檢測
電壓信號量的檢測採用雙電阻分壓模式,取兩個合適阻值的電阻串聯分壓,分壓後的電壓信號送入
STM32F103處理器的A/D轉換引腳。本設計中,控制器基準電壓採用+ 2.5 V,故電壓信號輸入範圍須小於或等於2.5 V,即:VbatR1+ R2× R2≤ 2.5 V (1)
其中,Vbat為蓄電池組電壓值,實際變化範圍為20~28 V,這裡Vbat取最大值28 V;R1和R2為分壓電阻,均選用精度為1%的金屬膜電阻。R1= 102 kΨ,R2= 10Ψ,R1和R2的串聯電阻達到112 kΨ,消耗的電量對裝備工作不會產生過大的影響。
2、充放電電流雙向採樣與處理
採用LA28-NP電流感測器對充放電電流進行實時檢測。該感測器是利用霍爾原理的閉環(補償)電流感測器,原邊迴路和副邊迴路之間絕緣,可用於測量直交流脈衝和混合型電流,供電電壓± 15 V。系統中採用1000∶ 5的匝比,原邊迴路的充放電± 5 A電流對應副邊迴路的額定電流Is,其有效值為± 25 mA。在套用中,感應電流Is通過精密電阻Rm,取得電壓量V1,電阻Rm的取值取決於A/D轉換器對於V2的要求。
LA28-NP的輸出電流為雙向,即± 25 mA的電流信號。在實際工作中,放電時輸出最大電流為+ 25 mA,而充電時,輸出最大電流為- 25 mA,由此而取得的電壓信號V1相對於地電平也為相應的正負電壓。STM32F103內置的ADC電壓輸入範圍為Vref-≤ Vin≤ Vref+。本設計中Vref-接模擬地,Vref+接2.5 V基準電壓,故ADC輸入範圍為0~ 2.5 V。目前存在的問題是:STM32F103採用單3.3 V工作,模擬量輸入無法處理反向電壓。在傳統的方式下,如果電阻Rm基準電平端接入地,充電時V1為負電壓,控制器無能為力。針對這個問題,設計了圖2所示的累加升壓、跟隨反向信號預處理電路,解決了雙向電流的A/D採樣問題。
該設計的基本思想是將雙向電流的電壓變化範圍均控制在0~ Vref+範圍內。這是以犧牲A/D轉換精度為代價的。詳細過程如下:
①串入電阻Rm= 50Ψ,獲得模擬量電壓輸出V1範圍為- 1.25~ + 1.25 V。
②利用兩門運算放大器構建求和電路,實現V1和+1.25V基準電壓累加,將V1擴展至0~-2.5V。再做一次反向跟隨放大,實現電壓反向功能,輸出電壓V2為0~+2.5V。
運算放大器選用通用運放LM324,供電電壓± 15V,和電流感測器LA28-NP採用同一供電電路。
Vmid= -(R5/R3× 1.25+R5/R4× V1)
取R3= R4= R5= 10 kΨ,Vmid=-(1.25+ V1),故Vmid電壓範圍為0~-2.5V。在第二級反相放大電路中可得:
Vout= -R7/R6× Vmid
取R6= R7= 10 kΨ,則Vout= - Vmid,Vout取值範圍為0~+ 2.5V。
③ STM32F103的A/D轉換器精度為12位,理論上對應數字量範圍0~ 4096。實際情況下,由於接外掛程式、線纜、PCB和器件的綜合影響,充放電流計算公式為:y= kx- 5.046,k= 0.00244。在實際的程式編制中,k定義為float數據類型,至少取3位有效數字,才能保證0.01 A的電流精度。x表示A/D轉換器得到的數字量。y表示實際電流值,負數表示充電電流,正數表示放電電流。
軟體設計
1、基本思路
監控系統軟體的開發採用ARM公司的RealViewMDK開發工具,統一採用C語言編程。為提高開發效率,ST公司推出了針對STM32控制器的固件函式館,目前的最新版本為STM32F10x StdPeriph Lib V3.2.0。電壓和電流檢測A/D轉換的軟體設定如下:
①配置模擬量輸入的GPIO口。STM32控制器有個很大的優點,其A/D轉換輸入引腳可以是任意GPIO,只要GPIO配置為GPIO Mode AIN模式,即可以實現模擬量輸入。STM32F103共有16個外部通道,該設計中將PC4和PC6作為電壓量和電流量的ADC輸入端。
②將ADC設定為連續轉換模式、右對齊、非外部觸發。
③啟動ADC,開始採樣轉換和處理。STM32F103的ADC主要程式片段略———編者注。
2、軟體濾波措施
該套用中電壓量和電流量為變化較緩的信號,故軟體採取防脈衝干擾平均濾波算法。連續採樣N個數據,去掉一個最大值和一個最小值,然後計算N- 2個數據的算術平均值。通過實驗N取5時可達到滿意的效果。該算法能夠剔除偶然出現的脈衝性干擾,消除由於脈衝干擾所引起的採樣值偏差。
提高信號檢測精度的措施
為提高ADC處理的精度和系統抗干擾能力,該設計從ADC的使用、電壓基準和供電、濾波及元器件的選擇等方面採取了系列的措施。
1、ADC的使用
使用STM32F103的ADC時考慮兩個方面:
①兩個模擬量輸入口臨近的引腳不安排數字量I/O。I/O腳之間存在耦合電容,因此I/O連線埠的翻轉可能對ADC的模擬輸入產生一些噪聲。這可能是因為PCB走線過於靠近,或互相交叉而產生的。
②溫度會對ADC的精度產生較大的影響,主要包括偏移誤差和增益誤差。這些誤差可以通過微控制器的固件程式補償。一種方法是,根據不同的溫度範圍測量出完整的偏移和增益變化,再在存儲器中建立一個對照表,需要耗費額外的費用和時間。另一種方法是,當溫度達到某個數值時,使用內部的溫度感測器和ADC看門狗功能,重新校準。
2、電壓基準晶片和獨立電源供電
在該設計中為保證信號的質量,重要的電平信號採用專用晶片來實現。例如使用REF2912和REF2925電壓基準晶片產生+1.25V和+2.5V兩個電壓基準源,+1.25V基準信號用於放大器累加電路,+2.5V基準信號提供給STM32F103的Vref+。另外,模擬電路、控制器模擬供電和數字電路供電採用獨立電源,由專用DC/DC提供±15V電源,為電流感測器LA-28P及運算放大器LM324供電,STM32F103的模擬部分VDDA和數字部分VDD使用獨立的+3.3V供電。三種獨立電源於一點共地,儘可能地減少電源間的互擾。這樣做的好處是,避免了很多的I/O連線埠翻轉操作在直流電源上產生的大量的噪聲干擾。
3、其他抗干擾措施
該設計還採取了其他的一些抗干擾措施:STM32F103控制器的VDDA和Vref+引腳連線2個外部的去耦電容器(10nF瓷介電容+1μF的鉭電容);模擬電路中的所有電阻採用1%精度的金屬膜電阻;在PCB的布置中,模擬電路部分遠離數字部分,避免了在模擬電路底下通過數位訊號線。