LFP 充电末端库仑计数均衡策略

LFP 充电末端库仑计数均衡策略

针对磷酸铁锂平台区压差均衡失效问题,基于充电末端膝点触发的库仑计数法,计算容量差 ΔC 并择机执行放电均衡。


一、背景:为什么压差均衡在 LFP 上失效

LFP 电芯的 OCV-SOC 曲线存在一个极平坦的平台区(约 40%~90% SOC),电压变化仅 ±0.1V:

复制代码
3.5V ┤                               ╭── 满充区(斜率陡,OCV-SOC 强相关)
     │                              ╱
3.3V ┤────────────────────────────    ← 平台区(斜率≈0,40%~90%)
     │               ╱
3.0V ┤──────────────╱                ← 低端区(斜率陡)
     └──┬──────────┬──────────┬──►
       0%        40%        90%  SOC

致命后果 :在平台区,SOC 相差 30% 的两个电芯 OCV 可能完全一样(都是 3.30V),基于压差的均衡策略既无法判断谁该被均衡 ,也不知道该均衡多少


二、核心思路:避开平台区,利用充电末端做判断

既然平台区电压不可用,那就等到电压离开平台区的那一刻再做判断。

LFP 电芯在充电接近满充时,电压会进入一个明显的膝点(knee point)------约 3.40V------此后 OCV-SOC 变得陡峭,电压可以可靠反映 SOC 差异。

复制代码
3.65V ┤              ╱ ← 电芯A(最先到膝点,跑得快)
      │             ╱
3.40V ┤ ─ ─ ─ ─ ─ ╱   ← 膝点(V_knee = 3.40V)
      │        ╱╱
3.33V ┤──────╱╱────── ← 电芯B(一直在平台区,跑得慢)
      │    ╱╱
      └────────────────► 时间
           ↑
    充电截止(A 到 3.65V 或总压达标)

策略思路 :当某个电芯电压跨过膝点,为它启动一个独立的库仑计数器,记录从膝点到充电截止这段时间内充入了多少电量。这个计数值直接反映了各电芯之间剩余可充容量的差异。


三、三个步骤

第一步:膝点触发库仑计数

充电过程中,当任一电芯电压 ≥ V_knee(如 3.40V),为该电芯启动库仑计数,从零开始累积充电量:

复制代码
电芯A:到达 3.40V → 开始计数 → 充电截止时累计 = 350mAh
电芯B:始终低于 3.40V → 从未启动计数 → 计数值 = 0
电芯C:后来到达 3.40V → 开始计数 → 充电截止时累计 = 180mAh

充电截止条件可以是:任一电芯达到 V_max(3.65V),或总压达标,或充电电流降至 C/20

第二步:计算容量差 ΔC

取所有电芯中计数值最小的那个 作为参考(C_ref),其余电芯的计数值与参考值的差就是需要均衡掉的容量:

复制代码
C_ref = min(350, 0, 180) = 0         ← 电芯B 最落后

ΔC_A = 350 - 0 = 350mAh   ← 需要放掉
ΔC_B = 0   - 0 = 0        ← 不动
ΔC_C = 180 - 0 = 180mAh   ← 需要放掉

ΔC 含义:该电芯比最落后电芯多"吃"了多少电量。放掉这些多余的,下次充电所有电芯就能同时吃饱。

第三步:择机放电均衡

ΔC 算出来后,接通旁路电阻,按 ΔC 目标值放电,实时库仑计数,放够即停。


四、关键设计点

4.1 最低电芯到不了膝点怎么办?

这是常态,算法天然处理。

到不了膝点的电芯,库仑计值 = 0,自动成为 C_ref,算法完全不需要它到达膝点。实际上,正因为所有电芯的计数值都是相对于"最落后电芯"的差值,才精确刻画了失衡度。

唯一需要注意的边界:如果所有电芯都没到膝点(比如长期浅充至 55%),所有计数值都是 0,ΔC 全部为 0,均衡不触发。这不是 bug------浅充场景下确实没有足够信息判断谁多谁少。应对方式是定期触发一次维护性满充(如每周充至 95%+)让算法有机会刷新 ΔC。

