新銀科技淺談手機(jī)充電原理以及過程分析
2016-06-17 08:50:49 來源:新銀
分享到:
以下是關(guān)于手機(jī)充電的技術(shù)知識(shí):
一, 充電流程介紹:
當(dāng)
充電器插入時(shí),亦即為PMIC充電模塊提供了Vcharge電壓,這時(shí)會(huì)產(chǎn)生一個(gè)充電中斷信號(hào)到CPU,通知CPU現(xiàn)在已經(jīng)進(jìn)入充電狀態(tài)。CPU開始啟動(dòng)如下模塊:
1,ADC采樣,主要是采集Vchrg,Vbat及從MOSFET漏極輸出的電壓,可以算出充電電壓和充電電流;
2,發(fā)消息給MMI層,讓它顯示充電狀態(tài)及一些采樣數(shù)據(jù);
3,檢測(cè)電池電壓有沒有超過保護(hù)電壓及電池連接是否連接正確,如果有問題即可通過CHRCTRL切斷充電電路;
4,平時(shí)顯示“充電器沒有連接”警告,是因?yàn)镻MIC的BATDET腳和MOSFET沒有打開,從而沒有充電電流引起的。
二, 充電狀態(tài)轉(zhuǎn)換介紹:
如果電池電壓較低,只是預(yù)充的時(shí)間稍長(zhǎng)一些,最多一兩個(gè)小時(shí)應(yīng)該可以完成充電!一般電池都有自保護(hù),不會(huì)把電放到0V的!
1, 充電分三個(gè)過程:預(yù)充電、恒流充電、恒壓充電
2,當(dāng)Vbat<3.3V 屬于預(yù)充階段,處于預(yù)充電狀態(tài)時(shí),以150mA 電流涓流充電。PMIC不能提供Vcore、Vdd等電壓,CPU處于關(guān)機(jī)狀態(tài),這時(shí)CPU是不工作的!純粹是硬件電路充電
3,當(dāng)3.3V
4,Vbat>4.2V 進(jìn)入恒壓充電階段(屬于TOPOFF的一個(gè)點(diǎn),如下圖),這個(gè)階段電流逐漸變小,電壓維持不變!當(dāng)電流減小到接近為0(或者某個(gè)較小閥值)時(shí),CPU發(fā)出控制信號(hào)這時(shí)停止充電!
以狀態(tài)機(jī)的方框圖說明如下:
三, 普通的充電器電路圖如下:
普通的USB充電圖:
如上圖,VBUS是USB供電;VCDT是通過分壓電阻測(cè)試充電電壓的測(cè)試點(diǎn);CHR_LDO跟VDRV共同完成開關(guān)切換功能,實(shí)現(xiàn)對(duì)電池的開關(guān)充電(充9S停1S);IBENBE跟BATSNS完成端電壓除以RSENSE測(cè)得充電電流;BAT_ON提供電池電壓測(cè)試。
四, LED與充電狀態(tài)的配合實(shí)例:
開機(jī)后,插入
USB充電時(shí)顯示橙色燈,拔掉USB不充電時(shí)滅燈,充滿電后顯示綠燈。充電時(shí),系統(tǒng)在一個(gè)線程里面循環(huán)檢測(cè)電量,當(dāng)電量滿置綠燈。需要注意的是,顯示綠燈后,就禁止充電了以防止過充。所以在電量變滿后,就應(yīng)該SetCharger(off),但此時(shí)有個(gè)矛盾:充電開橙色燈的操作在SetCharger(on)中,滅燈的操作在SetCharger(off)中,這樣會(huì)造成一個(gè)BUG:一旦電量滿后,關(guān)閉充電功能時(shí)也會(huì)滅燈,這樣就搞的橙色燈閃了下就滅了,顯然這不是我要的效果。
我要的效果是變綠后,除非我拔掉USB線,才會(huì)滅燈。所以需要在電滿時(shí)加標(biāo)志A,在SetCharger(off)中加判斷語句A,跳過滅燈的處理而僅僅關(guān)掉充電,同時(shí)打開另一個(gè)標(biāo)志B。同時(shí)在USB插拔的操作中處理B,表示當(dāng)燈變綠時(shí),優(yōu)先處理B,在B后面添加滅燈語句,僅僅處理這一塊就可以了。
五, 關(guān)于標(biāo)準(zhǔn)USB充電器和非標(biāo)準(zhǔn)USB充電器,是跟USB的插座構(gòu)造有關(guān)的。
六, 關(guān)于手機(jī)充電器的分類
通常情況下,程序中一般有四種充電器設(shè)定,分別是:USB HOST,CHARGING HOST,STANDARD CHARGER,NON-STANDARD CHARGER。
如上:USB HOST,CHARGING HOST的差別在于左圖,兩者用的都是PC的USB口,其中USB HOST居多。STANDARD CHARGER,NON-STANDARD CHARGER差別在于
前者的DP跟DM有短接,后者沒有。所以通過對(duì)DP/DM的判斷,就可以分辨出充電器類別。
七, 關(guān)于充電器電氣規(guī)格的差異
最近碰到一個(gè)奇怪的現(xiàn)象。新款手機(jī)用
5V1A的充電器可以充,用5V500MA的充電器是充不進(jìn)去電,用PC的USB卻是一直可以充。經(jīng)過打印充電信息的trace發(fā)現(xiàn),是由充電電流的差異引起。AP程序中對(duì)充電器的電壓下限是4.4V,如果判斷充電器電壓小于這個(gè)值,則AP會(huì)自己關(guān)掉充電模塊。那為什么1A的充電器可以而500MA的充電器不行呢?可以假設(shè)前者的內(nèi)阻比后者的內(nèi)阻小,那么暫不管真實(shí)的充電電流是多少,前者自身分配的壓降肯定小于后者自身分配的壓降,所以后者最終的充電器供給電壓會(huì)更低。
以程序中默認(rèn)的800MA充電時(shí),5V500MA的充電器會(huì)被拉低至3.8V,所以AP會(huì)認(rèn)為充電器不正常就關(guān)掉自身的充電模塊。但是如果是5V1A時(shí),由于充電器內(nèi)阻較小,就算供電端被拉低也不會(huì)低于4.4V,所以它仍然是可以工作的(測(cè)得實(shí)際充電電流640MA)。
想讓手機(jī)兼容500MA的充電器,此時(shí)需要做個(gè)處理:在判斷充電器電壓小于4.4V時(shí)不返回錯(cuò)誤,同時(shí)將充電電流設(shè)定成400MA(對(duì)于同一個(gè)充電器,充電電流越小,充電器自身壓降更小,供給更大),讓它仍然可以充電只不過充的會(huì)慢點(diǎn)。此時(shí)的程序段如下:
A,設(shè)置一個(gè)電流改變標(biāo)志,默認(rèn)為FALSE。
static BOOL CurrentChangeFlag = FALSE;
B,在設(shè)置電流的地方判斷該標(biāo)志,注意:該電流設(shè)定是過個(gè)時(shí)間間隔就循環(huán)執(zhí)行。
if(CurrentChangeFlag == TRUE)
g_temp_CC_value = Cust_CC_400MA; //如果改變,就以400MA充電
else
g_temp_CC_value = AC_CHARGER_CURRENT; //如果不改變,就以默認(rèn)電流800MA充電
C,循環(huán)檢測(cè)充電器電壓,并改變電流的程序段:
if (BMT_status.charger_vol <= V_CHARGER_MIN ) //充電器電壓小于4.4V
{
printf("[BATTERY]Charger under voltage!! CurrentChangeFlag=%d\r\n",CurrentChangeFlag);
if(CurrentChangeFlag == TRUE)
{
CurrentChangeFlag = FALSE;
leds_battery_no_charging(); //zhangcheng
BMT_status.bat_charging_state = CHR_ERROR;
return PMU_STATUS_FAIL;
}
CurrentChangeFlag = TRUE;
}
以上的邏輯是:當(dāng)?shù)谝淮螜z測(cè)電流時(shí),充電器默認(rèn)以800MA充電,此時(shí)充電器被拉低。之后進(jìn)入該條件,接著執(zhí)行CurrentChangeFlag = TRUE。在上述B中完成設(shè)定電流為400MA,如果設(shè)定完之后充電器正常的話,就不會(huì)再進(jìn)入這個(gè)判斷了,充電器持續(xù)充電;如果設(shè)定400MA之后還是會(huì)進(jìn)入該判斷,說明充電器不合格,此時(shí)要關(guān)掉充電功能,所以執(zhí)行返回電失敗的那段。注意:如果此時(shí)客戶不管充電電壓正確與否,仍然要求繼續(xù)充電,只需要將if(CurrentChangeFlag == TRUE) 程序段屏蔽掉就行。
八, 電池功能測(cè)試中的一些技巧
A, 對(duì)于數(shù)字電源用數(shù)字電源模擬電池,通過其電流值可以知道手機(jī)的工作狀態(tài),比如電流值為正就是手機(jī)耗電的多少;插入外部充電器之后,如果電流值為負(fù),則是手機(jī)正在充電。另一方面,對(duì)于用數(shù)字電源模擬充電器的,通過其電流值就可以知道供給外部的充電電流是多少,如果讀數(shù)很小說明沒有充電。
B,對(duì)于電池的溫控腳,一般是要接的。如果需要外接溫控腳,記住一定要跟電源公地。單獨(dú)的一個(gè)溫控腳是不會(huì)起作用的。
C,電池的快速放電。很多時(shí)候我們需要測(cè)試電池低電壓時(shí)的狀況,得到電池低電壓是比較緩慢的一個(gè)過程。有個(gè)好方法就是利用數(shù)字電源,電壓設(shè)置成3V,電流設(shè)置成800MA,然后把電源跟電池連接,即可實(shí)現(xiàn)電池的快速放電。
D,電池的充電。當(dāng)我們?cè)跊]有手機(jī)的情況下要對(duì)一塊電池進(jìn)行充電,可以用數(shù)字電源完成這個(gè)功能。設(shè)置電源是4.2V,電流要限流在800MA以內(nèi),接上對(duì)應(yīng)的電極就可以了,不需要接溫控腳。需要注意的是:一開始的充電電流會(huì)很大(提示LIMITED),如果不限流會(huì)更大,這樣會(huì)影響電池壽命及安全性。隨著電池電壓慢慢增高,電流會(huì)慢慢變小,直到充滿時(shí)的0ma左右。最后OFF掉電源,發(fā)現(xiàn)電壓顯示跟電壓源之前設(shè)定的一樣,說明已經(jīng)充滿。
九, 關(guān)機(jī)充電時(shí)低電壓警告的狀態(tài)圖

