手机剩余电量已经成为我们出门前必须要检查的数据。那么手机是如何知道自己电池剩余多少电量呢?
前言:
全文较长,2700多字,我将尽量使用简单易懂的语言来解释明白,难以理解的名词解释我也会放在文末。
当然本人非专业科班生,仅仅因为好奇而收集资料总结出本文,存在错误也在所难免,希望各位大佬批评指正。
miku镇楼!
嘬一个简单的目录:
• 第〇部分:电量计介绍
• 第一部分:电量计的工作(为什么选库仑计数法)
• 第二部分:使用(电量计的工作原理)
• 第三部分:误差的修正(最终的润色)
• 第四部分:电量的展示(清晰且准确)
让我们正式开始吧~
• 第〇部分:电量计介绍
在电池的内部存在着一个电量计(Gas Gauge, Fuel Gauge)。
其基本功能为监测电压,充放电电流和电池温度,并估计电池荷电状态 (SOC) 及电池的完全充电容量(FCC) 。
顾名思义,电量计就是用来监测电池,计算电量。(本文仅仅描述计算电量部分,实际上电量计不仅仅只能计算电量)
那么电量计是如何估计电池容量(荷电状态)的呢?
• 第一部分:电量计的工作(为什么选库仑计数法)
电量计的输入是电池电压、电流和温度,然后通过对电池建模来计算输出容量信息。
所以我们需要一些算法来实现高精度采样。
传统使用的 检测电压的方法 来计量电池容量是比较粗糙的:
它只需要我们简单地监控电池的电压,再通过手机内一个对应的荷电状态查表对照实际测量到的电压,就能近似取得电池的容量。这种方法虽然相对来说比较简单,但是电池的电量和电压不是简单的对应关系,所以这种测试方法并不精准,在此我也不过多赘述。此外还有CEDV 算法、DVC 算法、Impedance TrackTM阻抗跟踪算法等等也不过多介绍(能力有限)
此处我将介绍一个手机电池上主流且相对精确的计量方法:使用 库仑计量法 来计量电池容量!
(本文以科普为目的,不代表电池厂商使用计算方法只有库仑计量法,库仑计量法也并非绝对完美的电量测量方法,厂商广泛使用库仑计量法的主要原因有三:原理简单、易于实现且精度较高)
• 第二部分:使用(电量计的工作原理及应用)
首先我们来回顾一下高中物理(bushi
电池容量的计量单位,实际就是电池中可以释放为外部使用的电子的总数
物理上的标准的单位就是大家熟悉的库仑(C)
国际标准单位为电流安培(A)乘于安培秒(s)
(我们所熟知的mAh 并不是标准单位,它的转换关系如下1mAh = 0.001安培(A)*3600秒(s)= 3.6库伦(C),但这个单位可以很方便的用于计量和计算,所以 库仑计 也叫 电量计 )
那么我们只要通过对电流的实时采样并对时间和电流作积分就能获取准确的电池电量了~
于是我们可以进行以下操作:
第一步:是在电池的充电/ 放电路径上串联一个检测电阻(Rsense),其电阻值一般是20~30 毫摩尔(mohm)之间。
第二步:模数转换器(ADC)检测电阻上的“电压”(Vsense),并将其转换为电流值。
第三步:实时计数器(RTC) 把该电流值对时间进行积分计算,就能得知流过多少库伦。
下图展示了库伦计量的工作方式:
梦回高中,测量电路中通过电阻的电流大小(大雾
库仑计量法可较精确计算出充电或放电过程中实时的荷电状态,测量误差不到1%。
但小小的误差也不容小觑,它的存在使得电量不能被精确测量。
我们得想想办法来消除这些误差。
• 第三部分:误差的修正(最终的润色)
造成库伦计量法准确度的偏差有两个主要因素:第一个主要因素是 ADC量测 中偏移误差的累积;第二个主要因素是 完全充电容量 (FCC) 误差 。
先来看第一种误差: ADC量测中偏移误差的累积
ADC量测中偏移误差,以目前的技术此量测的误差还算小,但若没有消除它的好方法,则此误差会随时间增加而增加。下图显示了在实际应用中,如果时间持续中的未有任何的修正,则累积的误差是会无上限的!
为消除累积误差,我们可以进行两点校准。在正常的电池操作中有三个可以使用的特殊时间点:充电结束(EOC),放电结束(EOD)和休息(Relax)。
充电结束表示电池已充满电且荷电状态(SOS)为100%。放电结束则表示电池完全放电且荷电状态(SOC)为0%;达到休息状态时,电池既没有充电也没有放电,也就是说荷电状态近乎不变,而且保持这种状态很长一段时间。
一般来说使用前两个个特殊的时间点能完成对累计误差的修正。而要使用休息状态来作库仑计量法的误差修正的话必须搭配开路电压表
下图显示了在上述状态下的荷电状态误差是可以被修正的
第二种误差是 完全充电容量(FCC) 误差
它是由 电池初始容量的值 和 电池真正的完全充电容量 的差异产生的。
在库仑计的使用之初,厂家会赋予库仑计一个电池的初始容量,但实际的 FCC 会受到温度,负载,循环,老化等因素影响会逐渐的衰减,如果库仑计里面保存的初始容量一成不变的话,时间久了势必会导致容量显示的错误。所以, FCC 的再学习和补偿方法对库仑计量法是非常关键重要的。
于是我们可以通过配合电池温度和使用次数来进行修正。
在库仑计的里面使用一个使用次数和温度的调整算法,让它能根据电池循环次数和电池的实际温度来动态调整其实际容量。(具体的调整量因电池的种类、制造商和使用的软件等因素会有所不同,需要根据具体的设备和程序来确定)
• 第四部分:电量展示(清晰且准确)
现在好不容易修正了结果,总算能将电量信息传达给用户了吧
但这个传达出来信息却是一个让用户不好理解的数值
想想如果手机显示的是 "电量还有500mAh" 或 "电量剩下500mAh" 那用户不得抓狂💦
所以手机还会通过计算把容量mAh转换成可以很好理解的另外一种单位:电池电量百分比 SOC (State Of Charge) 单位:%
将电池内剩余电荷量记作 RM (Remaining Capacity);电池充满后总容量记作 FCC (Full Charge Capacity)
再通过计算公式:
就可以计算出电池电量百分比(荷电状态)。
例如一块FCC为5000mAh的电池,如果当前RM只有500mAh,手机就显示:
500 ÷ 5000 × 100% = 10%
如此一来,手机就将真实的电量数据明了地传达给用户啦~
总结来看,库仑计数法的优点是不受电压测量失真(比如电池内阻导致电压失真、瞬态效应导致电压失真、放电曲线平坦区细小电压变化导致电量较大误差)影响;在电池有电流时仍可准确测量。缺点是需要完全充满或完全放空来更新总容量,否则有误差累积;只能测量电池进出的电流,无法测量电池自放电电流,因而无法排除自放电的影响。就像我在上文所述一样“库仑计并非绝对完美的电量测量方法” 但这种方法不仅考虑了电流的变化,还考虑了电池的温度和自放电等其他因素,因此可以得出相对准确的结果。同时,配合电池电压和温度的测量,可以进一步减小误差,使得测量结果更加准确。
one more thing!
值得一提的是许多电量计都顺便集成了一个电池标识码记录区域,它的作用是给手机电池标一个序列号,这个序列号是保存在芯片里面的,利用与手机的通讯口传递给手机。手机验证这个序列号,如果是正确的就判断为正品电池;如果序列号验证错误手机就提示是非正品电池。其中iPhone中正是采用这一方法。
所以不要小看电量计,小小的一颗芯片,不但要进行高精度的电量计量,还要进行复杂的运算调整,而且还要与手机进行通讯联系。
end.
部分名词解释:
*RTC(实时时钟):RTC是一种计算机硬件设备,它包含一个精确的计数器。计数器通过晶体振荡器提供的稳定时钟信号。计数器不仅可以通过电源备份在断电情况下持续追踪时间的流逝,还能通过控制逻辑和接口与主机设备进行交互,并提供读取和设置时间的功能。
*ADC(模数转换器):也称为 模拟数字转换器 (A/D转换器)或 ADC,是一个将模拟信号转换为数字信号的电子元件。在音频和视频处理、数据采集、控制系统等领域,模数转换器都发挥着关键作用。
ʚɞ ❆ ✿ ❁ ⍢⃝
参考文献:《TI 电量计应用指导》【 https://www.ti.com.cn/cn/lit/an/zhcaaf7/zhcaaf7.pdf?ts=1628942879260 】(朱明武(Mingmo Zhu), 张楚涛(Hugo Zhang), 姚赤东(Steven Yao) 著)