1. 程式人生 > >簡便的電池電量測試設計方法

簡便的電池電量測試設計方法

一、前言

使用行動式電子產品,希望能夠隨時知道電池的所剩電量,所能持續的工作時間,並且據此調節相關應用,這無疑將是一個非常方便的事情,尤其適合使用智慧手機的商務人士。電池電量檢測技術在膝上型電腦中已經屢見不鮮,多數膝上型電腦都有電源管理的選項,提供不同的電源工作模式以及電池報警功能。但是在更加小型化的便攜產品市場,這一技術卻還不多見。

行動式產品提供的功能越來越紛繁,使用者日益需要準確地監測電池電量,以便靈活管理可用電源,明確顯示剩餘工作時間,儘可能延長系統執行的時間。現在大多數手機採用的電量測量方法還比較簡單,缺乏精確度。目前主流的檢測方法是簡單測量電池電壓,估算相對應的電池剩餘電量。總電量除以4或5,也就是通常能在手機螢幕上看見的4格或者5格的電量Bar,所以每格的精確度即是25%或者20%,這樣的精度顯然無法滿足高精度要求的應用。

這種電壓估測電量的方法通常如下:一塊電池在放電的時候,電池的電壓會隨著電池電量的流失逐漸地下降。這樣就可以得到一個比較簡單而有效的對應關係,就是電壓對應容量。通過電池正常使用(比如100mA放電)的放電曲線,對時間進行4等分,以充電限制電壓為4.2V的鋰電池為例,可以列出這樣一個對應關係,4.20V—100%,3.85V—75%,3.75V—50%,3.60V—25%,3.40V—5%(因為手機不可能完全用光電池的電量,一般低於3.40V 時就可能自動關機了)。很顯然,這種精度最高只有25%。另外,電池電壓會隨著RFPA的功率發射發生突變,通常會變小0.2V-0.3V。如果一味的使用電壓模擬電量方法,就會誤差更大。為了解決電池電壓突然變小的測量問題,當前工程師們的普遍方法是利用軟體演算法進行均值濾波,對一段時間內的電池電壓進行均值化,如果該時間段的平均電池電壓確實下降了,則預估電量確實變少了,否則即認為電量並未變化。

電池電壓模擬剩餘電量的方法確實存在著缺陷,而通過庫侖計實時監測電池消耗電量而計算剩餘電量的方法則非常準確。Fairchild的FAN4010是這種應用的典型器件。它是一顆電流檢測感測器,專門用於檢測行動式裝置電池的充電/耗電電流,能將通過精密檢測電阻的電流訊號轉換為ADC可以檢測到的電壓訊號,從而計算一段時間內消耗的真實電量。

二、硬體電路的典型設計

為了滿足高精度的電池電量監測需求,FAN4010外加合適的應用電路並加上特定的軟體控制演算法,就能夠很好的達到要求。如圖1是FAN4010的典型應用框圖。外圍只需要兩個電阻Rsense、Rout即構成高精度的放大電路。如圖2是內部結構原理示意圖,所以存在Vsense = I_load * Rsense, Vout = 0.01 * Vsense * Rout,由此兩關係式可以等到I_load=100*Vout/(Rout*Rsense),所以只要用ADC監測Vout上的電壓,再除以已知的電阻值Rout和Rsense,就可以得到準確的負載消耗電流,而電流對時間進行積分,,即可以達到所消耗的電量準確值。用總電量減去準確的電量消耗值,即可得到準確的剩餘電量。充電電路,則同理。

MCCC01

圖1 FAN4010的應用框圖

MCCC02

圖2 FAN4010的內部結構原理示意圖

FAN4010的典型應用圖以及Rsense、Rout的選值要求如下。其中圖3為電池的充電電路,圖4為電池的放電電路。

MCCC03

圖3 充電部分的參考原理圖

MCCC04

圖4 放電部分的參考原理圖

Rsense(R_sense1/R_sense2)

這兩個電阻串聯在充電和放電的路徑上。因此,我們需要一個低阻值的電流取樣電阻。矛盾的是,如果Rsense太低,精度都將丟失。若Rsense選擇的過大,則此電阻上的壓降和功耗都很大。因此,Rsense的選擇應該是理想的高精確度和所能允許電壓損失的綜合平衡。雖然FAN4010在Vsense值較低時取樣電阻上的功耗最小,但是一個更大的Rsense值能提供更多的準確性。然而較大的Rsense會產生一個比較大的電壓降,減少了可提供給負載的有效電壓,這在低電壓尤其電池供電的應用中會很有麻煩。正因為如此,設計中要很好地瞭解預期的最大允許負載電流和負載供電電壓。為了獲得最大化的精度,建議Rsense的選擇應符合以下條件:10mV<200MV P>

Rout(R_out1/R_out2)

接到GND上的Rout這個電阻,是用來產生一個可供ADC檢測到的電壓訊號。它的選擇主要取決於兩個引數:I_out(即I_load*Rsense/100)以及ADC的電壓取樣範圍。最大的I_load產生的最大Vout不能超過ADC的最大采樣電壓。為了保證精度最大化,同時又希望最大的Vout能儘量接近ADC的最大采樣量程。

另外,為了保證FAN4010的最大線性化,Rout的選擇應滿足關係式:
其中Vin為輸入電壓,Iout_fs的值則是表1中的對應值,在不同的最大Vsense時,其值不一樣。例如,若最大的Vsense為500mV時,則Iout_fs=5mA。

Table.1 Iout_FS的選值表

MCCC_table01
Layout設計圖例如圖5,走線的基本原則是:FAN4010儘量靠近充電/放電路徑。

MCCC05

圖5 layout例項

三、典型的軟體設計

電量計算的演算法如圖6,相關說明如下:

假設前提:現有兩塊電池,A (總容量1000mAh左右,不確定),B(總容量1500mAh左右,不確定),此2電池均可能使用在手機P上。

插入電池(開機)→→是否電池校準(預設否)→→否→→呼叫電池容量曲線a(預設)(若使用電池B,則修改為使用電池容量曲線b)→→通過電池端電池Vcc以及監測耗電量聯合評估剩餘電量百分比。
→→是→→若要校準,請保證該電池已經充滿電→→選擇校準曲線,a 還是 b? →→記錄最高階電池Vcc-h,預設此時電池電量百分比100%→→按每一可計算時間段,分別監測耗電量,以及電池端電壓→→一直使用到電池沒電,自動關機,記錄此狀態電壓Vcc-l以及預設此時電池百分比0%,計算總的電量損耗Q,此Q即為以後容量曲線的total Q。

MCCC06

圖6 軟體流程圖