一、前言
使用便携式电子产品,希望能够随时知道电池的所剩电量,所能持续的工作时间,并且据此调节相关应用,这无疑将是一个非常方便的事情,尤其适合使用智能手机的商务人士。电池电量检测技术在笔记本电脑中已经屡见不鲜,多数笔记本电脑都有电源管理的选项,提供不同的电源工作模式以及电池报警功能。但是在更加小型化的便携产品市场,这一技术却还不多见。
便携式产品提供的功能越来越纷繁,用户日益需要准确地监测电池电量,以便灵活管理可用电源,明确显示剩余工作时间,尽可能延长系统运行的时间。现在大多数手机采用的电量测量方法还比较简单,缺乏精确度。目前主流的检测方法是简单测量电池电压,估算相对应的电池剩余电量。总电量除以4或5,也就是通常能在手机屏幕上看见的4格或者5格的电量Bar,所以每格的精确度即是25%或者20%,这样的精度显然无法满足高精度要求的应用。
这种电压估测电量的方法通常如下:一块电池在放电的时候,电池的电压会随着电池电量的流失逐渐地下降。这样就可以得到一个比较简单而有效的对应关系,就是电压对应容量。通过电池正常使用(比如100mA放电)的放电曲线,对时间进行4等分,以充电限制电压为4.2V的锂电池为例,可以列出这样一个对应关系,4.20V—100%,3.85V—75%,3.75V—50%,3.60V—25%,3.40V—5%(因为手机不可能完全用光电池的电量,一般低于3.40V 时就可能自动关机了)。很显然,这种精度最高只有25%。另外,电池电压会随着RFPA的功率发射发生突变,通常会变小0.2V-0.3V。如果一味的使用电压模拟电量方法,就会误差更大。为了解决电池电压突然变小的测量问题,当前工程师们的普遍方法是利用软件算法进行均值滤波,对一段时间内的电池电压进行均值化,如果该时间段的平均电池电压确实下降了,则预估电量确实变少了,否则即认为电量并未变化。
电池电压模拟剩余电量的方法确实存在着缺陷,而通过库仑计实时监测电池消耗电量而计算剩余电量的方法则非常准确。Fairchild的FAN4010是这种应用的典型器件。它是一颗电流检测传感器,专门用于检测便携式设备电池的充电/耗电电流,能将通过精密检测电阻的电流信号转换为ADC可以检测到的电压信号,从而计算一段时间内消耗的真实电量。
二、硬件电路的典型设计
为了满足高精度的电池电量监测需求,FAN4010外加合适的应用电路并加上特定的软件控制算法,就能够很好的达到要求。如图1是FAN4010的典型应用框图。外围只需要两个电阻Rsense、Rout即构成高精度的放大电路。如图2是内部结构原理示意图,所以存在Vsense = I_load * Rsense, Vout = 0.01 * Vsense * Rout,由此两关系式可以等到I_load=100*Vout/(Rout*Rsense),所以只要用ADC监测Vout上的电压,再除以已知的电阻值Rout和Rsense,就可以得到准确的负载消耗电流,而电流对时间进行积分,,即可以达到所消耗的电量准确值。用总电量减去准确的电量消耗值,即可得到准确的剩余电量。充电电路,则同理。
图1 FAN4010的应用框图
图2 FAN4010的内部结构原理示意图
FAN4010的典型应用图以及Rsense、Rout的选值要求如下。其中图3为电池的充电电路,图4为电池的放电电路。
图3 充电部分的参考原理图
图4 放电部分的参考原理图
Rsense(R_sense1/R_sense2) Rout(R_out1/R_out2) 另外,为了保证FAN4010的最大线性化,Rout的选择应满足关系式: Table.1 Iout_FS的选值表 Layout设计图例如图5,走线的基本原则是:FAN4010尽量靠近充电/放电路径。 图5 layout实例 三、典型的软件设计 图6 软件流程图
这两个电阻串联在充电和放电的路径上。因此,我们需要一个低阻值的电流采样电阻。矛盾的是,如果Rsense太低,精度都将丢失。若Rsense选择的过大,则此电阻上的压降和功耗都很大。因此,Rsense的选择应该是理想的高精确度和所能允许电压损失的综合平衡。虽然FAN4010在Vsense值较低时采样电阻上的功耗最小,但是一个更大的Rsense值能提供更多的准确性。然而较大的Rsense会产生一个比较大的电压降,减少了可提供给负载的有效电压,这在低电压尤其电池供电的应用中会很有麻烦。正因为如此,设计中要很好地了解预期的最大允许负载电流和负载供电电压。为了获得最大化的精度,建议Rsense的选择应符合以下条件:10mV
接到GND上的Rout这个电阻,是用来产生一个可供ADC检测到的电压信号。它的选择主要取决于两个参数:I_out(即I_load*Rsense/100)以及ADC的电压采样范围。最大的I_load产生的最大Vout不能超过ADC的最大采样电压。为了保证精度最大化,同时又希望最大的Vout能尽量接近ADC的最大采样量程。
其中Vin为输入电压,Iout_fs的值则是表1中的对应值,在不同的最大Vsense时,其值不一样。例如,若最大的Vsense为500mV时,则Iout_fs=5mA。
电量计算的算法如图6,相关说明如下:
假设前提:现有两块电池,A (总容量1000mAh左右,不确定),B(总容量1500mAh左右,不确定),此2电池均可能使用在手机P上。
插入电池(开机)→→是否电池校准(默认否)→→否→→调用电池容量曲线a(默认)(若使用电池B,则修改为使用电池容量曲线b)→→通过电池端电池Vcc以及监测耗电量联合评估剩余电量百分比。
→→是→→若要校准,请保证该电池已经充满电→→选择校准曲线,a 还是 b? →→记录最高端电池Vcc-h,默认此时电池电量百分比100%→→按每一可计算时间段,分别监测耗电量,以及电池端电压→→一直使用到电池没电,自动关机,记录此状态电压Vcc-l以及默认此时电池百分比0%,计算总的电量损耗Q,此Q即为以后容量曲线的total Q。