Android Battery 开发(二)

2024-01-31 01:30
文章标签 android 开发 battery

本文主要是介绍Android Battery 开发(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、概述

       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. 电池容量

           电池的容量由电池内活性物质的数量决定,通常用mAhAh示。例如1000mAh就是能以1A的电流放电1h,换

      算为所含电荷量大约为3600C

        B. 标称电压

           电池正负极之间的电势差称为标称电压。标称电压由极板材料的电极电位和内部电解液的浓度决定。锂电池放

           电图是呈抛物线的,4.3V降到3.7V3.7V降到3.0V都是变化很快的。唯有3.7V左右的放电时间最长,几乎占到

           了3/4的时间,因此锂电池的标称电压是指维持放电时间最长的那段电压。锂电池的标称电压有3.7V3.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 Battery 开发(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662181

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife