探讨两个电池电量相关的技术问题

描述

电池供电的电子产品不计其数,具有便携性好的优点,可以随时随地使用。但是有一个让用户非常焦虑的事情是电池续航问题。我们在使用电池供电的产品时,会关心当前电池还有多少电量、还能用多久。

我最近买了一个蓝牙耳机,选择它的一个重要原因就是它可以直观的显示电池电量,

 

如果本身没有显示,只能在电池电量低时收到语音提示,或者在电脑、手机上查看电量信息(蓝牙协议里有电池电量的服务,会将电量信息发给主设备),不如直接显示方便。

本文探讨和电池电量相关的2个技术问题:电量采集和电量显示。

一、电量采集

电池电量采集方法主要有两种:

1) 电压采集法:这种方法是基于电池电压与电量的关系来进行采集的。电池电压随着电量消耗而逐渐降低,因此可以通过采集电池电压来估算电量。电压采集法具有成本低、实现简单的优点,但其精度较差,尤其是在电池电量较低时。

电池的种类不同,电压和电量的关系也不同。

电池电量

图片来源:https://www.powertechsystems.eu/home/tech-corner/lithium-ion-state-of-charge-soc-measurement/ 

上图可以看出,铅酸电池具有相对线性的曲线,可以很好地估计充电状态:然而,锂离子电池的放电曲线要平坦得多,这意味着在很宽的工作范围内,电池端子的电压变化非常小。

2)库仑计法:这种方法是基于电池电流累积来进行采集的。库仑计是一种电路,它能够累积通过其的电流。通过记录电流累积值,可以计算出电池消耗的电量。库仑计法具有精度高、可靠性好的优点,但其成本也较高,实现也更为复杂。

对于普通应用来说,使用第一种电压采集法即可,以4.2V锂电池为例,电池容量和电压关系大概如下,可根据电压估算出电池容量。

电池电量

图片来源:https://siliconlightworks.com/li-ion-voltage

二、电量显示

假设电池电量使用如下图标进行显示,满格电量为4格

假设我们可以按照如下电压进行设置:

4.20V~3.90V满格

3.90V~3.80V三格

3.80V~3.72V两格

3.72V~3.65V一格

3.65以下,低电压告警。

代码里你可能会按照如下方式实现:

 

if(Vol >= 3.9)
  Disp(4);
else if(Vol >= 3.8)
  Disp(3);
else if(Vol >= 3.72)
  Disp(2);
else if(Vol >= 3.65)
  Disp(1);
else
  Disp(0);

 

这么写实际会有问题,会出现在临界值时出现电量格数来回跳变的问题。比如ADC测得电压时3.90V时显示满格,当测到3.89V时会就显示3格,下一时刻由于ADC采集误差或者本身电池电压波动就会测到3.90V,这时就又显示了满格,之后会再次出现3格。这样会让用户觉得紊乱,实际中不能这么用,需要改进。

改进的方法是加入回差控制:

 

if(Vol >= 3.9)
  Disp(4);
else if(vbat >= 3.8+0.02 && vbat < 3.9-0.02) 
  Disp(3);
else if(vbat >= 3.72+0.02 && vbat < 3.8)
  Disp(2);
else if(vbat >= 3.65+0.02 && vbat < 3.72)
  Disp(1);
else if(Vol < 3.65)
  Disp(0);
else
    ; // 不处理
这样就可以解决这个问题,原理也很简单,就是在跳变的区间内不做处理即可。

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分