本发明涉及电池参数采集技术领域,尤其涉及一种电池电量采集方法。

背景技术:

目前,在使用电池的产品上,通常使用电量计来获取电池电量的精确数值。而由于电量计的成本较高,还有一些低成本的产品上,还会通过采集电池的电压来获取电量的形式,比如,在使用锂电池的嵌入式移动支付终端上,但是,这种方法,由于是利用经验直接通过采集到的电压估计电量,所以,采集到的电池电量的数值通常都不准确,从而影响产品的精确使用。

技术实现要素:

本发明的目的在于提供一种电池电量采集方法,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

一种电池电量采集方法,包括如下步骤:

S1,判断打印设备是否正在打印,如果否,则定时采集电压值,否则,结束;

S2,获取当前采集电压值,以及与当前采集电压的采集时间最近的三个电压值,在该四个电压值中,获取相邻两次电压值的差值;

S3,将得到的所有差值按权重相加,得出校正值;

S4,判断所述校正值是否大于零,如果是,则用所述当前采集电压值减去所述校正值,得到当前电压值;若所述校正值是负数,则用所述当前采集电压值加上所述校正值的绝对值,得到当前电压值;

S5,利用电池的充放电曲线上电压和电量之间的关系,根据所述当前电压值获取电池电量。

优选地,S1之前,还包括步骤,检测电池、外电的在位情况,如果电池在位,则执行S1,如果外电在位,则切断外电后再执行S1。

优选地,所述检测电池、外电的在位情况,按照如下方法进行实施:

当电池或外电在位时,电路上对应的IO口为高电平,否则为低电平。

优选地,S1中,所述定时采集电压值,具体为每5秒钟采集一次电压值。

优选地,S1中,所述电压值通过CPU内部的模数转换器进行采集。

优选地,S3中,所述权重按照如下原则进行设置:电压采集的时间越接近当前时刻,对应设置越大的权重。

优选地,S5中,所述电池的充放电曲线为厂商提供的电池的充放电曲线,其中,所述充放电曲线中的放电电流与产品正常使用时的电流接近。

优选地,S5中,所述电池的充放电曲线通过如下方法获取:测试同一型号的多个不同电池的充放电曲线,并取平均值。

本发明的有益效果是:本发明实施例提供的电池电量采集方法,通过限定在非打印时产生的大电流的情况下采集电压值,并且对电池使用中,电压的波动范围进行了处理和限制,所以,得到的电压值,消除了电流的影响,更加接近实际值,从而通过电压获取到的电量更加准确,实现了在无电量计的情况下,也能得到较准确的电池电量的目的。

附图说明

图1是本发明实施例提供的电池电量采集方法的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例提供了一种电池电量采集方法,包括如下步骤:

S1,判断打印设备是否正在打印,如果否,则定时采集电压值,否则,结束;

S2,获取当前采集电压值,以及与当前采集电压的采集时间最近的三个电压值,在该四个电压值中,获取相邻两次电压值的差值;

S3,将得到的所有差值按权重相加,得出校正值;

S4,判断所述校正值是否大于零,如果是,则用所述当前采集电压值减去所述校正值,得到当前电压值;若所述校正值是负数,则用所述当前采集电压值加上所述校正值的绝对值,得到当前电压值;

S5,利用电池的充放电曲线上电压和电量之间的关系,根据所述当前电压值获取电池电量。

电池的电压与电池的输出电流有关,相同电量情况下,电池在大电流输出时,电压值比无电流输出的情况下低。在移动支付终端打印凭票时,电池电流很大,采集到的电压值比不打印时的电压值低很多,使用该电压值计算得到的电池电量就会有很大误差,而由于移动支付终端打印凭票的时间一般都很短,所以在移动支付终端打印凭票的过程中,可以不进行电压采集。因此,本实施例提供的方法中,首先要判断打印设备是否正在打印,如果是,则不采集电压,避免得到的电量值误差较大,当电流不会对电压产生较大的影响时,才进行电压的采集操作,以保证通过电压得到的电池电量值是准确的。

移动支付终端在正常使用过程中,会产生一定的电流,而电流的存在,就会对电压产生一定的影响,从而使得电量产生一定的误差,本实施例中,为了避免该误差的产生,或者说,为了尽量的减小误差,使得得到的电量准确,对采集到的电压进行了校正,使其波动范围得到限定,具体方法为:

由于电压的波动多数情况下持续时间极短,而正常情况下,每次采集到的电压值差别不大,所以结合前三次采集到的电压值,计算出相邻两次电压值的差值,然后把这些差值按权重值相加,得出一个校正值,若该校正值是正数,则用当前读取到的电压值减去该校正值;若该校正值是负数,则用当前读取到的电压值加上该校正值的绝对值,最终得到当前电压值。例如,当前采集电压值为V4,与当前采集电压的采集时间最近的三个电压值分别依次是V1,V2,V3,则在这四个电压值中,相邻两次电压值的差值分别是D1=V2-V1,D2=V3-V2,D3=V4-V3,对这些差值分别赋予权重,比如,D3的权重为1/2,D2的权重为1/4,D1的权重为1/8,再按照权重将这些差值相加得到校正值:DT=D3/2+D2/4+D1/8,若DT大于0,说明当前采集到的电压值V4浮动偏高,所以需要用当前采集到的电压值V4减去DT,得到当前电压值,限制其偏高的浮动;反之,说明当前采集到的电压值V4浮动偏低,则需要用当前采集到的电压值V4加上DT的绝对值|DT|,得到当前电压值,限制其偏低的浮动。采用上述方法来限制当前采集到的电压的波动,使其接近实际值。

