欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

測量和計算系統(tǒng)電池電量的方法

文檔序號:6184561閱讀:672來源:國知局
測量和計算系統(tǒng)電池電量的方法
【專利摘要】本發(fā)明公開了一種測量和計算電池電量的方法,包括以下步驟:步驟一,利用ADC測量電池電壓法獲得電池的基準電壓,優(yōu)選的,通過連續(xù)10次AD轉換并取平均值得到基準電壓;步驟二,根據系統(tǒng)主要耗電設備的狀態(tài),計算每個所述主要耗電設備的補償電壓;步驟三,計算所述基準電壓與所有所述主要耗電設備的補償電壓的總和,作為補償后的電壓;步驟四,根據所述補償后的電壓通過電壓-電量關系表獲得對應的電量作為電池的測量電量;步驟五,用所述電池的測量電量更新電池當前的顯示電量。使用本發(fā)明,可以在不能取得電流信息的前提下,僅使用ADC電壓測量電池電量法,并通過在該方法和算法上的改進,使得測量準確度大幅度上升,電池充放電曲線更接近真實情況。
【專利說明】測量和計算系統(tǒng)電池電量的方法
【技術領域】
[0001]本發(fā)明涉及一種計算機自動化測量方法,尤其涉及一種測量和計算電池電量的方法。
【背景技術】
[0002]在平板電腦、手機等使用電池的設備中,一般都需要顯示當前電池的電量。對于測量精度要求很高的場合,一般要用到庫侖計等專用芯片。庫侖計通過測量電池的電壓、充/放電電流,可精確計算出電池存儲和消耗的能量,從而得出當前電池電量。
[0003]為了節(jié)約成本,對于精度要求不是很高的消費電子產品來說,通常不會使用這類專用的電量計芯片,而是使用僅通過ADC測量電池電壓的方法來測量和計算電池電量。該方法的原理是,電池在不同的電量下,其輸出電壓是不一樣的。電量越多,電壓就越高,相反,電量越少,電壓就越低。但實際情況是,電池電壓不單跟電量相關,還跟充/放電電流相關。而測量電池電流又是比較困難的,因此一般的消費電子產品不具備電池電流測量功能。所以不增加任何算法,僅是簡單地通過電壓來計算電池電量,效果是非常差的,有時誤差甚至能達到50%之多。
[0004]針對上述問題,有些設計就在此基礎之上增加了不同場景下的電壓補償功能。通過對不同場景下的電壓測量,記錄下電壓補償值,然后在測得實際電壓后根據不同的模式進行補償。由于電壓波動較大,電壓補償也很難做得準確,因此一般還會對計算結果進行簡單的取平均值等運算,使結果顯得較平穩(wěn)。
[0005]綜上,現有技術的主要缺點包括:
[0006]1、若使用專用庫侖計芯片,則成本較高,大約需要增加0.5~I美金;
[0007]2、不使用庫侖計芯片的,電池曲線不平滑、電量顯示誤差大、波動大,例如重新啟動系統(tǒng)前后電池電量偏差很大、充電時電量快速上升、拔掉充電器電量快速下降等等。

【發(fā)明內容】

