隨著新能源和環境污染問題在全球發展過程中被高度關注,作為清 潔 能源的動 力 電池越 來 越受到重視。鋰離子電池 以 其能 量 密 度 高、平 均輸出電 壓高、輸出功率大、循環性能優越、可快速充放電、無記憶效應等特點,將成為未 來 電動汽車 動 力 電 池 的市場主力。一個有效的電池管理系統能對動力電池進行保護、延長其使用壽命及提高行駛里程,是電動汽車產業發 展 和 推 廣 的 一 項 非 常 關 鍵 的 系 統 工程。在串聯的動力電池組中,單體鋰電池的電池狀態,如電壓和溫度的監測,是電池管理系統中的關鍵組成部分。單體電壓的數據最為豐富,能夠表 征電池組內每一個單體狀態和特征的物理量,還可 以反應電池組整體的狀態,如一致性等。此外,對單體電池進行監測,還能防止過沖和過放。因此,電池單體電壓采集對采集的準確性和實時性都有比較高的要求。
分別對電池的單體測量方法進行了總結,包括電阻分 壓、光 耦 隔 離 運 放、利用線性 光電耦合器進行 模 擬 信號傳 導,以及模擬 開 關 配 合電容傳輸模擬 信 號 的方案等 方 法。此 外,市 場 上已出現單體電 池 測 量專用 芯片,如世界 上 著 名 的芯片廠 商 Linear公 司 開 發 的 LTC6803芯 片,內 部自帶多路選通開關 ADC,可以在13ms內完成多達12個串聯電池的電壓的測量,最大總測量誤差為0.25%。
本文采用兩片 LTC6803級聯方式采集24只單體鋰離子電池電壓,單 片 機 利 用 SPI 總 線 啟 動LTC6803電壓測量并讀取電壓。
系統組成與工作原理
系統組成
本文研究的串聯的鋰離子電池采集系統能夠實現24只動力電池的在線單體電壓監測。該系統主要包括以 LTC6803為核心的單體電壓采集部分,以及以 MC9S12C32為 核 心 的 SPI通 信 和 CAN 通 信部分,還有一些外圍電路。
LTC6803是 Linear公司的第二代的完整電池監視IC,內置一個12位的 ADC、一個精準型電壓基準、一個高電壓輸入多路 復 用 器 和一 個 串 行 SPI接口。每個 LTC6803能夠測量多達12個串接電池或者超級電筒的電壓。通過一個獨特的電位移位接口可以把多個 LTC6803器件串聯起來,而無需光耦隔離器,以監視長串的串聯電池中的每只單體電壓。每個電池輸入都具有一個相關聯的 MOSFET 電源開關,用于過度充電的電池進行放電。LTC6803還提供了一種用于將電源電流減小至12μA 的 待 機模式。LTC6803 采 用 SPI(SerialPeripheralInter-face)方式與外部 MCU 通信,具有高抗 EMI以及低功耗能力。其結構原理圖如圖1所示:
MC9S12C32是 Freescale公 司 的 一 款48引 腳16位的單片機,功 能 強大、資源豐富。內部有32KFlash,8通道的10位 ADC,1路SPI模塊,1路支持CAN2.0 A 和 CAN2.0B 的 CAN 模 塊,6 通 道PWM,8通道的16位定時器模塊,滿足本文單體電壓采集系統對 MCU 的需求。
工作原理
MC9S12C32 通 過 SPI 總 線 來 啟 動 兩 片LTC6803采集 并 讀 取 24 只串聯的單體電池的電壓。采集系統與上級控制系統通過 CAN 總 線 通信,實現對動力電池單體電壓的在線監測,并實現對采集系統的休眠與啟動控制。整個采集系統通過MC9S12C32的定時器來實現對電壓的測量,CAN信息的發送以及錯誤的判斷等的時序控制。
電壓采集硬件電路設計
電壓采集功能是由兩片 LTC6803實 現 的。在本文的采集系 統 中,未 開 啟 LTC6803的 均 衡 功 能、以及 GPIO、TEMP 引腳的溫度采集功能。 兩 片LTC6803可 采 用 并 聯,亦可采用菊花 鏈式連接。LTC6803通 過IS07421,實 現 電 池 與 MCU 之 間 的電氣 隔 離;LTC6803與 MC9S12C32通 過 SPI方 式進行通信。LTC6803電壓采集電路如圖2所示:
當兩片LTC6803使用菊花鏈式串聯連接時,片選端只需 MCU 的一個IO 口即可,三個二極管需焊
接,頂 端 LTC6803 的隔離芯片可不焊,頂 端LTC6803的 TOS引腳拉高,Vmode引腳拉低,底端LTC6803的 TOS引腳拉低,Vmode引腳拉高;當兩片 LTC6803使用并聯方式 連接時,片選端 需 MCU兩個IO 口,兩 片 隔 離 芯 片 需 接 入,去 除 三 個 二 極管,兩片6803的 TOS引 腳 均 拉 低、Vmode引 腳 均拉高。
由于 LTC683具有內置噪聲濾波器的 ΔΣ轉換器,抗 EMI的能力 也 較 高,故無需使用其他的信號調理電路。由于本文中的電池管理系統暫時還未具有充電均衡管理功能,故將6803的均衡引腳做懸空處理,不使用其放電控制功能。
LTC6803的SPI通信
采集系統的單體電池的電壓,是通過 LTC6803采集的。LTC6803與 MC9S12C32之間是 通 過 SPI進行通 信 的。為 了 實 現 SPI通 信,首 先 要 弄 清 楚LTC6803的讀寫時序。LTC6803的讀、寫時序如圖3和圖4所示。
由讀寫時序可見,每個 字 節發 送 時 都是高 位 先發送。寫時 序 時,SDI引腳的邏輯狀態在 SCKI的上升沿被所 存。讀 數 據 時,在 SCKI的 上 升 沿 被 所存。讀時序中,在SCKl的上升沿 SDO 引腳的邏輯狀態 是 有 效 的,另外需要注意的是,LTC6803的 是時鐘相位和極性要求:LTC6803的 SPI的接口被配置為工作在 CPHA=I和 CPOL=I的模式下。
本文中兩片LTC6803串聯方式連接,故在由單片 機 往 LTC6803 發 送 命 令 時,是 先 發 送 高 位LTC6803的 命 令 數 據,再 發 送 低 位 LTC6803的 命令數 據;LTC6803往 單 片 機 時,單片機先接受的是低位 LTC6803的 數 據,而 后 是 高 位 6803 的 數 據。根據 LTC6803 的 SPI的 通 訊 方 式,本 文 以 兩 片LTC6803 菊花鏈式連接為例,可 以 寫 出MC9S12C32的SPl初始 化、收發 程 序;向 LTC6803寫配置或 者 命 令;從 LTC6803 中讀取寄存器值的程序。
(1)MC9S12C32的SPI初始化、收發程序
MC9S12C32的SPI模 塊 的 SS可 設 為 普 通IO口 功 能。 本文中采用其余通用 IO 口,實 現LTC6803的 CSBI引腳的拉高和拉低。
voidSPI_Init(void)
{CS_dir=1; ∥通用片選引腳為輸出引腳
SPICR1=0x5c; ∥主機模式;高位起始傳送
SPICR2=0x00; ∥主模式故障模式使能禁止
SPIBR=0x02; ∥總線8M,將SPI時鐘分頻
至1MHz
}
voidSPI_Send(unsignedcharsenddata)
{unsignedchartemp_spi;
while(!SPISR_SPTEF); ∥等 待 數 據 寄 存
器空
SPIDR=senddata;∥將數據寫入數據寄存器
while(!SPISR_SPIF);∥等待數據發送完成
temp_spi=SPIDR; ∥清空標志
}
unsignedcharSPI_Receive(void)
{unsignedcharreceive_data;
while(!SPISR_SPIF); ∥等待接收完成
receive_data=SPIDR; ∥讀取數據寄存器
return(receive_data);
}
(2)向 LTC6803寫命令
向LTC6803中寫數據,需先發送相應的寄存器命令 和 PEC 碼,經 校驗 無誤 后,再寫 入數據。6803采用菊花鏈式連接時,先寫入的數據為頂端6803的數據,然后是中間的6803的數據,最后是底端6803的數據。以6803初始化程序為例,編寫程序如下:
voidLTC6803_Init(void)
{unsignedchari;
unsignedchartop_cfg[7]={};
unsignedcharbottom_cfg[7]={};
CS=O; ∥拉低片選,啟動寫入數據
SPI_Send(0x01);SPI_Send(0x01); ∥ 發 送
寫入寄存器命令和 PEC碼
for(i=0;i<7;i++)SPI_Send(top_cfg[i]);
for(i=0;i<7;i+ +)SPl_Send(bottom_cfg
[i]);
CS=1; ∥拉高片選,鎖存所寫數據
}
(3)從 LTC6803讀取數據
從LTC6803中讀取數據,也需先發送相應的讀取寄存器命令和 PEC 碼,經 校驗 無 誤 后,再 讀 取 數據。6803采用菊花鏈式連接時,先 讀 取 的 是 底 端6803的數據,然后是中間6803的數據,最后是頂端6803的數據。LTC6803在 每 讀 取1字 節 的 數 據 之前,需由發送8位 空 字 節 啟 動 SPI傳 送 功 能。以 讀取6803的配置寄存器值為例,編寫程序如下:
voidLTC6803_Read(void)
{unsignedi;
CS=0;
SPI_Send(0x02);SPl_Send(0xce);∥發送讀取
寄存器命令和 PEC碼
for(i=0;i<7;i++)
{while(!SPI_SPTEF);SPIDR=0x00; ∥寫
入空字節,啟動SPI傳送
bottom_cfg[i]=SPI_Receive();}
……
CS=l;
}
MC9S12C32主要調用以上幾 個基本的函數,實現對 LTC6803的一系列 的 讀寫控制。采 集 系 統的整體流程圖如圖5所示。首先,對系統時鐘、SPI、CAN、定時器等初始化;循環從讀取24只單體電池電壓開始,到 最 終 通 過 CAN 總線將單體電壓數據上傳至上級控制 器,時序 由 定 時 器控 制。單體 電 池電壓測量程序流程圖如圖5所示。
圖6是一組電池組通過下位機 LTC6803采 集的單體電壓值與用萬用表測量值的比較,可以 看 出下位機的單體電池電壓采集精度達到要求。
為了節約電源,本采集 系 統還 設 計 了采集 系 統休眠的功能。當整車 在長時 間靜置時,由上級控 制器通過 CAN 廣播方式,做出采集系統休眠的命令:通過SPI可先將LTC6803配置為低電流方式,然后禁止 MC9S12C32的SPI功能;甚至可禁止 CAN 發送功能,只使能 CAN 接收中斷功能。
本文 采 用 MC9S12C32 和 LTC6803 設 計 鋰 離子單體電池采集 系 統。該系 統能采集24只串 聯動力電池的電 壓,并 通 過 高 速 的 CAN 總 線 與 上 級 控制系統通信。經過實 際測試,該 系統的 電壓采集精度在+3mV。該系統工作穩定可靠,與其他的控制系統集成后,已經試驗裝車,實現預計功能。
評論
查看更多