关于电池剩余电量的判断解决办法
发布时间:2010-06-13 22:23:18 文章来源:www.iduyao.cn 采编人员:星星草
关于电池剩余电量的判断
我的平台是PXA270+wince5.0,battery monitor IC : Maxim的DS2762
有一个关于电池剩余电量的判断问题,请教大家。
目前我的判断方法是:通过battery monitor ic读到目前电池的电压,然后利用预选设置好的,最高和最低电压判断剩余电量。
如:设置最高电压0x34C(4.12V), 最低电压0x2a1(3.3V),目前读到电压:0x324, 则目前的电量应该是:(0x324-0x2a1)/(0x34c-0x2a1)=0.76,则剩余电量是76%。
现在有两个问题:
1、插上充电器和不插充电器,电压读取数值相差很大。比方说电池电压目前是3.4V,但是一插上充电器就变成了3.6V,从而导致IC读取电压数值差距过大,剩余电量显示跳动太大,本来只有40%的电量,一插上充电器就变成了60%。这种问题的原因应该是硬件造成的,但是有没有办法在硬件上避免这种情况呢?或者软件有没有办法通过算法来调整呢?
2、由于电池充电不是线性的,就会导致一个问题就是从20%到70%变化很快,但实际上电池还是没有多少电量,越往后充,数值的变化越慢;使用的时候也是,从50%往下一会就没电了(设置15%自动关机)。请问有什么好的算法能尽可能真实的反映电池电量?
谢谢大家!
------解决方案--------------------
1.充电状态和放电状态的阈值应该是不一样的
2.不能用简单的百分比来确定剩余电量的,可以根据放电的曲线去确定剩余的变量。
------解决方案--------------------
充电放电的表不应该是一个
你用两个表管理不就行了
你要看看你的设备放电时是不是类似线性,充电时我的设备不是线性,不知道你的设备是不是跟我的一样
你要通过打印信息看一下采回来的电压值在充电时的变化规律。然后根据这个变化规律来做处理
一般充电时应该不是线性,但是应该有个规律。我只做过我们设备的,也不敢肯定你的跟我的是一样的,所以我的经验就不说了
你还是自己找一下这个规律吧
然后用两个表对照就可以使CE下显示的电量百分比准确了
------解决方案--------------------
是啊,应该根据放电曲线
或实际测试,根据经验值也可以
------解决方案--------------------
实测充放电曲线,然后通过查表的方式来做应该是比较精确的
插不插充电器也可以通过软件修正来减少指示上的偏差
------解决方案--------------------
充电时电压高于电池电压是必然的,不然无法充电。解决此问题的方法曾经用过的方法:
直接显示正在充电,而不显示百分比。
针对单个项目的需求,反复测试电池的充、放电曲线,算法详细处理,多次修正后,可以确保一段时间内的准确性和精确性。但是随着电池使用的时间越长,精度越来越差。
在15%-75%之间,直接将充电电压-0.2V作为实际电池电压,以换算大概的电量。
增加一个电量计,常用的是串联电流计,可以比较精确的显示。不过在换电池的问题上一直无法比较好的解决。
用1-wire类型的智能电池,其实就是将电量计做在电池的保护板上,每个电池的电量直接跟电池捆绑在一起,cpu直接读百分比即可,换电池也无所谓。
美信新出的MAX17040非常有趣,可以选择读取电压,也可以直接读取百分比。跟电池并联,相当于也是读取电压,但是精度非常高,而且充电时也能精确获取百分比。内部有特殊的算法。在换电池时,大概有3分钟左右无法准确显示,应该是算法在重新计算。3分钟后又准确了。
以上方法,供参考。
------解决方案--------------------
补充一下:
对于电量非线性的问题,最好的方法是针对每个类型(项目)的电池建立对应的曲线,分别管理。软件会比较复杂。
最简单的方法是用上面提到的电量计或者智能电池,确保准去。成本会高。
------解决方案--------------------
学习了,我的项目上也有这个问题。
对于插拔充电器的情况可以通过对读取的电压的历史记录来取平均值的做法来提高精确度。至于剩余百分比最后就是根据放电曲线来估算了
------解决方案--------------------
------解决方案--------------------
由于电池的物理特性,这两个曲线一般都不是直线,你用直线去描述,当然误差很大。
先实际测量出你的电池的充电曲线和放电曲线,然后建模保存到系统中,一般用多项式的形式来描述比较好,计算也方便。取多少个点,要兼顾精度和计算复杂度,我推荐使用chebyshev多项式,这个多项式具有比较好的收敛特性,可以有效防止次数增长。
然后根据实际的电量,去这个放电曲线或者充电曲线上去计算当前的百分比。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
管道的另一端上无任何进程
我写了一个程序,运行正常。
后来,用上了sqlite数据库,然后编译部署都正常,但在WINCE 6模拟器上不能自动运...
-
Power键点亮屏幕的问题
我在程序里面成队使用了:
PowerPolicyNotify(PPN_UNATTENDEDMODE,TRUE);
PowerPolicyNotify(PPN_UNATTEND...
-
求助一个问题:windowsmobile ipl读分区的问题
ipl通过 BP_ReadData读 ramimage 分区信息 读取的时候发现必须要偏移0xc800才能读正...
-
vs2005+DevEmul_SDK.msi后仍旧没有“armv4”选项
OS:win7
IDE:先前有装vs2010做winForm,后装了vs2005(完全安装)
装完后安装了DevEmu...
-
Win7 64位操作系统如何安装arm9开发板的usb下载驱动啊
按照教程操作,超级终端打开也连上了,但是系统貌似对SECBULK.sys SECBULK.inf...
-
嵌入式开发工具
谁用过 LAZARUS 开发过嵌入式系统 ?
------解决方案--------------------
Lazarus 做 PC 上的程序,做嵌入式可能...
-
请推荐几个wince游戏软件下载的地方
最近开始玩wince,请推荐几个好的地方,可以下载游戏,软件的.多谢拉!
------解决方案--------...
-
FAT32 与单片机
根目录下文件与目录项数从那里得
还有根目录的下一簇从哪得
不是说根目录也是一个文件吗 它的目录项在哪里
---...
-
谁可以推荐一个WinCE下的视频播放器,最好可以播放AVI、RMVB、MP3等格式,谢谢。
如题,
麻烦大家推荐一个WinCE5.0下的视频播放器,
-...
-
WinCE6的BinFS问题,100分求解
1、BinFS能不能做在IDE硬盘上?
2、要支持BinFS,bootloader要做甚?
3、BinFS能不能作为一个普通文件放到...