Android MTK 放电曲线以及库轮值矫正

Android MTK 放电曲线以及库轮值矫正

提示: 文章内容包括放电曲线和库轮值矫正两部分


前言

随着智能机的发展,库伦累计法已经成为电量计算的主流。放电曲线和库轮值矫正是智能机的电源部分驱动调整的重要工作。
调整放点曲线牵涉到的细节还是很多的,设置后还要耐心得反复验证耗费时间又长,多弄几次下来真的是多么痛的领悟。


提示:以下是本篇文章正文内容,可供参考

一、放电曲线

系统获取电压值容量比值来获取首次的电量值百分比,放电曲线是主要的参考。

1 、要放电曲线

1、电池供应商提供,50度、25度、10度、0度、-10度放电曲线(ZCV);
2、放电电流和平时使用平均电流接近;
3、至少要有容量变化(从0到最大值)、电流变化(固定)、电压变化(从大到小)、以及内阻变化。四项;
4、精确度精确到小数点后一位。

2、提取数据

1、从电池曲线EXCEL表中提取修改提取我们的数据,填写到代码中,熟练的可能需要收悉EXCEL的一些函数方法,例:IF(MOD(G2,61)=0,H2,“0”),抽取部分行的内容。注意乘以10,取消容量和电压值的小数点。
2、使用电压、容量以及内阻的100组值添加到代码中。注意的是代码中的空格。
3、修改文件路径为:
…\kernel-4.9\arch\arm64\boot\dts\mediatek\bat_setting\mtxxxx_battery_table_ext.dtsi

5段温度表格

二、库轮值矫正

1、原理

软件库伦积分法- Voltage Mode– 即由电池压差推出电流作累加
在这里插入图片描述

 优点:可以修正D0引入的误差
 缺点:需要一定时间才能修正D0误差, 且推出的I没有HW

2、硬件要求

1、必需有电池温度检测功能电路;
2、必需使用10mohm (即0.01欧)电流检测电阻。

3、测试修改方法

第一步: 先将#define CAR_TUNE_VALUE 改为100, 然后build 一版测试的软件, 再接着进
行后续步骤。(此步骤必须进行,否则后面的修正值就不正确)

第二步:在VBAT正极 与System GND之间给3.8V的电压,给手机供电开机用。也就是说开机的电流不要经过检测0.01欧电阻。
----注意:给Rfg 加电流的通道,请不要在Rfg两端焊线,加热焊线会影响Rfg电阻,可以直接连接到任意系统地(如:屏蔽盖或测试点上)

第三步:测试用的1A电流加载在电池地(电池连接器的负极)和系统地(System GND)之间。 可以测试链路上在串个电流表,或者直接读取测试精度在1mA内的电源上的电流,注意极性会影响电流的正负值。建议使用程控电源电压设置3.8V,限制输出电流为1000mA。测试前可以先关闭输出。

第四步:按power key 让手机开机,进入操作界面之后,选择拨号界面,输入工程模式密码*#*#3646633#*#* 进入工程模式菜单。然后选择Power->Charge Battery ,读取第五行, FG_Battery_CurrentConsumption的电流值Ifg,没有打开电流应该为0mA。打开1A电流后等待。两次变化以上。

第五步:然后使用1000mA除以Ifg ,修正CAR_TUNE_VALUE=1000/Ifg。例如: Ifg=1064mA,那就
填写为 94 ,对小数的第三位进行四舍五入操作。(该修正值大于或小于100 都是合理的)。

在这里插入图片描述

第五步:修改参数值:
文件路径:…\kernel-4.9\arch\arm64\boot\dts\mediatek\bat_setting\mtxxxx_battery_prop_ext.dtsi

下面直接给代码上中文注释



bat_gm30: battery{
	compatible = "mediatek,bat_gm30";
	/*	Charging termination current.*/
	DIFFERENCE_FULLOCV_ITH = <(200)>;//充满截止电流阈值
	/*	If ui_soc shows 1% more than X minites, system will shutdown.*/
	SHUTDOWN_1_TIME = <(30)>;//0%电量关机等待时间
/*	The ui_soc will keep 100% until SOC drop X percents after unplugged.*/
	KEEP_100_PERCENT = <(1)>;//充电器才出后下降多少降低百分比
	R_FG_VALUE = <(10)>;	/*	R_sense resistance.*/
	/*	Configures whether using embedded battery or not.*/
	EMBEDDED_SEL = <(1)>;//配置是否使用嵌入式电池
	PMIC_SHUTDOWN_CURRENT = <(20)>;	/*	System shutdown current.*///系统关机电流
	FG_METER_RESISTANCE = <(75)>;	/*	The resistance of PCB*///PCB电路电阻补偿50=0.1mΩ
	/*	Tune value for current measurement.*/
	CAR_TUNE_VALUE = <(95)>;//1050mA//电流测量校正值
	PMIC_MIN_VOL = <(33500)>;//系统最小电压值
	/*	vboot voltage for gauge 0%.*/
	POWERON_SYSTEM_IBOOT = <(500)>;// vboot 启动电压。
	/*	power on system iboot*/
	SHUTDOWN_GAUGE0_VOLTAGE = <(34000)>;//系统关机电压
	/*	shutdown gauge 0% voltage*/
	TEMPERATURE_T0 = <(50)>;	/*	Battery temperature T0*///50度对应T0
	TEMPERATURE_T1 = <(25)>;	/*	Battery temperature T1*///25度对应T1
	TEMPERATURE_T2 = <(10)>;	/*	Battery temperature T2*///10度对应T2
	TEMPERATURE_T3 = <(0)>;	/*	Battery temperature T3*///0度对应T3
	TEMPERATURE_T4 = <(-10)>;	/*	Battery temperature T4*///-10度对应T4
	g_FG_PSEUDO100_T0 = <(100)>;	/*	Pseudo 100% percentage at T0.*///T0伪百分比
	g_FG_PSEUDO100_T1 = <(100)>;	/*	Pseudo 100% percentage at T1.*///T1伪百分比 
	g_FG_PSEUDO100_T2 = <(100)>;	/*	Pseudo 100% percentage at T2.*///T2伪百分比 
	g_FG_PSEUDO100_T3 = <(100)>;	/*	Pseudo 100% percentage at T3.*///T3伪百分比 
	g_FG_PSEUDO100_T4 = <(100)>;	/*	Pseudo 100% percentage at T4.*///T4伪百分比 
	/*	System shut down voltage.*/
	Q_MAX_SYS_VOLTAGE_BAT0 = <(3350)>;//系统关机电压
	/*	System shut down voltage.*/
	Q_MAX_SYS_VOLTAGE_BAT1 = <(3350)>;//系统关机电压
	/*	System shut down voltage.*/
	Q_MAX_SYS_VOLTAGE_BAT2 = <(3350)>;//系统关机电压
	/*	System shut down voltage.*/
	Q_MAX_SYS_VOLTAGE_BAT3 = <(3350)>;//系统关机电压
#include "mt6765_battery_table_ext.dtsi"
};

4、验证

重新编译后重新测试,看误差是否在3%以内。特别注意检查快要到0%和100%时候的电压是否理理论值比较贴近。

三、小结

充放电曲线的首要因数是电压和容量的曲线表,系统检测不同的温度来选择曲线。而库轮值可以通过电流来修正放电曲线带来的差异。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

火星papa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值