一、概述

Android4.4的电池管理功能用于管理电池的充、放电功能。

整个电池管理的部分包含Linux电池驱动、Android电池服务、电池属性和參数、电池曲线优化四个部分。

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

Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态、剩余电量等信息。

假设收到过温报警和低电报警,系统会自己主动触发关机流程,保护电池和机器不受到危害。

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

二、Android电池服务

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2x3bDAwNzE5ODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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. ML5238电池管理芯片笔记

          根据公司需要开发了以ML5238电池管理芯片+STM8S为核心的电池管理系统.由于前期对BMS系统还是了解甚少,开发起来也遇到了不少困难.再开发管理系统的同时,我也开发了管理系统的上位机, ...

  2. [IMX6DL][Android4.4] 电池低电量告警提示【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/51789964 之前版本的电池电量低是通过发送 intent ACTION_BATTERY_L ...

  3. 高通电池管理基于qpnp-vm-bms电压模式

    CV:Constant Voltage恒压 SMMB charger:Switch-ModeBattery Charger and Boost peripheral开关模式电池充电器和升压外围设备 O ...

  4. 8.4 Android灯光系统_源码分析_电池灯

    电池灯的Java代码在batteryservice.java中 电池的状态电量等信息由驱动获得,但驱动不会主动做这些事情,因此肯定有个App调用驱动程序读取电池信息,称这个App为A应用. 还有个Ap ...

  5. max713镍氢电池充电管理IC

    PDF:https://datasheets.maximintegrated.com/en/ds/MAX713SWEVKIT.pdf http://www.ixueshu.com/document/b ...

  6. Android定制争夺战 三大主流ROM横评

    随着MIUI在广大“机油”们心目中位置的逐渐攀升,越来越多的厂商也相继推出了属于自己的定制Android ROM,想以此来抢占这一新兴市场,像点心OS.腾讯的Tita以及近期比较热门的百度云ROM等等 ...

  7. android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……

    摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...

  8. iTOP-4418/6818开发板支持锂电池供电方案

    iTOP-4418/6818开发板支持的是官方推荐的AXP228电池管理,动态调频,更稳定可靠,支持充放电电路与电量计(库化计), 广泛应用于各种电子产品中. 4418开发板中锂电池充放电接口,适用于 ...

  9. 迅为八核cortex a53开发板android/linux/Ubuntu系统

    详情请点击了解:http://www.topeetobard.com 店铺:https://arm-board.taobao.com 核心板: 提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧. ...

随机推荐

  1. 截图神器-snipaste

    基础操作 Snipaste 是一个简单但强大的贴图工具,同时也可以执行截屏.标注等功能. 截屏 开始截图 快捷键(默认为 F1) 鼠标左键 单击托盘图标 何谓一次 成功的截图 保存到剪贴板 (  /  ...

  2. @inerface的11条规范写法

    总结一些interface声明时的规范,相关宏的介绍,定义方法时有用的修饰符,编写注释的规范,最终写出一个合格的头文件. 1.读写权限 1.1实例变量的@public,@protected,@priv ...

  3. 【bzoj4710】[Jsoi2011]分特产 容斥原理+组合数学

    题目描述 JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任何一个同学因 ...

  4. 【Luogu】P3750分手是祝愿(期望DP)

    题目链接 这题好喵啊…… 设f[i]是最少用i次才能全关上转移到最少用i-1次才能全关上灯的期望值,那么n个灯里有i个是正确的,剩下的都是不正确的 因此期望是$f[i]=frac{n}{i}+frac ...

  5. HDU 3333 Turing Tree(离线树状数组)

    Turing Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. 【bzoj4699】树上的最短路(树剖+线段树优化建图)

    题意 给你一棵 $n$ 个点 $n-1$ 条边的树,每条边有一个通过时间.此外有 $m$ 个传送条件 $(x_1,y_1,x_2,y_2,c)$,表示从 $x_1$ 到 $x_2$ 的简单路径上的点可 ...

  7. 深入比较选择 Angular 还是 React

    我应该选择 Angular 还是 React?现在JS框架两强的格局让许多开发者选择起来很纠结.无论你是一个正在思考如何入门的新手,还是一个为下个项目挑选框架的设计者,或是一个架构师为公司做长远的规划 ...

  8. JAVA神操作--使用Arthas线上热更新实战

    热更不规范,同事两行泪 背景 C君是一个javaer,最近在开发用户登出接口的时候,不小心把接口参数拼错了 正确的是: /api/v1/user/logout?referrer=www.javaer. ...

  9. 延迟加载技术 jquery lazyload

    原文发布时间为:2011-01-17 -- 来源于本人的百度文章 [由搬家工具导入]  文章: http://www.appelsiini.net/projects/lazyload 下载地址:htt ...

  10. VIM的修炼等级

    用vim 快两年了 看过教程也不少,总的来说还是得自己多练习,当自己觉得有需要的时候,再添加功能.这里分享个看过的最好的教程,出自贴吧的某个朋友,写的很好 零 学会盲打 壹 配置文件先从最简开始,在 ...