锂电池电量检测问题

[复制链接]
9028|24
 楼主| zmmhmily 发表于 2008-10-6 20:53 | 显示全部楼层 |阅读模式
一个产品,使用锂电池供电,界面上电池电量的指示遇到了问题,请大家帮帮忙,&nbsp;出出主意.<br /><br />情况是这样:<br />由于IO口和硬件的局限,&nbsp;这个产品图示电量的标识是对电池现有的电压进行采样,AD转换而得到,&nbsp;并非电池实际中的容量,&nbsp;软件设定电池电量&gt4.2V为满,&lt3.5V为空且提示电量低,中间还有二段,共分为四部分指示,当低于一定值会自动关机.<br />1,<br />对于产品正常待机状态,&nbsp;因为电流比较小,&nbsp;电压也很稳定,&nbsp;所以图示的电量(从3.5到4.2分为四段)也很稳定,&nbsp;很正常的;&nbsp;<br />2,<br />当产品在使用中,&nbsp;比如进行了一些测量,&nbsp;发送数据,驱动喇叭等产品的功能使用,这时候硬件中的很多模块开始工作,负载加重,电流加大,&nbsp;进而电压变小,&nbsp;因为是从电压采过来的值,就影响到了电量的显示部分,&nbsp;有时候电流太大,&nbsp;把电压拉的很低,低过设定值就产生自动关机的现象,&nbsp;这显然不合理,&nbsp;重新开机又没有问题了.&nbsp;<br />电压和电池容量毕竟是不一致,&nbsp;可是又没有多余的IO口去检测电流,&nbsp;只能通过电压来解决这个问题,&nbsp;这样的情况应该怎以办啊?&nbsp;当初想过在产品工作的时候,&nbsp;把电量指示固化在前一稳定状态,&nbsp;待机的时候恢复,这样就不会发生自动关机,&nbsp;但工作耗电,&nbsp;电量指示还是乱的,&nbsp;没有了实时性,&nbsp;还是行不通,各位高手帮我想想还有什么办法啊?<br /><br />不知道我有没有把我的问题描述清楚,&nbsp;先谢谢各位了.
 楼主| zmmhmily 发表于 2008-10-7 13:28 | 显示全部楼层

怎么没有人帮我啊

  
xzl 发表于 2008-10-7 14:24 | 显示全部楼层

这说明了一个问题

你选择的电池容量不够!<br />还有你的ADC分辨率不够,AD误差也会引起误动作
 楼主| zmmhmily 发表于 2008-10-8 21:53 | 显示全部楼层

与这两方面没有关系啊

我的产品待机30mA,&nbsp;我选择的是1000mA的,&nbsp;也试过720mA<br />就算是选择更大的,在产品工作时,电流增大同时电压仍然会有降低啊<br /><br />AD分辨率也一样,待机的情况下,电压的曲线很好,不出问题的,分辨率上去,电压一降,采的值该是多少就是多少呀<br /><br />和这两个没关系啊
taoest 发表于 2008-10-8 23:12 | 显示全部楼层

补偿

你就不会从软件上将电压补偿回去?测量一下开机跟关机差距多少,补回去就好啦。<br />不过精度不高。用来做粗略只是和自动关机只足够的。
doob 发表于 2008-10-9 11:11 | 显示全部楼层

关注。。

一直想做锂电池电量测量的东东,就是没有好的方法!
equator 发表于 2008-10-9 12:06 | 显示全部楼层

可以采用一个简单算法

可以采用类似PID算法的简单算法:在一定时间内,如果AD值变化过快,就认为是瞬间电流过猛,不自动关机。
xwj 发表于 2008-10-9 12:12 | 显示全部楼层

LS正解,综合检测斜率是最好的的方法

  
 楼主| zmmhmily 发表于 2008-10-9 23:55 | 显示全部楼层

