测量和计算系统电池电量的改进方法

文档序号:6184559阅读:370来源:国知局
测量和计算系统电池电量的改进方法
【专利摘要】本发明公开了一种测量和计算系统电池电量的改进方法,包括以下步骤:步骤一、根据系统主要耗电设备的状态对利用ADC测量电池电压法得到的基准电压U进行电压补偿,并根据补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量;步骤二、对所述电池的测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理和保存电量处理中的一项或多项,并将处理后的电量更新电池当前的显示电量。使用本发明,可以在不能取得电流信息的前提下,仅使用ADC电压测量电池电量法,并对通过该方法上获得测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理和保存电量处理中的一项或多项,使得测量准确度大幅度上升。
【专利说明】测量和计算系统电池电量的改进方法
【技术领域】
[0001]本发明涉及一种计算机自动化测量方法,尤其涉及一种测量和计算电池电量的改进方法。
【背景技术】
[0002]在平板电脑、手机等使用电池的设备中,一般都需要显示当前电池的电量。对于测量精度要求很高的场合,一般要用到库仑计等专用芯片。库仑计通过测量电池的电压、充/放电电流,可精确计算出电池存储和消耗的能量,从而得出当前电池电量。
[0003]为了节约成本,对于精度要求不是很高的消费电子产品来说,通常不会使用这类专用的电量计芯片,而是使用仅通过ADC测量电池电压的方法来测量和计算电池电量。该方法的原理是,电池在不同的电量下,其输出电压是不一样的。电量越多,电压就越高,相反,电量越少,电压就越低。但实际情况是,电池电压不单跟电量相关,还跟充/放电电流相关。而测量电池电流又是比较困难的,因此一般的消费电子产品不具备电池电流测量功能。所以不增加任何算法,仅是简单地通过电压来计算电池电量,效果是非常差的,有时误差甚至能达到50%之多。
[0004]针对上述问题,有些设计就在此基础之上增加了不同场景下的电压补偿功能。通过对不同场景下的电压测量,记录下电压补偿值,然后在测得实际电压后根据不同的模式进行补偿。由于电压波动较大,电压补偿也很难做得准确,因此一般还会对计算结果进行简单的取平均值等运算,使结果显得较平稳。
[0005]综上,现有技术的主要缺点包括:
[0006]1、若使用专用库仑计芯片,则成本较高,大约需要增加0.5?I美金;
[0007]2、不使用库仑计芯片的,电池曲线不平滑、电量显示误差大、波动大,例如重新启动系统前后电池电量偏差很大、充电时电量快速上升、拔掉充电器电量快速下降等等。

【发明内容】

