mtk 採用Fuel Gauge電量計可能出現的幾種電量現象及解釋
阿新 • • 發佈:2018-12-24
採用Fuel Gauge電量計可能出現的幾種電量現象及解釋
[DESCRIPTION] 首先應該熟悉兩個變數,bat_volt_check_point是UI上面顯示的值。 gFG_capacity_by_C,庫侖計計算的電量值.也等於SOC的值. 公式 DOD1 = DOD0 + (-Car/Qmax). DOD1對應當前的電量值. DOD0對應初始的電量值. Car 為t時間內, 流過Rfg電阻電流的電量. Qmax為電池的容量. 下面幾種情況會更新DOD0的值, 1.開機頭10S. 2.插拔USB. 3.電池充滿的狀態 4.電池容量為15%和0%的情況 正常情況下如果,庫侖計獲取的初始電量DOD0的值比較準確, 那麼,gFG_capacity_by_c的值會很準, 實際上,gFG_capacity_by_c跟實際的電量會有點小偏差。不過該值 會在充電過程中與實際電量同步起來。譬如充電過程中是在100% 不充電過程中是在15%和0% [PLATFORM] MT6575 MT6515 MT6577 MT6517 MT6589 請結合 alps\mediatek\platform\mt6589(mt6575/mt6577)\kernel\driver\power\ mt6320_battery.c mt6575_battery.c mt6577_battery.c 中mt6575_battery_update或是mt6320_battery_update來理解. 採用Fuel gauge方案。 1.充電情況 A.充電到99%,可能需要等上一段比較長的時間才能到100%. ----->採用FG的計算電量的變數gFG_capacity_by_C先到達100,而實際上,電池還沒有充滿,此時會 先將UI顯示即Bat_Volt_Check_point定格在99.直到電池滿足充滿條件時,才會讓Bat_Volt_Check_point 值變成100,並在UI上面顯示100,此時底層的值為gFG_capacity_by_C以及Bat_Volt_check_point為100. 上層會show滿的圖片,並停止充電。 電池充滿的條件是,進入top_off mode,並且充電電流小於200mA,這個值具體看軟體的定義。 B.充電從90%(可能是其他值)到100%需要的時間比較長 ----->Battery充電進入硬體的CV階段,此時充電電流減小。對於庫侖計的方式來計算電量, DOD1 = DOD0 + Car/Qmax,Car = I*t,每增加一%,如果電流恆定,那麼電量增加的時間是相等,在CC階段,電流比較大,每增加1%的時間, 所需要的時間比較短,在CV階段,電流減小,每增加1%的時間就會變長。 當battery 充滿即滿足charging full的條件。此時電量會每10S,Bat_Volt_check_point增加1%,在UI上面顯示也會相應每10S增加1%一直到100%. 假設FG電量的方式gFG_capacity_by_c為96,電池滿足充滿的條件,此時, Bat_volt_check_point(即UI顯示)會每10S增加1,當Bat_volt_check_point為100時, 此時會呼叫FGADC_SW_RESET_parameter,直接將DOD1變成0,也即是 gFG_capacity_by_c變成100. C.Recharging ----->電池充滿後,會停止充電,此時系統由電池來供電,當電量低於4.11時,此時 又會重新充電,但是,UI上面會一直顯示100%,假設這個時候拔掉USB,這個時候 電量會從100%每1min down 1%去syc FG的電量。 最差的情況,如果FG的電量變成96%,那麼4min後,UI顯示就變成96. 2.不充電情況 A.出現在20或者其他值,很快下降到15%,或者是在15%處停留時間比較久。 ----> 這是因為15%是同步點,當電池真實電量成為15%,FG計算電量方式會同步到15%. B.出現在8%或者其他值,然後很快掉到1%. ----> 當實際的電量達到0%,也即電池電壓的值小於3.4V,此時,UI上面會每10S,下降1直到 0%,而FG的電量也會每10S,update一次,直到0. C.1%停留的時間比較久. ----> 當FG的計算方式先達到0%,那麼UI上面會保持為1%,直到真實的電池容量變為0,也即是 電池電壓小於3.4V 以上的情況都是軟體的正常處理流程.初始的電量DOD0獲取正確, 電量就會準確. 而當有點小偏差,那麼就會出現上述的一些情況.