某手机在-20度环境下,只能读到电池温度为-18℃

某手机在-20度环境下,只能读到电池温度为-18℃
作者:AirCity 2020.3.1
[email protected] 本文所有权归作者Aircity所有

问题回顾

MSM8953平台手机在低温-20℃,从log读出电池温度为-14~-18℃不等,超出Spec给出的±3℃偏差。
电池有低温策略要求,在-20℃与-15℃环境下,对手机使用采用不同的限制策略:-15℃时,电量低于10%,禁止开闪光灯;-20℃时,电量小于50%,禁止开闪光灯(参考友商做法)。
要实现以上目的,手机必须能够分辨-15℃和-20℃。但实测发现,手机在-20℃检测到的电池温度偏差很大,已经大于5℃。
温度不准确带来的影响:锂离子电池充电需要符合JEITA规范,其在不同温度下,对充电电流和电压做不同的限制,以降低电池老化或者电池爆炸的风险。例如电池温度超过50℃,应立即停冲,否则电池有发生散热失控,进而爆炸的可能。电池温度检测不准确,手机无法准确按照JEITA规范进行有效限制。

问题分析

电池温度检测原理很简单,如下所示,R1为是上拉电阻,Rth是NTC电阻。NTC电阻随温度降低而增大,根据分压原理,BATT_THERM引脚电压随之增加,ADC获取电压,Fuel Gauge模块的ADC将此转换为温度。
某手机在-20度环境下,只能读到电池温度为-18℃_第1张图片
上拉电压V_RBIAS为2.7V,来自于内部LDO,可以从VAA_CAP上测量到。此电压在PMI8952内部分出一路作为V_RBIAS,并串了一个开关,当需要读取温度时,开关打开,频率是1.47s(与电量计频率一致)。
上拉电阻R1值要求与NTC电阻在25℃时相等。所以整个温度检测电路,对硬件的要求只有两点:
1) NTC电阻选型
2) 滤波电容C1选型
软件要根据如上选型,配置Beta参数和Fuel Gauge的ADC采样延迟。据了解,很多手机型号都没做这样的设置。
针对NTC电阻和滤波电容C1,高通文档给出如下五种选择,高通回复,可以任选。
某手机在-20度环境下,只能读到电池温度为-18℃_第2张图片
同时高通在Spec也给出了NTC的选型建议:
某手机在-20度环境下,只能读到电池温度为-18℃_第3张图片

高通还推荐尽量选择Beta值小的NTC
主流厂家的NTC规格如下:
某手机在-20度环境下,只能读到电池温度为-18℃_第4张图片

本项目选择了10K,对应Bate值为3380的Murata产品NCP03XH103F05RL,这个是业界常用值。电容C1为0.1uF。
针对不同的Bate值,高通要求写入不同的配置参数(C1,C2,C3),如下图(表格很长,只截取一段),这些参数会带入高通在Steinhart-Hart公式基础上优化的数学模型,Steinhart-Hart如下:
1/T=A+B×Ln(R)+C×〖[Ln(R)]〗^3
1985年Steinhart和Hart在海洋中研究温度测量时,发明的一种热敏电阻温度模型,被流行至今。
在高通自己的模型中,有了下表的几个参数,就能计算出温度值,但是高通不提供此模型,我们自己不能做理论计算。
某手机在-20度环境下,只能读到电池温度为-18℃_第5张图片
对于Bate=3380. C1=86DA,C2=50F0,C3=3C08. 然而软件并没有将此值写入代码,使用的是默认值C1=0x86DB,C2=0x50F1,C3=0x3c11。这是引起温度检测不准确的原因之一。
本项目的电池温度检测电路,滤波电容C1=0.1uF,小于4.7uF最大值,符合要求。此容值越大,要求Fuel Gauge ADC采样延迟越大,最大不超过160ms,还有如下几种设置:
在这里插入图片描述
要求有延迟的原因是:采样周期是1.46s一次,先打开V_RBIAS,然后采样,结束后,关闭V_RBIAS。在打开V_RBIAS瞬间,电容的存在导致BATT_THERM上的电压比实际的分压要低,过一段时间才会上升到正常值。如果ADC无延迟,不等电压稳定,立即采样,必然不准确,如下图。软件没有设置这个延迟,默认是0. 这是引起温度不准确的原因之二。
某手机在-20度环境下,只能读到电池温度为-18℃_第6张图片
可见在写入正确的Bate参数和延迟后,温度检测偏差减小,恢复到spec所述的±3℃以内。
从另一个角度理解这个Beta值的选择,Beta值越大,温度在-20℃时的阻值越大,NTC上的分压越大,当Beta=3380时,-20℃时,阻值为70.3K,上拉电阻10K,上拉电压为2.8V,分压后Vbat_therm=2.36V;ADC的输入范围是0-2.7x91.2%=2.462V。NTC上的分压在ADC输入范围内,没有问题,但是已经很接近。
虽然温度检测精度±3℃没问题了,但是发现温度还是检测不到-20℃。高通曾经发过一个issue,说明了这个问。上面已经说明Beta值与最低检测温度有对应关系,怀疑高通的ADC在低温下性能不好,又不好意思承认,只给了使用注意事项,但没告诉为什么。
从下面高通提供的曲线可以看出beta为3380的NTC,最低能检测约-18℃。
某手机在-20度环境下,只能读到电池温度为-18℃_第7张图片

你可能感兴趣的:(某手机在-20度环境下,只能读到电池温度为-18℃)