李 杰 李熹容
ATtiny12是Atmel公司生產(chǎn)的AVR單片機(jī),雖然只有8個(gè)引腳,但功能強(qiáng)大(管腳見圖1)。用它設(shè)計(jì)一些小的智能電路,可以大大降低成本。它采用ISP方式編程,無須購(gòu)買編程器,經(jīng)濟(jì)實(shí)用。本文介紹一個(gè)用ATtiny12制作的手機(jī)電池充電器,其電路簡(jiǎn)單、編程方便。
1. ATtiny12特點(diǎn)
(1) AVR RISC 結(jié)構(gòu),有90條指令,大多數(shù)為單指令周期,32 個(gè)8 位通用工作寄存器;(2)程序空間1K字節(jié)的FLASHROM,采用ISP編程,壽命1000次;(3)3. 64字節(jié)在線可編程EEPROM壽命100000 次;(4)外圍引腳電平變化中斷及喚醒;(5)一個(gè)可預(yù)分頻8位定時(shí)器/計(jì)數(shù)器T0;(6)片內(nèi)模擬比較器;(7)可編程的看門狗定時(shí)器由片內(nèi)振蕩器生成;(8)具有低功耗空閑和掉電模式,增強(qiáng)的上電復(fù)位電路,可標(biāo)度的片內(nèi)RC 振蕩器;(9)4MHz 3V 25 條件下的功耗,工作模式2.2mA,空閑模式0.5mA,掉電模式<1 A。
2.充電器電路原理
電路見圖2,本充電器采用脈動(dòng)快充方式,對(duì)3.6V鋰電池充電,脈沖占空比9:1。充電電流Ic=電池容量,電阻R5、R6等于2×1.25V/Ic。根據(jù)各自的電池容量,改變R5、R6的阻值,可以確定充電電流。充電過程是:每充電1分鐘后,停充5s,MCU檢測(cè)電池兩端電壓Umax是否大于4.3V,不大于則繼續(xù)充電,否則停止充電。充電一個(gè)小時(shí)后,無論電池的電壓是多少伏,MCU均自動(dòng)停止充電,這樣可以避免其它原因損壞電池!LED1指示充電器的工作狀態(tài),充電時(shí)閃爍,檢測(cè)時(shí)熄滅,充滿時(shí)常亮。K用于啟動(dòng)充電器。MCU采用內(nèi)部RC振蕩器工作,工作頻率1MHz,并用內(nèi)部模擬比較器檢測(cè)電池的電壓。整體電路簡(jiǎn)潔,用萬能板搭接即可。注意V1要加散熱片!
3. 軟件編制
采用MCU內(nèi)部T0定時(shí)器完成一個(gè)100ms定時(shí)基準(zhǔn),使用R0、R1、R2寄存器分別記錄充電、停充的時(shí)間。R0計(jì)數(shù)從0到9,當(dāng)R0=0時(shí),置PB2=1,其余時(shí)間清PB2=0。這樣可以簡(jiǎn)單地完成9:1的占空比控制。R1完成1分鐘定時(shí),R2完成1小時(shí)定時(shí)。程序采用匯編編寫,在AVR Studio3.51上編譯通過,并用自制編程線下載程序。
4. 調(diào)試過程
請(qǐng)先自制編程線,編程線的接線圖見圖3,使用PC機(jī)的并口。編程軟件PonyProg2000可以在http://www.LancOS.com下載(界面見圖4),該軟件為中文操作界面,使用方便。調(diào)試時(shí)先在A端接入4.3V穩(wěn)壓電源,調(diào)整電位器W1到LED1常亮即可。
在本刊的網(wǎng)站上給出了源程序,供讀者參考。