SOC(State of Charge,荷電狀態)是電池管理系統(BMS)裡最基本、也最難做準的一個數字。它無法被直接量測,只能靠其他可測得的物理量去估算。這篇整理三種常見做法。
方法一:開路電壓法(OCV)
利用電池「靜置足夠時間後,端電壓與 SOC 大致成一對一關係」的特性,事先量測出 OCV-SOC 對照曲線,之後查表反推 SOC。
- 優點:實作簡單,不需要複雜運算
- 缺點:電池必須靜置(不能有電流),且曲線在中段(20%–80%)通常很平坦,誤差會被放大;溫度與老化也會讓曲線飄移
適合用在裝置開機瞬間、電流接近零時做一次校正。
方法二:Coulomb Counting(安培小時積分)
直接對電流做時間積分:
SOC(t) = SOC(0) - (1 / Capacity) × ∫ I dt
- 優點:動態響應好,電池在使用中也能持續更新
- 缺點:誤差會隨時間累積(漂移),電流感測器的偏移量、量測雜訊都會被無限累加;長時間運行後若沒有校正機制,數字會越走越偏
實務上通常會搭配 OCV 法:開機靜置時用 OCV 校正一次初始值,之後用 Coulomb Counting 追蹤動態變化。
方法三:Kalman Filter(含 Extended KF)
把電池等效電路模型(通常是 Thevenin 模型:一個電壓源 + 內阻 + RC 並聯網路)當作系統模型,用 Kalman Filter 融合「模型預測」與「量測值(電壓、電流)」,遞迴估算 SOC。
- 優點:能同時處理量測雜訊與模型誤差,精度通常明顯優於前兩者,且會隨著運行持續收斂、不太需要人工校正
- 缺點:需要精確的電池等效電路參數(內阻、RC 參數會隨 SOC、溫度、老化變化),實作與調參複雜度高出一截
三種方法比較
| 方法 | 精度 | 運算量 | 是否需要靜置 | 長期穩定性 |
|---|---|---|---|---|
| OCV | 中 | 低 | 需要 | 好(但曲線平坦區誤差大) |
| Coulomb Counting | 中高(短期) | 低 | 不需要 | 差(會漂移) |
| Kalman Filter | 高 | 高 | 不需要 | 好 |
小結
沒有一種方法是萬能的:正式產品的 BMS 幾乎都是「OCV 做初始校正、Coulomb Counting 做即時追蹤、必要時疊上 Kalman Filter 做誤差收斂」的組合拳,而不是單押一種方法。