3. SOH关键参数:容量衰减、内阻增加、功率衰减、开路电压变化、自放电率变化

好,咱们进入正题。

SOH到底看什么?说白了,就是看电池还剩下多少“生命力”。

我做了这么多年BMS,最深的体会就是:SOH不是单一指标,而是一组参数的“综合体检报告”。就像你去医院体检,不能只看体温,还得看血压、心率、血常规。电池也一样。

这一章,我把SOH的五个核心参数掰开揉碎了讲。每个参数我都会告诉你:它是什么、怎么测、怎么用、以及我踩过的坑。

3.1 容量衰减——最直观的“衰老信号”

容量衰减,是大家最熟悉的SOH指标。

你想想看,新电池能跑100公里,用了两年只能跑80公里了。这20公里的差距,就是容量衰减。

定义上,SOH_capacity = 当前可用容量 / 额定容量 × 100%

但这里有个坑——“当前可用容量”怎么测?

我习惯用两种方法:

  • 满充满放法:最准,但最慢。把电池充满,再放空,积分电量。我在实验室里经常这么干,但车上不行——谁没事把车开到没电再充满?
  • 部分充放电法:利用日常使用中的片段数据,比如从30%充到80%,记录充入电量,再反推总容量。精度差一些,但实用。

核心要点:

容量衰减主要来自两个机制:

  1. 活性锂损失——SEI膜不断生长,消耗了锂离子。这是最主流的衰减原因。
  2. 活性材料损失——正极结构坍塌,负极石墨剥落。这个一般出现在电池后期。

我在项目中遇到过一件事:某款电池用了半年,容量突然掉了15%。一开始以为是电芯质量问题,后来一查,是充电策略太激进,高温下大电流充电,加速了SEI膜破裂和再生。嗯,从那以后,我对充电倍率的限制就严格多了。

3.2 内阻增加——电池的“血管硬化”

内阻增加,是电池衰老的另一个重要信号。

你可以把内阻想象成血管里的“阻力”。年轻的时候血管弹性好,血流顺畅;老了血管硬化,阻力变大。电池也一样——内阻大了,同样的电流下,发热更严重,压降更大,能量效率降低。

内阻分为两类:

  • 欧姆内阻:主要来自电解液、隔膜、集流体。这个用HPPC(混合脉冲功率特性)测试可以测出来。
  • 极化内阻:来自电化学反应过程中的浓度差和活化能。这个跟电流大小、温度关系很大。

我个人的习惯是:用直流内阻(DCIR)作为工程指标。方法很简单:

# 直流内阻计算示例
def calculate_dcir(voltage_before, voltage_after, current):
    """
    voltage_before: 脉冲开始前的电压 (V)
    voltage_after: 脉冲结束时的电压 (V)
    current: 脉冲电流 (A),放电为正
    """
    delta_v = voltage_before - voltage_after
    dcir = delta_v / abs(current)
    return dcir

# 实际使用中,我会取10秒脉冲的数据
# 太短了测不准,太长了受极化影响大

避坑指南:

我曾经在低温下测内阻,结果数据乱跳。后来才发现,低温下电解液粘度大,极化效应特别明显。所以我现在测内阻,都会控制温度在25±2℃,并且让电池静置1小时以上。

3.3 功率衰减——电池的“体力下降”

功率衰减,说白了就是电池“没劲儿了”。

新电池能瞬间输出200kW,老电池可能只能输出150kW。这对电动车来说很要命——加速性能下降,爬坡能力减弱。

功率衰减和容量衰减、内阻增加是强相关的。

你可以用这个公式估算:

# 功率能力估算
def estimate_power(ocv, r0, v_min, v_max):
    """
    ocv: 开路电压 (V)
    r0: 直流内阻 (Ω)
    v_min: 放电截止电压 (V)
    v_max: 充电截止电压 (V)
    """
    # 放电功率
    p_discharge = v_min * (ocv - v_min) / r0
    # 充电功率
    p_charge = v_max * (v_max - ocv) / r0
    return p_discharge, p_charge

你想想看,内阻增加了,同样的电流下压降更大,电压很快就触底了。所以功率能力自然下降。

我建议在BMS中,把功率衰减作为一个独立的SOH维度来监控。因为有时候容量衰减不明显,但功率已经掉得很厉害了——比如某些高倍率应用场景。

3.4 开路电压变化——电池的“心电图”

开路电压(OCV)变化,很多人容易忽略。其实它很有用。

新电池的OCV-SOC曲线是标准的S形。但随着老化,这个曲线会发生变化——平台区变窄,两端变陡

为什么会这样?

因为活性锂损失后,正负极的嵌锂量发生了偏移。简单说,就是电池的“化学平衡”被打破了。

实际应用:

我利用OCV变化来做SOH的辅助判断。比如:

  • 如果同一SOC下的OCV明显偏低,说明负极可能发生了析锂
  • 如果OCV曲线整体下移,说明正极材料结构发生了变化

不过要注意,OCV需要静置足够长时间才能测准。我一般要求静置2小时以上,否则极化电压会干扰测量。

3.5 自放电率变化——电池的“漏气”问题

自放电率,就是电池放着不用,电量自己跑掉的速度。

新电池的自放电率一般很小,每月1%-3%。但老电池就不一样了——可能一个月掉10%甚至更多。

自放电率增加的原因:

  • 内部微短路——隔膜破损,正负极直接接触
  • 电解液分解——产生了导电杂质
  • SEI膜不稳定——不断修复消耗锂离子

我习惯用开路电压衰减法来估算自放电率:

# 自放电率估算
def estimate_self_discharge(ocv_1, ocv_2, time_interval, soc_ocv_table):
    """
    ocv_1: 第一次测量的开路电压 (V)
    ocv_2: 第二次测量的开路电压 (V)
    time_interval: 两次测量间隔时间 (天)
    soc_ocv_table: SOC-OCV对应表
    """
    soc_1 = interpolate_soc(ocv_1, soc_ocv_table)
    soc_2 = interpolate_soc(ocv_2, soc_ocv_table)
    delta_soc = soc_1 - soc_2
    self_discharge_rate = delta_soc / time_interval  # %/天
    return self_discharge_rate

注意:

自放电率测量对温度极其敏感。温度每升高10℃,自放电率可能翻倍。所以测量时一定要记录温度,或者做温度补偿。

我曾经在夏天和冬天测同一批电池,自放电率差了3倍。一开始以为是电池坏了,后来才发现是温度的影响。

3.6 五个参数的综合判断

好了,五个参数都讲完了。但实际工程中,你不能只看一个参数。

我个人的经验是:

场景 主要关注参数 辅助参数
正常老化 容量衰减 内阻增加
析锂风险 内阻增加 OCV异常
微短路 自放电率 容量衰减
功率不足 功率衰减 内阻增加

你想想看,如果只盯着容量看,可能错过了内阻的异常增长。如果只盯着内阻看,可能忽略了自放电率的飙升。

我的建议是:建立一个多维度的SOH评估模型,给每个参数分配权重,综合打分。这样既不会漏掉问题,也不会被单一指标的波动误导。

最后说一句:

这些参数不是孤立的。容量衰减会导致内阻增加,内阻增加会加速功率衰减,功率衰减又会影响自放电率。它们是一个相互关联的系统。理解了这个系统,你才能真正做好SOH算法。

下一章,我会讲如何把这些参数融合成一个完整的SOH估算模型。到时候咱们再细聊。