關(guān)于電池低電壓狀況的一個(gè)說明:很多時(shí)候手機(jī)因?yàn)榈碗妷宏P(guān)機(jī)后,只要沒有取出電池,手機(jī)仍然在消耗電池的電量,這個(gè)很容易理解就像接了個(gè)未耗電的電阻。這會(huì)造成一個(gè)現(xiàn)象,電池電量會(huì)持續(xù)降低,所以再充電時(shí)需要沖入一段時(shí)間,才會(huì)進(jìn)入正常的充電提示和LED報(bào)警提示,之前是不會(huì)有任何動(dòng)作的。
十, full charging的LOGO顯示差別
手機(jī)在使用中會(huì)碰到這種情況:手機(jī)充電畫面是動(dòng)態(tài)的進(jìn)度條,然后到充滿一直顯示滿進(jìn)度條,結(jié)論就是對(duì)于滿電畫面始終可以用同一幅圖片;如果動(dòng)態(tài)進(jìn)度條的滿電顯示是帶閃電標(biāo)識(shí),真正充滿的滿電是不帶閃電標(biāo)識(shí),那么在根據(jù)電量進(jìn)行show圖片顯示時(shí),是要區(qū)分100%電量是從累加得到的還是真正的電量充滿?所以,下面的程序段完成該功能。
static unsigned int crap = 0; //一個(gè)區(qū)別標(biāo)志
if(capacity == 0) //5個(gè)圖片,分四個(gè)檔:100/4=25
show_logo(1);
else if(capacity == 25)
show_logo(2);
else if(capacity == 50)
show_logo(3);
else if(capacity == 75)
{
show_logo(4); //如果是累加得到100,必然經(jīng)過該步,置標(biāo)志
crap = 1;
}
else if(capacity == 100)
{
if(crap == 0) //如果是真正的滿電,直接顯示不帶閃電標(biāo)識(shí)的滿進(jìn)度條畫面
{
show_logo(8);
}
else if(crap == 1) //如果是累加得到的,顯示帶閃電表示的滿進(jìn)度條畫面
{
show_logo(5);
crap = 0; //清標(biāo)志
}
}
mt65xx_disp_update(); //刷屏
十一, 電壓跟電量轉(zhuǎn)化的算法
VBAT_TO_PERCENT Batt_VoltToPercent_Table[] = {
/*BattVolt,BattPercent*/
{3350,0},
{3685,10},
{3746,20},
{3784,30},
{3812,40},
{3858,50},
{3951,60},
{4024,70},
{4124,80},
{4235,90},
{4335,100},
};
十二, 普通電池的charging iv curve圖
電池容量被定義為:用設(shè)定的電流把電池放電至設(shè)定的電壓所給出的電量。也可以說電池容量是:用設(shè)定的電流把電池放電至設(shè)定的電壓所經(jīng)歷的時(shí)間和這個(gè)電流的乘積。
如上圖,藍(lán)色線的是電壓變化,黑色線是電流變化,橫軸是時(shí)間軸采樣點(diǎn)??梢婋姵匾婚_始從較低電壓充電過程中,是恒流1007ma充電,隨著電壓升高后面慢慢變成恒壓充電,此時(shí)充電電流慢慢變小,變小到cut off電流196ma后,充電電流徹底變成0,即充滿停止充電。之后,使用電池變成4.07的recharging電壓后,只要充電器沒有拔出,會(huì)繼續(xù)給電池充電,此時(shí)仍是恒壓充電,重復(fù)前一個(gè)過程。
綜上,如果測(cè)算一個(gè)電池的容量,也可采用類似的時(shí)間軸跟電流曲線結(jié)合面積的算法。比如每隔5分鐘讀取充電電流,得到的c1,c2,以計(jì)算梯形面積的公式,(c1+c2)*(5/60)/2,充電電流是漸漸減小的,當(dāng)充電電流截止到0,整個(gè)計(jì)算過程結(jié)束。講這些小面積累加起來,就是電池容量(mah)。
十三, 充放電效率
比如一個(gè)容量450ma時(shí)的電池,能充進(jìn)去多少,并不意味著能放出那么多,中間有個(gè)轉(zhuǎn)化效率的問題。如下一個(gè)充放電曲線圖,左邊電壓刻度右邊電流刻度,已225ma恒流充電到4.2伏,擱置,再以150ma放電,再擱置。

測(cè)試結(jié)果圖:

沖進(jìn)去450ma,釋放出來的能量只有388ma時(shí)。
(本文編輯: 新銀engineer)
請(qǐng)關(guān)注我們的微信公眾號(hào)(新銀)

相關(guān)熱詞搜索:手機(jī)充電 手機(jī)充電器
上一篇:怎么選擇合適自己手機(jī)的充電器
下一篇:智能手機(jī)充電一整晚好嗎?對(duì)手機(jī)電池有什么影響?