1 硬件設計
蓄電池組信號采集和處理的工作原理如圖1所示。功能上包括獨立的兩部分:電壓檢測" title="電壓檢測">電壓檢測和電流檢測。其中電壓檢測實現較為簡單。系統充放電" title="充放電">充放電電流的實時檢測選用瑞士LEM公司的LA28-NP電流傳感器。
ST公司推出的STM32F103" title="STM32F103">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℃的溫度范圍,供電電壓" title="供電電壓">供電電壓為2.O~3.6 V,一系列的省電模式保證低功耗應用的要求。STM32F103系列處理器不但具有高速可靠、資源豐富、工作溫度和供電電壓范圍寬、功耗低、性價比高的特點,而且內部集成雙路A/D轉換器(16通道,12位精度,1 μs轉換時間)。
1.1 電壓檢測
電壓信號量的檢測采用雙電阻分壓模式,取兩個合適阻值的電阻串聯分壓,分壓后的電壓信號送入STM32F103處理器的A/D轉換引腳。本設計中,控制器基準電壓采用+2.5 V,故電壓信號輸入范圍須小于或等于2.5 V,即:
其中,Vbat為蓄電池組電壓值,實際變化范圍為20~28 V,這里Vbat取最大值28 V;R1和R2為分壓電阻,均選用精度為1%的金屬膜電阻。R1=102 kΩ,R2=10 Ω,R1和R2的串聯電阻達到112 kΩ,消耗的電量對裝備工作不會產生過大的影響。
1.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,而充電時,輸出最大電流為-25mA,由此而取得的電壓信號V1相對于地電平也為相應的正負電壓。STM32F103內置的ADC電壓輸入范圍為Vref-≤Vin≤Vref+。本設計中Vref-接模擬地,Vref+接2.5 V基準電壓,故ADC輸入范圍為O~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.25 V基準電壓累加,將V1擴展至0~-2.5 V。再做一次反向跟隨放大,實現電壓反向功能,輸出電壓V2為0~+2.5 V。
運算放大器選用通用運放LM324,供電電壓±15V,和電流傳感器LA28-NP采用同一供電電路。
取R3=R4=R5=10 kΩ,Vmid=-(1.25+V1),故Vmid電壓范圍為O~-2.5 V。
在第二級反相放大電路中可得:
③STM32F103的A/D轉換器精度為12位,理論上對應數字量范圍0~4096。實際情況下,由于接插件、線纜、PCB和器件的綜合影響,充放電流計算公式為:y=kx-5.046,k=0.00244。在實際的程序編制中,k定義為float數據類型,至少取3位有效數字,才能保證O.01 A的電流精度。x表示A/D轉換器得到的數字量。y表示實際電流值,負數表示充電電流,正數表示放電電流。充放電電流和A/D數字量的曲線關系如圖3所示。
2 軟件設計
2.1 基本思路
監控系統軟件的開發采用ARM公司的Real View MDK開發工具,統一采用C語言編程。為提高開發效率,ST公司推出了針對STM32控制器的固件函數庫,目前的最新版本為STM32F10x_StdPeriph_Lib_V3.2.O。電壓和電流檢測A/D轉換的軟件設置如下:
①配置模擬量輸入的GPIO口。STM32控制器有個很大的優點,其A/D轉換輸入引腳可以是任意GPIO,只要GPIO配置為GPIO_Mode_AIN模式,即可以實現模擬量輸入。STM32F103共有16個外部通道,該設計中將PCA和PC6作為電壓量和電流量的ADC輸入端。
②將ADC設置為連續轉換模式、右對齊、非外部觸發。
③啟動ADC,開始采樣轉換和處理。
2.2 軟件濾波措施
該應用中電壓量和電流量為變化較緩的信號,故軟件采取防脈沖干擾平均濾波算法。連續采樣N個數據,去掉一個最大值和一個最小值,然后計算N-2個數據的算術平均值。通過實驗N取5時可達到滿意的效果。該算法能夠剔除偶然出現的脈沖性干擾,消除由于脈沖干擾所引起的采樣值偏差。
3 提高信號檢測精度的措施
為提高ADC處理的精度和系統抗干擾能力,該設計從ADC的使用、電壓基準" title="電壓基準">電壓基準和供電、濾波及元器件的選擇等方面采取了系列的措施。
3.1 ADC的使用
使用STM32F103的ADC時考慮兩個方面:
①兩個模擬量輸入口臨近的引腳不安排數字量I/O。I/O腳之間存在耦合電容,因此I/O端口的翻轉可能對ADC的模擬輸入產生一些噪聲。這可能是因為PCB走線過于靠近,或互相交叉而產生的。
②溫度會對ADC的精度產生較大的影響,主要包括偏移誤差和增益誤差。這些誤差可以通過微控制器的固件程序補償。一種方法是,根據不同的溫度范圍測量出完整的偏移和增益變化,再在存儲器中建立一個對照表,需要耗費額外的費用和時間。另一種方法是,當溫度達到某個數值時,使用內部的溫度傳感器和ADC看門狗功能,重新校準。
3.2 電壓基準芯片和獨立電源供電
在該設計中為保證信號的質量,重要的電平信號采用專用芯片來實現。例如使用REF2912和REF2925電壓基準芯片產生+1.25 V和+2.5 V兩個電壓基準源,+1.25 V基準信號用于放大器累加電路,+2.5 V基準信號提供給SFM32F103的Vref+。另外,模擬電路、控制器模擬供電和數字電路供電采用獨立電源,由專用DC/DC提供±15 V電源,為電流傳感器LA-28P及運算放大器LM324供電,STM32F103的模擬部分VDDA和數字部分VDD使用獨立的+3.3 V供電。三種獨立電源于一點共地,盡可能地減少電源間的互擾。這樣做的好處是,避免了很多的I/O端口翻轉操作在直流電源上產生的大量的噪聲干擾。
3.3 其他抗干擾措施
該設計還采取了其他的一些抗干擾措施:STM32F103控制器的VDDA和Vref+引腳連接2個外部的去耦電容器(10 nF瓷介電容+1 μF的鉭電容);模擬電路中的所有電阻采用1%精度的金屬膜電阻;在PCB的布置中,模擬電路部分遠離數字部分,避免了在模擬電路底下通過數字信號線。
結語
該設計實現了充放電電流信號的累加升壓、跟隨反向,利用STM32F103控制器片內12位A/D實現了實時監測。最終電壓檢測實際精度達到O.005 V,電流實際精度達到O.005 A,效果穩定、可靠,滿足了設計要求。需進一步改進之處在于處理系統的溫漂問題,即溫度對電路的影響。