图5 电池电压和电量的关系图
在驱动程序中创建了一个为16个字长度的环形缓冲区,采样点数增加为16个,这样可以增加对采样结果的可靠性。电池电压采样值even_samp为16个采样值的和去掉一个最大值和一个最小值后再取平均值。
在我们的移动终端设备中,电池的最大电压为559(4.10V),最小电压为455(3.30V),以图5中的两条虚线作为区间的分界线,可分为4.10V~3.80V,3.80V~3.60V,3.60V~3.30V这三个区间,对电池电压值进行分区间的处理,三个区间上的曲线斜率近似为:
4.1V~3.80V:Kl=(100-70)/(4.10-3.80)
3.80V~3.60V:K2=(70-20)/(3.80—3.60)
3.60V~3.30V:K3=20/(3.60-3.30)
4.10V~3.30V:K=100/(4.10-3.30)
在进行电池电量百分比的转换时,当我们获得在559~455区间内的采样值后,首先获得原来的百分比值voltage_percent= (even_samp-455) * l00/(559-455)。然后针对不同的区间进行相应的调整,得到的电量百分比分别为:
4.10V~3.80V:voltage_ercent+=(4.10-even_samp * 7.5/1024)×(K-K1)
3.80V~3.60V:voltage_percent+=(3.80-even_samp * 7.5/1024)×(K-K2)
3.60V~3.30V:voltage_percent-=(even_samp-3.30V * 7.5/1024)×(K-K3)
通过对以上三个区间的分别处理,这样就获得了相对正确的电池电量[4]。
7. 小结
本文介绍了在WindowsCE系统中,基于电池充电管理芯片bq24032A和电池监控芯片bq26220芯片的电池驱动的实现。主要介绍了电池电压的获取和电池电量的计算方法。对电池管理提供了很好的借鉴。