4、电池SOC估算方法:开路电压法、安时积分法、卡尔曼滤波法、SOC估算精度评估

电池SOC(State of Charge,荷电状态)估算,说白了就是回答一个问题:电池里还剩多少电?

这个问题看似简单,但做起来真不简单。我做了这么多年嵌入式,踩过的坑有一半都跟SOC不准有关。用户抱怨「手机还有20%就关机了」,或者「电动车续航虚标」,根子往往就在这里。

今天咱们就把几种主流的SOC估算方法掰开揉碎讲清楚。每种方法都有它的脾气,选对了是神器,选错了是灾难。

4.1 开路电压法(OCV法)

开路电压法,原理非常直观:电池静置足够久之后,端电压和SOC之间存在一一对应的关系。查表就能知道还剩多少电。

为什么会有这种关系?因为电池的电化学反应平衡电位,本质上由活性物质的浓度决定。而浓度,就是SOC。

核心公式:

SOC = f(V_ocv)

其中 f 是一个非线性函数,通常通过实验标定得到。

我在项目中遇到过一个问题:某款平板在关机后重新开机,SOC跳变了好几个百分点。查了半天,发现是关机时间太短,电池还没完全静置,开路电压不准。

我的经验:锂电池静置时间至少需要30分钟以上,电压才会稳定到可接受的范围。如果时间紧迫,至少也要等15分钟。

开路电压法的优缺点:

  • 优点:实现简单,精度尚可(±5%以内),不依赖历史数据
  • 缺点:需要长时间静置,无法在线实时估算,受温度影响大

嗯,这里要注意:开路电压法通常不作为主方法使用,而是用来校准其他方法。比如每次充满电或者长时间静置后,用OCV法把SOC「拉回来」一次。

4.2 安时积分法

安时积分法,也叫库仑计数法。原理更简单:对电流进行积分,算出充进去了多少电,放出去了多少电

公式长这样:

SOC(t) = SOC(0) - (1 / Q_n) * ∫ I(t) dt

其中 Q_n 是电池额定容量,I(t) 是瞬时电流(放电为正)。

你想想看,这方法是不是特别像你手机上的流量统计?用了多少,还剩多少,一清二楚。

但是——问题来了。积分嘛,误差会累积。电流采样有噪声,ADC有偏移,时间长了误差越来越大。我曾经调试过一个项目,安时积分跑了三天,SOC漂了12%。用户投诉说「明明显示还有30%,突然就关机了」。

避坑指南:我曾经因为电流采样电阻温漂太大,导致积分误差失控。后来换了低温漂的锰铜电阻,情况好多了。另外,ADC的零点偏移一定要做校准,否则小电流下误差占比极高。

安时积分法的优缺点:

  • 优点:实时性好,计算量小,适合嵌入式MCU
  • 缺点:误差累积,需要定期校准,对电流采样精度要求高

我个人习惯的做法是:安时积分做主方法,开路电压法做辅助校准。每次充满电时强制置为100%,每次长时间静置后用OCV修正一次。这样既保证了实时性,又控制了误差。

4.3 卡尔曼滤波法

卡尔曼滤波法,听起来高大上,其实核心思想就一句话:把SOC看作一个状态变量,用模型预测+测量修正的方式,不断逼近真实值

我刚开始学卡尔曼滤波时,被那些矩阵公式搞得头大。后来想通了,它本质上就是一个「带权重的平均」——你相信模型多一点,还是相信测量多一点?卡尔曼滤波会自动算出这个权重。

对于电池SOC估算,典型的系统模型是:

状态方程:SOC(k) = SOC(k-1) - (Δt / Q_n) * I(k-1) + w(k-1)
观测方程:V(k) = OCV(SOC(k)) + I(k) * R0 + v(k)

其中 w 和 v 分别是过程噪声和测量噪声。

卡尔曼滤波的五个核心步骤(简化版):

  1. 预测状态:根据上一时刻的SOC和电流,预测当前SOC
  2. 预测误差协方差:估算预测的不确定度
  3. 计算卡尔曼增益:决定相信模型还是相信测量
  4. 更新状态:用测量电压修正预测值
  5. 更新误差协方差:为下一轮迭代做准备

为什么卡尔曼滤波效果好?因为它同时利用了电流积分(模型)电压测量(观测)的信息。电流积分短期准,电压测量长期稳,两者互补。

我在项目中用过扩展卡尔曼滤波(EKF)来处理电池的非线性特性。说实话,调参调了一个月。过程噪声协方差矩阵Q和测量噪声协方差矩阵R,这两个参数直接决定了滤波效果。调大了,滤波太「软」,响应慢;调小了,滤波太「硬」,噪声大。

我的建议:如果MCU算力有限,可以考虑用简化版卡尔曼滤波,或者用查表法近似卡尔曼增益。我在一个Cortex-M0的项目上就这么干过,效果还不错。

卡尔曼滤波法的优缺点:

  • 优点:精度高(±2%以内),抗噪声能力强,能在线实时估算
  • 缺点:计算量大,需要精确的电池模型,调参复杂

4.4 SOC估算精度评估

方法讲完了,怎么判断哪个方法好?不能光靠嘴说,得有评估指标。

我个人习惯用以下几个指标来评估SOC估算精度:

指标 定义 典型要求
绝对误差(AE) |SOC_est - SOC_true| ≤ 3%
均方根误差(RMSE) √(1/N * Σ(AE²)) ≤ 2%
最大误差(Max Error) max(AE) ≤ 5%
收敛时间 从初始误差到进入稳态的时间 ≤ 60秒

评估时要注意几个坑:

  • 温度变化:同一块电池,25°C和0°C下的OCV曲线完全不同。评估时一定要覆盖全温度范围。
  • 老化影响:电池用了一年,容量会衰减。如果还用出厂时的额定容量做安时积分,误差会越来越大。
  • 动态工况:平板在玩游戏时电流忽大忽小,这种动态工况下卡尔曼滤波的优势就体现出来了。

重要提醒:我曾经犯过一个错误——只在恒流放电工况下评估精度,结果到了实际产品中,用户一玩游戏SOC就乱跳。后来我改用动态工况测试(DST、UDDS等标准工况),才真正把问题暴露出来。

最后说一句:没有完美的SOC估算方法,只有最适合你产品的方法。平板电脑这种消费电子产品,我建议用安时积分+开路电压校准的组合,性价比最高。如果做高端产品或者BMS,卡尔曼滤波值得投入。

嗯,SOC估算这个话题,讲三天三夜也讲不完。今天先到这,下次咱们聊聊电池均衡和健康状态(SOH)估算。