4.2 均衡目标需持久化

ΔC 在充电末端计算出来后,立即写入 NVM(非易失性存储器)。均衡可能分多次完成,掉电后重新上电,从 NVM 读取未完成的 ΔC 继续执行。

复制代码
充电末端计算 ΔC → 写入 NVM
    │
    ├─ 立即均衡 → 更新 NVM 中剩余值
    │
    └─ 推迟均衡 → 下次任意窗口读 NVM 继续

4.3 分时间歇执行

一次性放完所有 ΔC 可能导致均衡电阻或 PCB 过热。采用间歇方式:每轮放电 5 分钟,冷却 2 分钟,多轮迭代直至 ΔC 归零。每轮结束后更新 NVM 中的剩余值。

4.4 温度保护

均衡发热叠加在电芯和 PCB 已有温升之上。需监控均衡板温度,超过 65°C 暂停,冷却后继续。


五、均衡什么时候执行?

5.1 核心结论

ΔC 一旦算出、写入 NVM,随时随地都可以均衡。唯一约束是均衡板温度。

100mA 的旁路电流放在哪里都是 100mA------充电时、放电时、静置时,库仑计数一样精准,均衡效果没有区别。均衡的是高 SOC 电芯而非最低电芯,也不会导致提前触发欠压保护。

5.2 唯一需要区分的:用的是哪份 ΔC?

ΔC 来源 可用时机 可靠性
本次充电刚算的 只能充电截止后(因为充电中还没算出来) ✅ 最新最准
NVM 中上次存的 任何时候------下次充电 CC、CV、静置、甚至放电中 ⚠️ 可能过期,需要本次充电末端重新校准

5.3 窗口无所谓

传统压差均衡喜欢"等 CV 阶段"------那是因为 CV 阶段电流小、IR 压降小、电压信号更干净,有利于电压差判断。但方案一的均衡目标是 ΔC(库仑值),执行靠的是库仑计数,和电压信号质量毫无关系。CC 还是 CV、充电还是放电,对均衡效果没影响。

窗口的选择最终只退化为一个热管理问题:当前均衡板温度是否允许再多开几路旁路。


六、迭代收敛

单次充电的静置窗口可能均衡不完所有 ΔC,但算法是迭代的:

复制代码
第1次充电 → 计算 ΔC₁ → 均衡一部分 → 剩余记入 NVM
第2次充电 → 计算 ΔC₂ → 继续均衡 → ...
...
第N次充电 → 计算 ΔC_N → ΔC_N < 阈值 → 收敛

每次充电末端重新计算 ΔC,覆盖旧值,多轮迭代后 ΔC 逐渐缩小至收敛阈值以下。


七、适用场景与局限

适合

  • 有周期性满充机会的场景(如每天一充的储能、车辆)
  • 被动均衡硬件(旁路电阻型),无需改造电路
  • LFP 电芯(膝点特征明显)

不适合

  • 长期浅充浅放且从不满充的场景------算法永远没有机会刷新 ΔC,只能退化到依赖 NVM 中可能已过期的旧值
  • 此场景需要补充其他均衡策略(如 OCV-SOC 分区法,在低端区 (SOC < 15%) 同样可以触发判断)

八、总结

维度 要点
核心理念 不在平台区硬算,等电芯自己走出平台区
判断时机 充电末端,膝点 ~3.40V 以上
判断方法 各电芯从膝点到截止的库仑计数差值 = 容量差 ΔC
ΔC 存储 立即写入 NVM,掉电不丢
执行时机 ΔC 一旦确定,随时可均衡------充电、放电、静置均可
唯一约束 均衡板温度 ≤ 65°C
执行方法 按 ΔC 放电,纯库仑计数,不需要电压查 SOC
收敛 多轮充电迭代,每次末端校准 ΔC,逐步缩小直至收敛
最大局限 依赖周期性满充,长期浅充场景需补充其他策略