測量和計(jì)算系統(tǒng)電池電量的改進(jìn)方法
【專利摘要】本發(fā)明公開了一種測量和計(jì)算系統(tǒng)電池電量的改進(jìn)方法,包括以下步驟:步驟一、根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài)對利用ADC測量電池電壓法得到的基準(zhǔn)電壓U進(jìn)行電壓補(bǔ)償,并根據(jù)補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量;步驟二、對所述電池的測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理和保存電量處理中的一項(xiàng)或多項(xiàng),并將處理后的電量更新電池當(dāng)前的顯示電量。使用本發(fā)明,可以在不能取得電流信息的前提下,僅使用ADC電壓測量電池電量法,并對通過該方法上獲得測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理和保存電量處理中的一項(xiàng)或多項(xiàng),使得測量準(zhǔn)確度大幅度上升。
【專利說明】測量和計(jì)算系統(tǒng)電池電量的改進(jìn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)自動化測量方法,尤其涉及一種測量和計(jì)算電池電量的改進(jìn)方法。
【背景技術(shù)】
[0002]在平板電腦、手機(jī)等使用電池的設(shè)備中,一般都需要顯示當(dāng)前電池的電量。對于測量精度要求很高的場合,一般要用到庫侖計(jì)等專用芯片。庫侖計(jì)通過測量電池的電壓、充/放電電流,可精確計(jì)算出電池存儲和消耗的能量,從而得出當(dāng)前電池電量。
[0003]為了節(jié)約成本,對于精度要求不是很高的消費(fèi)電子產(chǎn)品來說,通常不會使用這類專用的電量計(jì)芯片,而是使用僅通過ADC測量電池電壓的方法來測量和計(jì)算電池電量。該方法的原理是,電池在不同的電量下,其輸出電壓是不一樣的。電量越多,電壓就越高,相反,電量越少,電壓就越低。但實(shí)際情況是,電池電壓不單跟電量相關(guān),還跟充/放電電流相關(guān)。而測量電池電流又是比較困難的,因此一般的消費(fèi)電子產(chǎn)品不具備電池電流測量功能。所以不增加任何算法,僅是簡單地通過電壓來計(jì)算電池電量,效果是非常差的,有時(shí)誤差甚至能達(dá)到50%之多。
[0004]針對上述問題,有些設(shè)計(jì)就在此基礎(chǔ)之上增加了不同場景下的電壓補(bǔ)償功能。通過對不同場景下的電壓測量,記錄下電壓補(bǔ)償值,然后在測得實(shí)際電壓后根據(jù)不同的模式進(jìn)行補(bǔ)償。由于電壓波動較大,電壓補(bǔ)償也很難做得準(zhǔn)確,因此一般還會對計(jì)算結(jié)果進(jìn)行簡單的取平均值等運(yùn)算,使結(jié)果顯得較平穩(wěn)。
[0005]綜上,現(xiàn)有技術(shù)的主要缺點(diǎn)包括:
[0006]1、若使用專用庫侖計(jì)芯片,則成本較高,大約需要增加0.5?I美金;
[0007]2、不使用庫侖計(jì)芯片的,電池曲線不平滑、電量顯示誤差大、波動大,例如重新啟動系統(tǒng)前后電池電量偏差很大、充電時(shí)電量快速上升、拔掉充電器電量快速下降等等。
【發(fā)明內(nèi)容】
[0008]本發(fā)明主要解決在無電流測量功能的限制下,僅使用電壓方式在線測量電池電量偏差大以及電池充放電曲線波動大的問題。
[0009]為實(shí)現(xiàn)上述目的,本發(fā)明公開了一種測量和計(jì)算系統(tǒng)電池電量的改進(jìn)方法,具體包括以下步驟:
[0010]步驟一、根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài)對利用ADC測量電池電壓法得到的基準(zhǔn)電壓U進(jìn)行電壓補(bǔ)償,并根據(jù)補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量;
[0011]步驟二、對所述電池的測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理和保存電量處理中的一項(xiàng)或多項(xiàng),并將處理后的電量更新電池當(dāng)前的顯示電量。
[0012]較佳地,所述步驟一具體包括步驟:[0013]步驟1,利用ADC測量電池電壓法獲得電池的基準(zhǔn)電壓U ;
[0014]步驟2,根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài),對每個(gè)所述主要耗電設(shè)備依據(jù)以下公式計(jì)算每個(gè)所述主要耗電設(shè)備的補(bǔ)償電壓;
[οο? 5]當(dāng)電池處于放電狀態(tài)時(shí):u補(bǔ)償電壓=U補(bǔ)償偏移量+F Oj) 當(dāng)前值/V最大值,
[οο? 6]當(dāng)電池處于充電狀態(tài)時(shí):u補(bǔ)償電壓=U補(bǔ)償偏移量-F Oj) *v當(dāng)前值/V最大值;
[0017]其中,V 是當(dāng)前主要耗電設(shè)備對應(yīng)屬性的值,是所述對應(yīng)屬性可達(dá)到的最大值,F(xiàn)(U)是以所述基準(zhǔn)電壓為參數(shù)的函數(shù),表示根據(jù)當(dāng)前所述基準(zhǔn)電壓計(jì)算出主要耗電設(shè)備運(yùn)行在所述對應(yīng)屬性最大值時(shí)的最大補(bǔ)償電壓?為補(bǔ)償偏移量,其大小與系統(tǒng)主要耗電設(shè)備當(dāng)前的狀態(tài)相關(guān);
[0018]步驟3,計(jì)算所述基準(zhǔn)電壓與所有所述主要耗電設(shè)備的補(bǔ)償電壓的總和,作為補(bǔ)償后的電壓;
[0019]步驟4,根據(jù)所述補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量
[0020]其中,所述主要耗電設(shè)備至少包括IXD背光、CPU和GPU ;對于IXD背光,所述對應(yīng)屬性為LCD背光亮度,對于CPU,所述對應(yīng)屬性為CPU運(yùn)行頻率值,對于GPU,所述對應(yīng)屬性為GPU運(yùn)行頻率值。
[0021]本發(fā)明不同于一些同樣未使用電流測量的方案僅依據(jù)幾個(gè)特定的應(yīng)用場景來設(shè)定補(bǔ)償值,而是針對選定的主要耗電設(shè)備計(jì)算而來,可以獲得較為準(zhǔn)確的電壓補(bǔ)償值。
[0022]為了進(jìn)一步解決所·述電池的顯示電量誤差大、電池曲線不平滑、波動大等問題,在所述步驟一之后,還可以包括對所述電池的測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的一項(xiàng)或多項(xiàng),和/或包括獨(dú)立于步驟一的保存電量處理。其中所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的每一項(xiàng)在處理時(shí),都將上一項(xiàng)處理的輸出電量作為當(dāng)前處理的輸入電量,并將當(dāng)前處理的輸出電量作為下一項(xiàng)處理的輸入電量,與所述步驟一相連的處理的輸入電量是經(jīng)所述步驟一處理后的測量電量,最后一個(gè)處理的輸出電量作為步驟二的所述電池當(dāng)前的顯示電量。
[0023]其中,所述防反彈處理具體包括:將輸入電量與電池當(dāng)前的顯示電量進(jìn)行對比,當(dāng)電池處于放電狀態(tài)時(shí),若所述輸入電量大于所述電池當(dāng)前的顯示電量,則采用所述電池當(dāng)前的顯示電量作為輸出電量;當(dāng)電池處于充電狀態(tài)時(shí),若所述輸入電量小于所述電池當(dāng)前的顯示電量,則采用所述電池當(dāng)前的顯示電量作為所述輸出電量;其他情況采用所述輸入電量作為輸出電量。
[0024]所述斜率限定處理具體包括:將輸入電量與電池當(dāng)前的顯示電量進(jìn)行對比,如果所述輸入電量nin大于所述電池當(dāng)前的顯示電量]^,則輸出電量為η—= (int) ((nin-nm) /N+l)+nm ;如果所述輸入電量nin小于所述顯示電量nm,則輸出電量為η—= (int) ((nin_nm)/N-1) +nm;如果所述輸入電量nin等于所述顯示電量nm,輸出電量為Atjut=Iiin ;其中nin nout及nm為以百分制顯示時(shí)百分號前面的數(shù)值,N為一個(gè)根據(jù)當(dāng)前工作電流大小實(shí)時(shí)調(diào)整的系數(shù)。
[0025]現(xiàn)有的技術(shù)使用過的是固定斜率的方式,即不管充放電電流為多少,都使用固定的斜率。而本發(fā)明則會根據(jù)當(dāng)前充放電電流動態(tài)調(diào)整斜率,從而更接近真實(shí)情況。
[0026]所述模擬充放電處理具體包括:當(dāng)系統(tǒng)檢測到電池當(dāng)前的顯示電量在一段時(shí)間內(nèi)未發(fā)生變動,若系統(tǒng)處于充電狀態(tài),則計(jì)算在充電狀態(tài)下模擬充電所需時(shí)長t。,在t。時(shí)長范圍內(nèi),將所述輸入電量nin按照每單位時(shí)間加I的速率變化作為輸出電量;若系統(tǒng)處于放電狀態(tài),則計(jì)算在放電狀態(tài)下模擬放電所需時(shí)長td,在td時(shí)長范圍內(nèi),將所述輸入電量nin按照每單位時(shí)間減I的速率變化作為輸出電量,其中所述nin為以百分制表示時(shí)百分號前面的數(shù)值。
[0027]所述電量濾波處理具體包括:將輸入電量的值加入到濾波隊(duì)列末尾,將隊(duì)列中最早的一個(gè)數(shù)據(jù)刪除,然后對濾波隊(duì)列中所有值取平均值作為輸出電量。
[0028]本發(fā)明使用了隊(duì)列式濾波處理,而不是普通的平均值濾波方式,使用這種方式不僅會在數(shù)值上產(chǎn)生濾波效果,在時(shí)間上也會產(chǎn)生濾波效果。
[0029]所述保存電量處理包括步驟:在檢測到電池當(dāng)前的顯示電量發(fā)生改變,或者超過預(yù)設(shè)時(shí)間,或者用戶修改時(shí)間時(shí),將保存所述顯示電量及時(shí)間信息到文件系統(tǒng),以參與下次系統(tǒng)開機(jī)時(shí)電量的測量計(jì)算。下次系統(tǒng)開機(jī)時(shí),先從文件系統(tǒng)中加載最后的電量信息和時(shí)間信息,然后和當(dāng)前計(jì)算得到的電量和時(shí)間對比,如果電量相差不大,且時(shí)間變化未超過指定的值,則認(rèn)為從文件系統(tǒng)中加載到的電量信息有效,后續(xù)的計(jì)算都在此基礎(chǔ)上進(jìn)行,如果電量偏差較大,則直接使用當(dāng)前計(jì)算得到的電量值,忽略之前存儲的電量信息。
[0030]本發(fā)明實(shí)施例所要解決的技術(shù)問題是在不能取得電流信息的前提下,針對僅使用ADC電壓測量電池電量法,并通過在該方法和算法上的改進(jìn),使得測量準(zhǔn)確度大幅度上升,電池充放電曲線更接近真實(shí)情況,從而大大提升用戶使用體驗(yàn)。
[0031]實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
[0032]1、對比使用專用庫侖計(jì)芯片或增加電流測量的方案,本發(fā)明幾乎不增加額外的成本,直接使用芯片自帶的ADC即可完成電池電量測定功能;
[0033]2、對比同類無電流測量的方案,因?yàn)楸景l(fā)明使用了更為精確的電壓補(bǔ)償方法和算法,所以本發(fā)明測得的結(jié)果更為準(zhǔn)確;
[0034]3、對比同類無電流測量的方案,由于本發(fā)明使用了較好的算法以及智能參數(shù)調(diào)整功能,例如動態(tài)的斜率限制功能、模擬充放電處理過程、隊(duì)列式濾波處理等,使得本發(fā)明得到的電池充放電曲線更接近真實(shí)情況;
[0035]4、對比同類測量方案,得益于本發(fā)明電量保存處理及開機(jī)預(yù)加載功能,本發(fā)明在關(guān)機(jī)后馬上開機(jī)或重新啟動,電量不會突變。
【專利附圖】
【附圖說明】
[0036]圖1是本發(fā)明的一個(gè)實(shí)施例的流程圖。
[0037]圖2是圖1所示的步驟SOl的具體流程圖。
[0038]圖3是本發(fā)明實(shí)施例計(jì)算補(bǔ)償電壓的流程圖。
[0039]圖4是本發(fā)明實(shí)施例查表獲得測量電量流程圖。
[0040]圖5是本發(fā)明的另一個(gè)實(shí)施例的流程圖。
[0041]圖6是本發(fā)明實(shí)施例防反彈處理流程圖。
[0042]圖7是本發(fā)明實(shí)施例斜率限定處理流程圖。
[0043]圖8是本發(fā)明實(shí)施例模擬充放電處理流程圖。
[0044]圖9是本發(fā)明實(shí)施例電量濾波處理流程圖。[0045]圖10是本發(fā)明實(shí)施例保存電量處理流程圖。
[0046]圖11是本發(fā)明實(shí)施例開機(jī)預(yù)加載處理流程圖。
【具體實(shí)施方式】
[0047]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0048]如圖1所示,為本發(fā)明一個(gè)實(shí)施例的流程圖,具體包括步驟:
[0049]S01、根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài)對利用ADC測量電池電壓法得到的基準(zhǔn)電壓U進(jìn)行電壓補(bǔ)償,并根據(jù)補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測
量電量;
[0050]S02、對所述電池的測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理和保存電量處理中的一項(xiàng)或多項(xiàng),并將處理后的電量更新電池當(dāng)前的顯示電量。
[0051]下面結(jié)合圖2,首先詳細(xì)描述該實(shí)施例中的步驟SOl的執(zhí)行過程,具體包括步驟:
[0052]S11,利用ADC測量電池電壓法獲得電池的基準(zhǔn)電壓,優(yōu)選的,通過連續(xù)10次AD轉(zhuǎn)換并取平均值得到基準(zhǔn)電壓; [0053]S12,根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài),計(jì)算每個(gè)所述主要耗電設(shè)備的補(bǔ)償電壓;
[0054]S13,計(jì)算所述基準(zhǔn)電壓與所有所述主要耗電設(shè)備的補(bǔ)償電壓的總和,作為補(bǔ)償后的電壓;
[0055]S14,根據(jù)所述補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量;
[0056]S15,用所述電池的測量電量更新電池當(dāng)前的顯示電量。
[0057]其中,所述步驟S12中,主要耗電設(shè)備根據(jù)不同的系統(tǒng)選擇不同的設(shè)備。例如在平板電腦中,IXD背光和CPU、GPU是主要的耗電設(shè)備,耗電不固定。因此通過測量不同IXD背光亮度、CPU頻率、GPU頻率在不同電池電壓下的電壓偏差值,然后通過曲線擬合,得到一些關(guān)鍵點(diǎn)的數(shù)據(jù),然后再根據(jù)實(shí)際的LCD背光亮度、CPU頻率、GPU頻率即可計(jì)算出電壓補(bǔ)償值,從而可以較準(zhǔn)確地計(jì)算出電池電量。
[0058]假設(shè)當(dāng)前通過ADC測量到的電池電壓為U,那么通過補(bǔ)償后的電壓可表示為Uc=RUblc^UUgpue。其中U。為補(bǔ)償后的電壓,Uble為LCD背光補(bǔ)償電壓,Uepue為CPU補(bǔ)償電壓,Ugpu。為GPU補(bǔ)償電壓。
[0059]LCD背光補(bǔ)償電壓Ublc=Ubl.,+Fbl (U) *Vbl/Vblmax,其中Ubl為補(bǔ)償偏移量,與實(shí)際的系統(tǒng)、所使用的電池等都相關(guān),需要實(shí)測決定;Fbl為一個(gè)函數(shù),它會根據(jù)當(dāng)前電壓值計(jì)算出最大亮度的補(bǔ)償值,該函數(shù)與實(shí)際的LCD背光、所使用的電池等都相關(guān),需要實(shí)測決定;Vbl是當(dāng)前LCD背光亮度值,Vblmax是背光最大值。
[0060]CPU 補(bǔ)償電壓 Uepuc=Uepu—t+F^U) *Vepu/Vepumax,其中 Ueputjffset 為補(bǔ)償偏移量,與實(shí)際的系統(tǒng)、所使用的電池等都相關(guān),需要實(shí)測決定為一個(gè)函數(shù),它會根據(jù)當(dāng)前電壓值計(jì)算出最大CPU頻率時(shí)的補(bǔ)償值,該函數(shù)與實(shí)際的CPU、所使用的電池等都相關(guān),需要實(shí)測決定是當(dāng)前CPU的運(yùn)行頻率值,Vcpumax是CPU運(yùn)行的頻率最大值。
[0061]GPU補(bǔ)償電壓υ_ε=υ—^8Ρ11⑶^VgpiAgpumax,其中Ugputjffset為補(bǔ)償偏移量,與實(shí)際的系統(tǒng)、所使用的電池等都相關(guān),需要實(shí)測決定;Fgpu為一個(gè)函數(shù),它會根據(jù)當(dāng)前電壓值計(jì)算出最大GPU頻率時(shí)的補(bǔ)償值,該函數(shù)與實(shí)際的GPU、所使用的電池等都相關(guān),需要實(shí)測決定;Vgpu是當(dāng)前GPU的運(yùn)行頻率值,Vgpumax是GPU運(yùn)行的頻率最大值。
[0062]在充電時(shí),也需要根據(jù)LCD背光、CPU頻率、GPU頻率等計(jì)算出充電電壓的補(bǔ)償值。因?yàn)樵谙到y(tǒng)中,充電器提供的總電流是固定的,當(dāng)系統(tǒng)運(yùn)行時(shí)需要的電流大時(shí),會自動降低充電電流。而不同的充電電流,即使在電池容量相同的情況下,電池電壓也不一樣,因此需要針對充電做電壓補(bǔ)償。充電電壓補(bǔ)償計(jì)算公式與放電時(shí)的計(jì)算公式形式上基本一樣,不同的地方在于,當(dāng)背光/CPU/GPU電流增大時(shí),補(bǔ)償電壓減小,因此使用的參數(shù)不一樣。充電時(shí)所使用的計(jì)算公式形式上為:Uble=Ubl—Mfset-Fbl (U) *Vbl/Vblmax ;Ucpuc=Ucpu offset-Fcpu(U) *VCPU/
Vcpumax ?^gpuc ^gpu offset Fgpu(U)5^VgpuZVgpumaxO
[0063]另外,考慮到USB 口在連接電腦和充電器時(shí),能夠獲取到的最大電流是不一樣的,這直接會影響到充電時(shí)電池電量的測量。因此在本設(shè)計(jì)中增加了供電端檢測的功能,當(dāng)檢測到不同的供電端時(shí),會使用不同的補(bǔ)償參數(shù)。作為優(yōu)選地檢測依據(jù)是,連接電腦時(shí),電腦會和設(shè)備進(jìn)行數(shù)據(jù)通信,而連接充電器時(shí)不會有數(shù)據(jù)通信。
[0064]為方便理解,下面將通過圖3對電壓補(bǔ)償處理流程進(jìn)行描述。
[0065]假設(shè)通過ADC測量電壓法測得的電壓為U ;
[0066]S131,判斷是否有外部電源輸入,如果有,則進(jìn)入步驟S132,否則,進(jìn)入步驟S134;
[0067]S132,判斷連接的外部電源是否是電腦,如果是,進(jìn)入步驟S133,否則,進(jìn)入步驟135;
[0068]S133,計(jì)算電腦模式下IXD背光補(bǔ)償`電壓Ubl。、CPU補(bǔ)償電壓U聊c、GPU補(bǔ)償電壓U.Ugpuc ?
[0069]S134,計(jì)算放電模式下IXD背光補(bǔ)償電壓Ubl。、CPU補(bǔ)償電壓Ucpuc、GPU補(bǔ)償電壓U.Ugpuc ?
[0070]S135,計(jì)算充電模式下IXD背光補(bǔ)償電壓Ubl。、CPU補(bǔ)償電壓Ucpuc、GPU補(bǔ)償電壓U.Ugpuc ?
[0071]S136,依據(jù)公式υε=υ+υωε+υερικ+υ_。計(jì)算補(bǔ)償后的電壓。
[0072]圖4所示為步驟S14中查表得到電池電量的具體流程,具體包括步驟:
[0073]S141,判斷電池是否處于充電狀態(tài),如果正處于充電狀態(tài),則進(jìn)入步驟S142,否則進(jìn)入步驟S143 ;
[0074]S142,通過查充電電壓表獲取當(dāng)前電池的測量電量,并進(jìn)入步驟S144 ;
[0075]S143,通過查放電電壓表獲取當(dāng)前電池的測量電量,并進(jìn)入步驟S144 ;
[0076]S144,返回當(dāng)前電池的測量電量。
[0077]雖然由圖2所示實(shí)施例獲得的顯示電量,已經(jīng)通過對主要耗電設(shè)備擬合電壓補(bǔ)償曲線,獲得更加精準(zhǔn)的電池電量,但是如果在該實(shí)施例的基礎(chǔ)上再加入防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理以及保存電量處理中的一項(xiàng)或多項(xiàng),將會獲得更加接近真實(shí)情況且符合人們心理的結(jié)果。
[0078]而且可以理解的,所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理以及保存電量處理是相互獨(dú)立且不分順序的,可以根據(jù)測量精確需求而選擇其一項(xiàng)或多項(xiàng)進(jìn)行處理。優(yōu)選的,在圖2所示實(shí)施例獲得的顯示電量的基礎(chǔ)上進(jìn)行上述全部處理。[0079]如圖5所示,為本發(fā)明一個(gè)優(yōu)選實(shí)施例的流程圖,包括步驟:
[0080]SI,獲取電池測量電量:與第一實(shí)施例的步驟Sll至S14相同,根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài)對利用ADC測量電池電壓法得到的基準(zhǔn)電壓進(jìn)行電壓補(bǔ)償,并根據(jù)補(bǔ)償后的電壓確定電池的測量電量。
[0081]S2,防反彈處理:假設(shè)當(dāng)前顯示電量為IV如果已經(jīng)確認(rèn)電池處于放電狀態(tài),例如未連接充電器亮屏運(yùn)行,那么對于計(jì)算得到大于nm的結(jié)果應(yīng)該要丟棄,否則電池不在充電但電池電量卻在上升會給用戶很糟糕的體驗(yàn),此時(shí)直接使用當(dāng)前顯示電量的值\作為該步處理的結(jié)果;同樣,如果確認(rèn)電池在充電狀態(tài),而計(jì)算得到的電量卻小于nm,則也要丟棄,防止電池充電時(shí)電池電量反而下降的情況發(fā)生,相應(yīng)地也使用當(dāng)前顯示電量的值化作為該步處理的結(jié)果;對于其他情況,使用經(jīng)SI步驟獲得的測量電量作為該步處理的結(jié)果。
[0082]S3,斜率限定處理:不直接使用經(jīng)步驟S2的處理結(jié)果,而是依據(jù)當(dāng)前顯示電量,對經(jīng)過步驟S2處理后的電量做進(jìn)一步的調(diào)整。根據(jù)系統(tǒng)當(dāng)前充放電狀態(tài)以及主要耗電設(shè)備的狀態(tài),計(jì)算出一個(gè)電量變化率N,利用此變化率限制電量變化的幅度,在時(shí)間上牽制住電池電量的快速波動。假設(shè),將所述步驟S2處理的結(jié)果記做nin,將當(dāng)前顯示電量記作nm。當(dāng)nin比化大時(shí),根據(jù)公式((int) (nin-nm)/N+l)+nm對所述步驟S2處理結(jié)果進(jìn)一步調(diào)整;當(dāng)1^比化小時(shí),根據(jù)公式((int) (nin-nm)/N-l)+nm對所述步驟S2處理結(jié)果進(jìn)一步調(diào)整;當(dāng)1^等于nm時(shí),則不作調(diào)整;其中nin及nm為以百分制顯示時(shí)百分號前面的數(shù)值。
[0083]S4,模擬充放電處理:若系統(tǒng)檢測到所述顯示電量較長時(shí)間未發(fā)生變動,并且已經(jīng)明確電池的充放電狀態(tài)的情況下,使所述經(jīng)步驟S3處理后的電量在一個(gè)根據(jù)系統(tǒng)當(dāng)前狀態(tài)確定的時(shí)間內(nèi),以低于正常充放電時(shí)變化的幅度改變。由于模擬的充放電速度比實(shí)際的充放電速度慢,因此一段時(shí)間后,計(jì)算得到的電量會逐漸向顯示的電量靠近,最終二者相等。這樣的處理使用戶感覺充電時(shí)電池電量比較均勻地上升,放電時(shí)電池電量比較均地下降。
·[0084]S5,電量濾波處理:將經(jīng)過以上步驟調(diào)整后得到的電量加入到一個(gè)平滑濾波隊(duì)列,并將隊(duì)列中最早的一個(gè)數(shù)據(jù)刪除,然后取平均值計(jì)算得到最終的電池電量。并將處理結(jié)果用于更新所述顯示電量。
[0085]S6,保存電量處理:在檢測到電池當(dāng)前的顯示電量發(fā)生改變,或者距離上次保存超過預(yù)設(shè)時(shí)間,或者用戶修改時(shí)間時(shí),將保存當(dāng)前所述顯示電量的值及時(shí)間信息到文件系統(tǒng),以參與下次系統(tǒng)開機(jī)時(shí)電量的測量計(jì)算。
[0086]其中所述防反彈處理S2的具體步驟如圖6所示:
[0087]在執(zhí)行所述防反彈處理S2之前,首先加載獲取電池測量處理的結(jié)果作為防反彈處理的輸入電量;所述防反彈處理具體包括步驟:
[0088]S21,判斷電池是否處于充電狀態(tài)。如果電池正處于充電狀態(tài),則進(jìn)入步驟S22,否則進(jìn)入步驟S23 ;
[0089]S22,判斷輸入電量是否小于顯示電量,如果是的話,進(jìn)入步驟S24,否則,進(jìn)入步驟S25 ;
[0090]S23,判斷輸入電量是否大于顯示電量,如果是的話,進(jìn)入步驟S24,否則,進(jìn)入步驟S25 ;
[0091]S24,將當(dāng)前顯示電量的值賦給輸出電量;[0092]S25,將輸入電量的值賦給輸出電量。
[0093]使用以上處理后,雖然能夠有效地提高電池電量測量的準(zhǔn)確度,但效果還是不夠理想。主要原因是系統(tǒng)復(fù)雜度太高,不可能完全精確地將所有模塊運(yùn)行情況換算成電壓補(bǔ)償值,并且不同的電池其特性也不一樣,再加上ADC測量誤差等等,最后得到的結(jié)果波動幅度還是較大。考慮到電池電量不可能發(fā)生突變,因此本發(fā)明實(shí)施例對經(jīng)過上述方法處理后的結(jié)果再進(jìn)行斜率限定處理和電量濾波處理,在時(shí)間上牽制住電池電量的快速波動。所述斜率限定處理的具體步驟如圖7所示:
[0094]在執(zhí)行所述斜率限定處理步驟前,首先加載步驟S2的輸出電量作為斜率限定處理的輸入電量Hin ;所述所述斜率限定處理包括步驟:
[0095]S31,判斷輸入電量nin是否大于顯示電量nm,如果是,進(jìn)入步驟S32,否則,進(jìn)入步驟 S34 ;
[0096]S32,根據(jù)IXD背光亮度Vbl,CPU運(yùn)行頻率ν_、GPU的運(yùn)行頻率Vgpu以及是否連接電腦計(jì)算斜率系數(shù)N;
[0097]S33,輸出電量 nQUt 為 nout=((int) (nin_nm)/N+l)+nm ;
[0098]S34,判斷輸入電量nin是否小于顯示電量nm,如果是,進(jìn)入步驟S35,否則,進(jìn)入步驟 S37;
[0099]S35,根據(jù)IXD背光亮度Vbl,CPU運(yùn)行頻率ν_、GPU的運(yùn)行頻率Vgpu以及是否連接電腦計(jì)算斜率系數(shù)N;
[0100]S36,輸出電量 nQUt 為 nout=((int) (nin-nm) /N-l)+nm ;
[0101]S37,將輸入電量的值賦給輸`出電量。
[0102]優(yōu)選的,在步驟S32中,N的計(jì)算方式如下:
[0103]充電狀態(tài):N=10+(30*Vbl/Vblmax)+ (10*Vcpu/VcpumJ +(I(^VgpiZVgpumax),
[0104]放電狀態(tài):N=60-(30*(Vbl)/Vblmax)-(IO^piAcpufflax)-(I(^VgpiZVgpumax),
[0105]其中數(shù)字的取值,要根據(jù)實(shí)際的電池、背光、CPU、GPU進(jìn)行調(diào)整。
[0106]使用這樣的算法后,電池電量的最大變化率被限制,從而達(dá)到很好的平滑效果。
[0107]在放電一段時(shí)間且電池未放完后就插入充電器、或者充電一段時(shí)間且電池未充滿時(shí)就斷開充電器、或者長時(shí)間高負(fù)荷運(yùn)行后然后突然轉(zhuǎn)入到低負(fù)荷運(yùn)行等,這些時(shí)候的電量僅通過電壓是最難計(jì)算的,一般都會出現(xiàn)偏差較大的情況。由于加入了防反彈措施,通常出現(xiàn)的情況就是很長一段時(shí)間內(nèi)顯示的電池電量都保持在同一個(gè)水平,而實(shí)際上電池是在充電或放電的。針對這種情況,本實(shí)施例采用模擬充放電處理,按照比正常充放電慢的速度來模擬電池充放電過程。由于模擬的充放電速度一定會比實(shí)際的充放電速度慢,因此一段時(shí)間后,計(jì)算得到的電量值會逐漸向顯示的電量值靠近,最終顯示電量將與計(jì)算的電量值相等。所述模擬充放電處理的具體步驟如圖8所示:
[0108]在執(zhí)行所述模擬充放電處理步驟前,首先加載防反彈處理的結(jié)果作為模擬充放電的輸入電量nin ;所述模擬充放電處理包括步驟:
[0109]S41,判斷顯示電量是否發(fā)生改變,如果是,則進(jìn)入步驟S42,否則,進(jìn)入步驟S43;
[0110]S42,清零計(jì)時(shí)器Ts,并進(jìn)入步驟S411;
[0111]S43,判斷電池是否處于充電狀態(tài),如果是,進(jìn)入步驟S44,否則,進(jìn)入步驟S45 ;
[0112]S44,計(jì)算當(dāng)前條件下,充電應(yīng)該產(chǎn)生變化的時(shí)間t。,并進(jìn)入步驟S46 ;[0113]S45,判斷電池是否處于放電狀態(tài),如果是,進(jìn)入步驟S47,否則,進(jìn)入步驟S411 ;
[0114]S46,判斷Ts是否大于t。,,如果是,進(jìn)入步驟S48,否則進(jìn)入步驟S411;
[0115]S47,計(jì)算當(dāng)前條件下,放電應(yīng)產(chǎn)生變化的時(shí)間td,并進(jìn)入步驟S49;
[0116]S48,計(jì)算輸出電量η。#=]^+!,清零計(jì)時(shí)器Ts,并進(jìn)入S412;
[0117]S49,判斷Ts是否大于td,如果是,則進(jìn)入步驟S410,否則進(jìn)入步驟S411;
[0118]S410,計(jì)算輸出電量η_=η?η-1,清零計(jì)時(shí)器!^,并進(jìn)入步驟S412 ;
[0119]S411,將輸入電量的值賦給輸出電量;
[0120]S412,返回輸出電量。
[0121]經(jīng)過這樣的處理后,用戶會感覺充電時(shí)電池電量比較均勻地上升,放電時(shí)電池電量比較均勻地下降,而不會出現(xiàn)長時(shí)間處于同一水平的情況,從而很好地提升了用戶體驗(yàn)。
[0122]所述電量濾波處理的具體步驟如圖9所示,在執(zhí)行所述電量濾波處理步驟前,首先將所述模擬充放電處理的結(jié)果作為所述電量濾波處理的輸入電量,所述電量濾波處理具體包括步驟:
[0123]S51,將濾波隊(duì)列中最早的值移除;
[0124]S52,將輸入電量的值加入到隊(duì)列末尾;
[0125]S53,對濾波隊(duì)列中所有值取平均值賦給輸出電量。
[0126]通過這樣的處理,使得正負(fù)范圍內(nèi)的波動被相互抵消掉,從而達(dá)到很好的平滑效
果O
[0127]系統(tǒng)在關(guān)機(jī)后,計(jì)算電量的軟件就無法正常運(yùn)行,因此通常的做法就是每次開機(jī)時(shí)重新計(jì)算電池電量。由于上述的一些原因,最終計(jì)算出來的電量可能會與關(guān)機(jī)前的電量偏差10%甚至更多,這會給客戶非常糟糕的體驗(yàn)。為了解決這個(gè)問題,本系統(tǒng)設(shè)計(jì)有插充電器自動開機(jī)功能,并加入所述保存電量處理。如圖10所示,所述保存電量處理的具體步驟為:
[0128]S61,判斷顯示電量是否發(fā)生改變,如果是,則進(jìn)入步驟S64,否則進(jìn)入步驟S63;
[0129]S62,判斷用戶是否修改系統(tǒng)時(shí)間,如果是,則進(jìn)入步驟S64 ;
[0130]S63,判斷距離上次保存時(shí)間是否已經(jīng)達(dá)到tsave的時(shí)長,如果已經(jīng)達(dá)到,則進(jìn)入步驟S64,否則,進(jìn)入步驟S66,其中tsave是一個(gè)預(yù)先設(shè)定的值;
[0131]S64,保存當(dāng)前電量信息和時(shí)間信息到文件系統(tǒng);
[0132]S65,清空用于記錄距離上次保存時(shí)間的計(jì)時(shí)器Tn。;
[0133]S66,保存完成。
[0134]所述保存電量處理的意義在于作為下次開機(jī)時(shí)計(jì)算電量的參考。下次開機(jī)時(shí),例如用戶手動開機(jī)或插充電器充電開機(jī)時(shí),先從文件系統(tǒng)中加載最后的電量和時(shí)間信息,然后和當(dāng)前計(jì)算得到的電池電量和時(shí)間對比。如果電池電量相差不大,且時(shí)間變化未超過指定的值,則認(rèn)為從文件系統(tǒng)中加載到的電池電量信息有效,后續(xù)的計(jì)算都在此基礎(chǔ)之上進(jìn)行。這樣就可以保證用戶在重新啟動或關(guān)機(jī)時(shí)間不是很長的情況下,保證電池電量顯示的一致性。如果電池電量偏差較大,例如用戶更換電池,或者時(shí)間偏差很久或時(shí)間倒退,例如更換電池、或者長時(shí)間關(guān)機(jī)后電池已經(jīng)漏掉了很多,這時(shí)用戶通常也不太記得最后一次關(guān)機(jī)時(shí)電池電量是多少了,那么就直接使用當(dāng)前計(jì)算得到的電量值,而忽略掉之前存儲的電量信息。如果在開機(jī)時(shí)不能獲取到最后存儲的電量信息,那么只能直接使用計(jì)算得到的電池電量。這種情況通常只會發(fā)生在工廠生產(chǎn)時(shí),因此不會影響用戶正常使用。
[0135]所述開機(jī)預(yù)加載的具體步驟如圖11所示,包括步驟:
[0136]S71,按照SI的步驟獲取電池的測量電量;
[0137]S72,將S71步驟獲取的測量電量按照S5的步驟進(jìn)行電量濾波處理;
[0138]S73,判斷濾波隊(duì)列是否已滿,如果是,進(jìn)入步驟S74,否則,返回步驟S71;
[0139]S74,從文件系統(tǒng)中加載電量信息及時(shí)間信息;
[0140]S75,判斷從文件系統(tǒng)中加載的電量信息是否有效,如果有效,進(jìn)入步驟S76,否則不作處理;
[0141]S76,設(shè)定當(dāng)前顯示電量為保存的電量值,并使用保存的電量值填充濾波隊(duì)列;
[0142]S77,開機(jī)初始化完成。
[0143]除了上述處理,本設(shè)計(jì)中還使用了電壓平均值、濾掉方差較大的值、查表法換算電池電量等常規(guī)設(shè)計(jì),未在本文檔中詳細(xì)描述??梢岳斫?,本發(fā)明是應(yīng)用在無電流測量的系統(tǒng)上,但本發(fā)明對電池電量的處理方法,顯然也可以用于帶電流測量的系統(tǒng)或庫倫芯片上。
[0144]需要說明的是,雖然上述實(shí)施例在一個(gè)實(shí)施例中使用了所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理以及保存電量處理,但這六項(xiàng)處理并不必須在一個(gè)實(shí)施例中全部使用,可以根據(jù)需要只選擇其中的一項(xiàng)或多項(xiàng)以優(yōu)化結(jié)果。同時(shí)所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理的處理順序也不是必然如上述實(shí)施例所示,可以根據(jù)使用者的需要作出相應(yīng)的適當(dāng)調(diào)整。
[0145]以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種測量和計(jì)算系統(tǒng)電池電量的改進(jìn)方法,其特征在于,包括以下步驟: 步驟一、根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài)對利用ADC測量電池電壓法得到的基準(zhǔn)電壓U進(jìn)行電壓補(bǔ)償,并根據(jù)補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量; 步驟二、對所述電池的測量電量進(jìn)行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理和保存電量處理中的一項(xiàng)或多項(xiàng),并將處理后的電量更新電池當(dāng)前的顯示電量。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,所述步驟一具體包括以下步驟: 步驟1,利用ADC測量電池電壓法獲得電池的基準(zhǔn)電壓U ; 步驟2,根據(jù)系統(tǒng)主要耗電設(shè)備的狀態(tài),對每個(gè)所述主要耗電設(shè)備依據(jù)以下公式計(jì)算每個(gè)所述主要耗電設(shè)備的補(bǔ)償電壓; 當(dāng)電池處于放電狀態(tài)時(shí):u補(bǔ)償電壓=U補(bǔ)償偏移量+F Oj) *v當(dāng)前值/V最大值, 當(dāng)電池處于充電狀態(tài)時(shí):u補(bǔ)償電壓=U補(bǔ)償偏移量-F Oj) *v當(dāng)前值/V最大值; 其中,Vgtm是當(dāng)前主要耗電設(shè)備對應(yīng)屬性的值,ViMt是所述對應(yīng)屬性可達(dá)到的最大值,F(xiàn)(U)是以所述基準(zhǔn)電壓為參數(shù)的函數(shù),表示根據(jù)當(dāng)前所述基準(zhǔn)電壓計(jì)算出主要耗電設(shè)備運(yùn)行在所述對應(yīng)屬性最大值時(shí)的最大補(bǔ)償電壓?為補(bǔ)償偏移量,其大小與系統(tǒng)主要耗電設(shè)備當(dāng)前的狀態(tài)相關(guān); 步驟3,計(jì)算所述基準(zhǔn)電壓與所有所述主要耗電設(shè)備的補(bǔ)償電壓的總和,作為補(bǔ)償后的電壓; 步驟4,根據(jù)所述補(bǔ)償后的電壓通過電壓-電量關(guān)系表獲得對應(yīng)的電量作為電池的測量電量。
3.根據(jù)權(quán)利要求2所述方法,其特征在于,所述主要耗電設(shè)備至少包括IXD背光、CPU和GPU ;對于LCD背光,所述對應(yīng)屬性為LCD背光亮度,對于CPU,所述對應(yīng)屬性為CPU運(yùn)行頻率值,對于GPU,所述對應(yīng)屬性為GPU運(yùn)行頻率值。
4.根據(jù)權(quán)利要求1所述方法,其特征在于,所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的每一項(xiàng)在處理時(shí),都將上一項(xiàng)處理的輸出電量作為當(dāng)前處理的輸入電量,并將當(dāng)前處理的輸出電量作為下一項(xiàng)處理的輸入電量,與所述步驟一相連的處理的輸入電量是經(jīng)所述步驟一處理后的測量電量,最后一個(gè)處理的輸出電量作為步驟二的所述電池當(dāng)前的顯示電量。
5.根據(jù)權(quán)利要求4所述方法,其特征在于,所述防反彈處理具體包括:將輸入電量與電池當(dāng)前的顯示電量進(jìn)行對比,當(dāng)電池處于放電狀態(tài)時(shí),若所述輸入電量大于所述電池當(dāng)前的顯示電量,則采用所述電池當(dāng)前的顯示電量作為輸出電量;當(dāng)電池處于充電狀態(tài)時(shí),若所述輸入電量小于所述電池當(dāng)前的顯示電量,則采用所述電池當(dāng)前的顯示電量作為所述輸出電量;其他情況采用所述輸入電量作為輸出電量。
6.根據(jù)權(quán)利要求4所述方法,其特征在于,所述斜率限定處理具體包括:將輸入電量與電池當(dāng)前的顯示電量進(jìn)行對比,如果所述輸入電量nin大于所述電池當(dāng)前的顯示電量nm,則輸出電量η—為:η_= (int) ((nin_nm)/N+l)+nm ;如果所述輸入電量nin小于所述顯示電量nm,則輸出電量為m。, (int) ((nin_nm)/N_l)+nm;如果所述輸入電量nin等于所述顯示電量nm,輸出電量Iitjut為:η_=η?η ;其中nin Iitjut及nm為以百分制顯示時(shí)百分號前面的數(shù)值,N為根據(jù)當(dāng)前工作電流大小實(shí)時(shí)調(diào)整的系數(shù)。
7.根據(jù)權(quán)利要求4所述方法,其特征在于,所述模擬充放電處理具體包括:當(dāng)系統(tǒng)檢測到電池當(dāng)前的顯示電量在一段時(shí)間內(nèi)未發(fā)生變動時(shí),若系統(tǒng)處于充電狀態(tài),則計(jì)算在充電狀態(tài)下模擬充電所需時(shí)長t。,在t。時(shí)長范圍內(nèi),將所述輸入電量nin按照每單位時(shí)間加I的速率變化作為輸出電量;若系統(tǒng)處于放電狀態(tài),則計(jì)算在放電狀態(tài)下模擬放電所需時(shí)長td,在td時(shí)長范圍內(nèi),將所述輸入電量nin按照每單位時(shí)間減I的速率變化作為輸出電量,其中所述nin為以百分制表示時(shí)百分號前面的數(shù)值。
8.根據(jù)權(quán)利要求4所述方法,其特征在于,所述電量濾波處理具體包括:將輸入電量的值加入到濾波隊(duì)列末尾,將隊(duì)列中最早的一個(gè)數(shù)據(jù)刪除,然后對濾波隊(duì)列中所有值取平均值作為輸出電量。
9.根據(jù)權(quán)利要求1所述方法,其特征在于,所述保存電量處理包括步驟:在檢測到電池當(dāng)前的顯示電量發(fā)生改變,或者距離上次保存時(shí)間超過預(yù)設(shè)時(shí)間,或者用戶修改時(shí)間時(shí),將保存所述顯示電量以及時(shí)間信息到文件系統(tǒng),以參與下次系統(tǒng)開機(jī)時(shí)電量的測量計(jì)算。
10.根據(jù)權(quán)利要求9所述方法,其特征在于,所述保存電量處理還包括步驟:在下次系統(tǒng)開機(jī)時(shí),先從文件系統(tǒng)中加載關(guān)機(jī)前最后保存的電量信息和時(shí)間信息,并計(jì)算開機(jī)時(shí)的測量電量,然后對比所述加載到的電量與所述計(jì)算的測量電量,如果二者電量相差不大,且時(shí)間變化未超過指定的值,則認(rèn)為所述從文件系統(tǒng)中加載到的電量信息有效,開機(jī)后初始的顯示電量將依據(jù)所述加載的電量信息進(jìn)行計(jì)算,如果電量偏差較大,則直接使用所述計(jì)算得到的測量電 量,忽略之前存儲的電量信息。
【文檔編號】G01R31/36GK103792489SQ201310594558
【公開日】2014年5月14日 申請日期:2013年11月22日 優(yōu)先權(quán)日:2013年11月22日
【發(fā)明者】劉榮, 宋夏, 張享隆, 郭崇鑫, 王業(yè)飛, 朱長春 申請人:廣州視源電子科技股份有限公司