新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于AVR微控制器的蓄電池充放電控制器

基于AVR微控制器的蓄電池充放電控制器

—— A Controller for Battery Charging and Discharging Based on AVR MCU
作者:高玉峰 王治國 劉亞龍 郭云鵬 時(shí)間:2008-10-24 來源:電子產(chǎn)品世界 收藏

摘要:針對(duì)539CH-1型Ni-Cd電池,提出一種基于微控制器的蓄電池充、放電控制器。該控制器以Mega16L為核心,根據(jù)上位機(jī)的命令控制蓄電池的充、放電電流值以及放電電阻的接入時(shí)機(jī)。

本文引用地址:http://2s4d.com/article/88972.htm

關(guān)鍵詞:蓄電池;微控制器;TLV5638;電源控制

引言

  蓄電池是飛行器電源系統(tǒng)中重要的組成部分,蓄電池的性能直接影響飛行器的安全。因此,正確維護(hù)、保養(yǎng)蓄電池就成為一項(xiàng)十分重要的工作。539CH-1型Ni-Cd蓄電池是法國SAFT公司生產(chǎn)的堿性蓄電池,該電池包含20個(gè)單體電池,額定電壓24V,額定容量53Ah。波音737客機(jī)即采用該型蓄電池。

  充電和放電是該電池維護(hù)、保養(yǎng)中的主要工作。由于該電池為Ni-Cd蓄電池,為了避免記憶效應(yīng)影響電池容量,充電前需要對(duì)電池進(jìn)行放電。該電池的放電規(guī)范要求測(cè)量單體電池電壓,并記錄單體電池電壓下降到1V時(shí)的放電時(shí)間,然后在單體電池兩極間接入放電電阻。該電池的充電規(guī)范要求使用分階段定電流充電法。充電過程中要檢測(cè)電池的端電壓和充電電流,充電后期要測(cè)量單體電池的電壓,并對(duì)電壓較低的電池做相應(yīng)處理。

  本設(shè)計(jì)采用單片機(jī)Mega16L作為核心,可同時(shí)控制兩塊539CH-1型蓄電池的充、放電過程。Mega16L通過串行總線接收上位機(jī)的命令,然后通過SPI總線將數(shù)據(jù)發(fā)送給TLV5638。單片機(jī)通過多路模擬開關(guān)CD4053將TLV5638的兩路D/A輸出送入信號(hào)調(diào)整電路,從而完成對(duì)充放電電流的控制。放電過程中,Mega16L通過控制8D鎖存器74LS573和復(fù)合管陣列ULN2081控制放電電阻接入。系統(tǒng)框圖如圖1所示。


圖1  系統(tǒng)原理框圖

硬件設(shè)計(jì)

  硬件系統(tǒng)包括串行通信電路、充電和放電控制電路、繼電器驅(qū)動(dòng)電路等模塊。

通信電路

  單片機(jī)通過串口與上位機(jī)通信。Mega16L端口為TTL電平,而上位機(jī)串口為RS232C標(biāo)準(zhǔn)接口。因此,在上位機(jī)與單片機(jī)通信時(shí)需要進(jìn)行電平轉(zhuǎn)換。本設(shè)計(jì)采用MAX232完成TTL電平與RS232接口電平之間的轉(zhuǎn)換。

充電和放電控制電路

  單片機(jī)收到上位機(jī)的充、放電控制命令后,通過SPI口將控制信號(hào)發(fā)送給TLV5638。TLV5638將收到的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并送入信號(hào)調(diào)整電路。模擬控制信號(hào)經(jīng)調(diào)整后送入充電或放電電源的PI控制器,對(duì)充電和放電電流進(jìn)行控制。單片機(jī)通過CD4053選擇控制信號(hào)的輸出通道,使該控制器可同時(shí)對(duì)2塊蓄電池進(jìn)行充電和放電。該部分電路原理圖如圖2所示。

D/A變換

  本設(shè)計(jì)使用雙通道l2位電壓輸出型高速DA轉(zhuǎn)換器TLV5638完成數(shù)模轉(zhuǎn)換。設(shè)計(jì)中,將Mega16作為主機(jī),通過SPI口直接與TLV5638的串行接口相連。因?yàn)镸ega16的SPI口為4線串口,所以連接時(shí)單片機(jī)SPI口的PB6(MISO)懸空。

  串行通信時(shí),CS引腳出現(xiàn)下降沿時(shí)通信開始,數(shù)據(jù)在SCLK的下降沿逐位移入TLV5638的內(nèi)部寄存器。最先移入的是數(shù)據(jù)的最高位。當(dāng)16位數(shù)據(jù)全部移入或CS引腳變高時(shí),TLV5638移位寄存器中的數(shù)據(jù)被存入相應(yīng)的鎖存器,鎖存器的選擇由數(shù)據(jù)中的控制字確定。因此,當(dāng)Mega16需要向TLV5638發(fā)送數(shù)據(jù)時(shí),PB7先從高電平跳到低電平,然后通過SPI口連續(xù)進(jìn)行兩次寫操作,向TLV5638發(fā)送個(gè)字節(jié)數(shù)據(jù)。兩次寫操作完成后,在SCLK的第16個(gè)上升沿,相應(yīng)鎖存器的內(nèi)容自動(dòng)更新。

  應(yīng)用中,TLV5638工作于慢速正常模式,采用2.048V內(nèi)部參考電壓。更新TLV5638某一路DAC數(shù)據(jù)時(shí),必須保證另外一路數(shù)據(jù)不變。

  Mega16的SPI口可采用4種不同的數(shù)據(jù)傳輸格式工作,傳輸格式由SPI控制寄存器中的CPOL位和CPHA位控制。應(yīng)用中,考慮到TLV5638的使用要求,令CPHA=0,CPOL=1(傳輸開始時(shí)采樣SCK下降沿,結(jié)束時(shí)采樣SCK上升沿)。