[0008]本發(fā)明主要解決在無電流測量功能的限制下,僅使用電壓方式在線測量電池電量偏差大以及電池充放電曲線波動大的問題。
[0009]為實現上述目的,本發(fā)明公開了一種測量和計算系統(tǒng)電池電量的方法,具體包括以下步驟:
[0010]步驟一,利用ADC測量電池電壓法獲得電池的基準電壓U ;
[0011]步驟二,根據系統(tǒng)主要耗電設備的狀態(tài),對每個所述主要耗電設備依據以下公式計算每個所述主要耗電設備的補償電壓;
[οο? 2]當電池處于放電狀態(tài)時:u補償電壓=U補償偏移量+F Oj) 當前值/V最大值,
[οο? 3]當電池處于充電狀態(tài)時:u補償電壓=U補償偏移量-F Oj) *v當前值/V最大值;
[0014]其中,V 3|^是當前主要耗電設備對應屬性的值,是所述對應屬性可達到的最大值,F(U)是以所述基準電壓為參數的函數,表示根據當前所述基準電壓計算出主要耗電設備運行在所述對應屬性最大值時的最大補償電壓;uWSilH?為補償偏移量,其大小與系統(tǒng)主要耗電設備當前的狀態(tài)相關;
[0015]步驟三,計算所述基準電壓與所有所述主要耗電設備的補償電壓的總和,作為補償后的電壓;
[0016]步驟四,根據所述補償后的電壓通過電壓-電量關系表獲得對應的電量作為電池的測量電量;
[0017]步驟五,用所述電池的測量電量更新電池當前的顯示電量。
[0018]所述主要耗電設備至少包括IXD背光、CPU和GPU ;對于IXD背光,所述對應屬性為IXD背光亮度,對于CPU,所述對應屬性為CPU運行頻率值,對于GPU,所述對應屬性為GPU運行頻率值。
[0019]本發(fā)明不同于一些同樣未使用電流測量的方案僅依據幾個特定的應用場景來設定補償值,而是針對選定的主要耗電設備計算而來,可以獲得較為準確的電壓補償值。
[0020]為了進一步解決所述電池的顯示電量誤差大、電池曲線不平滑、波動大等問題,在所述步驟四與步驟五之間,還可以包括對所述電池的測量電量進行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的一項或多項,和/或包括獨立于步驟一至步驟五的保存電量處理。其中所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的每一項在處理時,都將上一項處理的輸出電量作為當前處理的輸入電量,并將當前處理的輸出電量作為下一項處理的輸入電量,與所述步驟四相連的處理的輸入電量是經所述步驟四處理后的測量電量,與所述步驟五相連的處理的輸出電量作為所述步驟五中的測量電量。
[0021]所述防反彈處理具體包括:將輸入電量與電池當前的顯示電量進行對比,當電池處于放電狀態(tài)時,若所述輸入電量大于所述電池當前的顯示電量,則采用所述電池當前的顯示電量作為輸出電量;當電池處于`充電狀態(tài)時,若所述輸入電量小于所述電池當前的顯示電量,則采用所述電池當前的顯示電量作為所述輸出電量;其他情況采用所述輸入電量作為輸出電量。
[0022]所述斜率限定處理具體包括:將輸入電量與電池當前的顯示電量進行對比,如果所述輸入電量nin大于所述電池當前的顯示電量]^,則輸出電量為η—= (int) ((nin-nm) /N+l)+nm ;如果所述輸入電量nin小于所述顯示電量nm,則輸出電量為η—= (int) ((nin_nm)/N-1) +nm;如果所述輸入電量nin等于所述顯示電量nm,輸出電量為Atjut=Iiin ;其中nin nout及nm為以百分制顯示時百分號前面的數值,N為一個根據當前工作電流大小實時調整的系數。
[0023]現有的技術使用過的是固定斜率的方式,即不管充放電電流為多少,都使用固定的斜率。而本發(fā)明則會根據當前充放電電流動態(tài)調整斜率,從而更接近真實情況。
[0024]所述模擬充放電處理具體包括:當系統(tǒng)檢測到電池當前的顯示電量在一段時間內未發(fā)生變動,若系統(tǒng)處于充電狀態(tài),則計算在充電狀態(tài)下模擬充電所需時長t。,在t。時長范圍內,將所述輸入電量nin按照每單位時間加I的速率變化作為輸出電量;若系統(tǒng)處于放電狀態(tài),則計算在放電狀態(tài)下模擬放電所需時長td,在td時長范圍內,將所述輸入電量nin按照每單位時間減I的速率變化作為輸出電量,其中所述nin為以百分制表示時百分號前面的數值。[0025]所述電量濾波處理具體包括:將輸入電量的值加入到濾波隊列末尾,將隊列中最早的一個數據刪除,然后對濾波隊列中所有值取平均值作為輸出電量。
[0026]本發(fā)明使用了隊列式濾波處理,而不是普通的平均值濾波方式,使用這種方式不僅會在數值上產生濾波效果,在時間上也會產生濾波效果。
[0027]所述保存電量處理包括步驟:在檢測到電池當前的顯示電量發(fā)生改變,或者超過預設時間,或者用戶修改時間時,將保存所述顯示電量及時間信息到文件系統(tǒng),以參與下次系統(tǒng)開機時電量的測量計算。下次系統(tǒng)開機時,先從文件系統(tǒng)中加載最后的電量信息和時間信息,然后和當前計算得到的電量和時間對比,如果電量相差不大,且時間變化未超過指定的值,則認為從文件系統(tǒng)中加載到的電量信息有效,后續(xù)的計算都在此基礎上進行,如果電量偏差較大,則直接使用當前計算得到的電量值,忽略之前存儲的電量信息。
[0028]本發(fā)明實施例所要解決的技術問題是在不能取得電流信息的前提下,針對僅使用ADC電壓測量電池電量法,并通過在該方法和算法上的改進,使得測量準確度大幅度上升,電池充放電曲線更接近真實情況,從而大大提升用戶使用體驗。
[0029]實施本發(fā)明實施例,具有如下有益效果:
[0030]1、對比使用專用庫侖計芯片或增加電流測量的方案,本發(fā)明幾乎不增加額外的成本,直接使用芯片自帶的ADC即可完成電池電量測定功能;
[0031]2、對比同類無電流測量的方案,因為本發(fā)明使用了更為精確的電壓補償方法和算法,所以本發(fā)明測得的結果更為準確;
[0032]3、對比同類無電流測量的方案,由于本發(fā)明使用了較好的算法以及智能參數調整功能,例如動態(tài)的斜率限制功能、模擬充放電處理過程、隊列式濾波處理等,使得本發(fā)明得到的電池充放電曲線更接近真實情況;
[0033]4、對比同類測量方案,得益于本發(fā)明電量保存處理及開機預加載功能,本發(fā)明在關機后馬上開機或重新啟動,電量不會突變。
【專利附圖】

【附圖說明】
[0034]圖1是本發(fā)明的一個實施例的流程圖。
[0035]圖2是本發(fā)明實施例計算補償電壓的流程圖。
[0036]圖3是本發(fā)明實施例查表獲得測量電量流程圖。
[0037]圖4是本發(fā)明的另一個實施例的流程圖。
[0038]圖5是本發(fā)明實施例防反彈處理流程圖。
[0039]圖6是本發(fā)明實施例斜率限定處理流程圖。
[0040]圖7是本發(fā)明實施例模擬充放電處理流程圖。
[0041 ]圖8是本發(fā)明實施例電量濾波處理流程圖。
[0042]圖9是本發(fā)明實施例保存電量處理流程圖。
[0043]圖10是本發(fā)明實施例開機預加載處理流程圖。
【具體實施方式】
[0044]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明作進一步地詳細描述。[0045]如圖1所示,為本發(fā)明一個實施例的流程圖,具體包括步驟:
[0046]S11,利用ADC測量電池電壓法獲得電池的基準電壓,優(yōu)選的,通過連續(xù)10次AD轉換并取平均值得到基準電壓;
[0047]S12,根據系統(tǒng)主要耗電設備的狀態(tài),計算每個所述主要耗電設備的補償電壓;
[0048]S13,計算所述基準電壓與所有所述主要耗電設備的補償電壓的總和,作為補償后的電壓;
[0049]S14,根據所述補償后的電壓通過電壓-電量關系表獲得對應的電量作為電池的測量電量;
[0050]S15,用所述電池的測量電量更新電池當前的顯示電量。
[0051]其中,所述步驟S12中,主要耗電設備根據不同的系統(tǒng)選擇不同的設備。例如在平板電腦中,IXD背光和CPU、GPU是主要的耗電設備,耗電不固定。因此通過測量不同IXD背光亮度、CPU頻率、GPU頻率在不同電池電壓下的電壓偏差值,然后通過曲線擬合,得到一些關鍵點的數據,然后再根據實際的LCD背光亮度、CPU頻率、GPU頻率即可計算出電壓補償值,從而可以較準確地計算出電池電量。
[0052]假設當前通過ADC測量到的電池電壓為U,那么通過補償后的電壓可表示為Uc=RUblc^UUgpue。其中U。為補償后的電壓,Uble為LCD背光補償電壓,Uepue為CPU補償電壓,Ugpu。為GPU補償電壓。
[0053]LCD背光補 償電壓Ublc=Ubl.,+Fbl (U) *Vbl/Vblmax,其中Ubl為補償偏移量,與實際的系統(tǒng)、所使用的電池等都相關,需要實測決定;Fbl為一個函數,它會根據當前電壓值計算出最大亮度的補償值,該函數與實際的LCD背光、所使用的電池等都相關,需要實測決定;Vbl是當前LCD背光亮度值,Vblmax是背光最大值。
[0054]CPU 補償電壓 Uepuc=UeputjffseJFepu ⑶ *Vepu/Vepumax,其中 Ueputjffset 為補償偏移量,與實際的系統(tǒng)、所使用的電池等都相關,需要實測決定為一個函數,它會根據當前電壓值計算出最大CPU頻率時的補償值,該函數與實際的CPU、所使用的電池等都相關,需要實測決定是當前CPU的運行頻率值,Vcpumax是CPU運行的頻率最大值。
[0055]GPU 補償電壓 Ugpuc=UgputjffseJFgpu ⑶ ^VgpiAgpumax,其中 Ugputjffset 為補償偏移量,與實際的系統(tǒng)、所使用的電池等都相關,需要實測決定;Fgpu為一個函數,它會根據當前電壓值計算出最大GPU頻率時的補償值,該函數與實際的GPU、所使用的電池等都相關,需要實測決定;Vgpu是當前GPU的運行頻率值,Vgpumax是GPU運行的頻率最大值。
[0056]在充電時,也需要根據LCD背光、CPU頻率、GPU頻率等計算出充電電壓的補償值。因為在系統(tǒng)中,充電器提供的總電流是固定的,當系統(tǒng)運行時需要的電流大時,會自動降低充電電流。而不同的充電電流,即使在電池容量相同的情況下,電池電壓也不一樣,因此需要針對充電做電壓補償。充電電壓補償計算公式與放電時的計算公式形式上基本一樣,不同的地方在于,當背光/CPU/GPU電流增大時,補償電壓減小,因此使用的參數不一樣。充電時所使用的計算公式形式上為:Uble=Ubl—Mfset-Fbl (U) *Vbl/Vblmax ;Ucpuc=Ucpu offset-Fcpu(U) *VCPU/
Vcpumax ?^gpuc ^gpu offset Fgpu(U)5^VgpuZVgpumaxO
[0057]另外,考慮到USB 口在連接電腦和充電器時,能夠獲取到的最大電流是不一樣的,這直接會影響到充電時電池電量的測量。因此在本設計中增加了供電端檢測的功能,當檢測到不同的供電端時,會使用不同的補償參數。作為優(yōu)選地檢測依據是,連接電腦時,電腦會和設備進行數據通信,而連接充電器時不會有數據通信。
[0058]為方便理解,下面將通過圖2對電壓補償處理流程進行描述。
[0059]假設通過ADC測量電壓法測得的電壓為U ;
[0060]S131,判斷是否有外部電源輸入,如果有,則進入步驟S132,否則,進入步驟S134;
[0061]S132,判斷連接的外部電源是否是電腦,如果是,進入步驟S133,否則,進入步驟135;
[0062]S133,計算電腦模式下IXD背光補償電壓Ubl。、CPU補償電壓U聊c、GPU補償電壓U.Ugpuc,
[0063]S134,計算放電模式下IXD背光補償電壓Ubl。、CPU補償電壓Uepu。、GPU補償電壓U.Ugpuc,
[0064]S135,計算充電模式下IXD背光補償電壓Ubl。、CPU補償電壓U_。、GPU補償電壓U.Ugpuc,
[0065]S136,依據公式υε=υ+υωε+υερικ+υ_。計算補償后的電壓。
[0066]圖3所示為步驟S14中查表得到電池電量的具體流程,具體包括步驟:
[0067]S141,判斷電池是否處于充電狀態(tài),如果正處于充電狀態(tài),則進入步驟S142,否則進入步驟S143 ;
[0068]S142,通過查充·電電壓表獲取當前電池的測量電量,并進入步驟S144 ;
[0069]S143,通過查放電電壓表獲取當前電池的測量電量,并進入步驟S144 ;
[0070]S144,返回當前電池的測量電量。
[0071]雖然由圖1所示實施例獲得的顯示電量,已經通過對主要耗電設備擬合電壓補償曲線,獲得更加精準的電池電量,但是如果在該實施例的基礎上再加入防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理以及保存電量處理中的一項或多項,將會獲得更加接近真實情況且符合人們心理的結果。
[0072]如圖4所示,為本發(fā)明另一個實施例的流程圖。
[0073]SI,獲取電池測量電量:與第一實施例的步驟Sll至S14相同,根據系統(tǒng)主要耗電設備的狀態(tài)對利用ADC測量電池電壓法得到的基準電壓進行電壓補償,并根據補償后的電壓確定電池的測量電量。
[0074]S2,防反彈處理:假設當前顯示電量為IV如果已經確認電池處于放電狀態(tài),例如未連接充電器亮屏運行,那么對于計算得到大于nm的結果應該要丟棄,否則電池不在充電但電池電量卻在上升會給用戶很糟糕的體驗,此時直接使用當前顯示電量的值\作為該步處理的結果;同樣,如果確認電池在充電狀態(tài),而計算得到的電量卻小于nm,則也要丟棄,防止電池充電時電池電量反而下降的情況發(fā)生,相應地也使用當前顯示電量的值化作為該步處理的結果;對于其他情況,使用經SI步驟獲得的測量電量作為該步處理的結果。
[0075]S3,斜率限定處理:不直接使用經步驟S2的處理結果,而是依據當前顯示電量,對經過步驟S2處理后的電量做進一步的調整。根據系統(tǒng)當前充放電狀態(tài)以及主要耗電設備的狀態(tài),計算出一個電量變化率N,利用此變化率限制電量變化的幅度,在時間上牽制住電池電量的快速波動。假設,將所述步驟S2處理的結果記做nin,將當前顯示電量記作nm。當nin比化大時,根據公式((int) (nin-nm)/N+l)+nm對所述步驟S2處理結果進一步調整;當1^比化小時,根據公式((int) (nin-nm)/N-l)+nm對所述步驟S2處理結果進一步調整;當1^等于nm時,則不作調整;其中nin及nm為以百分制顯示時百分號前面的數值。
[0076]S4,模擬充放電處理:若系統(tǒng)檢測到所述顯示電量較長時間未發(fā)生變動,并且已經明確電池的充放電狀態(tài)的情況下,使所述經步驟S3處理后的電量在一個根據系統(tǒng)當前狀態(tài)確定的時間內,以低于正常充放電時變化的幅度改變。由于模擬的充放電速度比實際的充放電速度慢,因此一段時間后,計算得到的電量會逐漸向顯示的電量靠近,最終二者相等。這樣的處理使用戶感覺充電時電池電量比較均勻地上升,放電時電池電量比較均勻地下降。
[0077]S5,電量濾波處理:將經過以上步驟調整后得到的電量加入到一個平滑濾波隊列,并將隊列中最早的一個數據刪除,然后取平均值計算得到最終的電池電量。并將處理結果用于更新所述顯示電量。
[0078]S6,保存電量處理:在檢測到電池當前的顯示電量發(fā)生改變,或者距離上次保存超過預設時間,或者用戶修改時間時,將保存當前所述顯示電量的值及時間信息到文件系統(tǒng),以參與下次系統(tǒng)開機時電量的測量計算。
[0079]其中所述防反彈處理S2的具體步驟如圖5所示:
[0080]在執(zhí)行所述防反彈處理S2之前,首先加載獲取電池測量處理的結果作為防反彈處理的輸入電量;所述防反彈處理具體包括步驟:
[0081]S21,判斷電池是否處于充電狀態(tài)。如果電池正處于充電狀態(tài),則進入步驟S22,否則進入步驟S23 ;
[0082]S22,判斷輸入電量是否小于顯示電量,如果是的話,進入步驟S24,否則,進入步驟S25 ;
[0083]S23,判斷輸入電量是否大于顯示電量,如果是的話,進入步驟S24,否則,進入步驟S25 ;
[0084]S24,將當前顯示電量的值賦給輸出電量;
[0085]S25,將輸入電量的值賦給輸出電量。
[0086]使用以上處理后,雖然能夠有效地提高電池電量測量的準確度,但效果還是不夠理想。主要原因是系統(tǒng)復雜度太高,不可能完全精確地將所有模塊運行情況換算成電壓補償值,并且不同的電池其特性也不一樣,再加上ADC測量誤差等等,最后得到的結果波動幅度還是較大??紤]到電池電量不可能發(fā)生突變,因此本發(fā)明實施例對經過上述方法處理后的結果再進行斜率限定處理和電量濾波處理,在時間上牽制住電池電量的快速波動。所述斜率限定處理的具體步驟如圖6所示:
[0087]在執(zhí)行所述斜率限定處理步驟前,首先加載步驟S2的輸出電量作為斜率限定處理的輸入電量Hin ;所述所述斜率限定處理包括步驟:
[0088]S31,判斷輸入電量nin是否大于顯示電量nm,如果是,進入步驟S32,否則,進入步驟 S34 ;
[0089]S32,根據IXD背光亮度Vbl,CPU運行頻率ν_、GPU的運行頻率Vgpu以及是否連接電腦計算斜率系數N;
[0090]S33,輸出電量 nQUt 為 nout=((int) (nin_nm)/N+l)+nm ;
[0091]S34,判斷輸入電量nin是否小于顯示電量nm,如果是,進入步驟S35,否則,進入步驟 S37;[0092]S35,根據IXD背光亮度Vbl,CPU運行頻率ν_、GPU的運行頻率Vgpu以及是否連接電腦計算斜率系數N;
[0093]S36,輸出電量 nQUt 為 nQUt=((int) (nin_nm)/N_l)+nm ;
[0094]S37,將輸入電量的值賦給輸出電量。
[0095]優(yōu)選的,在步驟S32中,N的計算方式如下:
[0096]充電狀態(tài):N=10+(30*Vbl/Vblm J + (10*Vcpu/VcpumJ + (IO^VgpuAgpumax),
[0097]放電狀態(tài):N=60-(30*(Vbl)/Vblmax)-(10*Vcpu/VcpumJ-(I(^VgpiZVgpumax),
[0098]其中數字的取值,要根據實際的電池、背光、CPU、GPU進行調整。
[0099]使用這樣的算法后,電池電量的最大變化率被限制,從而達到很好的平滑效果。
[0100]在放電一段時間且電池未放完后就插入充電器、或者充電一段時間且電池未充滿時就斷開充電器、或者長 時間高負荷運行后然后突然轉入到低負荷運行等,這些時候的電量僅通過電壓是最難計算的,一般都會出現偏差較大的情況。由于加入了防反彈措施,通常出現的情況就是很長一段時間內顯示的電池電量都保持在同一個水平,而實際上電池是在充電或放電的。針對這種情況,本實施例采用模擬充放電處理,按照比正常充放電慢的速度來模擬電池充放電過程。由于模擬的充放電速度一定會比實際的充放電速度慢,因此一段時間后,計算得到的電量值會逐漸向顯示的電量值靠近,最終顯示電量將與計算的電量值相等。所述模擬充放電處理的具體步驟如圖7所示:
[0101]在執(zhí)行所述模擬充放電處理步驟前,首先加載防反彈處理的結果作為模擬充放電的輸入電量nin ;所述模擬充放電處理包括步驟:
[0102]S41,判斷顯示電量是否發(fā)生改變,如果是,則進入步驟S42,否則,進入步驟S43;
[0103]S42,清零計時器Ts,并進入步驟S411;
[0104]S43,判斷電池是否處于充電狀態(tài),如果是,進入步驟S44,否則,進入步驟S45 ;
[0105]S44,計算當前條件下,充電應該產生變化的時間t。,并進入步驟S46 ;
[0106]S45,判斷電池是否處于放電狀態(tài),如果是,進入步驟S47,否則,進入步驟S411 ;
[0107]S46,判斷Ts是否大于t。,,如果是,進入步驟S48,否則進入步驟S411;
[0108]S47,計算當前條件下,放電應產生變化的時間td,并進入步驟S49;
[0109]S48,計算輸出電量Iitjut=Iiin+]^清零計時器Ts,并進入S412;
[0110]S49,判斷Ts是否大于td,如果是,則進入步驟S410,否則進入步驟S411;
[0111]S410,計算輸出電量η_=η?η-1,清零計時器!^,并進入步驟S412 ;
[0112]S411,將輸入電量的值賦給輸出電量;
[0113]S412,返回輸出電量。
[0114]經過這樣的處理后,用戶會感覺充電時電池電量比較均勻地上升,放電時電池電量比較均勻地下降,而不會出現長時間處于同一水平的情況,從而很好地提升了用戶體驗。
[0115]所述電量濾波處理的具體步驟如圖8所示,在執(zhí)行所述電量濾波處理步驟前,首先將所述模擬充放電處理的結果作為所述電量濾波處理的輸入電量,所述電量濾波處理具體包括步驟:
[0116]S51,將濾波隊列中最早的值移除;
[0117]S52,將輸入電量的值加入到隊列末尾;
[0118]S53,對濾波隊列中所有值取平均值賦給輸出電量。[0119]通過這樣的處理,使得正負范圍內的波動被相互抵消掉,從而達到很好的平滑效
果O
[0120]系統(tǒng)在關機后,計算電量的軟件就無法正常運行,因此通常的做法就是每次開機時重新計算電池電量。由于上述的一些原因,最終計算出來的電量可能會與關機前的電量偏差10%甚至更多,這會給客戶非常糟糕的體驗。為了解決這個問題,本系統(tǒng)設計有插充電器自動開機功能,并加入所述保存電量處理。如圖9所示,所述保存電量處理的具體步驟為:
[0121]S61,判斷顯示電量是否發(fā)生改變,如果是,則進入步驟S64,否則進入步驟S63;
[0122]S62,判斷用戶是否修改系統(tǒng)時間,如果是,則進入步驟S64 ;
[0123]S63,判斷距離上次保存時間是否已經達到tsave的時長,如果已經達到,則進入步驟S64,否則,進入步驟S66,其中tsave是一個預先設定的值;
[0124]S64,保存當前電量信息和時間信息到文件系統(tǒng);
[0125]S65,清空用于記錄距離上次保存時間的計時器Tn。;
[0126]S66,保存完成。
[0127]所述保存電量處理的意義在于作為下次開機時計算電量的參考。下次開機時,例如用戶手動開機或插充電器充電開機時,先從文件系統(tǒng)中加載最后的電量和時間信息,然后和當前計算得到的電池電量和時間對比。如果電池電量相差不大,且時間變化未超過指定的值,則認為從文件系統(tǒng)中加載到的電池電量信息有效,后續(xù)的計算都在此基礎之上進行。這樣就可以保證用戶在重新啟動或關機時間不是很長的情況下,保證電池電量顯示的一致性。如果電池電量偏差較大,例如用戶更換電池,或者時間偏差很久或時間倒退,例如更換電池、或者長時間關機后電池已經漏掉了很多,這時用戶通常也不太記得最后一次關機時電池電量是多少了,那么就直接使用當前計算得到的電量值,而忽略掉之前存儲的電量信息。如果在開機時不能獲取到最后存儲的電量信息,那么只能直接使用計算得到的電池電量。這種情況通常只會發(fā)生在工廠生產時,因此不會影響用戶正常使用。
[0128]所述開機預加載的具體步驟如圖10所示,包括步驟:
[0129]S71,按照SI的步驟獲取電池的測量電量;
[0130]S72,將S71步驟獲取的測量電量按照S5的步驟進行電量濾波處理;
[0131]S73,判斷濾波隊列是否已滿,如果是,進入步驟S74,否則,返回步驟S71;
[0132]S74,從文件系統(tǒng)中加載電量信息及時間信息;
[0133]S75,判斷從文件系統(tǒng)中加載的電量信息是否有效,如果有效,進入步驟S76,否則不作處理;
[0134]S76,設定當前顯示電量為保存的電量值,并使用保存的電量值填充濾波隊列;
[0135]S77,開機初始化完成。
[0136]除了上述處理,本設計中還使用了電壓平均值、濾掉方差較大的值、查表法換算電池電量等常規(guī)設計,未在本文檔中詳細描述??梢岳斫猓景l(fā)明是應用在無電流測量的系統(tǒng)上,但本發(fā)明對電池電量的處理方法,顯然也可以用于帶電流測量的系統(tǒng)或庫倫芯片上。
[0137]需要說明的是,雖然上述實施例在一個實施例中使用了所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理以及保存電量處理,但這六項處理并不必須在一個實施例中全部使用,可以根據需要只選擇其中的一項或多項以優(yōu)化結果。同時所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理的處理順序也不是必然如上述實施例所示,可以根據使用者的需要作出相應的適當調整。
[0138]以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。
【權利要求】
1.一種測量和計算系統(tǒng)電池電量的方法,其特征在于,包括以下步驟: 步驟一,利用ADC測量電池電壓法獲得電池的基準電壓U ; 步驟二,根據系統(tǒng)主要耗電設備的狀態(tài),對每個所述主要耗電設備依據以下公式計算每個所述主要耗電設備的補償電壓; 當電池處于放電狀態(tài)時:u補償電壓=U補償偏移量+F Oj) *v當前值/V最大值, 當電池處于充電狀態(tài)時:u補償電壓=U補償偏移量-F Oj) *v當前值/V最大值; 其中,Vgtm是當前主要耗電設備對應屬性的值,ViMt是所述對應屬性可達到的最大值,F(U)是以所述基準電壓為參數的函數,表示根據當前所述基準電壓計算出主要耗電設備運行在所述對應屬性最大值時的最大補償電壓?為補償偏移量,其大小與系統(tǒng)主要耗電設備當前的狀態(tài)相關; 步驟三,計算所述基準電壓與所有所述主要耗電設備的補償電壓的總和,作為補償后的電壓; 步驟四,根據所述補償后的電壓通過電壓-電量關系表獲得對應的電量作為電池的測量電量; 步驟五,用所述電池的測量電量更新電池當前的顯示電量。
2.根據權利要求1所述方法,其特征在于,所述主要耗電設備至少包括IXD背光、CPU和GPU ;對于LCD背光,所述對應屬性為LCD背光亮度,對于CPU,所述對應屬性為CPU運行頻率值,對于GPU,所述對應屬性為GPU運行頻率值。
3.根據權利要求1所述`方法,其特征在于,在所述步驟四與步驟五之間,還進一步包括對所述電池的測量電量進行防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的一項或多項,和/或包括獨立于步驟一至五的保存電量處理;其中所述防反彈處理、斜率限定處理、模擬充放電處理、電量濾波處理中的每一項在處理時,都將上一項處理的輸出電量作為當前處理的輸入電量,并將當前處理的輸出電量作為下一項處理的輸入電量,與所述步驟四相連的處理的輸入電量是經所述步驟四處理后的測量電量,與所述步驟五相連的處理的輸出電量作為所述步驟五中的測量電量。
4.根據權利要求3所述方法,其特征在于,所述防反彈處理具體包括:將輸入電量與電池當前的顯示電量進行對比,當電池處于放電狀態(tài)時,若所述輸入電量大于所述電池當前的顯示電量,則采用所述電池當前的顯示電量作為輸出電量;當電池處于充電狀態(tài)時,若所述輸入電量小于所述電池當前的顯示電量,則采用所述電池當前的顯示電量作為所述輸出電量;其他情況采用所述輸入電量作為輸出電量。
5.根據權利要求3所述方法,其特征在于,所述斜率限定處理具體包括:將輸入電量與電池當前的顯示電量進行對比,如果所述輸入電量nin大于所述電池當前的顯示電量nm,則輸出電量η—為:η_= (int) ((nin_nm)/N+l)+nm ;如果所述輸入電量nin小于所述顯示電量nm,則輸出電量為m。, (int) ((nin_nm)/N_l)+nm;如果所述輸入電量nin等于所述顯示電量nm,輸出電量Iitjut為:η_=η?η ;其中nin Iitjut及nm為以百分制顯示時百分號前面的數值,N為根據當前工作電流大小實時調整的系數。
6.根據權利要求3所述方法,其特征在于,所述模擬充放電處理具體包括:當系統(tǒng)檢測到電池當前的顯示電量在一段時間內未發(fā)生變動時,若系統(tǒng)處于充電狀態(tài),則計算在充電狀態(tài)下模擬充電所需時長t。,在t。時長范圍內,將所述輸入電量nin按照每單位時間加I的速率變化作為輸出電量;若系統(tǒng)處于放電狀態(tài),則計算在放電狀態(tài)下模擬放電所需時長td,在td時長范圍內,將所述輸入電量nin按照每單位時間減I的速率變化作為輸出電量,其中所述nin為以百分制表示時百分號前面的數值。
7.根據權利要求3所述方法,其特征在于,所述電量濾波處理具體包括:將輸入電量的值加入到濾波隊列末尾,將隊列中最早的一個數據刪除,然后對濾波隊列中所有值取平均值作為輸出電量。
8.根據權利要求3所述方法,其特征在于,所述保存電量處理包括步驟:在檢測到電池當前的顯示電量發(fā)生改變,或者距離上次保存時間超過預設時間,或者用戶修改時間時,將保存所述顯示電量以及時間信息到文件系統(tǒng),以參與下次系統(tǒng)開機時電量的測量計算。
9.根據權利要求8所述方法,其特征在于,所述保存電量處理還包括步驟:在下次系統(tǒng)開機時,先從文件系統(tǒng)中加載關機前最后保存的電量信息和時間信息,并計算開機時的測量電量,然后對比所述加載到的電量與所述計算的測量電量,如果二者電量相差不大,且時間變化未超過指定的值,則認為所述從文件系統(tǒng)中加載到的電量信息有效,開機后初始的顯示電量將依據所述加載的電量信息進行計算,如果電量偏差較大,則直接使用所述計算得到的測量電量,忽略之前存儲的電量信息。
【文檔編號】G01R31/36GK103792490SQ201310594575
【公開日】2014年5月14日 申請日期:2013年11月22日 優(yōu)先權日:2013年11月22日
【發(fā)明者】劉榮, 宋夏, 張享隆, 郭崇鑫, 王業(yè)飛, 朱長春 申請人:廣州視源電子科技股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
香格里拉县| 灵丘县| 通城县| 永靖县| 阳泉市| 称多县| 土默特右旗| 庆元县| 高碑店市| 达孜县| 昆山市| 华阴市| 黑山县| 文水县| 修文县| 卓尼县| 进贤县| 米泉市| 囊谦县| 陵川县| 莱阳市| 夹江县| 保亭| 博野县| 林甸县| 芜湖市| 杭锦旗| 双牌县| 寻甸| 原阳县| 兴城市| 裕民县| 农安县| 天全县| 蒙城县| 石嘴山市| 安平县| 方正县| 苏州市| 策勒县| 颍上县|