【Android驱动10】电池battery充放电软件库伦算法和thermal机制

一,Battery框架结构图
在这里插入图片描述
从上图分析,驱动中由2部分实现,一个是电池电量模块,另外一个是电池充电模块。最后有power supply统一管理。

1.1 Battery代码框架:
在这里插入图片描述从这个图中知道,充电算法有2部分,一个是线性充电,由pmic实现,另外一个是快充充电,由外部IC实现。

1.2 oam_run()软件库伦流程图:
在这里插入图片描述

从上图可知,
1,ADC读取电池电压Vbat。
2,通过Vbat查找zcv表,获取电池内置R-bat。
3,做电池内置补偿,几Vbat + I*R_bat。
4,根据补偿后的Vbat查找zcv表获取百分比%。
5,最后计算电量百分比s%=100-D%。

在这里插入图片描述

以下是电池电池曲线相关:

1.3 MTK电池电量算法

1、SOC_BY_AUXADC:通过模数转换硬件获得电池电压,由电压来换算电量,误差大;
2、SOC_BY_SW_FG:通过库伦积分算法获得电量,其中电流由软件计算获得(MTK平台常用的电池电量算法);
3、SOC_BY_HW_FG:通过库仑积分算法获得电量,其中电流由硬件的模数转换获得;
4、SOC_BY_SW_FG与SOC_BY_HW_FG的区别在于放电电量的获取方式,一个由软件计算获得,一个由硬件模数转换获得。

二、库仑积分算法:

开机时测量电池的开路电压,由开路电压换算出电池电量,放电过程中对放电电流积分,开机时电池电量减去放电电量就是剩余电池电量;

三、SOC_BY_SW_FG相关定义

1、OCV:电池开路电压,即电池断开负载时测得的电压;
2、VBAT:电池闭路电压,即电池有负载时测得的电压;
3、r:电池内阻;
4、I:电池放电电流 (I = (OCV - VBAT)/r);
5、DOD:放电深度,100-DOD即为电池容量;
6、温度:电池特性受温度影响,一般用一个热敏电阻来测量温度;
7、ZCV:Zero current Voltage,一般指zcv表格,也是开路电压的意思;
8、VC:闭路电压;
9、CAR:库仑计;
10、Cmax/Qmax:电池容量。

二,thermal高温充电机制
MTK平台的thermal机制是一种高温保护主板机制。主要用于手机在充电过程中,温度太高对手机主板造成损坏。

thermal主要由thermal配置文件和thermal的驱动代码进行控制。

2.1 通过查询手机里的thermal机制,可以知道:

/proc/driver/thermal # cat tzbts                                                                                                                                                   
[mtkts_bts_read] trip_0_temp=100000,trip_1_temp=90000,trip_2_temp=61000,trip_3_temp=50000,trip_4_temp=46000  
trip_5_temp=42000,trip_6_temp=65000,trip_7_temp=60000,trip_8_temp=55000,trip_9_temp=50000,  
g_THERMAL_TRIP_0=0,g_THERMAL_TRIP_1=0,g_THERMAL_TRIP_2=0,g_THERMAL_TRIP_3=0,  
g_THERMAL_TRIP_4=0,g_THERMAL_TRIP_5=0,g_THERMAL_TRIP_6=0<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤舟簔笠翁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值