重复上述方法,就可以对每次采集到的当前电压值进行校正。经过上述步骤,采集到当前电压值,并对其波动范围进行限制处理后,得到校正后的当前电压值,由于电池电量与电压之间存在如下的关系:电量越多,电压越高,虽然两者并不是线性关系,但是可以通过电池的充放电曲线,得出电池电量与电压的关系,根据该关系,就可以通过电压值得到电量值。

具体的,把采集到的电压值存到一个全局变量中。并且根据电池的充放电曲线,把1%-100%电量对应的电压值保存到一个数组中。把当前电压值与该数组中的值比较,就可以获得当前电池电量。

所以,采用本发明实施例提供的方法,通过限定在非打印时产生的大电流的情况下采集电压值,并且对电池使用中,电压的波动范围进行了处理和限制,所以,得到的电压值,消除了电流的影响,更加接近实际值,从而通过电压获取到的电量更加准确。

本发明实施例提供的电池电量采集方法,S1之前,还可以包括步骤,检测电池、外电的在位情况,如果电池在位,则执行S1,如果外电在位,则切断外电后再执行S1。

由于外接电源会使得读取到的电压值偏高,所以,本实施例中,在采集电池电压之前,首先判断外电是否在位,如果在位,则先切断外电,保证只有电池在位时,才开始采集电压值,从而保证得到的电压值更加准确。

本实施例中,所述检测电池、外电的在位情况,按照如下方法进行实施:电池或外电在位时,电路上对应的IO口为高电平,否则为低电平。

上述方法中,通过检测电路中电池、外电对应的IO口的高低电平,来判断电池是否在位。如果电池不在位则结束;否则检测外电是否在位,如果外电在位,则CPU通过控制IO口关闭充电芯片,即可关闭外电。

当接有外电时,由于外电的影响,采集到的电压有浮高。浮高值与电池的电量有关,电量低时浮高值大,电量高时浮高值小。不同电池浮高值有些区别。所以在接有外电时采集的电压,难以找到一个补偿值,来修正采集到的电压。而切断外电后,浮高值就不存在了,采集到的电压值就会比较准确。

本实施例中,S1中,所述定时采集电压值,具体为每5秒钟采集一次电压值。

由于为了排除外部电源对采集电池的电压的影响,在采集电压时会切断外部电源,采集结束后再接通外部电源。所以不能频繁采集电压(也没有必要频繁采集电压),以免影响充电时间。所以,本实施例中,每5秒钟采集1次电压。

本实施例中,S1中,所述电压值通过CPU内部的模数转换器进行采集。

模数转换器有10位精度,能够满足需求,从而简化硬件电路的设计。

本实施例中,S3中,所述权重按照如下原则进行设置:电压采集的时间越接近当前时刻,对应设置越大的权重。

由于与当前时刻越接近的电压值对于当前采集电压值范围波动的限制越有效,所以设置的权重越大,具体权重值可以根据经验进行设定。

每次均通过采集前N次电压值得出当前采集电压的补偿值,可以使得当前采集电压的波动减小,防止因电流变化或其他因素影响而出现电压忽高或忽低的现象。

本实施例中,S5中,所述电池的充放电曲线为厂商提供的电池的充放电曲线,其中,所述充放电曲线中的放电电流与产品正常使用时的电流接近。

上述方法中,充放电曲线中的放电电流与产品正常使用时的电流接近,可以保证较小误差。

本实施例中,S5中,所述电池的充放电曲线通过如下方法获取:测试同一型号的多个不同电池的充放电曲线,并取平均值。

同一型号的不同电池的充放电曲线会有细小的差别,本实施例中,通过测试同一型号的多个不同电池的充放电曲线,然后取多个曲线的平均值得到的充放电曲线,就可以为该型号的电池共同使用。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的电池电量采集方法,通过限定在非打印时产生的大电流的情况下采集电压值,并且对电池使用中,电压的波动范围进行了处理和限制,所以,得到的电压值,消除了电流的影响,更加接近实际值,从而通过电压获取到的电量更加准确,实现了在无电量计的情况下,也能得到较准确的电池电量的目的。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

