大多數(shù)手持設(shè)備使用堿性電池或可充電電池供電,因此測(cè)量電池容量是這類設(shè)計(jì)的一個(gè)關(guān)鍵特征。但是,在大多數(shù)情況下,對(duì)預(yù)算緊張的項(xiàng)目而言,使用電池電量監(jiān)控IC可能是一種奢望。本文提供了一種更簡(jiǎn)單、更便宜的選擇。
如今,即使是最便宜的MCU也常常包括內(nèi)部模數(shù)轉(zhuǎn)換器(ADC)模塊,但是由于其分辨率(相對(duì))較低,噪聲水平較高,因此這一模塊并非總是得到使用。然而,那些未使用的內(nèi)部ADC通道之一,足以用于執(zhí)行測(cè)試,從而確定電池是否仍然可用。
本文所述檢測(cè)電池健康狀況的方法稱為電化學(xué)動(dòng)態(tài)響應(yīng)(EDR)(參考文獻(xiàn)1)。該方法已由Cadex Electronics申請(qǐng)專利,美國(guó)專利號(hào)為7,622,929。
EDR通過施加負(fù)載脈沖,評(píng)估電池對(duì)攻擊和恢復(fù)的響應(yīng)時(shí)間,來對(duì)電池在負(fù)載下的狀況與所存儲(chǔ)的與電池性能相關(guān)的參數(shù)進(jìn)行比較。如圖1所示,好的電池具有很強(qiáng)的恢復(fù)特性,而幾乎耗盡的電池則具有較大的放電斜率和較差的恢復(fù)能力。造成耗盡的電池出現(xiàn)這些差異的原因有多種,例如內(nèi)部電阻增加。
圖1:對(duì)比各種充電狀態(tài)下電池對(duì)臨時(shí)負(fù)載脈沖的響應(yīng),可以發(fā)現(xiàn)它們?cè)贓DR方面的差異。
利用EDR理論,對(duì)電池電壓進(jìn)行采樣,找到在特定時(shí)間下(例如最大功耗發(fā)生時(shí))的最小電池電量,即可獲得有關(guān)電池健康狀況的信息。系統(tǒng)的初始開機(jī)時(shí)間(也稱為“打招呼”時(shí)間)是衡量電池健康狀況的一個(gè)特別好的時(shí)機(jī)。在系統(tǒng)完全啟動(dòng)之前,電池電量似乎處于安全工作水平,但是,如果電池快要用盡了,則當(dāng)系統(tǒng)達(dá)到滿負(fù)荷時(shí),電池電量可能會(huì)立即降至安全水平以下。該設(shè)備會(huì)在不執(zhí)行EDR測(cè)試的情況下以正常模式啟動(dòng),但是卻會(huì)在第一次重載時(shí)不受控制地關(guān)閉(即電壓下降到如圖1所示的關(guān)鍵電池電量水平)。
圖2顯示了實(shí)現(xiàn)EDR測(cè)試的簡(jiǎn)化硬件版本。此處選用負(fù)載電阻來代表整個(gè)系統(tǒng)負(fù)載,因此其值可以根據(jù)系統(tǒng)的不同進(jìn)行改變。系統(tǒng)要生成此處所示的數(shù)據(jù),需要一個(gè)10Ω的值。電阻R1和R2用作分壓器,實(shí)現(xiàn)對(duì)電池電壓(Vcc)的測(cè)量,而升壓電路則用于確保即使在測(cè)試期間電池電壓下降時(shí),ADC的基準(zhǔn)也保持恒定。電阻R3是開關(guān)晶體管的下拉電阻。
圖2:以上簡(jiǎn)化原理圖顯示了EDR測(cè)試實(shí)現(xiàn)的總體設(shè)計(jì)。
測(cè)試系統(tǒng)在設(shè)定的時(shí)間段(約200ms)內(nèi)對(duì)電池電壓進(jìn)行采樣。在固件控制下,MOSFET僅在測(cè)量周期的一半時(shí)間內(nèi)導(dǎo)通,然后關(guān)閉。這樣,系統(tǒng)就可以測(cè)量滿載情況下的電壓,以及最小負(fù)載時(shí)的電池恢復(fù)響應(yīng)。(可以在固件中更改時(shí)間段,但我發(fā)現(xiàn)200ms足以充分評(píng)估電池容量。)測(cè)量完成后,可以通過UART鏈路讀出結(jié)果。
在為演示EDR所搭建的示例系統(tǒng)中,我使用了兩節(jié)AA堿性電池,因此Vcc的最大值為3.2V。升壓電壓Vdd設(shè)置為恒定的3.6V。系統(tǒng)在正常情況下消耗55mA,但在滿載時(shí)消耗127mA。使用“好”電池(圖3a)和“壞”電池(即耗盡的電池,圖3b)對(duì)系統(tǒng)進(jìn)行測(cè)試時(shí)所獲得的示波器跡線,表明了欠載電壓的差異有多大。
圖3:電池電壓的負(fù)載測(cè)試結(jié)果顯示,充滿電的電池(a)和幾乎耗盡的電池(b),它們的響應(yīng)之間存在顯著差異。
我在某些項(xiàng)目中使用的示例設(shè)計(jì)基于STM32F303 MCU,其固件使用KEIL IDE用C語言編寫。可以在此GitHub頁(yè)面上找到這個(gè)固件。
測(cè)試代碼的流程圖如圖4所示。一旦UART收到“S”字符,就會(huì)執(zhí)行測(cè)試。ADC采樣頻率設(shè)置為250Hz,如前所述,測(cè)試周期約為200ms。
圖4:EDR測(cè)試代碼將負(fù)載接通,以一半的測(cè)試時(shí)間采樣,然后斷開負(fù)載,完成采樣周期。
這個(gè)代碼僅用于進(jìn)行測(cè)試和收集數(shù)據(jù)。處理數(shù)據(jù)有很多方案。在最簡(jiǎn)單的情況下,可以查看數(shù)據(jù)的最小值,然后將其與系統(tǒng)的安全工作電壓水平(也稱為臨界水平)進(jìn)行比較。如果在測(cè)試過程中電池電壓接近臨界水平,則可以警告系統(tǒng)用戶該更換電池了。
可以編寫更全面的算法來精確確定電池健康狀況,例如用作電池電量指示器。然而,為了在顯示器或電池指示器上向用戶更新、顯示適當(dāng)?shù)臄?shù)據(jù),還應(yīng)對(duì)所采集的數(shù)據(jù)進(jìn)行過濾。若原始數(shù)據(jù)未經(jīng)過適當(dāng)過濾,那么負(fù)載變化將導(dǎo)致其完全無用。緩慢的無限脈沖響應(yīng)(IIR)濾波器可以對(duì)信號(hào)進(jìn)行正常平滑。
總之,借助MCU當(dāng)中非常基本的ADC,采用EDR方法,可以對(duì)電池健康狀況實(shí)現(xiàn)廉價(jià)的檢測(cè)。將初始上電期間的讀電池時(shí)間設(shè)為約200ms,足以對(duì)幾乎所有系統(tǒng)實(shí)現(xiàn)基本的電池健康狀況測(cè)試。
參考文獻(xiàn)
- Battery Rapid-test Methods, Battery University
(本文授權(quán)編譯自EDN美國(guó)版,原文參考鏈接:Check battery capacity with a simple test method。雜志原標(biāo)題:《用簡(jiǎn)單測(cè)試方法檢查電池容量》。由趙明燦編譯。)
本文轉(zhuǎn)自《電子技術(shù)設(shè)計(jì)》網(wǎng)站
- 當(dāng)mos管截止時(shí)候負(fù)載不能工作