《智能手机充电器hsaf.docx》由会员分享,可在线阅读,更多相关《智能手机充电器hsaf.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AVR课课程设计计:智能能手机充充电器组员:华华诚、葛葛亮、贾贾广魁一 系统设计计1.设计计目的1) 熟熟悉并掌掌握单片片机嵌入入式系统统的开发发流程和和应用方方法。2)做到到对电池池充电过过程的实实时监测测。3)做出出智能化化的充电电器。我我发现在在给手机机充电的的时候,往往往不能能知道电电池还有有多长时时间能充充满,而而且经常常忘记是是什么时时候开始始充电的的,因此此很容易易造成过过充或充充电不足足,从而而影响手手机电池池的使用用寿命,还还有可能能出现危危险。于于是我便便萌生了了设计一一种可显显示时间间的手机机充电器器的想法法2.功能能简介1)可与与锂电池池中的芯芯片通信信,得到到电池组组
2、的容量量、电压压、电流流等参数数。2)用LLED显显示电池池的剩余余充电时时间。3)具备备防过充充功能,在在电池电电压达到到一定值值后减小小充电电电流,直直至电池池充满。3.应用用能给各种种锂离子子电池充充电并可可以实时时显示充充电的剩剩余时间间。二实验验资源1)硬件件:AVVR开发发板,AAtmeega116,LLED七七段数码码管,电电源2)软件件:ICCCAVVR,AAVRsstuddio三实验验原理1. 电电路原理理图注释:左左下为AAD模块块,Megaa16的的PA口口接ADD,同时时输出PPWM,PB33接PWWM进行行充电控控制;右右下方为为以TLLC4331为主主的稳压压源,接
3、接单片机机的ARREF端端口。2. 实实验原理理:锂电池的的充电过过程分为为预充、快快充、涓涓流三个个步骤,我我们的原原理概括括的讲,就就是在预预充阶段段通过对对电池进进行扫描描测出电电池的容容量,与与程序中中的库进进行对应应从而得得出充电电所需时时间;再再经过快快充电池池电压达达到一定定高的值值,为防防止由于于充电过过快引起起的电池池实际电电压不足足,最后后再加上上一定时时间的涓涓流充电电。在整整个过程程中通过过LEDD来实时显显示剩余余充电时时间。3. 软软件设计计流程图图PWM波形生成PWM控制充电低电平AD转换电压比较程序实时监控快充 预充 涓流 电池充满,时间归零时间计算程序显示四数
4、据据采集为使充电电器能为为不同容容量的电电池,需需要做测测试来采采集大量量的数据据,反应应电池在在充电过过程中电电压、电电流、时时间之间间的关系系。以下下为几个个具有代代表性的的测试图图样:1. 容容量为6600mmah的的电池快快充过程程中I-t曲线线图中X轴轴为时间间(miin),YY轴为电电流(mmA)图中X轴轴为时间间(miin),YY轴为电电流(mmA)注:图中中X轴为为时间(minn),YY轴为电电流(mA)。2容量量为6550maah电池池预充阶阶段的UU-t曲曲线。图注:XX轴为时时间(mmin),Y轴轴为电压压(v)3. 容容量为8860mmah的的电池预预充阶段段U-tt曲
5、线。图注:XX轴为时时间(mmin),Y轴轴为电压压(v)。由以上各各图可以以看出,在在一定时时间段内内电压和和电流与与时间很很好的符符合了线线性关系系。4.电池池容量与与K值对对应曲线线(K值值为充电电电压每每升高00.044v与对对应时间间之比)五实物物图六成员员分工华诚:大大部分程程序的设设计和调调试,硬硬件的设设计和搭搭建,数数据采集集。葛亮:部部分程序序的设计计,硬件件的采购购、电路路板焊接接,PPPT制作作。贾广魁:提出项项目,协协助华诚诚做部分分硬软件件工作以以及数据据采集,论论文、总总结及网网页的制制作。七成本本成本包括括:sss80550,sss85550各各一个共共0.44
6、元,ttl4331一个个0.55元,电电阻100k、3360RR、1MM、500R、1100RR、1KK、1RR,477uF、00.1uuF电容容等共22元左右右,2个个电源共共15元元。总计计17.9元。八程序序#inccludde #inncluude #inncluudematth.hh /88.0000000MHZZ unnsiggnedd loong ledd_710=00x3ff,0xx06,0x55B,00x4FF,0xx66, 00x6DD,0xx7D,0x007,00x7FF,0xx6F;/七段数数码显示示数组 unnsiggnedd loong possitiion6=0x
7、xfe,0xffd,00xfbb,0xxf7,0x00f,00xdff;/六位位数码管管位选 unnsiggnedd loong Minn300=1,33,5,7,99,111,133,155,177,199,211,233,255,277,299, 311,333,355,377,399,411,433,455,477,499,511,533,555,577,599;/使能能充电停停止数组组 unnsiggnedd loong k_vvaluue660=400,411,422,433,444,455,466,477,488,499,500,511,522,533,544,555,566,57
8、7,588,599,/预充电电压斜率率数组 660,661,662,663,664,665,666,667,668,669,770,771,772,773,774,775,776,777,778,779, 880,881,882,883,884,885,886,887,888,889,990,991,992,993,994,995,996,997,998,999,; unnsiggnedd loong V_TTablle112=3880,3381,3900,3991,4400,4011,4110,4411,4155,4116,4419,4200;/电压压比较判判断 siigneed cchar
9、r tiime3;/时时间存储储 unnsiggnedd chhar diss_buuff6;/时时分秒六六位分别别存储 unnsiggnedd chhar PWMMnumm,a=0x115,mm=0,X,YY,Z;/溢溢出中断断次数,OOCR00值,iif判断断,时分分秒,电电压 unnsiggnedd loong K,nn,Vrref=4.8846,T,tt,V;/预预充斜率率,延迟迟时间,参参考电压压,时间间, siigneed llongg Caap;/电池池容量 #prragmma iinteerruupt_hanndleer aadc_isrr:ivv_ADDC vvoidd ad
10、dc_iisr() uunsiigneed llongg ADDNumm=0,adcc_daata; uunsiigneed ccharr Vaa; AADNuum=AADNuum+11;/AD转转换次数数计数 iif(AADNuum=988888)ADNNum=11000000; aadc_datta=AADCHH; aadc_datta=aadc_datta*44; iff(ADDNumm=22)/初始电电压值保保存 VVa=VVreff*addc_ddataa*1000/110244; VV=Vrref*adcc_daata*1000/10024;/实实时电压压 if(V-VVa=4)/
11、斜率率计算 K=(20000000000/ADDNumm)%110; vooid A_vvaluue()/OOCR00实际值值 iff(K=k_vallue60) aa=2550-KK; iif (K!=k_vvaluue660) aa=0; vvoidd Caap_vvaluue()/容容量计算算值 uunsiigneed llongg Aaa=20000,P; if(K=k_vvaluue660) PP=K/Aa; CCap=(-11)*llog(P)*2000; iff (KK!=kk_vaaluee600) CCap=0; vooid Timme_CComppu()/时时间计算算程序
12、t=33*OCCR0; T=CCap/t; if(T=60.0000) X=(T/60); Y=(T%60); Z=(TT-600)-(T%660)*600; iif(TT600.0000) X=00;Y=(T*10)%100); Z=(T-(T*10)%100)*660); vooid Dellay_ms(n) iint i,jj; ffor(i=00;in;ii+) foor(jj=0;j880000;j+); voiid ddispplayy(vooid) unnsiggnedd chhar i; foor (i=00;15;ii+) PORRTC=0XFFF; PORRTD=ledd_
13、7diss_buuffi; PORRTC=possitiioni; Dellay_ms(1); PORRTC=0XFFF; #praagmaa innterrruppt_hhanddlerr tiimerr0_oovf_isrr:ivv_TIIMERR0_OOVF voiid ttimeer0_ovff_issr(vvoidd) PWWMnuum=PPWMnnum+1;voidd tiime_to_dissbuffferr(vooid) unnsiggnedd chhar i,jj=0; foor(ii=0;i=00X155)/倒计计时 if(PWMMnumm1223) PWMMnumm=0;
14、 timme00-; iff(tiime00) timme00=559; ttimee1-; if(timme11=Minn300) m=0; iff(tiime10) timme11=559; timme22-; timee_too_diisbuuffeer(); iff(mm=00)&(V=V_Tabble12)/中途途停车,休休息电池池 diispllay(); OCCR0=0X000; Deelayy_mss(1000000); tiime0=(tiime0-10); iff(tiime0=0) timme00=ttimee0+599; timme11=ttimee1-1; tiime_to_dissbuffferr(); OCCR0=a; m=1; iff(V=4220|V=4211) /电池池充满,时时间清零零 diispllay(); OCCR0=0X115; tiime2=0; tiime1=0; tiime0=0; tiime_to_dissbuffferr(); Deelayy_mss(60000000);