Android 电池管理
Android4.4电池管理
一、概述
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。
此外,测量次数也要尽可能的多一些,因为有时候一些环境因素也会影响测量结果。
Android 电池管理相关推荐
- android电池管理软件,Android实现电池管理系统
一.Android 电池服务 Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态.剩余电量等信息.如果收到过温报警和低电报警,系统会 ...
- android电池管理软件,精准电量「Accubattery」Pro for Android v1.4.4 直装解锁专业版 —— 非常好用的电池健康检测维护管理软件...
精准电量「Accubattery」Pro 是一款非常好用的电池健康检测维护管理软件,其基于一系列科学的研究和测试「信息数据量都很大,这里就不详解了"我不会告诉你是我解不了!"」,能 ...
- Android 电池管理(BatteryService) 详解
SystemServer在启动BatteryService时,一次会调用它的构造函数,onStart,onBootPhase方法;解析来我们分析一下这些方法: 1.Constructor方法: pub ...
- android 电量管理
android 2.3 电量管理(http://blog.csdn.net/z642010820/article/details/7341469) android 2.3 电源管理 1. 介绍 ...
- Android系统电池管理(PowerManagerService)框架分析及其在实体设备和虚拟设备上的差异(一)
0 前言 移动设备的电池一直是影响移动设备用户体验的关键问题之一,电池容量.充电速度.以及系统待机时长都在用户考虑范围内. 在众多嵌入式设备系统中,Android系统的设计的主要目的就是为了通过触摸屏 ...
- Android Battery(四) 电池管理
欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 说明 本篇将介绍省电管理篇,主要介绍一下Android的耗电情况和目前市面上<电池助手>类应用涉及到的一些 ...
- android 电量管理机制,电池电量分析---android篇
原标题:电池电量分析---android篇 本文将从底层到上层介绍Android系统中电量显示这一块,电池检测采用的是ADC采样,不是使用市场上封装好的电量计芯片: 1.驱动层 Linux内核中提供p ...
- 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 ...
- Android内存管理机制
好文摘录 原作: https://www.cnblogs.com/nathan909/p/5372981.html 1.基于Linux内存管理 Android系统是基于Linux 2.6内核开发的开源 ...
最新文章
- 助力中小企业级连云端,促进工业互联网平台蓬勃发展,全套解决方案。附:技术产品
- Active Directory PowerShell模块收集AD信息
- 使用.NET程序集作为Business Data Connectivity数据源(二)
- 信息学奥赛一本通(1019:浮点数向零舍入)
- #Tomcat# 本地正常但是部署到服务器后,mysql插入中文乱码问题解决!
- python根据ip获取地理位置_使用python根据ip获取目标地理位置信息
- 利用Docker学习Redis笔记(一)
- 单片机r6/r7c语言怎么用,第5章MCU混合编程与C语言和汇编语言
- Linux - grep命令详解
- 海量数据排序问题一一 100G 数据,只有 100M 内存,怎么排序?
- 计算机大赛教学辅助课件,职业教育:机械类一等奖作品《识读组合体视图教学辅助》PPT课件.ppt...
- python计算无穷级数求和_[探求无穷级数求和的几种常用方法]无穷级数求和常用公式...
- Spark写入Hudi报分区列乱码问题java.net.URISyntaxException: Illegal character in path at index 46:
- php显示2038年,PHP转换超过2038年日期出错如何解决
- 利用css特性布局页面制作京东特价框
- 高精度定位系统精细测距定位
- iOS 12 新功能亮相,必须升!
- 摩尔斯密码 php代码,摩尔斯密码 - 一个工具箱 - 好用的在线工具都在这里!
- 聊一聊,如何做好垂直域稳定性
- ROS 控制实际工业机器人(Staubli tx90)(二)