鉅大LARGE | 點擊量:1067次 | 2019年11月08日
基于STM32和CAN總線的電動車電池管理系統設計
隨著電池能源的廣泛應用,石油資源的枯竭和環境污染,電動汽車以其節能環保的優勢引起越來越多的重視,在電動汽車的研究和發展上,車載電池及其管理系統的研究與制造占據著重要位置。電動汽車動力電池在應用中的主要問題表現在:生產過程中,電池的工藝,技術以及成組技術還不能保證其初始性能具有良好的一致性;使用過程中,對過充電、過放電、過溫度、過電流等非常敏感,這類情況的發生會明顯縮短電池壽命,甚至會導致電池報廢。電池組是幾十個甚至上百個單體電池串聯,單體電池之間存在不一致性,隨著連續的充放電循環,電池間的不一致性加劇,電池組的可用容量受容量最小的單體電池制約。對于這些情況,電池的初始性能必須要依靠企業生產工藝的優化,生產過程關鍵參數的控制來改善,而使用過程中出現的問題則需要電池管理系統來解決。本設計是以STM32F107為核心的主控制器通過CAN通信網絡控制以C8051F500單片機為核心的電池組信息采集和基本控制模塊工作及獲取數據。主要實現了單體電池的過壓放電均衡,過流保護、過溫保護、過放電保護以及通過上級控制器匯報并存儲整體電池組的工作狀態。
1硬件設計
1.1系統總體架構
系統所監控管理的電池包組成結構為:先將一定數目的鋰離子電池串聯,將若干電池串并聯成一電池組,最后將若干電池組串聯構成整體的電池包,這種串并聯復用的組織形式有利于進行單串電池的充放電起停操作,降低使用過程中產生的電池容量不一致性。管理系統的構成如圖所示,每個電池串配置一個二級控制器監測管理,采集電流、電壓、溫度等數據并上傳,控制電池串起停與均衡操作,一級控制器為雙CAN控制器結構,CAN1控制器與二級控制器組成電池組的CAN網絡,CAN2控制器與主控板電池包組成內部一級CAN總線網絡,負責向主控板匯報該電池組工作情況及向下屬二級控制器傳達指令,主控制板的CAN2控制器則接入整車CAN總線。由于各電池組為串聯結構,電壓的遞增關系影響到二級控制器,故而供電時需經DC/DC轉換。
1.2主控制器、一級控制器架構
主控制器,一級控制器的核心控制由意法半導體的STFM32F107完成,STM32F107是一款高性能、低成本、低功耗的32位RISC微處理器,采用ARMCortex-M3的內核,內部含有256kB的Flash和64kB的SRAM,有著充足的編程空間,主頻為72MHz,足以承擔對下級控制器的實時管理。所包含外設有:基本的電源電路、復位電路、標準JTAG調試口、雙CAN物理層電路、EEpROM存儲器,對于本系統設計來說是最佳方案。
1.3二級控制器架構
由于鋰離子電池單體電壓較小,一般約為4V,而整體電池包電壓則高達數百伏,單串電池長度也在15個以上,而目前常用的電池測量芯片成本較高且只能監測6節或12節電池電壓,綜合考慮決定以C8051F500為核心設計二級控制器,這種設計相較于專用電池測量芯片而言,缺點是精度較低,優點是可以對所測量的數據先進行計算處理,不完全依賴上級控制器的指令。
C8051FS00處理器按AEC-Q100測試標準設計,具有寬工作電壓、寬工作溫度范圍、抗干擾能力強并內置CAN及LIN總線控制器,適合汽車電子及工業控制方面的應用。該芯片具有32路I/O口,接口數滿足監控電池串工作的需要,具有12bit的ADC,每個通道的最小建立時間<50μs即巡檢一個循環的總時間<1ms,足以支持對于電池串的實時監控,控制器架構如圖2所示。
其中帶隔離驅動的CAN總線物理層電路如圖3所示,此外還有DC/DC電源,C2在線調試接口等外部設備。
2軟件設計
2.1二級控制器軟件流程
(1)系數修正程序。因為電池總數極多,為降低系統的成產成本和占用空間,電壓測量采用較為簡單的電阻分壓,電流測量則采用電阻采樣法,為彌補電阻造成的誤差,預置了修正系數的程序,每塊電路板投入使用前,可先在所有電壓測量端口接5V標準電壓,采樣電阻兩端通10A標準電流。程序可自動根據所測值修改系數,提高工作精確度。
(2)軟件流程。如圖4所示,程序開始運行時,首先對C8051FS00內部的系統時鐘以及一些變量進行初始化,然后對各I/O口、定時器、中斷、ADC工作方式及CAN總線工作方式初始化,接著根據測量電流的兩個I/O數據判斷電池組目前是充電還是放電,以選取不同的控制方案,繼而檢測是否有一級控制器發出的指令,若有則執行指令,否則ADC將巡檢各I/O的輸入電壓,程序通過預存的系數將其還原為各電池的端電壓,電池串的電流和溫度。最后計算各電池的SOC,考慮C8051F500的運算能力,采用精確度和運算復雜度都較為中等的安時積分法,并根據溫度,電壓,電壓-時間梯度等量加以修正。與此同時,實時上報總電壓、電流、溫度和總SOC共4個參數給一級控制器,充電時如果有單節電池電壓過高,則開啟相對應的MOS管,以均衡充電。出現過溫,過流或達到放電終點時,斷開該串電池,并將斷開時的所有數據均上報一級控制器,否則主程序繼續判斷是否有指令,循環上述過程。
2.2一級控制器軟件流程
(1)接收二級控制器上傳的數據,這里主要有兩種數據:一是時刻上傳的每串電池的電流、電壓、溫度,剩余電量;二是當某串電池因故停止工作時上傳的完整數據和停止原因。
(2)SOC計算,這里計算的SOC是根據實時上傳的電流、電壓和溫度計算整串電池的剩余電量,因為STM32F107芯片運算能力強于C8051F500,所以這里的計算模型采用模糊神經網絡法。
(3)對二級控制器下達指令,這里的指令有兩種:一是要求其上傳目前工作情況的完整數據,主要是停車前保存歷史數據或手動要求查看;二是在其充放電時SOC明顯高于/低于其他電池串時,讓該電池串暫停工作一段時間,有利于在使用中盡量抹平電池間的不一致性。當上傳的SOC和所計算的SOC之間有較大差異時,則上傳該情況,方便檢查并修正模型系數。
(4)向主控制器上傳數據,這里的數據除了主動或應主控制器要求上傳的包括電池包整體電壓、電流和SOC,相應電池串乃至相應電池的電壓、電流、溫度和SOC等一系列工作情況以外,還有各種意外情況的匯報。
2.3主控制器軟件流程
主控制器的任務是向整車控制器匯報電池組的工作情況,并根據要求向一級控制器傳達指令,與一級控制器相似,但由于各電池包可能會切斷某條電池串,造成SOC的突變,所以沒有計算各電池包SOC的操作。
3結束語
本文提出了一種以STM32F107為核心控制器,通過CAN總線與以C8051F500為核心的子控制器互聯的電池組監控管理系統,可以高效地管理電池,為駕駛員提供剩余動力信息,延長電池的使用壽命。文章從硬件和軟件兩個方面詳細描述了系統的實現過程和各項功能。本系統在用電壓源和電流源進行檢測時,所測量的電壓誤差不超過0.01V,電流誤差不超過0.05A,對于模擬的過壓、過流、過溫、放電終止等情況,控制板均能迅速做出反應,驗證了系統的測量精度、實時控制和良好暢通的CAN通信網絡,在使用鋰電池進行充放電實驗時,所估算的SOC與實際情況也基本吻合,充電時當有電池接近充滿時均衡操作能及時啟動,且保護過充的效果也較為理想。