智能手机充电器.docx

上传人:牧羊曲112 文档编号:2085923 上传时间:2023-01-08 格式:DOCX 页数:12 大小:155.68KB
返回 下载 相关 举报
智能手机充电器.docx_第1页
第1页 / 共12页
智能手机充电器.docx_第2页
第2页 / 共12页
智能手机充电器.docx_第3页
第3页 / 共12页
智能手机充电器.docx_第4页
第4页 / 共12页
智能手机充电器.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《智能手机充电器.docx》由会员分享,可在线阅读,更多相关《智能手机充电器.docx(12页珍藏版)》请在三一办公上搜索。

1、AVR课程设计:智能手机充电器 组员:华诚、葛亮、贾广魁一 系统设计1.设计目的1) 熟悉并掌握单片机嵌入式系统的开发流程和应用方法。2)做到对电池充电过程的实时监测。3)做出智能化的充电器。我发现在给手机充电的时候,往往不能知道电池还有多长时间能充满,而且经常忘记是什么时候开始充电的,因此很容易造成过充或充电不足,从而影响手机电池的使用寿命,还有可能出现危险。于是我便萌生了设计一种可显示时间的手机充电器的想法2.功能简介1)可与锂电池中的芯片通信,得到电池组的容量、电压、电流等参数。2)用LED显示电池的剩余充电时间。3)具备防过充功能,在电池电压达到一定值后减小充电电流,直至电池充满。3.

2、应用能给各种锂离子电池充电并可以实时显示充电的剩余时间。二实验资源1)硬件:AVR开发板,Atmega16,LED七段数码管,电源2)软件:ICCAVR,AVRstudio三实验原理1. 电路原理图注释:左下为AD模块,Mega16的PA口接AD,同时输出PWM,PB3接PWM进行充电控制;右下方为以TLC431为主的稳压源,接单片机的AREF端口。2. 实验原理:锂电池的充电过程分为预充、快充、涓流三个步骤,我们的原理概括的讲,就是在预充阶段通过对电池进行扫描测出电池的容量,与程序中的库进行对应从而得出充电所需时间;再经过快充电池电压达到一定高的值,为防止由于充电过快引起的电池实际电压不足,

3、最后再加上一定时间的涓流充电。在整个过程中通过LED来实时显示剩余充电时间。3. 软件设计流程图PWM波形生成PWM控制充电低电平AD转换电压比较程序实时监控快充 预充 涓流 电池充满,时间归零时间计算程序显示四数据采集为使充电器能为不同容量的电池,需要做测试来采集大量的数据,反应电池在充电过程中电压、电流、时间之间的关系。以下为几个具有代表性的测试图样:1. 容量为600mah的电池快充过程中I-t曲线图中X轴为时间(min),Y轴为电流(mA)图中X轴为时间(min),Y轴为电流(mA)注:图中X轴为时间(min),Y轴为电流(mA)。2容量为650mah电池预充阶段的U-t曲线。图注:X

4、轴为时间(min),Y轴为电压(v)3. 容量为860mah的电池预充阶段U-t曲线。图注:X轴为时间(min),Y轴为电压(v)。由以上各图可以看出,在一定时间段内电压和电流与时间很好的符合了线性关系。4.电池容量与K值对应曲线(K值为充电电压每升高0.04v与对应时间之比)五实物图六成员分工华诚:大部分程序的设计和调试,硬件的设计和搭建,数据采集。葛亮:部分程序的设计,硬件的采购、电路板焊接,PPT制作。贾广魁:提出项目,协助华诚做部分硬软件工作以及数据采集,论文、总结及网页的制作。七成本成本包括:ss8050,ss8550各一个共0.4元,tl431一个0.5元,电阻10k、360R、1

5、M、50R、100R、1K、1R,47uF、0.1uF电容等共2元左右,2个电源共15元。总计17.9元。八程序#include #include #includemath.h /8.00000MHZ unsigned long led_710=0x3f,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F;/七段数码显示数组 unsigned long position6=0xfe,0xfd,0xfb,0xf7,0x0f,0xdf;/六位数码管位选 unsigned long Min30=1,3,5,7,9,11,13,15,17,19,21,23,25

6、,27,29, 31,33,35,37,39,41,43,45,47,49,51,53,55,57,59;/使能充电停止数组 unsigned long k_value60=40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,/预充电压斜率数组 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,; unsigned long V_Tabl

7、e12=380,381,390,391,400,401,410,411,415,416,419,420;/电压比较判断 signed char time3;/时间存储 unsigned char dis_buff6;/时分秒六位分别存储 unsigned char PWMnum,a=0x15,m=0,X,Y,Z;/溢出中断次数,OCR0值,if判断,时分秒,电压 unsigned long K,n,Vref=4.846,T,t,V;/预充斜率,延迟时间,参考电压,时间, signed long Cap;/电池容量 #pragma interrupt_handler adc_isr:iv_ADC

8、 void adc_isr() unsigned long ADNum=0,adc_data; unsigned char Va; ADNum=ADNum+1;/AD转换次数计数 if(ADNum=98888)ADNum=110000; adc_data=ADCH; adc_data=adc_data*4; if(ADNum=2)/初始电压值保存 Va=Vref*adc_data*100/1024; V=Vref*adc_data*100/1024;/实时电压 if(V-Va=4)/斜率计算 K=(20000000/ADNum)%10; void A_value()/OCR0实际值 if(K=

9、k_value60) a=250-K; if (K!=k_value60) a=0; void Cap_value()/容量计算值 unsigned long Aa=2000,P; if(K=k_value60) P=K/Aa; Cap=(-1)*log(P)*200; if (K!=k_value60) Cap=0; void Time_Compu()/时间计算程序 t=3*OCR0; T=Cap/t; if(T=60.000) X=(T/60); Y=(T%60); Z=(T-60)-(T%60)*60; if(T60.000) X=0;Y=(T*10)%10); Z=(T-(T*10)%

10、10)*60); void Delay_ms(n) int i,j; for(i=0;in;i+) for(j=0;j8000;j+); void display(void) unsigned char i; for (i=0;15;i+) PORTC=0XFF; PORTD=led_7dis_buffi; PORTC=positioni; Delay_ms(1); PORTC=0XFF; #pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF void timer0_ovf_isr(void) PWMnum=PWMnum+1; void

11、time_to_disbuffer(void) unsigned char i,j=0; for(i=0;i=0X15)/倒计时 if(PWMnum123) PWMnum=0; time0-; if(time00) time0=59; time1-; if(time1=Min30) m=0; if(time10) time1=59; time2-; time_to_disbuffer(); if(m=0)&(V=V_Table12)/中途停车,休息电池 display(); OCR0=0X00; Delay_ms(10000); time0=(time0-10); if(time0=0) time0=time0+59; time1=time1-1; time_to_disbuffer(); OCR0=a; m=1; if(V=420|V=421) /电池充满,时间清零 display(); OCR0=0X15; time2=0; time1=0; time0=0; time_to_disbuffer(); Delay_ms(600000);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号