AVR課程設(shè)計-智能手機充電器_第1頁
AVR課程設(shè)計-智能手機充電器_第2頁
AVR課程設(shè)計-智能手機充電器_第3頁
AVR課程設(shè)計-智能手機充電器_第4頁
AVR課程設(shè)計-智能手機充電器_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、AVR課程設(shè)計:智能手機充電器 系統(tǒng)設(shè)計1.設(shè)計目的1) 熟悉并掌握單片機嵌入式系統(tǒng)的開發(fā)流程和應(yīng)用方法。2)做到對電池充電過程的實時監(jiān)測。3)做出智能化的充電器。我發(fā)現(xiàn)在給手機充電的時候,往往不能知道電池還有多長時間能充滿,而且經(jīng)常忘記是什么時候開始充電的,因此很容易造成過充或充電不足,從而影響手機電池的使用壽命,還有可能出現(xiàn)危險。于是我便萌生了設(shè)計一種可顯示時間的手機充電器的想法2.功能簡介1)可與鋰電池中的芯片通信,得到電池組的容量、電壓、電流等參數(shù)。2)用LED顯示電池的剩余充電時間。3)具備防過充功能,在電池電壓達到一定值后減小充電電流,直至電池充滿。3.應(yīng)用能給各種鋰離子電池充電并

2、可以實時顯示充電的剩余時間。二實驗資源1)硬件:AVR開發(fā)板,Atmega16,LED七段數(shù)碼管,電源2)軟件:ICCAVR,AVRstudio三實驗原理1. 電路原理圖注釋:左下為AD模塊,Mega16的PA口接AD,同時輸出PWM,PB3接PWM進行充電控制;右下方為以TLC431為主的穩(wěn)壓源,接單片機的AREF端口。2. 實驗原理:鋰電池的充電過程分為預(yù)充、快充、涓流三個步驟,我們的原理概括的講,就是在預(yù)充階段通過對電池進行掃描測出電池的容量,與程序中的庫進行對應(yīng)從而得出充電所需時間;再經(jīng)過快充電池電壓達到一定高的值,為防止由于充電過快引起的電池實際電壓不足,最后再加上一定時間的涓流充電

3、。在整個過程中通過LED來實時顯示剩余充電時間。3. 軟件設(shè)計流程圖PWM波形生成PWM控制充電低電平AD轉(zhuǎn)換電壓比較程序?qū)崟r監(jiān)控快充 預(yù)充 涓流 電池充滿,時間歸零時間計算程序顯示四數(shù)據(jù)采集為使充電器能為不同容量的電池,需要做測試來采集大量的數(shù)據(jù),反應(yīng)電池在充電過程中電壓、電流、時間之間的關(guān)系。以下為幾個具有代表性的測試圖樣:1. 容量為600mah的電池快充過程中I-t曲線圖中X軸為時間(min),Y軸為電流(mA)圖中X軸為時間(min),Y軸為電流(mA)注:圖中X軸為時間(min),Y軸為電流(mA)。2容量為650mah電池預(yù)充階段的U-t曲線。圖注:X軸為時間(min),Y軸為電

4、壓(v)3. 容量為860mah的電池預(yù)充階段U-t曲線。圖注:X軸為時間(min),Y軸為電壓(v)。由以上各圖可以看出,在一定時間段內(nèi)電壓和電流與時間很好的符合了線性關(guān)系。4.電池容量與K值對應(yīng)曲線(K值為充電電壓每升高0.04v與對應(yīng)時間之比)五實物圖六成員分工華誠:大部分程序的設(shè)計和調(diào)試,硬件的設(shè)計和搭建,數(shù)據(jù)采集。葛亮:部分程序的設(shè)計,硬件的采購、電路板焊接,PPT制作。賈廣魁:提出項目,協(xié)助華誠做部分硬軟件工作以及數(shù)據(jù)采集,論文、總結(jié)及網(wǎng)頁的制作。七成本成本包括:ss8050,ss8550各一個共0.4元,tl431一個0.5元,電阻10k、360R、1M、50R、100R、1K、

5、1R,47uF、0.1uF電容等共2元左右,2個電源共15元??傆?7.9元。八程序#include<iom16v.h> #include<macros.h> #include"math.h" /8.00000MHZ unsigned long led_710=0x3f,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F;/七段數(shù)碼顯示數(shù)組 unsigned long position6=0xfe,0xfd,0xfb,0xf7,0x0f,0xdf;/六位數(shù)碼管位選 unsigned long Min30=1,3

6、,5,7,9,11,13,15,17,19,21,23,25,27,29, 31,33,35,37,39,41,43,45,47,49,51,53,55,57,59;/使能充電停止數(shù)組 unsigned long k_value60=40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,/預(yù)充電壓斜率數(shù)組 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,9

7、7,98,99,; unsigned long V_Table12=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;/溢出中斷次數(shù),OCR0值,if判斷,時分秒,電壓 unsigned long K,n,Vref=4.846,T,t,V;/預(yù)充斜率,延遲時間,參考電壓,時間, signed long Cap;/電池容量 #pragma in

8、terrupt_handler adc_isr:iv_ADC void adc_isr() unsigned long ADNum=0,adc_data; unsigned char Va; ADNum=ADNum+1;/AD轉(zhuǎn)換次數(shù)計數(shù) 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

9、)%10; void A_value()/OCR0實際值 if(K=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(T

10、<60.000) X=0;Y=(T*10)%10); Z=(T-(T*10)%10)*60); void Delay_ms(n) int i,j; for(i=0;i<n;i+) for(j=0;j<8000;j+); void display(void) unsigned char i; for (i=0;1<5;i+) PORTC=0XFF; PORTD=led_7dis_buffi; PORTC=positioni; Delay_ms(1); PORTC=0XFF; #pragma interrupt_handler timer0_ovf_isr:iv_TIMER

11、0_OVF void timer0_ovf_isr(void) PWMnum=PWMnum+1; void time_to_disbuffer(void) unsigned char i,j=0; for(i=0;i<=2;i+) dis_buffj+=timei%10;dis_buffj+=timei/10; void main(void) /port_init PORTB=0X00; DDRB=0X08;/PB3PWM輸出 PORTC=0X3F;/led輸出 DDRC=0XFF; PORTD=0X00; DDRD=0XFF; /timer0_init TCCR0=0X00; TCNT

12、0=0X00; OCR0=a;/OCR0實際值 TCCR0=0X6C;/快速PWM,256分頻,比較匹配時OC0清零 TIMSK=0X03;/比較匹配中斷,溢出中斷 /adc_init ADMUX=0X20;/外部引腳AREF,左對齊,PA0口 ADCSRA=0XAE;/ADC允許,自動觸發(fā)轉(zhuǎn)換,中斷允許,ADCclk=125kHz SFIOR&=0X1F; SFIOR|=0X60;/選擇T/C0比較匹配中斷觸發(fā)SEI();Delay_ms(600000);time2=X;time1=Y;time0=Z;/時間 time_to_disbuffer(); while(1) display(); if(m=1)|(V!=V_Table8)|(a>=0X15)/倒計時 if(PWMnum>123) PWMnum=0; time0-; if(time0<0) time0=59; time1-; if(time1=Min30) m=0; if(time1<0) time1=59; time2-; time_to_disbuffer(); if(m=0)&&(V=V_Table12)/中途停車,休息電池 display(); OCR0=0X00; Delay_ms(10000); time0=(tim

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論