<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 基于ATmega8的電動車蓄電池智能管理系統(tǒng)設(shè)計

          基于ATmega8的電動車蓄電池智能管理系統(tǒng)設(shè)計

          ——
          作者:武漢理工大學自動化學院 高懷 李波 孫俊 時間:2007-12-04 來源:電子設(shè)計應用 收藏

          摘 要:本文以ATmega8單片機為核心,設(shè)計了一種分布式、模塊化、通過通信且具有功能的電動車,實現(xiàn)了對多組蓄電池的有效監(jiān)測和管理。

          關(guān)鍵詞
          ;

          引言

              電動汽車的無(低)污染優(yōu)點,使其成為當代汽車發(fā)展的主要方向。電動汽車的發(fā)展需要解決兩大難題,即能量存儲和動力驅(qū)動。由于短期內(nèi)動力電池儲能不足的問題難以解決,使能量管理技術(shù)成為電動汽車發(fā)展的關(guān)鍵。在傳統(tǒng)充電技術(shù)中,常用的恒壓充電、恒壓限流充電、恒流充電等模式,都是由人工控制充電過程,大多存在著嚴重的過充電現(xiàn)象。充電質(zhì)量的好壞,直接影響蓄電池的使用壽命。而新型蓄電池智能管理系統(tǒng)的設(shè)計,就是為了在線檢測動力電池狀態(tài),提高充電質(zhì)量和效率,使操作人員只擔任輔助性工作。


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

          管理系統(tǒng)的組成及硬件設(shè)計

              本文設(shè)計的智能化管理系統(tǒng)是一種分布式、模塊化的車載電池監(jiān)控系統(tǒng),它主要由主控模塊、可控充電系統(tǒng)模塊、電壓采集子模塊、溫度采集子模塊、電流測量子模塊及顯示模塊構(gòu)成,通過實現(xiàn)相互通信。該管理系統(tǒng)原理框圖如圖1所示。


            圖2  LIN總線通信電路圖

          LIN總線通信電路

              LIN總線的通信簡單,方便,使智能電源管理系統(tǒng)與汽車的各系統(tǒng)之間既相互聯(lián)系又相對獨立,從而克服了目前電池管理的漏洞,能使汽車和汽車蓄電池的安全性和可控性得到大大的提高。圖2為其具體電路,本設(shè)計中各個模塊均包含該電路,以此實現(xiàn)信息共享和傳輸,本設(shè)計中實際通信波特率為1200bps。其中,pc817起到隔離作用,max1487保證收發(fā)信號在時間上錯開。{{分頁}}

          電壓檢測電路設(shè)計

              對多個蓄電池串聯(lián)的電壓測量方法主要有變阻分壓,繼電器開關(guān)切換,分布式電壓測量3種方案。本設(shè)計的檢測對象是4組并聯(lián)、每組為40節(jié)串聯(lián)的末端電壓為48V的電池組,其單節(jié)電池標稱電壓為1.2V,主要用來檢測電池狀態(tài),避免其中的單節(jié)壞電池影響使用,要求的精確度不是很高。所以,每個測壓模塊測量一組電池,即以每8節(jié)電池為一單元進行測量??紤]到工藝及成本,測壓電路采用變阻分壓與繼電器開關(guān)相結(jié)合的電路結(jié)構(gòu)。


            圖3電壓測量電路圖

              如圖3所示,U1~U5為分壓后電平,分別連接在單片機帶A/D轉(zhuǎn)換功能的PC0-PC4口,完成電壓采樣。在進行可調(diào)電阻R1和固定電阻R2的參數(shù)選擇時,其分壓應保證Ui≤5V,即對第i路采樣,
           
              其中,Umax為單元電池組的最大電壓。 本設(shè)計采用繼電器開關(guān),用以檢測模塊不工作時是否徹底與電池組斷開,避免電池小電流放電;采用可調(diào)電阻,在A/D轉(zhuǎn)換后的程序處理中可以采用統(tǒng)一的變量設(shè)計,簡化程序,方便實際調(diào)試。

          溫度檢測設(shè)計

              在溫度測量模塊中主要使用了DS18B20數(shù)字溫度傳感器,該器件的主要特點為:獨特的單線接口只需一個接口引腳即可通信;多點能力使分布式溫度檢測應用得以簡化;不需要外部組件;可用數(shù)據(jù)線供電;不需要備份電源;測量范圍為-55℃~+125℃,增量值為0.5℃;以9位數(shù)字值方式讀出溫度;具有用戶可定義的、非易失性的溫度告警裝置。此外,由于每一個DS18B20有唯一的系列號,因此,多個DS18B20可以存在于同一條單線總線上,給應用帶來了極大的方便。


            圖4  可控充電模塊主電路{{分頁}}

          可控充電模塊設(shè)計

              該模塊(見圖4)是實際設(shè)計中的難點,它與外電網(wǎng)相連,對車載電池進行充電,并能根據(jù)控制電路發(fā)出的指令或標志位,實現(xiàn)對蓄電池分階段、以不同電流進行充電,且有自動斷電的功能,實現(xiàn)智能充電。根據(jù)實際需要的大功率、高電壓的特點,其主電路采用全橋拓撲結(jié)構(gòu),輸出回路采用全橋整流,同時,為改善功率開關(guān)器件的工作狀態(tài),主電路采用了軟開關(guān)技術(shù)。


            圖5 主控及液晶顯示模塊電路圖

          主控及液晶顯示模塊

              主程序模塊是整個系統(tǒng)的核心,其根據(jù)需要從各模塊收集數(shù)據(jù),判斷分析數(shù)據(jù),并把相關(guān)信息顯示在液晶屏上。當處于充電狀態(tài)時,根據(jù)電流采集子模塊發(fā)送的信息,結(jié)合電池電壓參數(shù)和溫度測量值進行充電控制,依據(jù)電流測量模塊計算的電量值,實現(xiàn)充電模式的判別和轉(zhuǎn)變,當電充滿時,單片機將對數(shù)據(jù)設(shè)立標志,使可控充電模塊斷開繼電器,充電電路與電池組斷開。

              本設(shè)計采用內(nèi)置T6963C的MGLS240128T點陣液晶顯示模塊。顯示及主控模塊的電路如圖5所示。其中,VCC為5V電源,D0~D7與MC68HC912D60A的一個8位數(shù)據(jù)口相連,引腳5、6、8為控制口,用來控制液晶顯示模塊的讀寫操作,RST(10腳)為液晶顯示模塊硬件復位腳。V0口輸入液晶顯示驅(qū)動電壓,滑動變阻器用來調(diào)節(jié)液晶顯示亮度。

          軟件編程及測試

              本管理系統(tǒng)的核心軟件是在ICCAVR編譯環(huán)境下用C語言編程實現(xiàn)的。依據(jù)硬件設(shè)計中的模塊化設(shè)計,每一個模塊中均有一個ATmega8芯片,所以,在編程時按照模塊任務進行單獨編程,子模塊主程序基本包含模塊初始化和數(shù)據(jù)處理,以及串口接收和發(fā)送中斷程序,在串口中斷程序中,主控模塊發(fā)送數(shù)據(jù)請求,各子模塊在中斷程序中根據(jù)收到的相關(guān)數(shù)據(jù)串向主控模塊發(fā)送相應的數(shù)據(jù)。此外,各子模塊根據(jù)主控模塊返回的數(shù)據(jù),進行實際器件的操作,管理系統(tǒng)就這樣通過LIN總線進行通信及操作。在通信的軟件調(diào)試中,通過使用串口調(diào)試軟件,并將總線數(shù)據(jù)通過串口連接到PC上,便于監(jiān)測各個模塊的數(shù)據(jù),發(fā)現(xiàn)問題并進行調(diào)試。

          結(jié)語

              本設(shè)計采用ATmega8單片機,充分利用了其外圍接口多、功能強的特點,操作方便、成本低。整個系統(tǒng)已經(jīng)在一款電動工程車上使用,系統(tǒng)穩(wěn)定。



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();