天天看點

Android4.4電池管理

一、概述

       Android4.4的電池管理功能用于管理電池的充、放電功能。整個電池管理的部分包括Linux電池驅動、Android電池服務、電池屬性和參數、電池曲線優化四個部分。

       Linux電池驅動用于和PMIC互動、負責監聽電池産生的相關事件,例如低電報警、電量發生變化、高溫報警、USB插拔等等。

       Android電池服務,用來監聽核心上報的電池事件,并将最新的電池資料上報給系統,系統收到新資料後會去更新電池顯示狀态、剩餘電量等資訊。如果收到過溫報警和低電報警,系統會自動觸發關機流程,保護電池和機器不受到危害。

       研究電池屬性和參數對提高電池子系統的性能也是很重要的,電池的性能越好,上報的資料越準确,是以研發人員也需對此有深入的了解。電池曲線優化是很重要的,電池曲線優化得越好,顯示的電量比越準确,放電曲線的線性度也越好,是以對放電曲線的優化是重中之重。

二、Android電池服務

     1. Android電池服務的啟動和運作流程

Android4.4電池管理

          2. Android電池服務的源碼結構

   

         Framework\base\services\java\com\android\server

        ├── SystemServer.java

                 建立BatteryServices、PowerManagerService、ActivityManagerService

        ├── BatterySevices.java

                 監聽底層上報的battery事件,廣播電池發生改變的消息

         Framework\base\services\java\com\android\server\am

        ├── ActivityManagerService.java

                 建立BatteryStatsService

        ├── BatteryStatsService.java

                 統計和記錄電池參數的資訊

         Framework\base\services\java\com\android\server\power

        ├── PowerManagerService.java

                 監聽電池發生變化的廣播消息,并調節系統的電源狀态,例如亮屏

         Framework\base\core\java\com\internal\os\

        ├── BatteryStatsImpl.java

                 統計和記錄電池參數的資訊,并通知其他子產品

         System\core\healthd

        ├── healthd.cpp

                 建立uevent socket,監聽核心上報的核心事件

        ├── BatteryMonitor.cpp

                 初始化本地電池資料結構,将power_supply路徑下屬性節點路徑填充進去,

        ├── BatteryMonitor.h

        ├── BatteryPropertiesRegistrar.cpp

                 建立電池屬性監聽器,并将其注冊到Android的系統服務中

        ├── BatteryPropertiesRegistrar.h

     3. 電池系統從底層向Framework層上報資料的流程

Android4.4電池管理

三、電池屬性和參數

       1. 锂電池的六個主要參數

        A. 電池容量

           電池的容量由電池内活性物質的數量決定,通常用mAh或Ah表示。例如1000mAh就是能以1A的電流放電1h,換

      算為所含電荷量大約為3600C。

        B. 标稱電壓

           電池正負極之間的電勢差稱為标稱電壓。标稱電壓由極闆材料的電極電位和内部電解液的濃度決定。锂電池放

           電圖是呈抛物線的,4.3V降到3.7V和3.7V降到3.0V都是變化很快的。唯有3.7V左右的放電時間最長,幾乎占到

           了3/4的時間,是以锂電池的标稱電壓是指維持放電時間最長的那段電壓。锂電池的标稱電壓有3.7V和3.8V,如

      果為3.7V,則充電終止電壓為4.2V,如果為3.8V,則充電終止電壓為4.35V。

        C. 充電終止電壓

           可充電電池充足電時,極闆上的活性物質已達到飽和狀态,再繼續充電,電池的電壓也不會上升,此時的電壓

           稱為充電終止電壓。锂離子電池的充電終止電壓為4.2V或者4.35V。

        D. 放電終止電壓

           放電電壓是指電池放電時允許的最低電壓。放電終止電壓和放電率有關,锂離子電池的放電終止電壓為2.7V。

        E. 電池内阻

           電池的内阻由極闆的電阻和離子流的阻抗決定。在充放電過程中,極闆的電阻是不變的,但是離子流的阻抗将

           随電解液的濃度和帶電離子的增減而變化。當锂電池的OCV電壓降低時,阻抗會增大,是以在低電充電時,要

           先進行預充電,防止大電流引起電池發熱量過大。

        F. 自放電率

           是指在一段時間内,電池在沒有使用的情況下,自動損失的電量占總容量的百分比。常溫下,锂電池自放電率

           在5%~8%。

      2. 锂電池的工作原理

           锂離子電池的正極材料通常有锂的活性化合物組成,負極則是特殊分子結構的碳。常見的正極材料主要成分

      為 LiCoO2 ,充電時,加在電池兩極的電勢迫使正極的化合物釋出锂離子,嵌入負極分子排列呈片層結構的碳

      中。放電時,锂離子則從片層結構的碳中析出,重新和正極的化合物結合。锂離子的移動産生了電流。

