某手机在-20度环境下,只能读到电池温度为-18℃
作者:AirCity 2020.3.1
Aircity007@sina.com 本文所有权归作者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将此转换为温度。

上拉电压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,高通文档给出如下五种选择,高通回复,可以任选。

同时高通在Spec也给出了NTC的选型建议:

高通还推荐尽量选择Beta值小的NTC
主流厂家的NTC规格如下:

本项目选择了10K,对应Bate值为3380的Murata产品NCP03XH103F05RL,这个是业界常用值。电容C1为0.1uF。
针对不同的Bate值,高通要求写入不同的配置参数(C1,C2,C3),如下图(表格很长,只截取一段),这些参数会带入高通在Steinhart-Hart公式基础上优化的数学模型,Steinhart-Hart如下:

1985年Steinhart和Hart在海洋中研究温度测量时,发明的一种热敏电阻温度模型,被流行至今。
在高通自己的模型中,有了下表的几个参数,就能计算出温度值,但是高通不提供此模型,我们自己不能做理论计算。

对于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. 这是引起温度不准确的原因之二。

可见在写入正确的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℃相关推荐

  1. Android手机在4G网络环境下IP的识别

    4G网卡的识别: 各个厂商对4G网卡命名都不相同,但有共同的特点是包含字符串 rmnet 三星:rmnet_data4 华为:rmnet0 vivo:rmnet_data2 oppo:rmnet_da ...

  2. WIFI环境下支付安全问题探析

    1 引言 曾还记得,在2016年的"3·15晚会"上,央视曝光了利用"免费"WiFi进行钓鱼和诈骗的行为,告诫广大用户谨慎连接公共场所免费WiFi,防止个人信息 ...

  3. 并发环境下的缓存容器性能优化(上):不可变的哈希表

    我们在项目中经常会遇到这样的场景:一些信息读取开销较大,但只需要生成一次便可反复使用,因此我们会将其永久地缓存起来.例如在ASP.NET MVC中,系统会根据Controller的名称来缓存对应的元数 ...

  4. STM32F407单片机移植MS5611气压计(基于IIC)---同时解决温度低于20度时计算得到的大气压错误的问题

    最近一个工程项目需要使用MS5611气压计,就花时间研究了一下,发现网上很多都是基于STM32F103单片机的MS5611气压计源程序,当移植到STM32F407时发现采集的大气压力和温度值不对,同时 ...

  5. 内网环境下CentOs离线安装程序

    目录 零.情景介绍 一.下载 RPM 包 1.安装包的选择 2.rpm包的命名规则 二.传输rpm包到CentOs主机上 三.安装rpm包的工具 1.安装 2.查询 3.卸载 四.安装rpm 五.相关 ...

  6. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

  7. ubuntu 20.04 ROS 环境下 使用 velodyne

    ubuntu 20.04 ROS 环境下 使用 velodyne 系统环境配置 硬件连接 网口配置 运行驱动程序 通过rviz可视化点云 系统环境配置 安装ROS依赖 sudo apt install ...

  8. linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法

    linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别到总结 1.下载jdk-6u26-linux-i586.bin并复制到在目标文件夹(例如/u ...

  9. 零基础 Ubuntu 20.04.01 下搭建51单片机开发环境[开源编译器SDCC]

    原创首发于CSDN,转载请注明出处,谢谢! 文章目录 为何会在Linux下开发单片机 个人系统环境与所用开发板 安装开源编译器 sdcc STC MCU ISP 闪存工具 stcgal 的安装 单片机 ...

最新文章

  1. redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制
  2. 【linux】截断日志文件
  3. perf之sched
  4. 高效利用无标注数据:自监督学习简述
  5. java 中文转化为拼音
  6. linux 下wn725无线网卡驱动,TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6...
  7. Google的“那些事”
  8. kmalloc参数GFP_ATOMIC or GFP_KERNEL?
  9. java前端和后端的区别,看这一篇就够了!
  10. 快捷指令获取url内容_快捷指令,钢铁侠里的“贾维斯”
  11. 笔试12:Bootstrap知识
  12. oppo计算机锁屏快捷键,oppo一键锁屏方法【图文教程】
  13. VC获取系统临时文件夹temp
  14. CorelDRAW插件-CPG插件开发-环境搭建-VS2017-TLB文件-CDR插件
  15. 位运算符(,|,~,^,同或,>>,<<)
  16. ​每天十分钟| Get实用在线英语启蒙教育APP—叽里呱啦
  17. cocos如何在游戏中动态设置横竖屏
  18. 外国语言学c刊集刊联系方式,CSSCI(2017-2018)收录集刊目录 (共189 种).PDF
  19. 敢用这张图片做“壁纸”手机秒变砖!
  20. 手机显示无法接通服务器是怎么回事,手机无法接通是什么原因及如何解决【图文】...

热门文章

  1. 记一次升级了编译器后VSCode中产生的问题
  2. c# 定时windows服务发送邮件
  3. iOS开发,一个使用AVPlayer实现的播放在线音乐的Demo
  4. echarts:3、折线图
  5. can only accept this command while in the powered on state(iOS蓝牙 打开app后的第一次扫描要扫描两次)
  6. c语言题库及答案免费下载,C语言题库(含答案)
  7. 微软针对lapsus$事件的最新调查报告 中文版
  8. 注意力机制(attention)学习记录(二)
  9. MEM/MBA数学强化(04)方程 函数 不等式
  10. CodeForces 115C. Plumber 解题报告