多口智能手机充电器地原理_第1页
多口智能手机充电器地原理_第2页
多口智能手机充电器地原理_第3页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STW三鑫天威首席工程师:X经理研发设计总监智能手机充电器,在未来两年,充电技术还会有令人不可想象的变化。智能多口手机充电器原理:1充电流程介绍:当充电器插入时,亦即为 PMIC充电模块提供了 Vcharge电压,这时会 产生一个充电中断信号到 CPU通知CPU现在已经进入充电状态。CPU开始启动如下模块:1,ADC采样,主要是采集 Vchrg,Vbat与从MOSFE漏极输出的电压,可以算出充电电压和 充电电流;2, 发消息给MMI层,让它显示充电状态与一些采样数据;3, 检测电池电压有没有超过保护电压与电池连接是否连接正确,如果有问题即可通过CHRCTR切断充电电路;4, 平时显示“充电器没

2、有连接"警告,是因为PMIC的BATDET却和MOSFE没有打开,从而 没有充电电流引起的。2充电状态转换介绍:如果电池电压较低,只是预充的时间稍长一些,最多一两个小时 应该可以完成充电! 一般电池都有自保护,不会把电放到0V的!属于预充阶段,处于预充电状态时, 以150mA电流涓流充电。PMIC不能 提供Vcore、Vdd等电压,CPU处于关机状态,这时 CPU是不工作的!纯粹是硬件电路充电PMIC的LDO开始输出电压,从而cpu开始工作,这是进入恒流充电阶段, 以大概600mA电 流快速充电。3.45V是开机电压,按开机键的话就会开机。3, Vbat>4.2V进入恒压充电阶

3、段属于 TOPOFF勺一个点,如如下图,这个阶段电流逐渐 变小,电压维持不变!当电流减小到接近为0或者某个较小阀值时,CPU发出控制信号这时停止充电!以状态机的方框图说明如下:3一个普通的充电器电路如下:一个普通的USB充电图:0如上,VBUS是USB供电;VCDT是通过分压电阻测试充电电压的测试点;CHR_LDO艮VDRV共同完成开关切换功能,实现对电池的开关充电充9S停1S; IBENBE跟BATSNS成端电压除以RSENS测得充电电流;BAT_Ot提供电池电压测试。4LED与充电状态的配合实例:开机后,插入 USB充电时显示橙色灯,拔掉USB不充电时灭灯,充满电后显示绿灯。充电时,系统在

4、一个线程里面循环检测电量,当电量满置绿灯。需要注意的是,显示 绿灯后,就禁止充电了以防止过充。所以在电量变满后,就应该SetCharger(off),但此时有个矛盾:充电开橙色灯的操作在SetCharger(o n)中,灭灯的操作在 SetCharger(off) 中,这样会造成一个 BUG 一旦电量满后,关闭充电功能时也会灭灯,这样就搞的橙色灯闪了下 就灭了,显然这不是我要的效果。我要的效果是变绿后,除非我拔掉USB线,才会灭灯。所以需要在电满时加标志A,在SetCharger(off) 中加判断语句 A,跳过灭灯的处理而仅仅关掉充电,同时打开另 一个标志B。同时在USB插拔的操作中处理 B

5、,表示当灯变绿时,优先处理B,在B后面添加灭灯语句,仅仅处理这一块就可以了。5关于标准USB充电器和非标准 USB充电器,是跟 USB的插座构造有关的。al6关于手机充电器的分类通常情况下,程序中一般有四种充电器设定,分别是:USB HOST CHARGINGHOST STANDARD CHARGENON-STANDARD CHARGER如上:USBHOSTCHARGINEOST勺差异在于左图, 两者用的都是 PC的USB口,其中USBHOST 居多。STANDARD CHARGENON-STANDARD CHARG差异在于前者的DP跟 DM有短接,后者没有。所以通过对DP/DM的判断,就可以

