手機充電原理分析及問題總結

2021-06-18 05:58:07 字數 4289 閱讀 4656

(1)充電流程介紹:當充電器插入時,亦即為pmic充電模組提供了vcharge電壓,這時會產生乙個充電中斷訊號到cpu,通知cpu現在已經進入充電狀態。cpu開始啟動如下模組:

1,adc取樣,主要是採集vchrg,vbat及從mosfet漏極輸出的電壓,可以算出充電電壓和充電電流;

2,發訊息給mmi層,讓它顯示充電狀態及一些取樣資料;

3,檢測電池電壓有沒有超過保護電壓及電池連線是否連線正確,如果有問題即可通過chrctrl切斷充電電路;

4,平時顯示「充電器沒有連線」警告,是因為pmic的batdet腳和mosfet沒有開啟,從而沒有充電電流引起的。

(2)充電狀態轉換介紹:電池的電壓只影響充電狀態(比如是預充還是恆流充電),如果電池電壓較低,只是預充的時間稍長一些,最多一兩個小時應該可以完成充電!一般電池都有自保護,不會把電放到0v的!我做過試驗把電池放到2.5v時,在往下放電已經很難了,負載剛接上時還是可以有電流放出,但很快就停止放電了!所以如果電池是一塊合格的電池不應該會出現是0v的情況!

充電分三個過程:預充電、恆流充電、恆壓充電

1,當vbat<3.3v  屬於預充階段,處於預充電狀態時,以150ma 電流涓流充電。pmic不能提供vcore、vdd等電壓,cpu處於關機狀態,這時cpu是不工作的!

2,當3.3v

3,vbat>4.2v 進入恆壓充電階段,這個階段電流逐漸變小,電壓維持不變!當電流減小到接近為0時,cpu發出控制訊號這時停止充電!

以狀態機的方框圖說明如下:

(3)乙個普通的充電器電路如下:

乙個普通的usb充電圖:

如上,vbus是usb供電;vcdt是通過分壓電阻測試充電電壓的測試點;chr_ldo跟vdrv共同完成開關切換功能,實現對電池的開關充電(充9s停1s);ibenbe跟batsns完成端電壓除以rsense測得充電電流;bat_on提供電池電壓測試。

(4)led與充電狀態的配合例項:

開機後,插入usb充電時顯示橙色燈,拔掉usb不充電時滅燈,充滿電後顯示綠燈。充電時,系統在乙個執行緒裡面迴圈檢測電量,當電量滿置綠燈。需要注意的是,顯示綠燈後,就禁止充電了以防止過充。所以在電量變滿後,就應該setcharger(off),但此時有個矛盾:充電開橙色燈的操作在setcharger(on)中,滅燈的操作在setcharger(off)中,這樣會造成乙個bug:一旦電量滿後,關閉充電功能時也會滅燈,這樣就搞的橙色燈閃了下就滅了,顯然這不是我要的效果。

我要的效果是變綠後,除非我拔掉usb線,才會滅燈。所以需要在電滿時加標誌a,在setcharger(off)中加判斷語句a,跳過滅燈的處理而僅僅關掉充電,同時開啟另乙個標誌b。同時在usb插拔的操作中處理b,表示當燈變綠時,優先處理b,在b後面新增滅燈語句,僅僅處理這一塊就可以了。

(5)關於標準usb充電器和非標準usb充電器,是跟usb的插座構造有關的。

(6)關於手機充電器的分類

通常情況下,程式中一般有四種充電器設定,分別是:usb host,charging host,standard charger,non-standard charger。

如上:usb host,charging host的差別在於左圖,兩者用的都是pc的usb口,其中usb host居多。standard charger,non-standard charger差別在於

前者的dp跟dm有短接,後者沒有。所以通過對dp/dm的判斷,就可以分辨出充電器類別。

(7)關於充電器電氣規格的差異

最近碰到乙個奇怪的現象。**手機用5v1a的充電器可以充,用5v500ma的充電器是充不進去電,用pc的usb卻是一直可以充。經過列印充電資訊的trace發現,是由充電電流的差異引起。ap程式中對充電器的電壓下限是4.4v,如果判斷充電器電壓小於這個值,則ap會自己關掉充電模組。那為什麼1a的充電器可以而500ma的充電器不行呢?可以假設前者的內阻比後者的內阻小,那麼暫不管真實的充電電流是多少,前者自身分配的壓降肯定小於後者自身分配的壓降,所以後者最終的充電器供給電壓會更低。

以程式中預設的800ma充電時,5v500ma的充電器會被拉低至3.8v,所以ap會認為充電器不正常就關掉自身的充電模組。但是如果是5v1a時,由於充電器內阻較小,就算供電端被拉低也不會低於4.4v,所以它仍然是可以工作的(測得實際充電電流640ma)。

想讓手機相容500ma的充電器,此時需要做個處理:在判斷充電器電壓小於4.4v時不返回錯誤,同時將充電電流設定成400ma(對於同乙個充電器,充電電流越小,充電器自身壓降更小,供給更大),讓它仍然可以充電只不過充的會慢點。此時的程式段如下:

