
串聯(lián)電池組用久了電芯之間的壓差總會慢慢變大。這個現(xiàn)象幾乎所有做過電池管理的工程師都見過。尤其是在儲能和備用電源場景下兩串電池雖然數(shù)量不多但壓差一旦超過閾值輕則容量發(fā)揮不出來重則觸發(fā)過充保護甚至影響整機壽命。我之前用 MP2642GR-Z 搭配 MK64FX512VDC12 做過一版兩串電池均衡方案從器件選型、電路設(shè)計到均衡策略落地踩了不少坑也沉淀了一些值得記錄的經(jīng)驗。這篇文章就把這套方案的完整實現(xiàn)過程拆開講講適合正在做 BMS 硬件設(shè)計、電池均衡控制或者儲能模塊開發(fā)的工程師參考。1. 兩串均衡的需求分析與方案架構(gòu)1.1 串聯(lián)電池不均衡的根本原因很多人覺得兩串電池沒什么好均衡的畢竟只有兩節(jié)電芯用個比較器就能搞定。但真正做項目之后你就會發(fā)現(xiàn)問題遠沒那么簡單。電芯在出廠時雖然經(jīng)過配組但容量、內(nèi)阻、自放電率不可能完全一致。隨著循環(huán)次數(shù)增加這種差異會被逐步放大。再加上儲能系統(tǒng)通常工作在浮充或者頻繁充放電的狀態(tài)電芯之間的 SOC荷電狀態(tài)偏差會在每次循環(huán)中被累積最終表現(xiàn)為電壓差持續(xù)擴大。這種不均衡帶來的影響很直接充電時電壓高的電芯先到達截止電壓充電被迫提前終止電壓低的電芯還沒充滿放電時正好反過來電壓低的電芯先到放電截止電壓整組放電提前結(jié)束。一天兩天無所謂長期下來低容量電芯一直在“吃不飽”和“過度放電”之間來回摩擦老化速度明顯加快。整套系統(tǒng)的可用容量被最弱的那顆電芯鎖死這是儲能設(shè)備最不愿意看到的情況。1.2 均衡方案整體架構(gòu)解決上述問題的核心思路是實時測量每顆電芯的電壓當壓差超過設(shè)定閾值時把高電壓電芯的能量以某種方式“釋放”或“轉(zhuǎn)移”掉讓整組電芯的電壓回到一個相對一致的水平。業(yè)界常見的做法分為被動均衡和主動均衡被動均衡成本低、結(jié)構(gòu)簡單在絕大多數(shù)小容量儲能和備用電源場景下是性價比最高的選擇。我這里采用的是一顆兩串電池專用的模擬前端芯片 MP2642GR-Z 負責電壓采樣和均衡開關(guān)控制配合 MK64FX512VDC12 作為主控 MCU負責均衡策略運算、閾值管理、狀態(tài)上報以及與上位機的通信。兩者分工非常明確AFE 管模擬量采集和預均衡動作MCU 管邏輯和策略。這種“AFE MCU”的組合比用分立運放和 ADC 搭的方案可靠性高出一個量級也比單芯片 BMS 方案更靈活后續(xù)要調(diào)策略或者擴展功能都很方便。2. 核心器件拆解MP2642GR-Z 與 MK64FX512VDC122.1 MP2642GR-Z 的定位與能力邊界MP2642GR-Z 是一顆針對兩串電池組的模擬前端芯片它的核心職責可以概括為三個詞采樣、保護、驅(qū)動。采樣指的是對每顆電芯的電壓進行高精度測量這對于均衡判定至關(guān)重要如果采樣誤差超過 5mV那后面做再多策略都是白搭。保護功能指的是它對過壓、欠壓、充放電過流等異常狀態(tài)有硬件級的監(jiān)測能力即使 MCU 因為異常死機AFE 仍然能獨立完成保護動作這是一道關(guān)鍵的“物理底褲”。驅(qū)動指的是芯片內(nèi)部集成了均衡放電管的驅(qū)動電路MCU 只需要通過通信接口下發(fā)指令AFE 就能直接打開對應(yīng)的均衡回路不需要額外的驅(qū)動三極管或 MOSFET 驅(qū)動電路。在通信方面MP2642GR-Z 支持主流的串行總線接口可以直接和 MCU 對接。我在實際項目中使用了 SPI 接口速率和穩(wěn)定性都夠用。芯片的供電方式也比較靈活可以從系統(tǒng)電源取電內(nèi)部有穩(wěn)壓處理不需要額外搞復雜的電源樹。對于兩串場景來說這顆芯片幾乎是貼著需求設(shè)計的沒有浪費的資源也沒有功能短缺的尷尬。2.2 MK64FX512VDC12 在主控側(cè)承擔的工作MK64FX512VDC12 屬于 Kinetis K 系列主控頻率和存儲資源對我來說完全夠用512KB 的 Flash 足夠放下均衡策略、通信協(xié)議棧和Bootloader128KB 的 RAM 跑多任務(wù)或者緩沖采樣數(shù)據(jù)也綽綽有余。更重要的是它內(nèi)部集成了豐富的外設(shè)包括高精度 ADC、可編程定時器、多個 UART / SPI / I2C、CAN 控制器這對 BMS 主控來說非常友好。在整套系統(tǒng)里MK64FX512VDC12 做的事情比較雜但也比較核心首先是周期性讀取 MP2642GR-Z 的電壓采樣寄存器拿到兩顆電芯的原始電壓數(shù)據(jù)然后根據(jù)當前的充放電狀態(tài)、溫度數(shù)據(jù)和歷史數(shù)據(jù)判斷是否需要啟動均衡如果需要均衡再計算出均衡占空比在被動均衡里就是放電時間占比下發(fā)給 AFE 執(zhí)行同時它還要維護一套完整的均衡記錄比如累計均衡時長、每次均衡前后的壓差變化這些數(shù)據(jù)在產(chǎn)線和售后調(diào)試時非常關(guān)鍵。2.3 兩芯片組合的工程優(yōu)勢在過去很多設(shè)計里大家習慣用 “MCU 分立電阻分壓網(wǎng)絡(luò) 外部 ADC” 的方式做電池電壓采樣。這種方案理論上是可行的但工程實現(xiàn)上極其折磨。分壓網(wǎng)絡(luò)需要精密電阻溫漂指標不好選PCB 上還需要做阻抗匹配外部 ADC 的參考源要單獨處理不然采樣值隨溫度飄得讓人懷疑人生。而用 MP2642GR-Z 這樣的專用 AFE采樣鏈路被芯片內(nèi)部處理好了參考源是內(nèi)部的高精度基準校準和溫漂由器件規(guī)格兜底整個模擬前端設(shè)計大幅簡化。同時 MK64FX512VDC12 這類主控提供了足夠的計算余量。兩串電池的均衡策略聽起來簡單但在工程落地時要做電壓數(shù)據(jù)濾波、防抖處理、均衡狀態(tài)機切換還要處理通信干擾、異?;謴瓦@些場景計算量并不小。如果用低端 8 位單片機硬扛代碼寫起來會很別扭尤其是狀態(tài)機比較復雜的時候。K64 這樣的 MCU 在性能上有充足冗余寫代碼的時候不會因為性能不足而強行優(yōu)化邏輯可以寫得更清晰、更健壯。3. 硬件系統(tǒng)設(shè)計與均衡電路實現(xiàn)3.1 整體硬件鏈路這套系統(tǒng)的硬件鏈路是這樣的兩節(jié)串聯(lián)電芯的電壓分別引到 MP2642GR-Z 的采樣輸入引腳AFE 內(nèi)部完成高精度采樣和均衡開關(guān)的通斷控制。AFE 通過 SPI 與 MK64FX512VDC12 連接MCU 作為主機主動發(fā)起讀取和寫入操作。與此同時MCU 還通過 UART 連接調(diào)試上位機通過 GPIO 控制狀態(tài)指示燈和系統(tǒng)電源管理電路。整機采用三級拓撲電芯級-模擬前端級-主控級每一級只干自己最擅長的事情。3.2 MP2642GR-Z 外圍電路關(guān)鍵設(shè)計AFE 外圍電路看起來不復雜但有幾個點非常關(guān)鍵直接影響采樣精度和長期可靠性。首先是采樣引腳的 RC 濾波。電芯在充放電切換瞬間會產(chǎn)生比較大的 dV/dt如果采樣線上沒有濾波AFE 內(nèi)部采樣電容充電還沒穩(wěn)定ADC 采出來的值就會帶上毛刺。我在這里每組采樣引腳對地并聯(lián)了一個 100nF 的陶瓷電容并在采樣線路上串聯(lián)了一個 100Ω 的電阻構(gòu)成一階低通濾波。截止頻率大概在 16kHz 左右既能濾掉高頻噪聲又不會影響直流電壓測量。其次是均衡放電電阻的選擇。被動均衡的本質(zhì)就是把高電壓電芯的能量通過電阻變成熱量放掉。均衡電流的大小直接決定了均衡速度和發(fā)熱量。以 3.2V 的單節(jié)電芯計算如果我想要約 100mA 的均衡電流那么放電電阻應(yīng)選擇 32Ω 左右實際選用了 30Ω / 0.5W 的貼片電阻。同時需要考慮 PCB 的散熱能力兩個均衡電阻不要貼在一起至少保持 2mm 以上的間距以免局部熱點過高。最后是 AFE 的供電去耦。MP2642GR-Z 的數(shù)據(jù)手冊會給出供電引腳的建議電容但實際設(shè)計時我習慣在靠近芯片電源引腳處放一個 1uF 的陶瓷電容和一個 100nF 的高頻去耦電容形成一個寬頻帶的電源濾波網(wǎng)絡(luò)。這個細節(jié)沒處理好采樣值會出現(xiàn)周期性的小波動排查起來非常隱蔽。3.3 MK64FX512VDC12 接口與信號完整性設(shè)計MK64FX512VDC12 與 AFE 之間的 SPI 通信速率我沒有頂?shù)阶罡叨窃O(shè)成了 1MHz 左右。原因很現(xiàn)實SPI 速率越高對 PCB 走線的阻抗一致性要求越高而且 AFE 的片選釋放時間和數(shù)據(jù)穩(wěn)定時間都有規(guī)格要求。速率低一點犧牲的只是幾微秒的通信時間但換來的調(diào)試裕量非常大。在儲能系統(tǒng)的強電磁環(huán)境下穩(wěn)定壓倒一切。PCB 走線方面SPI 的四根線SCLK、MOSI、MISO、CS要保持盡量短和等長不要跨島不要在走線下方布置大電流電感這類干擾源。我給每個通信信號線上串了 22Ω 的電阻用來抑制振鈴和過沖。在 MCU 的供電端除了常規(guī)的去耦電容陣之外還加了一個小型的磁珠將數(shù)字電源和 AFE 的模擬電源做了局部隔離避免 MCU 的高頻開關(guān)噪聲通過電源網(wǎng)絡(luò)竄入模擬采樣鏈路。這一套組合拳打下來實測采樣數(shù)據(jù)的波動幅度比初始版本下降了 70% 以上。3.4 保護電路與異常處理機制硬件設(shè)計還要考慮一個場景MCU 跑飛了怎么辦。如果 MCU 死機SPI 通信停止AFE 收不到新的均衡指令那么均衡開關(guān)應(yīng)該保持什么狀態(tài)這是我設(shè)計時特別關(guān)注的問題。MP2642GR-Z 在這方面做得比較死板它會維持寄存器的狀態(tài)也就是說如果死機前均衡開關(guān)是打開的那它會一直開著這對電池來說是有風險的。解決思路是在 AFE 的片選信號上做硬件看門狗。我用 MK64FX512VDC12 的一個定時器輸出一個周期性脈沖經(jīng)過一個單穩(wěn)態(tài)電路連接到 AFE 的復位引腳。如果 MCU 正常運行時脈沖一直存在AFE 正常工作一旦 MCU 死機超過 500ms脈沖消失AFE 被強制復位所有均衡開關(guān)關(guān)閉所有保護寄存器回到默認安全狀態(tài)。這個電路成本不高但為整機提供了一個可靠的后備保障產(chǎn)線測試時專門模擬了幾次死機場景都能正確觸發(fā)保護復位。4. 均衡策略與軟件實現(xiàn)4.1 均衡狀態(tài)機設(shè)計軟件層面我設(shè)計了一個四狀態(tài)的均衡狀態(tài)機空閑態(tài)、等待態(tài)、均衡態(tài)、恢復態(tài)。系統(tǒng)上電后首先進入空閑態(tài)此時 MCU 周期性讀取電壓但不做任何均衡動作。當連續(xù)多次采樣都檢測到壓差超過啟動閾值時狀態(tài)機進入等待態(tài)。等待態(tài)做的事情很關(guān)鍵它在啟動均衡之前再次確認壓差是否真實這個狀態(tài)持續(xù) 10 秒期間如果有任何一次采樣顯示壓差已經(jīng)回落狀態(tài)機就回到空閑態(tài)相當于一次“防抖確認”。連續(xù) 10 秒都確認壓差超過閾值后才切入均衡態(tài)。均衡態(tài)下MCU 根據(jù)壓差的大小動態(tài)調(diào)節(jié)均衡開啟的時間片。我這里用的是 PWM 式均衡每個 1 秒周期高電壓電芯的均衡開關(guān)按占空比開啟。比如壓差為 30mV 時占空比 50%壓差為 100mV 時占空比 100%。這種漸進式的控制方式可以避免大電流均衡導致電芯溫度突然上升太多也能讓電壓下降過程更平穩(wěn)。當壓差收斂到 8mV 以下時狀態(tài)機進入恢復態(tài)均衡開關(guān)關(guān)閉系統(tǒng)持續(xù)監(jiān)測電壓 30 秒確認沒有反彈后再回到空閑態(tài)。整個環(huán)路非常清晰也方便用日志觀測狀態(tài)轉(zhuǎn)移過程。4.2 核心參數(shù)標定與代碼實現(xiàn)均衡啟動閾值、恢復閾值和占空比映射表是三個最核心的參數(shù)。我翻閱了不少儲能系統(tǒng)設(shè)計資料并結(jié)合充電結(jié)束時電壓回落曲線最終將啟動閾值定為 20mV恢復閾值定為 8mV。這樣設(shè)置的原因在于低于 20mV 的壓差對兩串電池組的可用容量影響很小頻繁啟停均衡反而會因為均衡電阻的發(fā)熱產(chǎn)生不必要的能量損耗和電芯溫差而 8mV 的恢復閾值留有充分裕量即使關(guān)閉均衡后電壓因極化效應(yīng)略有回升也不會馬上觸發(fā)二次均衡。占空比映射邏輯我用一段簡潔的代碼實現(xiàn)uint8_t calc_balance_duty_cycle(uint16_t delta_mv) { if (delta_mv 8) return 0; if (delta_mv 100) return 100; // 20mV ~ 100mV 之間線性映射到 20% ~ 100% 占空比 uint8_t duty 20 (uint16_t)((delta_mv - 20) * 80 / 80); if (duty 100) duty 100; return duty; }這套映射的邏輯比較直白20mV 時只開 20% 的均衡時間片100mV 及以上時全開。中間按線性比例走。我實際測試下來壓差在 50mV 左右時一個均衡周期1 秒內(nèi)電芯電壓大約下降 0.3mV 左右按這個速度100mV 的初始壓差收斂到 8mV 大約需要 5 到 6 分鐘這個收斂速度在儲能系統(tǒng)的日常維護場景中是完全可以接受的。4.3 采樣濾波與數(shù)據(jù)管理電壓采樣數(shù)據(jù)是均衡判斷的基礎(chǔ)。AFE 原始采樣的分辨率很高但每次讀取出來的數(shù)據(jù)總會有些跳動。我在 MCU 里對每個電芯的電壓值做了 16 次滑動平均處理也就是每次取最新的 16 個采樣周期的算術(shù)平均值作為當前電壓值。這個濾波窗口對串入的隨機噪聲抑制效果明顯同時不會因為濾波導致響應(yīng)太慢。除了濾波數(shù)據(jù)管理也要做好。我在 Flash 中劃分了一個區(qū)域用來記錄均衡歷史每次均衡啟動的起始壓差、結(jié)束壓差、均衡持續(xù)時長和均衡時的溫度。這些數(shù)據(jù)通過調(diào)試口可以隨時導出對分析現(xiàn)場反饋回來的異常整機非常有幫助。有一次現(xiàn)場反饋說某個模塊均衡之后電壓又反彈了我翻了歷史記錄發(fā)現(xiàn)均衡結(jié)束時的溫度偏高推斷是電芯極化效應(yīng)太強后來在恢復態(tài)的持續(xù)時間上做了調(diào)整問題就解決了。沒有數(shù)據(jù)記錄的話這類問題只能靠猜效率完全不一樣。5. 實測結(jié)果與問題排查實錄5.1 均衡效果實測案例整機裝配完成后我設(shè)計了一組對比測試來驗證均衡效果。測試對象是兩組規(guī)格相同但人為制造了不同初始壓差的電芯A 組初始壓差 78mVB 組初始壓差 15mV。測試條件是室溫 25°C靜置狀態(tài)下持續(xù)監(jiān)測 30 分鐘。A 組在開始均衡后大約 10 分鐘進入穩(wěn)態(tài)壓差逐步從 78mV 下降到 6mV 以內(nèi)之后 20 分鐘內(nèi)維持在 4mV 左右的波動區(qū)間。B 組由于初始壓差低于啟動閾值在整個監(jiān)測期間一直保持在空閑狀態(tài)壓差在 10mV 以內(nèi)自然浮動沒有觸發(fā)無意義的均衡動作。這說明閾值參數(shù)標定是合理的既有足夠的靈敏度去響應(yīng)明顯的不均衡又不會因為微小波動頻繁觸發(fā)動作為系統(tǒng)引入額外的能量損耗。5.2 問題記錄MP2642GR-Z 不上電啟動聯(lián)調(diào)時碰到過一個比較詭異的問題MP2642GR-Z 在單獨給 MCU 供電時能夠正常通信但整機供電時常出現(xiàn) AFE 無響應(yīng)。排查到最后問題出在上電時序上。整機系統(tǒng)里有多個電源軌MCU 所在的電源軌先上電AFE 的電源軌后上電導致 MCU 在 AFE 復位完成之前就發(fā)起了 SPI 訪問通信鏈路初始化順序錯亂。解決方法是增加一個“AFE 就緒標志位”的邏輯MCU 上電后先做 500ms 延時再通過 GPIO 檢測 AFE 的供電狀態(tài)引腳電平確認 AFE 已經(jīng)完全復位并進入工作狀態(tài)后才初始化 SPI 并做第一次寄存器讀操作。這個處理用軟件規(guī)避了硬件時序問題不需要改 PCB修改成本非常低。遇到類似問題時第一步不要急著懷疑器件壞了先檢查上下電時序和復位時序多數(shù)玄學問題都出在時序上。5.3 問題記錄均衡啟動后電壓反而上升有陣子調(diào)試時發(fā)現(xiàn)一個現(xiàn)象均衡啟動后電芯電壓不僅沒有下降反而緩慢上升。一開始懷疑是均衡電路方向接反了后來看數(shù)據(jù)才反應(yīng)過來問題出在電芯本身。剛充滿電的電芯在斷開充電后存在表面電壓滯回效應(yīng)也就是電壓會先回落到一個較低點然后隨著電芯內(nèi)部的化學擴散逐漸回升。均衡動作疊加在電芯自身的電壓回升過程之上時會出現(xiàn)“電壓在升但實際上是電芯本來就在升均衡只是減緩了上升斜率”的假象。針對這個情況我在均衡啟動條件中增加了靜置時間限制電芯在經(jīng)歷完整充放電過程后的 5 分鐘內(nèi)不允許啟動均衡必須等表面電壓極化現(xiàn)象減弱再判斷。這個調(diào)整讓系統(tǒng)對“假性電壓差”不再做出錯誤反應(yīng)。在實際項目中電壓讀數(shù)是數(shù)字但電壓背后的電化學過程才是底層邏輯不搞清楚這一點策略調(diào)多少參數(shù)都是隔靴搔癢。5.4 問題記錄SPI 通信偶發(fā)數(shù)據(jù)錯誤量產(chǎn)階段遇到過 SPI 偶發(fā)性數(shù)據(jù)錯誤的問題故障率不算高但排查成本很高。抓波形發(fā)現(xiàn) MISO 數(shù)據(jù)線上偶爾會出現(xiàn)毛刺。原因其實很常規(guī)但仍然值得記一筆SPI 的 MISO 走線旁邊有一根電源走線上面有紋波較大的開關(guān)電源輸出。PCB 本來走線間距是夠的但實際生產(chǎn)時供應(yīng)商做了板子大面積鋪銅調(diào)整導致在過孔附近電源走線和 MISO 線之間的間距被壓縮了寄生效電容增大電源噪聲耦合到了數(shù)據(jù)線上。處理措施分兩步一是把 SPI 通信速率從 1MHz 降到 500kHz增加對毛刺的容忍度二是在產(chǎn)線上增加 MISO 信號的過孔區(qū)域布線檢查項。這里也想提醒各位SPI 通信問題不一定都出在代碼和器件邏輯上PCB 的實際制造偏差經(jīng)常是隱藏的元兇。發(fā)現(xiàn)問題后調(diào)代碼解決只是治標治本還是要回到物理鏈路本身去查。5.5 常見問題速查表結(jié)合項目經(jīng)驗我把這類系統(tǒng)調(diào)試中容易出現(xiàn)的問題整理成一張表方便后續(xù)做類似項目的同學快速對照?,F(xiàn)象可能原因排查方向與處理建議AFE 無響應(yīng)上電時序異常、SPI 初始化順序不對確認 AFE 供電穩(wěn)定后再初始化通信加就緒檢測邏輯采樣電壓周期性波動AFE 供電引腳去耦不良、采樣 RC 參數(shù)不合適檢查電源去耦電容重新確認 RC 截止頻率均衡效果不明顯放電電阻阻值偏大、占空比太低核算均衡電流增大占空比或降低放電電阻阻值均衡后電壓反彈電芯極化效應(yīng)、恢復態(tài)時間不足延長恢復態(tài)監(jiān)測時間增加靜置限制條件SPI 偶發(fā)數(shù)據(jù)錯誤信號線路干擾、走線間距不足、速率過高降到安全速率檢查 PCB 布線加過濾或重發(fā)機制寫在最后的實際體會這套 MP2642GR-Z 加 MK64FX512VDC12 的兩串均衡方案目前已經(jīng)穩(wěn)定跑到量產(chǎn)階段?;仡^看最難的部分不是把代碼寫出來而是在策略和硬件之間找到那條“既不折騰電芯、又能有效收斂壓差”的平衡線。均衡這件事本質(zhì)上是在和電芯內(nèi)部自有特性做博弈尊重電壓數(shù)據(jù)的客觀性但也要時刻警惕數(shù)據(jù)背后的物理過程。真要說有什么技巧就是多做實測、多記錄數(shù)據(jù)、多給策略留一點裕量沒什么捷徑。后續(xù)如果想從被動均衡升級到主動均衡可以在現(xiàn)有硬件架構(gòu)上增加一個雙向能量轉(zhuǎn)移模塊MCU 和 AFE 的框架還能繼續(xù)復用擴展路徑非常清晰。