6、分辨出充电器类别。7关于充电器电气规格的差异最近碰到一个奇怪的现象。新款手机用5V1A的充电器可以充,用 5V500MA的充电器是充不进去电,用PC的USB却是一直可以充。经过打印充电信息的 trace发现,是由充电电流的差异引起。AP程序中对充电器的电压下限是4.4V,如果判断充电器电压小于这个值,如此AP会自己关掉充电模块。 那为什么1A的充电器可以而 500MA的充电器不行 呢?可以假设前者的内阻比后者的内阻小,那么暂不管真实的充电电流是多少,前者自身分配的压降肯定小于后者自身分配的压降,所以后者最终的充电器供应电压会更低。以程序中默认的800MA充电时,5V500MA的充电器会被拉低至

7、 3.8V,所以 AP会认为充电器不正常就关掉自身的充电模块。但是如果是5V1A时,由于充电器内阻较小,就算供电端被拉低也不会低于4.4V,所以它仍然是可以工作的测得实际充电电流 640MA。想让手机兼容500MA的充电器,此时需要做个处理:在判断充电器电压小于4.4V时不返回错误,同时将充电电流设定成 400MA对于同一个充电器,充电电流越小, 充电器自身压降更小,供应更大,让它仍然可以充电只不过充的会慢点。此时的程序段如下:A, 设置一个电流改变标志,默认为 FALSEstatic BOOL Curre ntCha ngeFlag = FALSE;B, 在设置电流的地方判断该标志,注意:该

8、电流设定是过个时间间隔就循环执行。if(Curre ntCha ngeFlag = TRUE)g_temp_CC_value =Cust_CC_400MA;/ 如果改变,就以 400MA充电 elseg_temp_CC_value =AC_CHARGER_CURRENT;/如果不改变,就以默认电流 800MA充电C, 循环检测充电器电压,并改变电流的程序段:if (BMT_status.charger_vol <=V_CHARGER_MIN )prin tf("BATTERYCharger un der voltage!Curre ntCha ngeFlag=%drn"

9、;,Curre ntCha ngeFlag);if(Curre ntCha ngeFlag =TRUE)Curre ntCha ngeFlagFALSE;leds_battery_ no_chargi ng();/zha ngchengBMT_status.bat_charg in g_state =CHR_ERROR;returnPMU_STATUS_FAIL;Curre ntCha ngeFlag =TRUE; 以上的逻辑是:当第一次检测电流时,充电器默认以800MA充电,此时充电器被拉低。 之后进入该条件,接着执行 CurrentChangeFlag = TRUE在上述 B中完成设定电流

10、为 400MA如 果设定完之后充电器正常的话,就不会再进入这个判断了, 充电器持续充电;如果设定400MA 之后还是会进入该判断,说明充电器不合格,此时要关掉充电功能,所以执行返回电失败的 那段。注意:如果此时客户不管充电电压正确与否,仍然要求继续充电,只需要将if(Curre ntCha ngeFlag = TRUE)程序段屏蔽掉就行。8电池功能测试中的一些技巧A,对于数字电源用数字电源模拟电池,通过其电流值可以知道手机的工作状态,比如电流值为正就是手机耗电的多少;插入外部充电器之后,如果电流值为负,如此是手机正在充电。 另一方面,对于用数字电源模拟充电器的,通过其电流值就可以知道供应外部的

11、充电电流是多少,如果读数很小说明没有充电。B,对于电池的温控脚, 一般是要接的。如果需要外接温控脚,记住一定要 跟电源公地。单独的一个温控脚是不会起作用的。C,电池的快速放电。 很多时候我们需要测试电池低电压时的状况,得到电池低电压是比拟缓慢的一个过程。有个好方法就是利用数字电源,电压设置成3V,电流设置成800MA然后把电源跟电池连接,即可实现电池的快速放电。D,电池的充电。当我们在没有手机的情况下要对一块电池进展充电, 可以 用数字电源完成这个功能。设置电源是4.2V,电流要限流在 800MA以内,接上对应的电极就可以了,不需要接温控脚。需要注意的是:一开始的充电电流会很大提示LIMITE