a,設定乙個電流改變標誌,預設為false。

static bool  currentchangeflag = false;                   

b,在設定電流的地方判斷該標誌,注意:該電流設定是過個時間間隔就迴圈執行。

if(currentchangeflag == true)

g_temp_cc_value = cust_cc_400ma;                              //如果改變,就以400ma充電

else

g_temp_cc_value = ac_charger_current;             //如果不改變,就以預設電流800ma充電

c,迴圈檢測充電器電壓,並改變電流的程式段:

if (bmt_status.charger_vol <= v_charger_min )              //充電器電壓小於4.4v

currentchangeflag = true;  }

以上的邏輯是:當第一次檢測電流時,充電器預設以800ma充電,此時充電器被拉低。之後進入該條件,接著執行currentchangeflag = true。在上述b中完成設定電流為400ma,如果設定完之後充電器正常的話,就不會再進入這個判斷了,充電器持續充電;如果設定400ma之後還是會進入該判斷,說明充電器不合格,此時要關掉充電功能,所以執行返回電失敗的那段。注意:如果此時客戶不管充電電壓正確與否,仍然要求繼續充電,只需要將if(currentchangeflag == true) 程式段遮蔽掉就行。

(8)電池功能測試中的一些技巧

a, 對於數字電源用數字電源模擬電池,通過其電流值可以知道手機的工作狀態,比如電流值為正就是手機耗電的多少;插入外部充電器之後,如果電流值為負,則是手機正在充電。另一方面,對於用數字電源模擬充電器的,通過其電流值就可以知道供給外部的充電電流是多少,如果讀數很**明沒有充電。

b,對於電池的溫控腳,一般是要接的。如果需要外接溫控腳,記住一定要跟電源公地。單獨的乙個溫控腳是不會起作用的。

c,電池的快速放電。很多時候我們需要測試電池低電壓時的狀況,得到電池低電壓是比較緩慢的乙個過程。有個好方法就是利用數字電源,電壓設定成3v,電流設定成800ma,然後把電源跟電池連線,即可實現電池的快速放電。

d,電池的充電。當我們在沒有手機的情況下要對一塊電池進行充電,可以用數字電源完成這個功能。設定電源是4.2v,電流要限流在800ma以內,接上對應的電極就可以了,不需要接溫控腳。需要注意的是:一開始的充電電流會很大(提示limited),如果不限流會更大,這樣會影響電池壽命及安全性。隨著電池電壓慢慢增高,電流會慢慢變小,直到充滿時的0ma左右。最後off掉電源,發現電壓顯示跟電壓源之前設定的一樣,說明已經充滿。

(9)關機充電時低電壓警告的狀態圖

關於電池低電壓狀況的乙個說明:很多時候手機因為低電壓關機後,只要沒有取出電池,手機仍然在消耗電池的電量,這個很容易理解就像接了個未耗電的電阻。這會造成乙個現象,電池電量會持續降低,所以再充電時需要衝入一段時間,才會進入正常的充電提示和led報警提示,之前是不會有任何動作的。

(10)full charging的logo顯示差別

手機在使用中會碰到這種情況:手機充電畫面是動態的進度條,然後到充滿一直顯示滿進度條,結論就是對於滿電畫面始終可以用同一幅;如果動態進度條的滿電顯示是帶閃電標識,真正充滿的滿電是不帶閃電標識,那麼在根據電量進行show顯示時,是要區分100%電量是從累加得到的還是真正的電量充滿?所以,下面的程式段完成該功能。

static unsigned int crap = 0;         //乙個區別標誌

if(capacity == 0)                              //5個,分四個檔:100/4=25

show_logo(1);

else if(capacity == 25)

show_logo(2);

else if(capacity == 50)

show_logo(3);

else if(capacity == 75)

else if(capacity == 100)

else if(crap == 1)             //如果是累加得到的,顯示帶閃電表示的滿進度條畫面

}mt65xx_disp_update();        //刷屏

手機充電原理

當充電器插入時,亦即為pmic充電模組提供了vcharge電壓,只要把pmic的batdet腳接地即可啟動充電模組,這時會產生乙個充電中斷訊號到cpu,通知cpu現在已經進入充電狀態。這時pmic會產生乙個中斷給cpu,cpu開始啟動如下模組 1 adc取樣,主要是採集vchrg,vbat及從mos...

充電原理 手機無線充電是什麼原理

電工之家 www.dgzj.com qq群 2179090 簡單理解為手機無線充電裝置與被無線充電手機裝置之間僅僅存在以磁場傳送能量的方式。早在1831年法拉第發現了電子磁感應現象,揭示了電與磁的關係,通俗點說,電能生磁,磁也能生電,而我們目前主流的無線充電技術,磁感應無線充電技術,就是利用這一原理...

關機充電,手機不斷重啟問題分析

程式設計師android 力薦 android 開發者需要的必備技能 一 lk 階段重啟 二 在kernel關機充電階段重啟 三 關閉異常掉電機制 在低電量時,插著充電器關機充電,手機會不斷重啟。低電量關機充電不斷重啟問題在lk 階段重啟的log如下 unplugged usb charger in...