Android4.4電池管理

      3. 锂電池的充電方式

          锂電池的充電主要分三步完成:預充電、橫流充電、恒壓充電。

          第一步:當電壓小于3V時,要先進行預充電,預充電的電流一般為充電電流的10%,預充電結束條件為Vbat電

              壓達到3V;

          第二步:當電壓大于3V并小于4.2V時,進行恒流充電,恒流充電的電流一般為0.2C~1C;

          第三步:當Vbat電壓達到4.2V時,進行恒壓充電,此時充電電流會逐漸減小,當恒壓充電電流減小為橫流充電

                        電流的15%或20%時,充電結束,如果使用了庫侖計,充電結束的條件要加上庫倫計的電量是否達到

                        100%;

      4. 锂電池的放電方式

          锂電池的方式需要注意以下幾點:

          A. 放電電流不能過大,過大的電流導緻電池内部發熱,有可能會造成永久性的損壞;

          B. 絕不能過放電,锂電池最怕過放電,一旦OCV電壓低于2.7V,将可能導緻電池報廢;

          C. 電池放電電流越大,放電容量越小,電壓下降更快,是以電池在大負荷工作後,減小負荷會出現電壓回升現

               象,就是所謂的“回電”現象;

四、電池曲線

      電池曲線包括充電曲線和放電曲線,使用者一般更關注放電曲線的線性度。

      1. PMU計算剩餘電量的方式

          PMU計算電池剩餘電量的方式有兩種:一種是通過OCV電壓計算得到,另一種是通過電量計計算得到。當使用

         電量計計算剩餘電量時,需要和OCV一起校正剩餘容量。開始從100%放電時,PMU寄存器計算得到的剩餘電

     量以電量計的計算結果為準,當電量降低到95%時,PMU會參考OCV,然後校正電量計算出來的剩餘電量。當

         剩餘電量降低到95%以下時,剩餘電量又以電量計為準。當電量降低到7%時,PMU又會去參考OCV,校正電量

         計的剩餘電量。當電量降低到7%以下時,剩餘電量以電量計為準。

      2. 影響電池曲線精準度的因素

         影響因素主要包括電池的内阻(RDC)、電池容量、新電池的激活狀态以及測量電池曲線的方法。

         A. 電池内阻

             理論上電池内阻越小,測出來的曲線越精準。當電池在使用時,電池内阻也是随之變化的,是以電池内阻的

             變化幅度會影響電池曲線的精準度; 

         B. 電池容量

             電池在出廠時,廠家會給出電池的标稱容量,有些時候電池的标稱容量和實際容量不一緻,甚至相差很大,

             這樣一來電池放電曲線的線性度也會受到影響。是以,最好使用測量工具測到的電池實際容量。

         C. 新電池的激活狀态

             電池在剛出廠時,沒有被完全激活,此時電池表現出來的OCV和實際電量的對應關系會不穩定、不準确,因

             此新電池在測電池曲線之前,需要進行多次的完全充放電。

         D. 測量電池曲線的方法

             如果測量電池曲線的方法不正确,也會導緻測得的電池曲線線性度不好。例如,測試闆和電池之間的連接配接線

             太長、太細,這樣會使電池的RDC偏大,測出來的曲線就不準确。是以,在測量的時候,要盡可能的避免增

             加電池的RDC。

         此外,測量次數也要盡可能的多一些,因為有時候一些環境因素也會影響測量結果。

繼續閱讀