to&nbsp;taoest&nbsp;<br /><br />自动关机的电压是由软件设定好的,&nbsp;低于3.7V就关机了,&nbsp;你说的这个补偿就像是我在第一楼写的那个办法一样,在待机的时候,&nbsp;电量显示为实时测量的电压值,在工作的时候,&nbsp;把电量固定在上一稳定状态,&nbsp;这样不会发生关机的现象,&nbsp;可是如果产品工作时间很长,&nbsp;电量显示的值就太假了,&nbsp;没有实时性,&nbsp;补偿也一样,&nbsp;工作5分钟和工作30分钟补偿的值会是多少呢??&nbsp;不同电量开关机之间的差也不一样,&nbsp;如果有一个算法能把这个要补偿的值算出来的话也好,&nbsp;在工作的时候,&nbsp;进行查表来显示电量也行,&nbsp;可是现在还没有想到有什么办法可以模拟电池来把需要补偿的这部分曲线得出来<br /><br />to&nbsp;equator&nbsp;&&nbsp;xwj&nbsp;<br /><br />PID算法好复杂啊...<br /><br />针对我这个问题,具体应该怎么入手啊?<br /><br /><br /><br />
taoest 发表于 2008-10-10 00:44 | 显示全部楼层

例如不工作的时候是3.7V,转入工作状态马上测量,为3.6V,相差0.1V<br />,那么以后不工作的时候就用测量电压,工作的时候就用测量电压+0.1V。补偿电压保持不变。<br />另外锂电池放电终止电压不是3.7V,应该是3.3以下。3.7的时候还有一半的电。
 楼主| zmmhmily 发表于 2008-10-10 17:46 | 显示全部楼层

  
 楼主| zmmhmily 发表于 2008-10-10 17:50 | 显示全部楼层

再回

转入工作状态时,电流在突变非常快,&nbsp;电压测量值看不到变化,&nbsp;并不是可以得到下降了多少....这时候唯一稳定变化的是电池容量,怎么办.
taoest 发表于 2008-10-10 20:43 | 显示全部楼层

电压测量值看不到变化

电压测量值看不到变化?你的意思是电流是脉冲的?<br />非常快是多快?<br />如果是脉冲,那你就在电流小的时候测量电压,电流大的时候略过。补偿都不用了。
 楼主| zmmhmily 发表于 2008-10-10 23:20 | 显示全部楼层

现在没有电流探头,测不了脉冲,只给用电流表看到数值在60多到120之间无规则的跳变着,每一瞬间都在变....
taoest 发表于 2008-10-10 23:37 | 显示全部楼层

多动脑筋

多动脑筋想办法解决,不要人家给的方案你只顾否定。<br />程序是你写的,什么时候工作,什么时候不工作,程序自己总知道吧。不用探测什么电流。
 楼主| zmmhmily 发表于 2008-10-12 15:13 | 显示全部楼层

楼上

不好意思啊,&nbsp;主要还是不知道应该怎么来解决,&nbsp;总是想不到一个可靠的办法...
noley 发表于 2008-10-13 09:14 | 显示全部楼层

使用硬件方式是否更好?

锂电的内部都会有保护板的,充放电过程中都可以进行保护。你把软件的切断点限定在硬件之后,即低于硬件设定电压,是否可行呢?
pcer 发表于 2011-9-23 09:06 | 显示全部楼层
1# zmmhmily 不知lz解决问题了没有
测量一段时间内的电压平均值可以吗?设计一个加权算法。
XZL 发表于 2011-9-23 10:36 | 显示全部楼层
还是你的算法有问题!要过滤掉电压瞬间跌落的错误信息
kkyou 发表于 2011-9-23 14:28 | 显示全部楼层
试试移步平均的算法:
1,        首先电池电压采样没必要间隔很短,可以1秒采一次或者2秒。
2,        以每秒采样一次为例,第1~10秒各采到的电压值为U1,U2,…U10.
开机第1秒显示的电压为 U1
开机第2秒显示的电压为 (U1+U2)/2
开机第3秒显示的电压为 (U1+U2+U3)/3
开机第4秒显示的电压为 (U1+U2+U3+U4)/4
开机第5秒显示的电压为 (U1+U2+U3+U4+U5)/5
开机第6秒显示的电压为 (U2+U3+U4+U5+U6)/5
开机第7秒显示的电压为 (U3+U4+U5+U6+U7)/5
以此类推。
这样可以平滑掉出现的异常数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

205

主题

698

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部