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