基于ADC电压采集的锂电池电量显示方法详解

应用场景

设备采用锂电池供电,可充电,MCU的ADC采集计算锂电池电压,电池电量根据锂电池放电特性,电池电量三段段码显示(分段式显示)。

电量显示策略

1.有充电器充电器插入的情况下

ADC采集电池电压,判断是否充满电(例如3.7V锂电池充满电的情况下大约是4.2V,满电电压根据实际测试选择,我们选择的是4.1V)。
注意:电池电压满电电压不宜选择过高,否则会出现一直充电的情况,也不宜选择过低,不然就会出现电池未充满但是显示充满的情况。
电池电压未到达满电电压:电池显示的三段循环递进显示(充电显示效果);
电池电压到达满电电压:电池显示的三段全部显示(充满电)。

2.无充电器充电器插入的情况下

ADC实时采集电池电压,判断电池电压值对应的显示段码,正常来讲三段式显示采用平均分配的方法,根据锂电池放电特性(电池容量与电池电压的关系,具体还要看电池厂家给的资料,这里的数据只作为参考):

电池电量显示设计为(不是很准确,举个栗子):
电池电压>3.9V,显示三格电量(满电);
3.7V<电池电压<=3.9V,显示两格;
3.3V<电池电压<=3.7V,显示一格;
电池电压<=3.3V,显示空,提示低电量,一段时间后自动断电关机。

关键问题处理

会出现的问题:显示跳动

按照上述的显示方式,由于ADC的采集误差,当电池电压处于显示临界值(例如3.9V左右时)的时候,会出现电量显示来回跳动的问题,在每个临界点都会出现显示跳动的问题。

解决方法

1.延长电量更新时间
我们之前是1秒钟更新一次,可以适当的加大更新时间(例如1min,这样的话随着电量的消耗,在一分钟的时间内,电池电压的下降的),这种方法的弊端就是你得确定你设置的更新时间间隔电池电压是必然下降的;
2.使用电量计
使用电量计能够精确的计算出消耗的电量,但是我们项目对于电量显示的要求并不高,而且会增加成本。
3.未充电情况下电池电压只允许下降
这种处理方法就是在未充电的情况下,每次采集的电压与上一次的采集电压相比较,如果本次电压大于或等于上次采集电压,那么本次采集的电压是无效的,显示电量采用的是上次电压值,如果本次电压小于上次采集电压,显示电量采用的是本次电压值。
以下是伪代码:

void displayBAT(void)
{
//V0为本次采集的电压值,V1为上次采集的电压值,Vdis为显示电量的电压值
	 if(V0<V1)
	 {
	  Vdis = V0;
	  display(Vdis);//更新电池电量显示
	  V1=V0;
	}
}

这种方式能够有效的解决临界值电量显示段码来回跳动的问题。

物联沃分享整理
物联沃-IOTWORD物联网 » 基于ADC电压采集的锂电池电量显示方法详解

发表评论