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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32和CAN總線的電動車電池管理系統(tǒng)設(shè)計

          基于STM32和CAN總線的電動車電池管理系統(tǒng)設(shè)計

          作者: 時間:2014-05-15 來源:網(wǎng)絡(luò) 收藏

          2.2 一級控制器軟件流程

          本文引用地址:http://www.ex-cimer.com/article/246894.htm

          (1)接收二級控制器上傳的數(shù)據(jù),這里主要有兩種數(shù)據(jù):一是時刻上傳的每串電池的電流、電壓、溫度,剩余電量;二是當(dāng)某串電池因故停止工作時上傳的完整數(shù)據(jù)和停止原因。

          (2)SOC計算,這里計算的SOC是根據(jù)實時上傳的電流、電壓和溫度計算整串電池的剩余電量,因為F107芯片運算能力強于C8051F5 00,所以這里的計算模型采用模糊神經(jīng)網(wǎng)絡(luò)法。

          (3)對二級控制器下達指令,這里的指令有兩種:一是要求其上傳目前工作情況的完整數(shù)據(jù),主要是停車前保存歷史數(shù)據(jù)或手動要求查看;二是在其充放電時SOC明顯高于/低于其他電池串時,讓該電池串暫停工作一段時間,有利于在使用中盡量抹平電池間的不一致性。當(dāng)上傳的SOC和所計算的SOC之間有較大差異時,則上傳該情況,方便檢查并修正模型系數(shù)。

          (4)向主控制器上傳數(shù)據(jù),這里的數(shù)據(jù)除了主動或應(yīng)主控制器要求上傳的包括電池包整體電壓、電流和SOC,相應(yīng)電池串乃至相應(yīng)電池的電壓、電流、溫度和SOC等一系列工作情況以外,還有各種意外情況的匯報。

          2.3 主控制器軟件流程

          主控制器的任務(wù)是向整車控制器匯報電池組的工作情況,并根據(jù)要求向一級控制器傳達指令,與一級控制器相似,但由于各電池包可能會切斷某條電池串,造成SOC的突變,所以沒有計算各電池包SOC的操作。

          3 結(jié)束語

          本文提出了一種以F107為核心控制器,通過總線與以C8051F500為核心的子控制器互聯(lián)的電池組監(jiān)控管理系統(tǒng),可以高效地管理電池,為駕駛員提供剩余動力信息,延長電池的使用壽命。文章從硬件和軟件兩個方面詳細描述了系統(tǒng)的實現(xiàn)過程和各項功能。本系統(tǒng)在用電壓源和電流源進行檢測時,所測量的電壓誤差不超過0.01 V,電流誤差不超過0.05 A,對于模擬的過壓、過流、過溫、放電終止等情況,控制板均能迅速做出反應(yīng),驗證了系統(tǒng)的測量精度、實時控制和良好暢通的通信網(wǎng)絡(luò),在使用鋰電池進行充放電實驗時,所估算的SOC與實際情況也基本吻合,充電時當(dāng)有電池接近充滿時均衡操作能及時啟動,且保護過充的效果也較為理想。

          離子色譜儀相關(guān)文章:離子色譜儀原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32 CAN

          評論


          相關(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); })();