干电池电量采集_一种电池电量采集方法与流程相关推荐

  1. ic 主动均衡_一种电池主动均衡方法与流程

    电池主动均衡技术领域,具体是一种电池均衡方法. 背景技术: 现有主动均衡技术主要通过检测电池电压差异或容量差异,并通过电子元器件(DC/DC或电容器)来实现单体与单体.单体与模组.模组与单体之间的能量 ...

  2. 疲劳驾驶监测方案_一种疲劳驾驶检测方法与流程

    本发明涉及一种疲劳驾驶检测方法. 背景技术: :交通安全是与国计民生直接相关的热点问题,其中疲劳驾驶作为交通事故多发的主要问题之一,受到了人们的广泛关注.疲劳驾驶会导致驾驶员精力不集中.肢体反应迟钝. ...

  3. java游戏房间匹配_一种游戏房间匹配方法与流程

    本发明涉及计算机技术领域,尤其涉及一种游戏房间匹配方法. 背景技术: 在目前的网络游戏中,游戏对象与游戏对象会通过互联网在线上进行竞技比赛,很多时候都需要多名玩家共同参与,现有的游戏对象的配对方法大多 ...

  4. ue4导入倾斜摄影_一种高精度倾斜摄影建模方法与流程

    技术领域:本发明属于测绘技术领域,涉及矿山地形监测.测绘地形图.珍贵建筑物修复重建.林业.农业.采矿业.公用事业和能源.城市开发.国防和灾害应急的地理信息处理. 背景技术: :目前成熟的倾斜三维建模软 ...

  5. lds天线技术流程图_一种镭雕镀金方法与流程

    本发明涉及表面处理领域,尤其涉及一种镭雕镀金方法. 背景技术: 在电子通信产品的结构件中,一些产品经常采用在塑胶支架上镭雕化镀的方式来实现线路,LDS天线就是其中的一种.如图1所示,首先在塑料支架上镭 ...

  6. truetype字体怎么转换成普通字体_一种TrueType字体渲染方法与流程

    本发明涉及一种TrueType字体显示技术领域,尤其是涉及一种基于热排序缓存机制的TrueType字体渲染方法. 背景技术: 随着军民用飞机座舱显示系统的不断复杂.功能的不断增加.显示分辨率的不断增大 ...

  7. java熔断器_一种熔断器的实现方法与流程

    本发明涉及java开发技术领域,特别涉及一种熔断器的实现方法. 背景技术: 目前,在微服务架构中,为了方便系统的前期的开发以及后期升级.维护,提交工作效率,一般会将系统划分为多个服务单元.各个服务单元 ...

  8. 图像迁移风格保存模型_一种图像风格迁移方法与流程

    本发明涉及图像处理技术领域,更为具体地,涉及一种图像风格迁移方法. 背景技术: 近年来,由深度学习所引领的人工智能技术浪潮,开始越来越广泛地应用到社会各个领域,尤其是在在计算机视觉领域,图像风格迁移作 ...

  9. 机器人杆长标定_一种SCARA机器人标定方法与流程

    本发明涉及机器人零位标定技术领域,尤其涉及一种SCARA机器人标定方法. 背景技术: 零位是机器人坐标系的基准,没有零位机器人无法判断自身位置.在影响机器人绝对精度的因素中,零位误差所占比重高达97% ...

最新文章

  1. 只服这篇“神文”:基于老子哲学、相对论的超级人工智能模型
  2. 《LINQ实战》译者感言
  3. 19日零时起降低成品油价格 燃油税元旦起开征
  4. Javascript非构造函数的继承
  5. linux前10ip,检查网口流量与前10名流量大IP
  6. VTK:图像正弦曲线用法实战
  7. mysql 数据日志分析_基于mysql数据库的日志分析系统
  8. 联想将在CES上展示LePad平板
  9. php 瀑布流布局,CSS3实现瀑布流布局的方法
  10. PostgreSQL 12系统表(3)pg_tablespace
  11. python查找并修改文件中的内容_如何使用Python搜索和替换文件中的文本?
  12. LG 出售中国总部大楼;苹果延长疫情期间 Apple 设备保修期;Linux 5.6 新特性 | 极客头条...
  13. web内容缓存 nginx高性能缓存详解
  14. linux系统同时安装python2.x和3.x
  15. 支撑向量机作业(SVM)
  16. python用keras库做个股票分析小程序
  17. win7台式计算机型号怎么查,教您电脑主板型号怎么看
  18. echarts饼图, 中间显示总数
  19. 【体系-微服务架构】23-Spring Cloud Spring生态链(Alibaba)
  20. 在Unity中模仿游戏《江南百景图》中物体的出现效果

热门文章

  1. infoq_InfoQ与Azul Systems Gil Tene谈论Zing,Zulu和新版本
  2. gtx660 linux驱动下载,Ubuntu 16.04安装GTX660显卡驱动——解决谷歌浏览器卡死桌面的问题...
  3. MATHLAB有关知识
  4. 理不懂,你注定就是穷打工的命 【转】
  5. unity 游戏内实现3连击动画(状态机)
  6. Python使用 Pyvisa库 控制 NI 设备Fluke(详细)
  7. Cocos2d-x 3.2键盘操控列表页的初步实现
  8. 小卡的土豆园开园了~
  9. 计划预算(PV)、实际完成工作预算(EV)、实际成本(AC)
  10. 下载想看的英文kindle 电子书