12、D,如果不限流会更大, 这样会影响电池寿命与安全性。随着电池电压慢慢增高,电流会慢慢变小,直到充满时的Oma左右。最后OFF掉电源,发现电压显示跟电压源之前设定的一样,说 明已经充满。9关机充电时低电压警告的状态图关于电池低电压状况的一个说明:很多时候手机因为低电压关机后,只要没有取出电池,手机仍然在消耗电池的电量,这个很容易理解就像接了个未耗电的电阻。这会造成一个现象, 电池电量会持续降低,所以再充电时需要冲入一段时间,才会进入正常的充电提示和LED报警提示,之前是不会有任何动作的。10full charging的 LOGO显示差异手机在使用中会碰到这种情况:手机充电画面是动态的进度条,然后

13、到充满一直显示满进度条,结论就是对于满电画面始终可以用同一幅图片;如果动态进度条的满电显示是带闪电标识,真正充满的满电是不带闪电标识,那么在根据电量进展show图片显示时,是要区分100沁量是从累加得到的还是真正的电量充满?所以,下面的程序段完 成该功能。static unsigned int crap = 0;/ 一个区另U标志incapacity =0)5个图片,分四个档:100/4=25show_logo(1); else if(capacity =25)show_logo(2);else if(capacity =50)show_logo(3);else if(capacity =75

14、)show_logo(4);/如果是累加得到100,必然经过该步,置标志crap=1; elseif(capacity = 100)if(crap =0)/如果:是真正的满电,直接显示不带闪电标识旳满进度条画面show_logo(8);else if(crap=1)/如果:是累加得到的,显示带闪电表示的满进度条画面show_logo(5);crap = 0;/清标志 mt65xx_disp_update();/刷屏11电压跟电量转化的算法VBAT_TO_PERCENT Batt_VoltToPerce nt_Table= /*BattVolt,BattPerce nt*/3350,0,3685

15、,10,3746,20,3784,30,3812,40,3858,50,3951,60,4024,70,4124,80,4235,90,4335,100,;cppview pla in copy1.UINT32 BattVoltToPercent(UINT16dwVoltage)2. 3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.UINT32 m=0;UINT32 VBAT1=0,VBAT2=0;UINT32 bPertResult=O,bPert 1= 0,bPert2=0;if (dwVoltage<=Batt_VoltToPercent_T

16、ableO.BattVolt)bPertResult = Batt_VoltToPercent_TableO.BattPercent; return bPertResult;else if (dwVoltage>=Batt_VoltToPercent_Table10.BattVolt)bPertResult = Batt_VoltToPercent_Table10.BattPercent; return bPertResult;elseVBAT1 = Batt_VoltToPercent_Table0.BattVolt;20.bPert1 =Batt_VoltToPercent_Tabl

17、e0.BattPercent;21.for(m=1;m<=10;m+)22.23.if (dwVoltage<=Batt_VoltToPercent_Tablem.BattVolt)24.25.VBAT2 = Batt_VoltToPercent_Tablem.BattVolt;26.bPert2 = Batt_VoltToPercent_Tablem.BattPercent;27.break;28.29.else30.31.VBAT1 = Batt_VoltToPercent_Tablem.BattVolt;32.bPert1 = Batt_VoltToPercent_Table

18、m.BattPercent;33.34.35.36.37.bPertResult=(dwVoltage-VBAT1)*bPert2)+(VBAT2-dwVoltage)*bPert1)/(VBAT2-VBAT1);38.returnbPertResult;39. 12丨普通电池的 chargi ng iv curve 图电池容量被定义为:用设定的电流把电池放电至设定的电压所给出的电量。也可以说电池容量是:用设定的电流把电池放电至设定的电压所经历的时间和这个电流的乘积。Charging IV Curve9080007006O50400O30O2000OO O OB*1 D O4<1O加!QOI O00400020(<ul)uG>±n(J6£6石上0Sample dots如上图,蓝色线的是电压变化,黑色线是电流变化,横轴是时间轴采样点。可见电池一开 始从较低

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论