[0008]本发明主要解决在无电流测量功能的限制下,仅使用电压方式在线测量电池电量偏差大以及电池充放电曲线波动大的问题。
[0009]为实现上述目的,本发明公开了一种测量和计算系统电池电量的改进方法,具体包括以下步骤:
[0010]步骤一、根据系统主要耗电设备的状态对利用ADC测量电池电压法得到的基准电压U进行电压补偿,并根据补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量;
[0011]步骤二、对所述电池的测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理和保存电量处理中的一项或多项,并将处理后的电量更新电池当前的显示电量。
[0012]较佳地,所述步骤一具体包括步骤:[0013]步骤1,利用ADC测量电池电压法获得电池的基准电压U ;
[0014]步骤2,根据系统主要耗电设备的状态,对每个所述主要耗电设备依据以下公式计算每个所述主要耗电设备的补偿电压;
[οο? 5]当电池处于放电状态时:u补偿电压=U补偿偏移量+F Oj) 当前值/V最大值,
[οο? 6]当电池处于充电状态时:u补偿电压=U补偿偏移量-F Oj) *v当前值/V最大值;
[0017]其中,V 是当前主要耗电设备对应属性的值,是所述对应属性可达到的最大值,F(U)是以所述基准电压为参数的函数,表示根据当前所述基准电压计算出主要耗电设备运行在所述对应属性最大值时的最大补偿电压?为补偿偏移量,其大小与系统主要耗电设备当前的状态相关;
[0018]步骤3,计算所述基准电压与所有所述主要耗电设备的补偿电压的总和,作为补偿后的电压;
[0019]步骤4,根据所述补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量
[0020]其中,所述主要耗电设备至少包括IXD背光、CPU和GPU ;对于IXD背光,所述对应属性为LCD背光亮度,对于CPU,所述对应属性为CPU运行频率值,对于GPU,所述对应属性为GPU运行频率值。
[0021]本发明不同于一些同样未使用电流测量的方案仅依据几个特定的应用场景来设定补偿值,而是针对选定的主要耗电设备计算而来,可以获得较为准确的电压补偿值。
[0022]为了进一步解决所·述电池的显示电量误差大、电池曲线不平滑、波动大等问题,在所述步骤一之后,还可以包括对所述电池的测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理中的一项或多项,和/或包括独立于步骤一的保存电量处理。其中所述防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理中的每一项在处理时,都将上一项处理的输出电量作为当前处理的输入电量,并将当前处理的输出电量作为下一项处理的输入电量,与所述步骤一相连的处理的输入电量是经所述步骤一处理后的测量电量,最后一个处理的输出电量作为步骤二的所述电池当前的显示电量。
[0023]其中,所述防反弹处理具体包括:将输入电量与电池当前的显示电量进行对比,当电池处于放电状态时,若所述输入电量大于所述电池当前的显示电量,则采用所述电池当前的显示电量作为输出电量;当电池处于充电状态时,若所述输入电量小于所述电池当前的显示电量,则采用所述电池当前的显示电量作为所述输出电量;其他情况采用所述输入电量作为输出电量。
[0024]所述斜率限定处理具体包括:将输入电量与电池当前的显示电量进行对比,如果所述输入电量nin大于所述电池当前的显示电量]^,则输出电量为η—= (int) ((nin-nm) /N+l)+nm ;如果所述输入电量nin小于所述显示电量nm,则输出电量为η—= (int) ((nin_nm)/N-1) +nm;如果所述输入电量nin等于所述显示电量nm,输出电量为Atjut=Iiin ;其中nin nout及nm为以百分制显示时百分号前面的数值,N为一个根据当前工作电流大小实时调整的系数。
[0025]现有的技术使用过的是固定斜率的方式,即不管充放电电流为多少,都使用固定的斜率。而本发明则会根据当前充放电电流动态调整斜率,从而更接近真实情况。
[0026]所述模拟充放电处理具体包括:当系统检测到电池当前的显示电量在一段时间内未发生变动,若系统处于充电状态,则计算在充电状态下模拟充电所需时长t。,在t。时长范围内,将所述输入电量nin按照每单位时间加I的速率变化作为输出电量;若系统处于放电状态,则计算在放电状态下模拟放电所需时长td,在td时长范围内,将所述输入电量nin按照每单位时间减I的速率变化作为输出电量,其中所述nin为以百分制表示时百分号前面的数值。
[0027]所述电量滤波处理具体包括:将输入电量的值加入到滤波队列末尾,将队列中最早的一个数据删除,然后对滤波队列中所有值取平均值作为输出电量。
[0028]本发明使用了队列式滤波处理,而不是普通的平均值滤波方式,使用这种方式不仅会在数值上产生滤波效果,在时间上也会产生滤波效果。
[0029]所述保存电量处理包括步骤:在检测到电池当前的显示电量发生改变,或者超过预设时间,或者用户修改时间时,将保存所述显示电量及时间信息到文件系统,以参与下次系统开机时电量的测量计算。下次系统开机时,先从文件系统中加载最后的电量信息和时间信息,然后和当前计算得到的电量和时间对比,如果电量相差不大,且时间变化未超过指定的值,则认为从文件系统中加载到的电量信息有效,后续的计算都在此基础上进行,如果电量偏差较大,则直接使用当前计算得到的电量值,忽略之前存储的电量信息。
[0030]本发明实施例所要解决的技术问题是在不能取得电流信息的前提下,针对仅使用ADC电压测量电池电量法,并通过在该方法和算法上的改进,使得测量准确度大幅度上升,电池充放电曲线更接近真实情况,从而大大提升用户使用体验。
[0031]实施本发明实施例,具有如下有益效果:
[0032]1、对比使用专用库仑计芯片或增加电流测量的方案,本发明几乎不增加额外的成本,直接使用芯片自带的ADC即可完成电池电量测定功能;
[0033]2、对比同类无电流测量的方案,因为本发明使用了更为精确的电压补偿方法和算法,所以本发明测得的结果更为准确;
[0034]3、对比同类无电流测量的方案,由于本发明使用了较好的算法以及智能参数调整功能,例如动态的斜率限制功能、模拟充放电处理过程、队列式滤波处理等,使得本发明得到的电池充放电曲线更接近真实情况;
[0035]4、对比同类测量方案,得益于本发明电量保存处理及开机预加载功能,本发明在关机后马上开机或重新启动,电量不会突变。
【专利附图】

