智能型充電器的電源和顯示的設(shè)計
AVR單片機(jī)是Atmel公司1997年推出的RISC單片機(jī)。RISC(精簡指令系統(tǒng)計算機(jī))是相對于CISC(復(fù)雜指令系統(tǒng)計算機(jī))而言的。RISC并非只是簡單地去減少指令,而是通過使計算機(jī)的結(jié)構(gòu)更加簡單合理而提高運(yùn)算速度的。RISC優(yōu)先選取使用頻率最高的簡單指令,避免復(fù)雜指令;并固定指令長度,減少指令格式和尋址方式的種類,從而縮短指令周期,提高運(yùn)算速度。由于AVR采用了RISC這種結(jié)構(gòu),使AVR系列的單片機(jī)都具備了1MIPS/MHz的高速處理能力。
AVR單片機(jī)吸收了DSP雙總線的特點(diǎn),采用Harvard總線結(jié)構(gòu),因此單片機(jī)的程序存儲器和數(shù)據(jù)存儲器是分離的,并且可對具有相同地址的程序存儲器和數(shù)據(jù)存儲器進(jìn)行獨(dú)立的尋址。
目前,AVR單片機(jī)具有多個系列,包括ATtiny、AT90和ATmega。雖然在功能和存儲器容量等方面有很大的不同,但基本結(jié)構(gòu)和原理都類似。同傳統(tǒng)的MCS51單片機(jī)相比,AVR單片機(jī)的主要特點(diǎn)有:
(1) AVR單片機(jī)中,CPU執(zhí)行當(dāng)前指令時取出將要執(zhí)行的下一條指令放入指令寄存器中,從而避免了傳統(tǒng)MCS51系列單片機(jī)中多指令周期的出現(xiàn)。
(2) 傳統(tǒng)的MCS51系列單機(jī)所有的數(shù)據(jù)處理都是基于一個累加器的,因此累加器與程序存儲器、數(shù)據(jù)存儲器之間的數(shù)據(jù)交換就成了單片機(jī)的瓶頸;在AVR單片機(jī)中,寄存器由32個通用寄存器組成,并且任何一個寄存器都可以充當(dāng)累加器,從而有效地避免了累加器的瓶頸效應(yīng),提高了系統(tǒng)的性能。
(3) AVR單片機(jī)具有良好的集成性能。AVR系列的單片機(jī)都具備在線編程接口,含有片內(nèi)看門狗電路、片內(nèi)程序Flash、同步串口SPI等;AVR單片機(jī)的I/O接口還具有很強(qiáng)的驅(qū)動能力,灌電流可直接驅(qū)動繼電器、LED等器件,從而省去驅(qū)動電路,節(jié)約系統(tǒng)成本。
(4) AVR單片機(jī)采用低功率、非揮發(fā)的CMOS工藝制造,除具有低功耗、高密度的特點(diǎn)外,還支持低電壓的聯(lián)機(jī)Flash、EEPROM寫入功能。
(5) AVR單片機(jī)支持Basic、C等高級語言編程。
此外在傳統(tǒng)的單片機(jī)系統(tǒng)中,都是用匯編語言作為系統(tǒng)的編程語言。匯編語言作為嵌入式系統(tǒng)的編程語言,具有執(zhí)行效率高等優(yōu)點(diǎn),但其本身是一種低級語言,編程效率低下,且可移植性和可讀性差,維護(hù)極不方便,從而導(dǎo)致整個系統(tǒng)的可靠性也較差。而C語言以其結(jié)構(gòu)化和能產(chǎn)生高效代碼等優(yōu)勢滿足了電子工程師的需要。用C語言進(jìn)行嵌入式系統(tǒng)的開發(fā),具有匯編語言編程所不可比擬的優(yōu)勢
1. AVR單片機(jī)的主要特征,系統(tǒng)概況,指令系統(tǒng)以及系統(tǒng)的擴(kuò)展技術(shù)的學(xué)習(xí)和掌握。
2. 電源電路的設(shè)計
3. 熟悉智能充電器的工作過程
4.編寫LCD顯示的C程序設(shè)計
本設(shè)計要求用AVR單片機(jī)完全實現(xiàn)電池充電器設(shè)計,可以對各種流行的電池類型進(jìn)行快速充電而無須修改硬件,從而圍繞單個硬件平臺實現(xiàn)一個完整的充電器。
1. 弄懂弄清智能充電器的基本原理
電池充電是通過逆向化學(xué)反應(yīng)將能量存儲到化學(xué)系統(tǒng)里實現(xiàn)的。由于使用的化學(xué)物質(zhì)的不同,電池有自己的特性。設(shè)計充電器時要仔細(xì)了解這些特性以防止過度充電而損壞電池。
電池技術(shù)現(xiàn)代消費(fèi)類電器主要使用如下四種電池:
? 密封鉛酸電池 (SLA)
? 鎳鎘電池 (NiCd)
? 鎳氫電池(NiMH)
? 鋰電池(Li-Ion)
電池的安全充電
停止充電的判別
2. 硬件的實現(xiàn)
1. 電源電路的設(shè)計
2. PC接口的設(shè)計
3. LED和按鍵的設(shè)計
4. ISP 接口的設(shè)計
5. Buck 變換器
6. 電壓基準(zhǔn)的設(shè)定
7. 電池溫度的設(shè)定
8. 測量電路的設(shè)計(包括電池電壓和充電電流等參數(shù)的計算)
1. 軟件的實現(xiàn)
在編譯時要確定電池類型。軟件可以進(jìn)行擴(kuò)展以支持多個電池同時充電。一個直接的方案是在進(jìn)行涓流充電時對各個電池進(jìn)行分時充電。若每個電池的電池單元數(shù)目一樣,則SLA 電池和Li-Ion 電池 可以恒定電壓的方式并行充電。每個電池單元的充電電流是受限的,電壓也一樣。“電池特性” (b_car.h)的所有數(shù)據(jù)都根據(jù)標(biāo)度因子計算得到。這些數(shù)據(jù)在包含文件里定義,在編譯時計算,在程序運(yùn)行時以常數(shù)方式處理。所有從ADC 輸出的數(shù)據(jù)都可以直接與這些常數(shù)進(jìn)行比較。也就是說,在程序運(yùn)行過程當(dāng)中不需要進(jìn)行實時計算,從而節(jié)省了計算時間和程序空間。計算公式以及數(shù)據(jù)都是從“測量電路”一節(jié)獲取的。 對于NiCd 電池,如果電池溫度在允許范圍之內(nèi),充電程序就會啟動。在溫度超出限制,或電壓超過最大值,或超出最大快速充電時間時停止。檢測電池已經(jīng)充滿的普通方法是檢測溫度上升速率(dT/dt) 和電壓降低速率(-dV/dt)。因此,充電器會每隔一分鐘檢測一次溫度,每隔一秒鐘檢測一次電壓。這些數(shù)據(jù)將與上一次數(shù)據(jù)進(jìn)行比較。一旦電池充滿,充電狀態(tài)就自動切換到涓流充電,充電程序跳轉(zhuǎn)到trickle_charge() 函數(shù)。trickle_charge() 循環(huán)檢測充電狀態(tài)、溫度/ 電壓的改變,并適當(dāng)?shù)卣{(diào)節(jié)充電電流。一旦溫度或電壓超標(biāo),錯誤標(biāo)志置位,函數(shù)終止。若沒有錯誤,用戶也沒有改變充電狀態(tài),函數(shù)將一直循環(huán)工作。
2. 編制LCD的顯示程序
特點(diǎn)
?完整的電池充電器設(shè)計方案
?模塊化的“C”源代碼和極緊湊的匯編代碼
?低成本
?支持多數(shù)電池類型
?快速充電算法
?可選的串行接口
?充電參數(shù)易修改
?片內(nèi)EEPROM 可用于存儲電池信息