計實踐)
兩串電芯一串電壓4.05V一串4.18V在備用電源系統(tǒng)里跑了兩個星期之后直接觸發(fā)過壓告警停機(jī)——這是我在某備用電源項目里遇到的第一個實際問題。后來我把均衡方案改成了 MP2642GR-Z 加 dsPIC33EP512MU810 的組合前者負(fù)責(zé)電芯之間的能量搬運(yùn)后者負(fù)責(zé)電壓采樣、均衡判據(jù)和啟??刂茖iT針對儲能系統(tǒng)和備用電源里最常見的兩節(jié)串聯(lián)電池單元。這套方案不復(fù)雜但它解決的問題一點也不小。如果你也在做48V以下的小型儲能、后備電池、或者兩輪車/小功率設(shè)備的BMS這篇文章基本就是給你寫的。1. 為什么在儲能與備用電源里兩節(jié)串聯(lián)電芯的均衡不是配角很多人覺得兩串電池“簡單”串聯(lián)只有兩節(jié)電芯哪個電壓高就限制哪個放電完事。真做系統(tǒng)集成的時候你會發(fā)現(xiàn)問題恰恰卡在這個“簡單”上兩串電芯互為唯一搭檔容量稍有差異整組容量立刻變成最差那節(jié)電芯的容量。儲能和備用電源又不像消費(fèi)電子產(chǎn)品那樣用幾個月就換一掛就是好幾年的工況失配被時間慢慢放大最后就變成過壓告警、欠壓掉線、容量跳水。1.1 失配的四個來源容量、內(nèi)阻、自放電、溫度先說容量差。出廠環(huán)節(jié)再嚴(yán)格的篩選同一批電芯靜置容量也會有百分之幾的偏差。對兩串系統(tǒng)來說充電時低容量電芯先充滿放電時低容量電芯先放空這節(jié)電芯就是整組的短板。它決定了你能充進(jìn)去多少、放出來多少而另外那節(jié)正常或偏大的電芯永遠(yuǎn)吃不滿、放不凈。然后是內(nèi)阻差。內(nèi)阻差直接影響的是動態(tài)電壓同樣10A電流內(nèi)阻偏高那節(jié)電芯會比另一節(jié)多掉幾十毫伏放電末端尤其明顯。備用電源通常不常放電但一旦掉電切換電池要瞬間頂上大電流內(nèi)阻差異造成的壓降會直接觸發(fā)欠壓保護(hù)哪怕整組SOC還有六成。自放電率差異是最陰的一個。電芯負(fù)極材料、電解液配方、存放溫度不同自放電率會差出不少。兩串電芯充電回路一樣但自放電大的那節(jié)每天多漏掉一點浮充只能補(bǔ)回一部分長期擱置后壓差就這么靜悄悄拉開了。備用電源恰恰是“長時間擱置偶爾滿充”的使用方式等于天天給自放電差異提供表演舞臺。溫度梯度也不能忽略。機(jī)柜里上下層溫差往往有3到5攝氏度溫度高的電芯內(nèi)阻低、充放電流更“積極”于是被分配了更多的化學(xué)反應(yīng)量老化自然更快。老化之后內(nèi)阻進(jìn)一步升高溫度又繼續(xù)升高形成正反饋回路。在兩串系統(tǒng)里這種溫差導(dǎo)致的失配會直接體現(xiàn)在浮充末期的電壓曲線上。1.2 備用電源“浮充 長擱置”對壓差的放大效應(yīng)消費(fèi)電子里的兩串電池比如筆記本電池使用頻繁充放電循環(huán)多均衡機(jī)會也多。備用電源不一樣電池大部分時間掛在浮充電壓上充放電次數(shù)可能一年都不到二十次。浮充狀態(tài)下充電電流趨近于零電芯端電壓主要由自放電和化學(xué)態(tài)決定自放電率差半個百分點浮充一直開著也拉不齊。更麻煩的是備用電源的放電特性平時不動出動就是大電流短時放電。最弱那節(jié)電芯在大電流下瞬間被拉到低壓區(qū)間系統(tǒng)以為整組沒電直接切到保護(hù)狀態(tài)之后又重新浮充。這種“平時不壞、關(guān)鍵時候掉鏈子”的場景作為系統(tǒng)開發(fā)人員最頭疼。與其等到壓差到300mV再靠維護(hù)人員上門換電芯不如在BMS里就做均衡把壓差長期壓在20mV以內(nèi)讓兩節(jié)電芯始終步調(diào)一致?;谶@個前提我最終定的方案就是MP2642GR-Z 做能量轉(zhuǎn)移通道dsPIC33EP512MU810 做采樣和策略控制。下面把兩個器件的分工拆開講。2. MP2642GR-Z 與 dsPIC33EP512MU810 的分工誰搬電荷、誰定策略這套系統(tǒng)里兩個芯片的定位是截然不同的。MP2642GR-Z 是一臺“執(zhí)行機(jī)構(gòu)”負(fù)責(zé)在兩節(jié)電芯之間搬電荷dsPIC33EP512MU810 是“大腦”負(fù)責(zé)判斷什么時候搬、搬多久、搬完怎么確認(rèn)。把這兩層分開之后均衡邏輯的調(diào)試難度會明顯下降。2.1 MP2642GR-Z電芯之間的能量搬運(yùn)工MP2642GR-Z 這類均衡控制芯片的核心工作是在兩個串聯(lián)電芯之間建立一條可控的能量通道。使能之后它通過開關(guān)管和外部電感、電容組成非隔離的功率變換路徑讓電壓高的那節(jié)電芯釋放能量經(jīng)過儲能元件再注入電壓低的那節(jié)電芯。方向是“從高到低”不是把高壓電芯的能量當(dāng)成熱量白白放掉。放在我們的具體設(shè)計里MP2642GR-Z 的輸入側(cè)接“電芯1正極與負(fù)極”輸出側(cè)接“電芯2正極與負(fù)極”節(jié)點就是兩節(jié)電芯的串聯(lián)中點。使能腳由 DSC 的 GPIO 控制狀態(tài)腳反饋回 DSC。它自己不做復(fù)雜的系統(tǒng)判斷均衡電流的大小、持續(xù)時長、什么時候停止都由 DSC 決定。這種“執(zhí)行機(jī)構(gòu)”式的分工有一個好處均衡策略可以用軟件隨時改不用改硬件。需要提醒的是MP2642GR-Z 的具體外圍電路一定要按官方數(shù)據(jù)手冊的典型應(yīng)用來接不同版本的片子可能在使能邏輯、故障輸出極性上有差異。代碼里不要寫死“高電平開啟”或“低電平開啟”要把這個定義做成配置項硬件調(diào)試時先確認(rèn)極性再跑均衡邏輯。2.2 dsPIC33EP512MU810采樣、控制與上報的大腦dsPIC33EP512MU810 是一顆16位DSC帶多路ADC和比較豐富的通信外設(shè)。在均衡系統(tǒng)里它并沒有被當(dāng)作傳統(tǒng)意義上的DSP去跑復(fù)雜算法而是當(dāng)成一顆高可靠性的“采集策略通信”主控來用。它在系統(tǒng)里承擔(dān)三件事。第一單體電壓采集兩節(jié)電芯的電壓通過分壓網(wǎng)絡(luò)進(jìn)入ADC軟件做滑動平均和濾波得到穩(wěn)定的電壓讀數(shù)和壓差。第二均衡決策根據(jù)壓差、溫度、母線電壓、充放電狀態(tài)決定當(dāng)前是否允許開啟MP2642GR-Z以及開啟多長時間。第三狀態(tài)上報把均衡電流、均衡時長、啟動次數(shù)、故障碼通過UART或CAN發(fā)給上層監(jiān)控方便后臺知道這組電池的健康情況。這顆DSC的外設(shè)數(shù)量對兩串均衡來說綽綽有余。為了后續(xù)擴(kuò)展我建議把額外的ADC通道留給NTC溫度采樣和母線電流采樣別只盯著單體電壓。備用電源系統(tǒng)里溫度對均衡允許窗口的影響非常大沒有溫度采樣的均衡策略等于盲人摸象。2.3 為什么沒選純被動均衡或一片專用AFE被動均衡是最常見的方案高電壓電芯通過一個電阻放電把多余能量變成熱。成本確實低但問題很明顯。壓差越大需要放的時間越長電阻上持續(xù)發(fā)熱小體積產(chǎn)品根本壓不住而且備用電源長期浮充均衡電阻一掛就是幾小時熱量積累后會影響旁邊電芯的溫升反而加劇失配。我在早期方案里其實試過被動均衡后來發(fā)現(xiàn)浮充結(jié)束后散熱要很長時間板子局部溫度能比環(huán)境高出十幾度實在不能接受就放棄了。專用AFE是另一條路片上集成了采樣、均衡開關(guān)和部分保護(hù)邏輯開發(fā)快一致性也好。但對這個項目來說專用AFE把均衡策略固化在芯片固件里閾值、遲滯、最大均衡時間這些參數(shù)不透明想加溫度聯(lián)鎖或者“均衡一段時間再復(fù)測”這種自定義邏輯會很別扭采購成本和供貨周期也壓不下來。使用 MP2642GR-Z dsPIC33EP512MU810 組合的好處是把“策略靈活性”和“硬件可靠性”分開功率路徑交給專門芯片管邏輯路徑交給可編程控制器管。調(diào)試時我甚至可以在不改動功率板的前提下連續(xù)換幾版均衡策略固件這在現(xiàn)場聯(lián)調(diào)階段非常省事。方案能量處理策略可編程性熱管理難度適合場景純被動均衡高電芯電阻放電低高低成本、小電流、不常浮充專用AFE視型號而定低中標(biāo)準(zhǔn)化大批量產(chǎn)品MP2642 DSC高電芯向低電芯轉(zhuǎn)移高低儲能/備用電源等長期浮充場景3. 采樣、驅(qū)動與功率級兩串均衡系統(tǒng)的硬件設(shè)計要點確定芯片組合之后真正的硬骨頭在硬件設(shè)計上。均衡系統(tǒng)要穩(wěn)定工作采樣精度和功率路徑的取舍都很關(guān)鍵任何一個環(huán)節(jié)偷懶后面調(diào)試都會加倍還回來。3.1 電壓采樣鏈路共模電壓與電阻精度問題兩串電池的總線電壓最高約8.4VDSC的ADC輸入范圍一般在0到3.6V所以不能直接采樣必須用電阻分壓或差分運(yùn)放把電壓降到ADC可用區(qū)間。這里最需要注意的是頂部電芯的采樣它的負(fù)極不是系統(tǒng)地而是串聯(lián)中點電位大約在3到4.2V屬于浮動共模電壓。直接簡單分壓后接ADC問題不大但分壓電阻的精度會直接影響壓差判斷。我用了兩個分壓網(wǎng)絡(luò)分別測“電芯1正極到地”和“電芯2正極到地”軟件里做差值得到頂部電芯電壓。這要求分壓電阻的比值一致性足夠好。早期用過1%精度的電阻結(jié)果兩路分壓比在4.2V輸入下能差出15到20mV比15mV的均衡閾值還大均衡根本沒法正常判斷。后來換成0.1%精度電阻并在分壓點并聯(lián)100nF電容做低通濾波壓差讀數(shù)才穩(wěn)定下來。如果你的BOM里0.1%電阻成本敏感另一個做法是出廠校準(zhǔn)在電芯開路且已知壓差很小的狀態(tài)下先記錄ADC兩路讀數(shù)的偏差做成offset存到數(shù)據(jù)區(qū)。這個方法能用1%電阻做到不錯的實際精度但要注意校準(zhǔn)系數(shù)會隨溫度漂移最好配合NTC做溫度補(bǔ)償不能一勞永逸。3.2 功率開關(guān)與電感選擇均衡電流怎么定均衡電流的設(shè)定要結(jié)合電芯容量和均衡時間。被動均衡通常只有幾十毫安主動均衡一般希望做到幾百毫安甚至更高。均衡電流的峰值受開關(guān)周期、導(dǎo)通時間和電感值約束基礎(chǔ)公式是[ \Delta I \frac{V \times t_{on}}{L} ]以我用的參考設(shè)計為例電芯電壓按4.2V算開關(guān)導(dǎo)通時間1微秒電感10微亨單次電流上升大約是0.42A。如果期望的平均均衡電流在0.2到0.3A這個配置基本合適。想要更快均衡可以把電感換成3.3微亨但峰值電流會到1.27A電感和開關(guān)管的飽和電流、峰值電流規(guī)格都要跟著提高否則電感飽和后電流失控MP2642的故障腳就會頻繁拉低。開關(guān)管的選擇上優(yōu)先關(guān)注導(dǎo)通電阻和柵極電荷。導(dǎo)通電阻過高會在均衡回路里產(chǎn)生額外壓降降低轉(zhuǎn)移效率柵極電荷過高則會讓開關(guān)損耗變大。我們用的均衡電流不超過1A導(dǎo)通電阻在幾十毫歐級別的管子就夠用封裝盡量選帶散熱焊盤的方便均衡長時間開啟時把熱量導(dǎo)到銅皮上。散熱設(shè)計不要只看總功率。均衡電流0.3A壓差0.2V功率才0.06W聽起來微不足道但這是“平均功率”。開關(guān)管開關(guān)瞬間的損耗、電感的銅損、采樣電阻的功耗都要算進(jìn)去尤其當(dāng)均衡持續(xù)幾十分鐘時板上局部溫升可能比預(yù)期高不少。我習(xí)慣在功率路徑周圍鋪大面積接地銅皮并留好過孔陣列防止均衡時間一長溫度飄高。3.3 使能/故障信號與時序設(shè)計MP2642GR-Z 的使能和故障信號是均衡系統(tǒng)與DSC之間的關(guān)鍵接口。這里最容易出的問題就是上電時序。DSC復(fù)位或正在下載程序時GPIO處于高阻態(tài)如果MP2642的使能腳設(shè)計成內(nèi)部上拉或默認(rèn)有效就會出現(xiàn)“主控還沒起來均衡已經(jīng)開始亂跑”的情況。解決方法是把使能腳的外部下拉電阻做實保證DSC未初始化時MP2642處于禁止?fàn)顟B(tài)。同時驅(qū)動線串聯(lián)一個100到220歐姆的電阻避免DSC IO口在電平切換瞬間被功率回路的干擾拉出毛刺。故障腳建議接到DSC的中斷引腳而不是輪詢讀取。均衡開啟過程中如果電感飽和、過流或者過熱故障信號能立刻觸發(fā)中斷DSC馬上關(guān)閉充電回路和均衡路徑這比靠軟件慢慢查狀態(tài)快得多。4. 均衡控制狀態(tài)機(jī)從15mV壓差到自動停止的完整邏輯硬件只能保證“有能力均衡”真正決定均衡靠不靠譜的是軟件狀態(tài)機(jī)。這部分我花的時間比硬件還多因為均衡策略寫不好輕則頻繁啟停重則在錯誤時機(jī)均衡反而把電芯搞壞。4.1 均衡判據(jù)、遲滯與濾波均衡的啟動閾值不是拍腦袋定的。閾值太低采樣噪聲都會被當(dāng)成壓差均衡頻繁啟停閾值太高又起不到提前預(yù)防失配的作用。我最后把啟動閾值定在15mV停止閾值定在5mV中間留了10mV的遲滯區(qū)間避免電芯電壓在臨界點附近抖動導(dǎo)致繼電器式的來回開斷。數(shù)字濾波同樣重要。每次開機(jī)初始化時連續(xù)采集20次電壓每次間隔10毫秒去掉最大最小值后取平均。壓差判斷也做了連續(xù)確認(rèn)連續(xù)3個濾波周期都超過15mV才真正進(jìn)入均衡狀態(tài)寧可慢一點也不要被瞬態(tài)噪聲騙了。這里有一個容易被忽略的點均衡進(jìn)行時不要直接用電芯動態(tài)電壓做結(jié)束判據(jù)。均衡電流導(dǎo)致的內(nèi)阻壓降會體現(xiàn)在端電壓上高壓電芯在均衡期間電壓讀數(shù)被拉低低壓電芯被抬高看起來“壓差已經(jīng)消失”實際上關(guān)掉均衡后又會彈回來。所以每次需要復(fù)測壓差時我都先關(guān)掉MP2642等50到100毫秒讓電壓穩(wěn)定后再采樣測完再決定下一步。4.2 狀態(tài)機(jī)IDLE → FILTER → BALANCE → RE-CHECK我把均衡邏輯拆成四個狀態(tài)用狀態(tài)機(jī)實現(xiàn)邏輯清晰也容易排查。首先是IDLE態(tài)。壓差在5mV以內(nèi)系統(tǒng)什么都不做所有均衡輸出關(guān)閉。其次是FILTER態(tài)持續(xù)檢測壓差是否穩(wěn)定超過15mV同時檢查前置條件母線電壓要在預(yù)設(shè)工作范圍、系統(tǒng)不在放電、溫度在允許區(qū)間。這些條件通過后進(jìn)入BALANCE態(tài)。BALANCE態(tài)開啟MP2642GR-Z同時啟動一個均衡定時器每輪均衡時間設(shè)為10秒。這個定時器不是隨便選的太短則每次開門關(guān)門都消耗開關(guān)次數(shù)太長則可能單方向均衡過頭。均衡期間DSC仍然周期性采樣溫度和母線電壓發(fā)現(xiàn)溫度超過45度或者母線電壓異常立刻中止。一輪10秒結(jié)束后進(jìn)入RE-CHECK態(tài)關(guān)閉使能等待電壓恢復(fù)重新采樣。如果壓差仍然大于15mV繼續(xù)下一輪BALANCE如果壓差已經(jīng)小于5mV并且連續(xù)確認(rèn)兩次回到IDLE。為了防止電芯嚴(yán)重老化導(dǎo)致永遠(yuǎn)拉不齊我還加了一個最大累計均衡時間比如2小時超過之后強(qiáng)制退出并上報“均衡超時”告警讓維護(hù)人員知道這組電芯可能需要更換。4.3 與充電器和放電回路的聯(lián)鎖邏輯均衡不能在任何狀態(tài)下都開啟。充電過程中充電器持續(xù)向電池注入電流如果均衡也在搬運(yùn)電荷相當(dāng)于兩個源在對抗均衡效率極低還可能讓充電器誤判電流異常。放電過程中更不建議均衡大電流負(fù)載下的電壓值包含了大量歐姆壓降和極化效應(yīng)拿這些數(shù)據(jù)做均衡判斷結(jié)果不可靠。我設(shè)計的聯(lián)鎖邏輯是這樣的只有當(dāng)系統(tǒng)處于靜置或浮充狀態(tài)時才允許均衡啟動。具體實現(xiàn)上BMS要讀充電器狀態(tài)和放電負(fù)載狀態(tài)充電狀態(tài)通過通信或電平信號送進(jìn)DSC放電狀態(tài)用母線電流來判斷連續(xù)30秒電流低于某個小值才認(rèn)定為靜置。均衡運(yùn)行期間如果檢測到負(fù)載啟動立即暫停均衡等負(fù)載消失后再恢復(fù)或重新判斷。單體過壓保護(hù)也要和均衡聯(lián)動。均衡的目標(biāo)是把高壓電芯降到正常范圍但如果高壓電芯已經(jīng)接近充電截止電壓均衡期間充電器一旦繼續(xù)充電可能導(dǎo)致電芯過充。所以均衡啟動前必須判斷高壓電芯電壓低于截止電壓至少50mV否則只上報告警不啟動均衡。5. 實測中的翻車現(xiàn)場與長期浮充驗證軟件和硬件都做完了真正調(diào)試過程中踩的坑比預(yù)想的多。這里把最典型的三個問題寫出來給后面做類似方案的朋友省點時間。5.1 ADC噪聲與“假壓差”的排查第一版固件里均衡啟動閾值設(shè)成10mV拿萬用表實測兩節(jié)電芯壓差只有2mV但系統(tǒng)一直顯示25mV均衡頻繁啟動然后立刻停止整個BMS都在發(fā)抖。查了很久最后定位到ADC采樣時序和分壓網(wǎng)絡(luò)布局上。采樣點離均衡功率回路太近功率開關(guān)切換瞬間產(chǎn)生的磁場耦合進(jìn)了高阻分壓網(wǎng)絡(luò)ADC恰好在這個時間窗口采樣把開關(guān)噪聲當(dāng)成了真實電壓。解決方式分兩路一是分壓網(wǎng)絡(luò)加大了100nF濾波電容降低采樣源的交流阻抗二是錯開采樣時間均衡開關(guān)動作之后延遲200微秒再進(jìn)行ADC采集避開瞬態(tài)噪聲。兩個措施一起做壓差讀數(shù)才算干凈。在這個問題上我的經(jīng)驗是均衡系統(tǒng)的采樣時序必須和功率開關(guān)動作強(qiáng)相關(guān)不能靠運(yùn)氣。DSC里最好用定時器觸發(fā)ADC采樣并預(yù)留采樣窗口偏移寄存器現(xiàn)場一旦發(fā)現(xiàn)噪聲耦合可以快速調(diào)整采樣相位不用重新改板。5.2 采樣線與功率線的敷設(shè)第二個問題出現(xiàn)在功能樣機(jī)階段。均衡開啟后系統(tǒng)檢測到的壓差不但沒變小反而變大高壓電芯讀數(shù)被額外抬高低壓電芯讀數(shù)被壓低看起來“越均衡越差”。一開始我懷疑MP2642方向搞反了換了兩版板子查功率路徑也沒發(fā)現(xiàn)異常。后來把示波器夾在采樣點上才明白這不是方向問題是采樣點和功率路徑共用了一段導(dǎo)線。均衡電流從電芯端子流過連接線連接線自身電阻產(chǎn)生壓降采樣電路又把這段壓降當(dāng)成電芯電壓的一部分。均衡電流越大誤判越嚴(yán)重形成了閉環(huán)振蕩。解決方案就是把采樣線和功率線在電芯端子處分開采用開爾文接法功率電流走粗線電壓采樣用細(xì)線單獨(dú)連到電芯極柱兩者只在極柱處匯合。改完布局之后均衡開啟時的壓差讀數(shù)才變得真實可信。5.3 長期浮充后的實測結(jié)果方案定型后我做了一組對比實測。一組采用這套MP2642GR-Z加dsPIC均衡方案另一組保持純被動均衡兩套電池都掛在同一批備用電源設(shè)備里長期浮充。三個月后再看數(shù)據(jù)對比組的壓差已經(jīng)拉開到60到80mV個別電芯接近100mV而這套主動均衡方案的電芯壓差始終穩(wěn)定在5到10mV范圍內(nèi)均衡每日啟動時間也從最初的十幾分鐘降到幾分鐘。我自己的體會是均衡的價值不只是把那點壓差抹平而是把電芯老化的正反饋鏈條打斷。電芯一旦開始失配落后那節(jié)會越來越落后主動均衡雖然沒有能力修復(fù)老化但能阻止失配擴(kuò)大把整組可用容量維持住。后續(xù)如果有余力我建議在這個系統(tǒng)上再增加電芯內(nèi)阻在線估算和自放電率記錄把均衡策略從“電壓對齊”升級到“健康度對齊”那又是另一個級別的BMS水平了。