【附图说明】
[0036]图1是本发明的一个实施例的流程图。
[0037]图2是图1所示的步骤SOl的具体流程图。
[0038]图3是本发明实施例计算补偿电压的流程图。
[0039]图4是本发明实施例查表获得测量电量流程图。
[0040]图5是本发明的另一个实施例的流程图。
[0041]图6是本发明实施例防反弹处理流程图。
[0042]图7是本发明实施例斜率限定处理流程图。
[0043]图8是本发明实施例模拟充放电处理流程图。
[0044]图9是本发明实施例电量滤波处理流程图。[0045]图10是本发明实施例保存电量处理流程图。
[0046]图11是本发明实施例开机预加载处理流程图。
【具体实施方式】
[0047]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0048]如图1所示,为本发明一个实施例的流程图,具体包括步骤:
[0049]S01、根据系统主要耗电设备的状态对利用ADC测量电池电压法得到的基准电压U进行电压补偿,并根据补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测
量电量;
[0050]S02、对所述电池的测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理和保存电量处理中的一项或多项,并将处理后的电量更新电池当前的显示电量。
[0051]下面结合图2,首先详细描述该实施例中的步骤SOl的执行过程,具体包括步骤:
[0052]S11,利用ADC测量电池电压法获得电池的基准电压,优选的,通过连续10次AD转换并取平均值得到基准电压; [0053]S12,根据系统主要耗电设备的状态,计算每个所述主要耗电设备的补偿电压;
[0054]S13,计算所述基准电压与所有所述主要耗电设备的补偿电压的总和,作为补偿后的电压;
[0055]S14,根据所述补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量;
[0056]S15,用所述电池的测量电量更新电池当前的显示电量。
[0057]其中,所述步骤S12中,主要耗电设备根据不同的系统选择不同的设备。例如在平板电脑中,IXD背光和CPU、GPU是主要的耗电设备,耗电不固定。因此通过测量不同IXD背光亮度、CPU频率、GPU频率在不同电池电压下的电压偏差值,然后通过曲线拟合,得到一些关键点的数据,然后再根据实际的LCD背光亮度、CPU频率、GPU频率即可计算出电压补偿值,从而可以较准确地计算出电池电量。
[0058]假设当前通过ADC测量到的电池电压为U,那么通过补偿后的电压可表示为Uc=RUblc^UUgpue。其中U。为补偿后的电压,Uble为LCD背光补偿电压,Uepue为CPU补偿电压,Ugpu。为GPU补偿电压。
[0059]LCD背光补偿电压Ublc=Ubl.,+Fbl (U) *Vbl/Vblmax,其中Ubl为补偿偏移量,与实际的系统、所使用的电池等都相关,需要实测决定;Fbl为一个函数,它会根据当前电压值计算出最大亮度的补偿值,该函数与实际的LCD背光、所使用的电池等都相关,需要实测决定;Vbl是当前LCD背光亮度值,Vblmax是背光最大值。
[0060]CPU 补偿电压 Uepuc=Uepu—t+F^U) *Vepu/Vepumax,其中 Ueputjffset 为补偿偏移量,与实际的系统、所使用的电池等都相关,需要实测决定为一个函数,它会根据当前电压值计算出最大CPU频率时的补偿值,该函数与实际的CPU、所使用的电池等都相关,需要实测决定是当前CPU的运行频率值,Vcpumax是CPU运行的频率最大值。
[0061]GPU补偿电压υ_ε=υ—^8Ρ11⑶^VgpiAgpumax,其中Ugputjffset为补偿偏移量,与实际的系统、所使用的电池等都相关,需要实测决定;Fgpu为一个函数,它会根据当前电压值计算出最大GPU频率时的补偿值,该函数与实际的GPU、所使用的电池等都相关,需要实测决定;Vgpu是当前GPU的运行频率值,Vgpumax是GPU运行的频率最大值。
[0062]在充电时,也需要根据LCD背光、CPU频率、GPU频率等计算出充电电压的补偿值。因为在系统中,充电器提供的总电流是固定的,当系统运行时需要的电流大时,会自动降低充电电流。而不同的充电电流,即使在电池容量相同的情况下,电池电压也不一样,因此需要针对充电做电压补偿。充电电压补偿计算公式与放电时的计算公式形式上基本一样,不同的地方在于,当背光/CPU/GPU电流增大时,补偿电压减小,因此使用的参数不一样。充电时所使用的计算公式形式上为:Uble=Ubl—Mfset-Fbl (U) *Vbl/Vblmax ;Ucpuc=Ucpu offset-Fcpu(U) *VCPU/
Vcpumax ?^gpuc ^gpu offset Fgpu(U)5^VgpuZVgpumaxO
[0063]另外,考虑到USB 口在连接电脑和充电器时,能够获取到的最大电流是不一样的,这直接会影响到充电时电池电量的测量。因此在本设计中增加了供电端检测的功能,当检测到不同的供电端时,会使用不同的补偿参数。作为优选地检测依据是,连接电脑时,电脑会和设备进行数据通信,而连接充电器时不会有数据通信。
[0064]为方便理解,下面将通过图3对电压补偿处理流程进行描述。
[0065]假设通过ADC测量电压法测得的电压为U ;
[0066]S131,判断是否有外部电源输入,如果有,则进入步骤S132,否则,进入步骤S134;
[0067]S132,判断连接的外部电源是否是电脑,如果是,进入步骤S133,否则,进入步骤135;
[0068]S133,计算电脑模式下IXD背光补偿`电压Ubl。、CPU补偿电压U聊c、GPU补偿电压U.Ugpuc ?
[0069]S134,计算放电模式下IXD背光补偿电压Ubl。、CPU补偿电压Ucpuc、GPU补偿电压U.Ugpuc ?
[0070]S135,计算充电模式下IXD背光补偿电压Ubl。、CPU补偿电压Ucpuc、GPU补偿电压U.Ugpuc ?
[0071]S136,依据公式υε=υ+υωε+υερικ+υ_。计算补偿后的电压。
[0072]图4所示为步骤S14中查表得到电池电量的具体流程,具体包括步骤:
[0073]S141,判断电池是否处于充电状态,如果正处于充电状态,则进入步骤S142,否则进入步骤S143 ;
[0074]S142,通过查充电电压表获取当前电池的测量电量,并进入步骤S144 ;
[0075]S143,通过查放电电压表获取当前电池的测量电量,并进入步骤S144 ;
[0076]S144,返回当前电池的测量电量。
[0077]虽然由图2所示实施例获得的显示电量,已经通过对主要耗电设备拟合电压补偿曲线,获得更加精准的电池电量,但是如果在该实施例的基础上再加入防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理以及保存电量处理中的一项或多项,将会获得更加接近真实情况且符合人们心理的结果。
[0078]而且可以理解的,所述防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理以及保存电量处理是相互独立且不分顺序的,可以根据测量精确需求而选择其一项或多项进行处理。优选的,在图2所示实施例获得的显示电量的基础上进行上述全部处理。[0079]如图5所示,为本发明一个优选实施例的流程图,包括步骤:
[0080]SI,获取电池测量电量:与第一实施例的步骤Sll至S14相同,根据系统主要耗电设备的状态对利用ADC测量电池电压法得到的基准电压进行电压补偿,并根据补偿后的电压确定电池的测量电量。
[0081]S2,防反弹处理:假设当前显示电量为IV如果已经确认电池处于放电状态,例如未连接充电器亮屏运行,那么对于计算得到大于nm的结果应该要丢弃,否则电池不在充电但电池电量却在上升会给用户很糟糕的体验,此时直接使用当前显示电量的值\作为该步处理的结果;同样,如果确认电池在充电状态,而计算得到的电量却小于nm,则也要丢弃,防止电池充电时电池电量反而下降的情况发生,相应地也使用当前显示电量的值化作为该步处理的结果;对于其他情况,使用经SI步骤获得的测量电量作为该步处理的结果。
[0082]S3,斜率限定处理:不直接使用经步骤S2的处理结果,而是依据当前显示电量,对经过步骤S2处理后的电量做进一步的调整。根据系统当前充放电状态以及主要耗电设备的状态,计算出一个电量变化率N,利用此变化率限制电量变化的幅度,在时间上牵制住电池电量的快速波动。假设,将所述步骤S2处理的结果记做nin,将当前显示电量记作nm。当nin比化大时,根据公式((int) (nin-nm)/N+l)+nm对所述步骤S2处理结果进一步调整;当1^比化小时,根据公式((int) (nin-nm)/N-l)+nm对所述步骤S2处理结果进一步调整;当1^等于nm时,则不作调整;其中nin及nm为以百分制显示时百分号前面的数值。
[0083]S4,模拟充放电处理:若系统检测到所述显示电量较长时间未发生变动,并且已经明确电池的充放电状态的情况下,使所述经步骤S3处理后的电量在一个根据系统当前状态确定的时间内,以低于正常充放电时变化的幅度改变。由于模拟的充放电速度比实际的充放电速度慢,因此一段时间后,计算得到的电量会逐渐向显示的电量靠近,最终二者相等。这样的处理使用户感觉充电时电池电量比较均匀地上升,放电时电池电量比较均地下降。
·[0084]S5,电量滤波处理:将经过以上步骤调整后得到的电量加入到一个平滑滤波队列,并将队列中最早的一个数据删除,然后取平均值计算得到最终的电池电量。并将处理结果用于更新所述显示电量。
[0085]S6,保存电量处理:在检测到电池当前的显示电量发生改变,或者距离上次保存超过预设时间,或者用户修改时间时,将保存当前所述显示电量的值及时间信息到文件系统,以参与下次系统开机时电量的测量计算。
[0086]其中所述防反弹处理S2的具体步骤如图6所示:
[0087]在执行所述防反弹处理S2之前,首先加载获取电池测量处理的结果作为防反弹处理的输入电量;所述防反弹处理具体包括步骤:
[0088]S21,判断电池是否处于充电状态。如果电池正处于充电状态,则进入步骤S22,否则进入步骤S23 ;
[0089]S22,判断输入电量是否小于显示电量,如果是的话,进入步骤S24,否则,进入步骤S25 ;
[0090]S23,判断输入电量是否大于显示电量,如果是的话,进入步骤S24,否则,进入步骤S25 ;
[0091]S24,将当前显示电量的值赋给输出电量;[0092]S25,将输入电量的值赋给输出电量。
[0093]使用以上处理后,虽然能够有效地提高电池电量测量的准确度,但效果还是不够理想。主要原因是系统复杂度太高,不可能完全精确地将所有模块运行情况换算成电压补偿值,并且不同的电池其特性也不一样,再加上ADC测量误差等等,最后得到的结果波动幅度还是较大。考虑到电池电量不可能发生突变,因此本发明实施例对经过上述方法处理后的结果再进行斜率限定处理和电量滤波处理,在时间上牵制住电池电量的快速波动。所述斜率限定处理的具体步骤如图7所示:
[0094]在执行所述斜率限定处理步骤前,首先加载步骤S2的输出电量作为斜率限定处理的输入电量Hin ;所述所述斜率限定处理包括步骤:
[0095]S31,判断输入电量nin是否大于显示电量nm,如果是,进入步骤S32,否则,进入步骤 S34 ;
[0096]S32,根据IXD背光亮度Vbl,CPU运行频率ν_、GPU的运行频率Vgpu以及是否连接电脑计算斜率系数N;
[0097]S33,输出电量 nQUt 为 nout=((int) (nin_nm)/N+l)+nm ;
[0098]S34,判断输入电量nin是否小于显示电量nm,如果是,进入步骤S35,否则,进入步骤 S37;
[0099]S35,根据IXD背光亮度Vbl,CPU运行频率ν_、GPU的运行频率Vgpu以及是否连接电脑计算斜率系数N;
[0100]S36,输出电量 nQUt 为 nout=((int) (nin-nm) /N-l)+nm ;
[0101]S37,将输入电量的值赋给输`出电量。
[0102]优选的,在步骤S32中,N的计算方式如下:
[0103]充电状态:N=10+(30*Vbl/Vblmax)+ (10*Vcpu/VcpumJ +(I(^VgpiZVgpumax),
[0104]放电状态:N=60-(30*(Vbl)/Vblmax)-(IO^piAcpufflax)-(I(^VgpiZVgpumax),
[0105]其中数字的取值,要根据实际的电池、背光、CPU、GPU进行调整。
[0106]使用这样的算法后,电池电量的最大变化率被限制,从而达到很好的平滑效果。
[0107]在放电一段时间且电池未放完后就插入充电器、或者充电一段时间且电池未充满时就断开充电器、或者长时间高负荷运行后然后突然转入到低负荷运行等,这些时候的电量仅通过电压是最难计算的,一般都会出现偏差较大的情况。由于加入了防反弹措施,通常出现的情况就是很长一段时间内显示的电池电量都保持在同一个水平,而实际上电池是在充电或放电的。针对这种情况,本实施例采用模拟充放电处理,按照比正常充放电慢的速度来模拟电池充放电过程。由于模拟的充放电速度一定会比实际的充放电速度慢,因此一段时间后,计算得到的电量值会逐渐向显示的电量值靠近,最终显示电量将与计算的电量值相等。所述模拟充放电处理的具体步骤如图8所示:
[0108]在执行所述模拟充放电处理步骤前,首先加载防反弹处理的结果作为模拟充放电的输入电量nin ;所述模拟充放电处理包括步骤:
[0109]S41,判断显示电量是否发生改变,如果是,则进入步骤S42,否则,进入步骤S43;
[0110]S42,清零计时器Ts,并进入步骤S411;
[0111]S43,判断电池是否处于充电状态,如果是,进入步骤S44,否则,进入步骤S45 ;
[0112]S44,计算当前条件下,充电应该产生变化的时间t。,并进入步骤S46 ;[0113]S45,判断电池是否处于放电状态,如果是,进入步骤S47,否则,进入步骤S411 ;
[0114]S46,判断Ts是否大于t。,,如果是,进入步骤S48,否则进入步骤S411;
[0115]S47,计算当前条件下,放电应产生变化的时间td,并进入步骤S49;
[0116]S48,计算输出电量η。#=]^+!,清零计时器Ts,并进入S412;
[0117]S49,判断Ts是否大于td,如果是,则进入步骤S410,否则进入步骤S411;
[0118]S410,计算输出电量η_=η?η-1,清零计时器!^,并进入步骤S412 ;
[0119]S411,将输入电量的值赋给输出电量;
[0120]S412,返回输出电量。
[0121]经过这样的处理后,用户会感觉充电时电池电量比较均匀地上升,放电时电池电量比较均匀地下降,而不会出现长时间处于同一水平的情况,从而很好地提升了用户体验。
[0122]所述电量滤波处理的具体步骤如图9所示,在执行所述电量滤波处理步骤前,首先将所述模拟充放电处理的结果作为所述电量滤波处理的输入电量,所述电量滤波处理具体包括步骤:
[0123]S51,将滤波队列中最早的值移除;
[0124]S52,将输入电量的值加入到队列末尾;
[0125]S53,对滤波队列中所有值取平均值赋给输出电量。
[0126]通过这样的处理,使得正负范围内的波动被相互抵消掉,从而达到很好的平滑效
果O
[0127]系统在关机后,计算电量的软件就无法正常运行,因此通常的做法就是每次开机时重新计算电池电量。由于上述的一些原因,最终计算出来的电量可能会与关机前的电量偏差10%甚至更多,这会给客户非常糟糕的体验。为了解决这个问题,本系统设计有插充电器自动开机功能,并加入所述保存电量处理。如图10所示,所述保存电量处理的具体步骤为:
[0128]S61,判断显示电量是否发生改变,如果是,则进入步骤S64,否则进入步骤S63;
[0129]S62,判断用户是否修改系统时间,如果是,则进入步骤S64 ;
[0130]S63,判断距离上次保存时间是否已经达到tsave的时长,如果已经达到,则进入步骤S64,否则,进入步骤S66,其中tsave是一个预先设定的值;
[0131]S64,保存当前电量信息和时间信息到文件系统;
[0132]S65,清空用于记录距离上次保存时间的计时器Tn。;
[0133]S66,保存完成。
[0134]所述保存电量处理的意义在于作为下次开机时计算电量的参考。下次开机时,例如用户手动开机或插充电器充电开机时,先从文件系统中加载最后的电量和时间信息,然后和当前计算得到的电池电量和时间对比。如果电池电量相差不大,且时间变化未超过指定的值,则认为从文件系统中加载到的电池电量信息有效,后续的计算都在此基础之上进行。这样就可以保证用户在重新启动或关机时间不是很长的情况下,保证电池电量显示的一致性。如果电池电量偏差较大,例如用户更换电池,或者时间偏差很久或时间倒退,例如更换电池、或者长时间关机后电池已经漏掉了很多,这时用户通常也不太记得最后一次关机时电池电量是多少了,那么就直接使用当前计算得到的电量值,而忽略掉之前存储的电量信息。如果在开机时不能获取到最后存储的电量信息,那么只能直接使用计算得到的电池电量。这种情况通常只会发生在工厂生产时,因此不会影响用户正常使用。
[0135]所述开机预加载的具体步骤如图11所示,包括步骤:
[0136]S71,按照SI的步骤获取电池的测量电量;
[0137]S72,将S71步骤获取的测量电量按照S5的步骤进行电量滤波处理;
[0138]S73,判断滤波队列是否已满,如果是,进入步骤S74,否则,返回步骤S71;
[0139]S74,从文件系统中加载电量信息及时间信息;
[0140]S75,判断从文件系统中加载的电量信息是否有效,如果有效,进入步骤S76,否则不作处理;
[0141]S76,设定当前显示电量为保存的电量值,并使用保存的电量值填充滤波队列;
[0142]S77,开机初始化完成。
[0143]除了上述处理,本设计中还使用了电压平均值、滤掉方差较大的值、查表法换算电池电量等常规设计,未在本文档中详细描述。可以理解,本发明是应用在无电流测量的系统上,但本发明对电池电量的处理方法,显然也可以用于带电流测量的系统或库伦芯片上。
[0144]需要说明的是,虽然上述实施例在一个实施例中使用了所述防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理以及保存电量处理,但这六项处理并不必须在一个实施例中全部使用,可以根据需要只选择其中的一项或多项以优化结果。同时所述防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理的处理顺序也不是必然如上述实施例所示,可以根据使用者的需要作出相应的适当调整。
[0145]以上所述是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
【权利要求】
1.一种测量和计算系统电池电量的改进方法,其特征在于,包括以下步骤: 步骤一、根据系统主要耗电设备的状态对利用ADC测量电池电压法得到的基准电压U进行电压补偿,并根据补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量; 步骤二、对所述电池的测量电量进行防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理和保存电量处理中的一项或多项,并将处理后的电量更新电池当前的显示电量。
2.根据权利要求1所述方法,其特征在于,所述步骤一具体包括以下步骤: 步骤1,利用ADC测量电池电压法获得电池的基准电压U ; 步骤2,根据系统主要耗电设备的状态,对每个所述主要耗电设备依据以下公式计算每个所述主要耗电设备的补偿电压; 当电池处于放电状态时:u补偿电压=U补偿偏移量+F Oj) *v当前值/V最大值, 当电池处于充电状态时:u补偿电压=U补偿偏移量-F Oj) *v当前值/V最大值; 其中,Vgtm是当前主要耗电设备对应属性的值,ViMt是所述对应属性可达到的最大值,F(U)是以所述基准电压为参数的函数,表示根据当前所述基准电压计算出主要耗电设备运行在所述对应属性最大值时的最大补偿电压?为补偿偏移量,其大小与系统主要耗电设备当前的状态相关; 步骤3,计算所述基准电压与所有所述主要耗电设备的补偿电压的总和,作为补偿后的电压; 步骤4,根据所述补偿后的电压通过电压-电量关系表获得对应的电量作为电池的测量电量。
3.根据权利要求2所述方法,其特征在于,所述主要耗电设备至少包括IXD背光、CPU和GPU ;对于LCD背光,所述对应属性为LCD背光亮度,对于CPU,所述对应属性为CPU运行频率值,对于GPU,所述对应属性为GPU运行频率值。
4.根据权利要求1所述方法,其特征在于,所述防反弹处理、斜率限定处理、模拟充放电处理、电量滤波处理中的每一项在处理时,都将上一项处理的输出电量作为当前处理的输入电量,并将当前处理的输出电量作为下一项处理的输入电量,与所述步骤一相连的处理的输入电量是经所述步骤一处理后的测量电量,最后一个处理的输出电量作为步骤二的所述电池当前的显示电量。
5.根据权利要求4所述方法,其特征在于,所述防反弹处理具体包括:将输入电量与电池当前的显示电量进行对比,当电池处于放电状态时,若所述输入电量大于所述电池当前的显示电量,则采用所述电池当前的显示电量作为输出电量;当电池处于充电状态时,若所述输入电量小于所述电池当前的显示电量,则采用所述电池当前的显示电量作为所述输出电量;其他情况采用所述输入电量作为输出电量。
6.根据权利要求4所述方法,其特征在于,所述斜率限定处理具体包括:将输入电量与电池当前的显示电量进行对比,如果所述输入电量nin大于所述电池当前的显示电量nm,则输出电量η—为:η_= (int) ((nin_nm)/N+l)+nm ;如果所述输入电量nin小于所述显示电量nm,则输出电量为m。, (int) ((nin_nm)/N_l)+nm;如果所述输入电量nin等于所述显示电量nm,输出电量Iitjut为:η_=η?η ;其中nin Iitjut及nm为以百分制显示时百分号前面的数值,N为根据当前工作电流大小实时调整的系数。
7.根据权利要求4所述方法,其特征在于,所述模拟充放电处理具体包括:当系统检测到电池当前的显示电量在一段时间内未发生变动时,若系统处于充电状态,则计算在充电状态下模拟充电所需时长t。,在t。时长范围内,将所述输入电量nin按照每单位时间加I的速率变化作为输出电量;若系统处于放电状态,则计算在放电状态下模拟放电所需时长td,在td时长范围内,将所述输入电量nin按照每单位时间减I的速率变化作为输出电量,其中所述nin为以百分制表示时百分号前面的数值。
8.根据权利要求4所述方法,其特征在于,所述电量滤波处理具体包括:将输入电量的值加入到滤波队列末尾,将队列中最早的一个数据删除,然后对滤波队列中所有值取平均值作为输出电量。
9.根据权利要求1所述方法,其特征在于,所述保存电量处理包括步骤:在检测到电池当前的显示电量发生改变,或者距离上次保存时间超过预设时间,或者用户修改时间时,将保存所述显示电量以及时间信息到文件系统,以参与下次系统开机时电量的测量计算。
10.根据权利要求9所述方法,其特征在于,所述保存电量处理还包括步骤:在下次系统开机时,先从文件系统中加载关机前最后保存的电量信息和时间信息,并计算开机时的测量电量,然后对比所述加载到的电量与所述计算的测量电量,如果二者电量相差不大,且时间变化未超过指定的值,则认为所述从文件系统中加载到的电量信息有效,开机后初始的显示电量将依据所述加载的电量信息进行计算,如果电量偏差较大,则直接使用所述计算得到的测量电 量,忽略之前存储的电量信息。
【文档编号】G01R31/36GK103792489SQ201310594558
【公开日】2014年5月14日 申请日期:2013年11月22日 优先权日:2013年11月22日
【发明者】刘荣, 宋夏, 张享隆, 郭崇鑫, 王业飞, 朱长春 申请人:广州视源电子科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1