鉅大LARGE | 點(diǎn)擊量:1201次 | 2020年03月19日
一種基于單片機(jī)的多模式蓄電池充電電路設(shè)計(jì)
摘要:本文介紹了一種通用電池充電器的智能充電軟件控制方法,利用這種充電方法根據(jù)電池的充電特性進(jìn)行不同充電模式的轉(zhuǎn)換。采用AT89C51單片機(jī)芯片作為充電過程的控制芯片進(jìn)行電路設(shè)計(jì),實(shí)現(xiàn)A/D轉(zhuǎn)換和顯示電路,并根據(jù)外部電路檢測到的電池電壓信息選擇正確的充電模式,實(shí)現(xiàn)在涓流、恒流、恒壓及浮充電模式之間的智能轉(zhuǎn)換。
引言
一個(gè)好的充電器對蓄電池的使用壽命具有舉足輕重的用途,智能充電器具有操作簡單、可靠性高和通用性強(qiáng)等優(yōu)點(diǎn),是充電器家族中的一個(gè)重要的組成部分,也是未來充電器發(fā)展的重要方向。所謂智能充電器是指能根據(jù)用戶的要自主選擇充電方式、對不同類型的充電電池進(jìn)行充電、并且在充電過程中能對被充電電池進(jìn)行保護(hù)從而防止過電壓和溫度過高的一種智能化充電器。
充電控制器要長時(shí)間控制并要進(jìn)行電壓檢測,若用傳統(tǒng)電路實(shí)現(xiàn)則電路復(fù)雜,采用單片機(jī)控制可大大減化電路,降低成本。本充電器用AT89C51單片機(jī)進(jìn)行充電按時(shí)控制。在按時(shí)充電期間若電池電壓高于另一值則停止充電。采用從涓流充電、恒流充電、恒壓充電到浮充電的方法,充電完成后,自動轉(zhuǎn)為浮充電,以防止電池放電,并有顯示電路。適合對鎳鎘、鎳氫電池進(jìn)行充電。該充電器采用單片機(jī)控制,充電效果更佳。
智能充電器硬件設(shè)計(jì)
由單片機(jī)和充電器芯片組成的通用充電器原理框圖如圖1所示,圖中AT89C51與ADC0809一起構(gòu)成充電器的核心。ADC0809隨時(shí)檢測充電電池兩端電壓,當(dāng)放入電池時(shí),ADC0809即通過數(shù)據(jù)口向AT89C51傳送檢測到的電池兩端電壓信息,經(jīng)過數(shù)據(jù)處理后,AT89C51根據(jù)所接收到的電壓信息選擇合適的充電模式。由于芯片只能接收0V~5V的電壓信息,因此在充電電池的兩端并聯(lián)兩個(gè)串聯(lián)電阻(阻值相等且很大),這樣檢測到的電壓即為電池電壓的一半,乘以二即可得出電池電壓。若電池電壓低于4.7V,則啟用停止控制,充電器不工作。若電池電壓大于7.3V或小于5.2V,說明蓄電池曾經(jīng)過度放電,為防止對蓄電池充電電流過大,造成熱失控,對蓄電池實(shí)行穩(wěn)定小電流涓流充電,激活蓄電池。此時(shí)單片機(jī)p1.2口發(fā)出高電平信號,啟動涓流充模式。同樣,當(dāng)電壓在5.2V~6V時(shí),p1.0口置為高電平,同時(shí)調(diào)用脈沖控制,控制開關(guān)的閉合,以恒流充電模式對電池進(jìn)行充電。當(dāng)電壓在6V~7.3V之間時(shí),p1.1口置為高電平,啟動恒壓充電模式。整個(gè)充電過程為3個(gè)小時(shí),當(dāng)電路工作三小時(shí)后,系統(tǒng)自動掉電,終止充電過程。
本設(shè)計(jì)利用8155作為AT89C51的I/O擴(kuò)展接口,連接四個(gè)數(shù)碼管顯示電路。LED顯示采用共陰極,段選碼由8155pB口供應(yīng),位選碼由pA口供應(yīng),當(dāng)啟用涓流充電模式時(shí)(p1.2置高),第一位數(shù)碼管顯示;當(dāng)啟用恒流充電模式時(shí)(p1.0置高),位選字右移,第二位數(shù)碼管顯示,當(dāng)啟用恒壓充電模式時(shí)(p1.1置高),位選字右移,第三位數(shù)碼管顯示。當(dāng)停止充電時(shí),p1.0、p1.1、p1.2口均置為低電平,第四位數(shù)碼管顯示。若對程序進(jìn)行稍許修改,也可以讓顯示電路顯示當(dāng)前充電電壓值,從而更加有效的對電池進(jìn)行充電。
智能充電器軟件設(shè)計(jì)與實(shí)現(xiàn)
1軟件整體設(shè)計(jì)
因?yàn)椴煌N類的電池有不同的充電特性,所以充電器要能根據(jù)具體電池的類型,控制不同的充電狀態(tài)。在充電的關(guān)鍵階段采用了模糊控制方法,這些通過程序控制實(shí)現(xiàn)。充電總體流程圖如圖2所示。
程序具體實(shí)現(xiàn)過程為:單片機(jī)首先進(jìn)行初始化,然后對蓄電池的電壓進(jìn)行測量,出現(xiàn)電壓偏差和變化率信號,偏差及變化率信號進(jìn)入模糊控制器后,經(jīng)過模糊處理,輸出電流信息,從而適時(shí)和正確地控制充電方式和過程。在充電過程中不斷檢測電池是否充滿,當(dāng)檢測己經(jīng)充滿時(shí),提示用戶電池已充足,充電器自動進(jìn)入浮充維護(hù)狀態(tài)。模糊處理和終止條件的判決為整個(gè)智能充電器的關(guān)鍵,關(guān)系著充電器性能的好壞。
系統(tǒng)的軟件設(shè)計(jì)采用模塊式結(jié)構(gòu),重要由初始化程序、充電方式設(shè)置模塊、預(yù)處理模塊、A/D轉(zhuǎn)換模塊、按時(shí)模塊等部分組成。其中,充電方式設(shè)置模塊用于設(shè)置電池類型和充電方式,A/D轉(zhuǎn)換模塊用于檢測電池的電壓,以確定是否終止充電過程,按時(shí)模塊用于確定充電的時(shí)間監(jiān)測。
系統(tǒng)軟件流程采用中斷工作方式,軟件功能的重要控制步驟均包括在按時(shí)中斷程序中,包括監(jiān)控電壓、測量電流及電池參數(shù)檢測等部分在開始充電時(shí),對系統(tǒng)進(jìn)行初始化,其中包括AT89C51單片機(jī)各個(gè)端口初始化、堆棧指針初始化、寄存器初始化、中斷設(shè)定和根據(jù)電池
類型設(shè)定它所能夠承受的最大電壓V,標(biāo)準(zhǔn)的容量值及對電壓、電流采樣的時(shí)間間隔△T。為了使測定結(jié)果更精確,采樣頻率要盡量高。系統(tǒng)初始化后開按時(shí)器中斷服務(wù)程序,由于程序中利用了按時(shí)中斷,使得按時(shí)控制很方便。
主程序模塊根據(jù)系統(tǒng)相應(yīng)的狀態(tài)條件控制并調(diào)用相應(yīng)的模塊。同時(shí),其他各模塊之間也根據(jù)系統(tǒng)當(dāng)前狀態(tài)相互調(diào)用。在初始化程序模塊中,設(shè)置了預(yù)處理功能,重要是設(shè)置A/D轉(zhuǎn)換參數(shù)和通道,檢測電池的端電壓。將檢測數(shù)據(jù)同理論相關(guān)經(jīng)驗(yàn)值比較,判斷電池的類別以及是否連接正確。對端電壓低的電池,采用短時(shí)間的脈動電流充電,這樣有利于激活電池內(nèi)的化學(xué)反應(yīng)物質(zhì),部分恢復(fù)受損的電池單元。
電池的端電壓檢測硬件上使用單片機(jī)的片上高精度A/D模塊,軟件控制采用中斷方式,這樣可節(jié)省單片機(jī)在A/D轉(zhuǎn)換期間的等待時(shí)間。端電壓檢測的數(shù)據(jù),比較是否滿足充電終止條件,及時(shí)修改單片機(jī)的輸出參數(shù),控制充電電流的大小。
2涓流短時(shí)充電及浮充電
充電器開始工作后,首先檢測蓄電池的電池電壓,若電池電壓低于4.7V,充電器不工作。若電池電壓大于7.3V或小于5.2V,說明蓄電池曾經(jīng)過度放電,為防止對蓄電池充電電流過大,造成熱失控,對蓄電池實(shí)行穩(wěn)定小電流涓流充電,激活蓄電池。軟件流程圖如下:
具體實(shí)現(xiàn)程序如下:
…
READ:MOVA、p0,將p0口的值送入累加器A
CJNEA、#84H、REL,若(A)≠5.2V則跳到REL
REL:JNCHL;大于5.2V轉(zhuǎn)移到HL
SETBp1.2,將p1.2口置為高位
SETBp1.3,脈沖控制
…
同時(shí),當(dāng)充電時(shí)間到兩個(gè)半小時(shí)時(shí),進(jìn)入浮充電階段。該階段重要用來補(bǔ)充蓄電池自放電所消耗的能量,此時(shí)標(biāo)志著充電過程結(jié)束。
3恒流充電
在涓流充電階段,電池電壓開始上升,當(dāng)電池電壓上升到能接受大電流充電的閾值時(shí),則轉(zhuǎn)入恒流充電階段。該階段為大電流恒流充電,電流值為I2,因蓄電池容量而異,一般I2約為0.1C(C為蓄電池組的容量),持續(xù)時(shí)間為T2,在恒流充電狀態(tài)下,不斷檢測電池端電壓,當(dāng)電池電壓達(dá)到飽和電壓時(shí),恒流充電狀態(tài)終止。
本設(shè)計(jì)采用外部檢測設(shè)備將數(shù)據(jù)送入p0口,若電壓在5.2V~6V之間則p1.0口置為高電平,發(fā)送信號進(jìn)行恒流充電模式。在恒流充電過程中,采用脈沖控制充電電流的占空比,以此來控制開關(guān)的開斷,實(shí)現(xiàn)充電電流的恒定。軟件流程圖如下:
具體實(shí)現(xiàn)程序如下:
…
READ:MOVA、p0,將p0口的值送入累加器A
CJNEA、#99H、REL,若(A)≠6V則跳到REL
REL:JNCHY,大于6V轉(zhuǎn)移到HY
SETBp1.0,將p1.0口置為高位
SETBp1.3,脈沖控制
充電電路在實(shí)現(xiàn)涓流充電和恒流充電方法是要使用脈沖充電控制來進(jìn)行充電,有效的調(diào)整電池充電過程當(dāng)中的占空比.其中脈沖控制的實(shí)現(xiàn)程序如下:
…
pWMHDATA30H,高電平脈沖的個(gè)數(shù)
pWMDATA31H,pWM周期
COUNTERDATA32H
TEMpDATA33H
INTT0:pUSHpSW,現(xiàn)場保護(hù)
pUSHACC
INCCOUNTER,計(jì)數(shù)值加1
MOVA,COUNTER
CJNEA,pWMH,INTT01,假如等于高電平脈沖數(shù)CLRp1.0,p1.0變?yōu)榈碗娖?/p>
CLRp1.2
AJMpINTT0
INTT01:CJNEA,pWM,INTT02,假如等于周期數(shù)
MOVCOUNTER,#01H,計(jì)數(shù)器復(fù)位
SETB08H,p1.0為高電平
SETBp1.2
INTT02:pOpACC,出棧
pOppSW
RETI
END
…
4恒壓充電
該階段為恒壓充電,電壓值為7.3V,它是蓄電池節(jié)數(shù)與蓄電池溫度的函數(shù),這時(shí)充電電流逐漸減小,恒壓充電時(shí),保持充電電壓不變。充電電流不斷下降,當(dāng)充電電流下降到恒流狀態(tài)下充電電流的1/10時(shí),終止恒壓充電。電路實(shí)現(xiàn)方法為:外部檢測設(shè)備將結(jié)果送入p0口,系統(tǒng)檢測送入的數(shù)據(jù),若電池電壓在大于6V時(shí)采用恒壓充電模式,即p1.1口置高位進(jìn)行恒壓充電模式。具體實(shí)現(xiàn)程序如下:
…
READ:MOVA,p0,將p0口的值送入累加器A
CJNEA,#0B7H,REL,若(A)≠7.3V則跳到REL
REL:JNCSTOp,大于7.3V轉(zhuǎn)移到STOp
5A/D轉(zhuǎn)換模塊
由于本設(shè)計(jì)用到了電壓實(shí)時(shí)監(jiān)測,因此要對其發(fā)出的信號進(jìn)行A/D轉(zhuǎn)換,在電路中采用了ADC0809轉(zhuǎn)換器,對模擬信號進(jìn)行采集與轉(zhuǎn)換。具體實(shí)現(xiàn)程序如下:
START:MOVR0,#30H,RAM緩沖區(qū)地址設(shè)初值
MOVDpTR,#0FEF8H,通道地址寄存器設(shè)初值MOVX@DpTRA,啟動A/D轉(zhuǎn)換
MOVR5,#0AH,延時(shí)等待
DLX:DJNZR5,DLX
WAIT:JBp3.2,WAIT,等待A/D轉(zhuǎn)換結(jié)束
MOVXA,@DpTR,讀取A/D轉(zhuǎn)換結(jié)果
MOV@R0,A,保存A/D轉(zhuǎn)換結(jié)果
ACALLDATADSp,數(shù)據(jù)的數(shù)字處理
LJMpSTART
…
軟件流程圖如下所示:
總結(jié)
采用單片機(jī)和充電集成電路進(jìn)行充電器的設(shè)計(jì),不但能夠?qū)崿F(xiàn)對一般的蓄電池進(jìn)行充電,而且還能夠?qū)崿F(xiàn)相應(yīng)的過壓和時(shí)間控制,從而可以充分發(fā)揮蓄電池的性能,延長電池的使用壽命,并防止簡易充電器在充電時(shí)可能對電池造成損害的情況發(fā)生,具有一定的智能功能,符合目前的環(huán)境保護(hù)潮流。