圖2  D/A變換與通道選擇

信號(hào)通道選擇

  Mega16通過PD4和PD5以及外圍邏輯電路控制信號(hào)的輸出通道。邏輯電路包括1片7404和2片CD4053。以TLV5638的OUTA輸出信號(hào)為例。模擬控制信號(hào)從TLV5638輸出,經(jīng)濾波后送入CD4053的X通道和Y通道。單片機(jī)PD4一方面直接與CD4053控制端A相連,另外還通過反相器7404與CD4053控制端B相連。這樣就保證A端和B端的控制信號(hào)反相,使任意時(shí)刻X、Y通道中只有一個(gè)可以輸出有效控制信號(hào),從而保證該路充電和放電不發(fā)生沖突。應(yīng)用中沒有使用CD4053的Z通道,應(yīng)將其與控制端C及使能端一起接地。

繼電器驅(qū)動(dòng)電路

  放電后期,需要將電池中的剩余容量完全放出,最終使單體電池電壓下降到0V。設(shè)計(jì)中,利用繼電器將放電電阻并聯(lián)于單體電池兩極,從而達(dá)到釋放電池剩余容量的目的。繼電器由8D鎖存器74LS573和達(dá)林頓管陣列ULN2801驅(qū)動(dòng)。單片機(jī)PA0~PA7輸出控制信號(hào),PD2、3、7和PC6、7輸出5片74LS573所需的鎖存使能信號(hào)??刂菩盘?hào)由74LS573鎖存,然后通過ULN2801驅(qū)動(dòng)繼電器工作,將放電電阻并聯(lián)在單格電池兩端,從而完成單格電池剩余容量放電。繼電器驅(qū)動(dòng)電路原理圖如圖3所示。圖中只包含1片74LS573,其它4片控制方法類似。


圖3  繼電器驅(qū)動(dòng)電路原理圖

軟件設(shè)計(jì)

  軟件采用主從結(jié)構(gòu)。單片機(jī)收到上位機(jī)指令后,根據(jù)通信協(xié)議提取出命令字和數(shù)據(jù),然后根據(jù)命令字完成相應(yīng)的控制。軟件基于模塊化設(shè)計(jì)思想,主要包括:主程序模塊,通信程序模塊,D/A轉(zhuǎn)換與通道選擇模塊,繼電器組控制模塊等。

主程序模塊

  主程序模塊完成單片機(jī)初始化,等待并處理中斷等工作,流程圖如圖4(a)所示。


圖4程序流程圖

通信程序模塊

  單片機(jī)與上位機(jī)間采用RS232串口通信。單片機(jī)采用中斷方式接收上位機(jī)發(fā)出的命令,并根據(jù)接收到的數(shù)據(jù)內(nèi)容向上位機(jī)發(fā)送應(yīng)答信息。當(dāng)命令的起始標(biāo)志和結(jié)束標(biāo)志都正確時(shí),單片機(jī)向上位機(jī)發(fā)送ASCII字符‘Y’表示接收成功,然后處理收到的命令;否則,向上位機(jī)發(fā)送ASCII字符‘N’,表示發(fā)送不成功,要求上位機(jī)重新發(fā)送命令。

  上位機(jī)向單片機(jī)發(fā)送的命令符合以下格式:命令以幀為單位,每幀包含7個(gè)字節(jié)。每幀包含的命令字規(guī)定了單片機(jī)的控制方式。每幀中的數(shù)據(jù)字則以ASCII碼的形式確定了充、放電電流的大小和繼電器的代號(hào)。通信模塊流程圖如圖4(b)所示。

  當(dāng)上位機(jī)需要控制充、放電電流時(shí),單片機(jī)采用查詢方式,通過SPI口向TLV5638發(fā)送命令和數(shù)據(jù),然后通過控制CD4053確定模擬控制信號(hào)輸出通道。因?yàn)镸ega16L的SPI口字寬為8位,因此必須連續(xù)進(jìn)行兩次寫操作才能完成對(duì)TLV5638的編程。

  單片機(jī)收到上位機(jī)命令后,先將數(shù)據(jù)寫到PA口,然后向相應(yīng)鎖存使能位寫‘0’,將數(shù)據(jù)鎖存入74LS573中,完成對(duì)繼電器的控制。

結(jié)語

  本文提出了一種基于Mega16L的蓄電池充放電控制器。該控制器利用串口RS232接受上位機(jī)發(fā)送的控制指令,然后根據(jù)控制指令完成對(duì)蓄電池充電電流、放電電流以及放電電阻接入的控制。該控制器部分實(shí)現(xiàn)了電池充、放電電源的數(shù)字化控制。該系統(tǒng)已應(yīng)用于539CH-1型Ni-Cd電池的充放電設(shè)備中,性能良好。

參考資料:
1.  Nickel-Cadmium Aircraft batteries operating and maintenance manual. SAFT. 2002.08
2.  Datasheet of Atmega16, Atmel, 2003.12
3.  TLV5638 2.7-V to 5.5-V low-power dual 12-bit digital-to-analog converter with internal reference and power down, Texas Instruments Incorporated, 2000
4.  沈文、Eagle lee、詹前衛(wèi),AVR單片機(jī)C語言開發(fā)入門指導(dǎo),清華大學(xué)出版社,2003.2-3
5.  張軍,AVR單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例,中國電力出版社,2005.8



關(guān)鍵詞: AVR 200810

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