一、概述

Android4.4的电池管理功能用于管理电池的充、放电功能。整个电池管理的部分包括Linux电池驱动、Android电池服务、电池属性和参数、电池曲线优化四个部分。

Linux电池驱动用于和PMIC交互、负责监听电池产生的相关事件,例如低电报警、电量发生变化、高温报警、USB插拔等等。

Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态、剩余电量等信息。如果收到过温报警和低电报警,系统会自动触发关机流程,保护电池和机器不受到危害。

研究电池属性和参数对提高电池子系统的性能也是很重要的,电池的性能越好,上报的数据越准确,因此研发人员也需对此有深入的了解。电池曲线优化是很重要的,电池曲线优化得越好,显示的电量比越准确,放电曲线的线性度也越好,因此对放电曲线的优化是重中之重。

二、Android电池服务

1. Android电池服务的启动和运行流程

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层上报数据的流程

三、电池属性和参数

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 ,充电时,加在电池两极的电势迫使正极的化合物释出锂离子,嵌入负极分子排列呈片层结构的碳

中。放电时,锂离子则从片层结构的碳中析出,重新和正极的化合物结合。锂离子的移动产生了电流。

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。

此外,测量次数也要尽可能的多一些,因为有时候一些环境因素也会影响测量结果。

Android4.4电池管理相关推荐

  1. android4.4 电池管理

    转自 http://blog.csdn.net/wlwl0071986/article/details/38778897 一.概述 Android4.4的电池管理功能用于管理电池的充.放电功能.整个电 ...

  2. Android 电池管理

    Android4.4电池管理 一.概述 Android4.4的电池管理功能用于管理电池的充.放电功能.整个电池管理的部分包括Linux电池驱动.Android电池服务.电池属性和参数.电池曲线优化四个 ...

  3. android+5.q,MSM8909+Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要

    MSM8909+Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要 参考文件 \kernel\Documentation\power\qpnp-lin ...

  4. 用c语言程序编写电池管理系统,基于Freescale单片机的电池管理系统设计.doc

    摘? 要:为了实现电动汽车电池的实时监控,在研究了锂离子电池特点的基础上,提出了一种用于混合动力汽车的分布式电池管理系统.其中,硬件系统包括电源模块.基于Freescale 系列单片机的主控制模块和子 ...

  5. PMU电池管理配置与io-domain电源域

    PMU电池管理配置与io-domain电源域 1 电源域设置 1.1 驱动文件与 DTS 节点: 1.2 使用 IO-Domain 驱动好处: 2 如何配置电源域 情况一:无PMU 情况二:有PMU ...

  6. Ubuntu系统电池管理软件TLP(Thinkpad设置电池充电阈值)

    Ubuntu系统电池管理软件TLP(Thinkpad设置电池充电阈值) 说明 最近给手里的Thinkpad x200s安装了Unbuntu系统,为了优化电池管理,延长电池寿命,考虑安装电池管理软件(虽 ...

  7. Wattagio for Mac(电池管理)

    Wattagio for Mac是一款mac上优秀的电池管理工具,可以通知您当前电池的使用情况,并有助于降低电量,在应用程序中的灵活设置选项可以来自定义您的配置文件来满足您的需求.macdown提供W ...

  8. Android Battery(四) 电池管理

    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 说明 本篇将介绍省电管理篇,主要介绍一下Android的耗电情况和目前市面上<电池助手>类应用涉及到的一些 ...

  9. Wattagio for Mac(Mac电池管理软件)v1.12.11

    Wattagio for Mac 是一款强大的电池监控检测维护管理工具.它会告知您当前的电池健康状况,并有助于降低功耗.Wattagio 中的灵活设置为您提供了自定义配置文件以满足您的需求的选项.作为 ...

最新文章

  1. 字节流与字符流的区别(good!)
  2. mysql comment
  3. python爬虫可以干什么-Python 爬虫一 简介
  4. 强制浏览器使用兼容模式,Web.config,httpProtocol
  5. element-ui的NavMenu置于顶部(mode=horizontal)时,让菜单可以滚动(overflow-x:auto)(主要用于移动端的菜单显示)...
  6. linux看是否连上服务器
  7. .net framework 2.0 Silent install(.net framework 静默安装)
  8. Spring Boot + Shiro 集成
  9. UIKit框架各个类的简介
  10. 【牛客 - 185F】 假的数学游戏(斯特林公式,大数Java打表)
  11. summernote 不能上传图片_Typora自定义命令自动上传图片
  12. Android之notificaction使用
  13. Python基础之集合set
  14. 计算机维修师高级证书好考吗,本人在考计算机维修工证书,现有诸多典型问题,求答案...
  15. js手机号码正则验证
  16. BiTree T 和 Bitree T 和 BitNode *T 和 T-lchild
  17. 巧用京东物流分享链接批量查询多个京东快递的物流信息
  18. Qt系列文章之(十三)表格窗体
  19. 求最大公约数代码 Java_java怎么求最大公约数?
  20. MySQL数据库的主从同步和读写分离

热门文章

  1. python什么证书最有价值,python哪个证书含金量高
  2. 【NLP】文档集数据处理 gensim corpora.Dictionary 的简单使用
  3. PPT 小白洗白教程
  4. 什么是算法工程师?算法工程师有前景吗?
  5. Batch和Epoch之间的区别是什么?
  6. linux 命令连接符,Linux 中命令链接操作符的十个最佳实例
  7. XTU—OJ 1258矩阵
  8. Dearpygui制作Linux上SSD测试工具集合
  9. java管理系统中期报告_基于Java的图书馆管理系统的设计-中期报告
  10. 了解多层交换中的CEF FIB CAM TCAM