3. SOH关键参数:容量衰减、内阻增加、功率衰减、开路电压变化、自放电率变化
好,咱们进入正题。
SOH到底看什么?说白了,就是看电池还剩下多少“生命力”。
我做了这么多年BMS,最深的体会就是:SOH不是单一指标,而是一组参数的“综合体检报告”。就像你去医院体检,不能只看体温,还得看血压、心率、血常规。电池也一样。
这一章,我把SOH的五个核心参数掰开揉碎了讲。每个参数我都会告诉你:它是什么、怎么测、怎么用、以及我踩过的坑。
3.1 容量衰减——最直观的“衰老信号”
容量衰减,是大家最熟悉的SOH指标。
你想想看,新电池能跑100公里,用了两年只能跑80公里了。这20公里的差距,就是容量衰减。
定义上,SOH_capacity = 当前可用容量 / 额定容量 × 100%
但这里有个坑——“当前可用容量”怎么测?
我习惯用两种方法:
- 满充满放法:最准,但最慢。把电池充满,再放空,积分电量。我在实验室里经常这么干,但车上不行——谁没事把车开到没电再充满?
- 部分充放电法:利用日常使用中的片段数据,比如从30%充到80%,记录充入电量,再反推总容量。精度差一些,但实用。
核心要点:
容量衰减主要来自两个机制:
- 活性锂损失——SEI膜不断生长,消耗了锂离子。这是最主流的衰减原因。
- 活性材料损失——正极结构坍塌,负极石墨剥落。这个一般出现在电池后期。
我在项目中遇到过一件事:某款电池用了半年,容量突然掉了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估算模型。到时候咱们再细聊。