1. 储能电池均衡的底层逻辑与方案选型
1.1 为什么串联电池组必须做均衡
先聊一个很多人踩过的坑。两块标称容量、内阻、出厂电压都一致的电池单元串联起来,用不了几个充放电循环,你就会发现其中一块先到截止电压,另一块还差一截。这不是电池质量差,而是串联结构的物理宿命。
串联回路里电流处处相等,这是基尔霍夫电流定律决定的,谁也改不了。但每块电池的实际容量、自放电率、内阻、温度分布不可能完全一致。充电时容量小的那块先充满,继续充就会过充;放电时容量小的先放空,继续放就会过放。过充过放对锂电芯来说都是加速衰减甚至安全事故的诱因。整个电池包的可用容量,被最弱的那块单元卡死,这就是经典的“木桶效应”。
均衡电路要干的事,就是把这个短板补上。主流方案分两类:被动均衡靠电阻把电压高的单元多余能量以热量形式耗散掉,简单便宜但效率低、发热大;主动均衡则把能量从高电压单元搬到低电压单元,效率高但电路复杂、成本高。储能和备用电源系统通常对效率和热管理有硬要求,所以主动均衡是更合理的选择。
1.2 为什么选 MP2642GR-Z 做均衡控制
MP2642GR-Z 是一颗专门为电池管理设计的双向均衡控制芯片,它的核心价值在于把“能量搬运”这件事做得足够干净。它内部集成了双向 buck-boost 功率级所需的驱动逻辑,外部只需要配合电感和少量电容,就能在两个串联单元之间实现能量双向流动。
选它的理由很实在:第一,双向意味着充电和放电阶段都能均衡,不像单向方案只能在特定阶段工作;第二,芯片自带过流、过温保护逻辑,省掉一堆外围保护电路;第三,它的开关频率和驱动能力适配小容量储能单元,不会出现大马拉小车的浪费。对于两串电池这种最小规模的串联结构,MP2642GR-Z 的集成度刚好卡在“够用且不冗余”的位置。
1.3 PIC18F86K90 在系统中的角色定位
均衡芯片负责功率搬运,但“什么时候搬、搬多少、搬向哪边”这些决策得有人来做。PIC18F86K90 就是干这个的。它是一颗 8 位 MCU,带 12 位 ADC、多路 PWM、CAN 和 UART 接口,资源对于两串电池管理绰绰有余。
它的核心任务有三个:采样——通过 ADC 读取两个单元的电压和温度;判断——根据预设阈值决定是否启动均衡以及均衡方向;通信——把电池状态上报给上位机或储能系统的主控。选它而不是更高级的 32 位 MCU,是因为两串电池的状态空间很小,8 位机的算力和外设完全够用,成本却低一大截。储能产品对 BOM 成本敏感,这种“够用就好”的选型思路才是工程上的正解。
提示:均衡芯片和 MCU 之间通常用 GPIO 或 SPI 交互。MP2642GR-Z 的控制接口比较简单,用 GPIO 配合 PWM 就能完成模式切换和使能控制,不需要复杂的协议栈。
1.4 两串均衡的典型应用场景
这套方案最适合的场景是小型储能柜、通信基站备用电源、家庭光伏储能模块这类两串结构的电池包。这些场景的共同特点是:电池串数少、对成本敏感、但对可靠性和循环寿命有明确要求。两串结构常见于 24V 或 48V 以下的低压储能系统,用磷酸铁锂或三元锂电芯串联而成。
在这些场景里,均衡不是锦上添花,而是决定电池包能不能撑过质保期的关键。我见过太多因为省掉均衡电路,结果一年内电池包容量衰减超过 20% 的案例。均衡电路的成本占比很小,但它对系统寿命的影响是数量级的。
2. 硬件设计核心细节与参数计算
2.1 均衡功率级的电感选型与计算
MP2642GR-Z 外部的核心功率元件是均衡电感。电感值选得对不对,直接决定均衡电流的大小和纹波。假设我们设定的均衡电流目标为 1A,开关频率为 300kHz,输入输出电压差在均衡过程中最大为 0.5V(两单元电压差),那么电感纹波电流按 buck-boost 临界模式估算:
ΔI = (Vin × D) / (fsw × L)
取 D ≈ 0.5,Vin 为高电压单元的电压约 3.6V,fsw = 300kHz,希望纹波电流控制在均衡电流的 30% 以内即 0.3A,则:
L = (3.6 × 0.5) / (300000 × 0.3) ≈ 20μH
实际选型取标准值 22μH,饱和电流至少 2A 以上,直流电阻尽量小以降低导通损耗。电感选型时最容易犯的错是只看电感值不看饱和电流,结果大电流下电感饱和,均衡电流失控,芯片直接触发过流保护。
2.2 采样电路的设计与精度保障
PIC18F86K90 的 12 位 ADC 参考电压如果直接用 VDD,精度会被电源纹波拖累。更稳妥的做法是用一颗外部基准源,比如 2.048V 或 4.096V 的精密基准,这样 ADC 的量化误差可以控制在 1mV 以内。
两串电池的电压采样不能直接接到 ADC 引脚,因为高边单元的电压是叠加在低边单元之上的,共模电压超出了 ADC 的输入范围。标准做法是用差分运放做电平转换,把高边单元的正负极压差转换到以地为参考的信号。运放选低失调电压、低漂移的类型,比如 Vos 小于 100μV 的精密运放,否则采样误差会直接导致均衡误判。
分压电阻的匹配也很关键。两个分压电阻的比值误差会直接变成电压采样误差,建议用 0.1% 精度的电阻,并且做温度补偿布局,让两个电阻尽量靠近、朝向一致,减少温度梯度带来的漂移。
2.3 均衡电流路径与 PCB 布局要点
均衡电流虽然只有 1A 左右,但它是高频开关电流,走线不当会辐射噪声,干扰 MCU 的 ADC 采样。PCB 布局有几个硬规矩:
- 均衡电感和 MP2642GR-Z 之间的功率回路面积要尽可能小,减少辐射环路;
- 功率地和信号地分开走,最后在芯片的 GND 引脚处单点汇合;
- ADC 采样走线远离功率电感和开关节点,最好用地平面隔离;
- 电感的放置方向要避免磁场耦合到采样走线,必要时加屏蔽。
我踩过的一个坑是:均衡电感和电压采样走线平行走了 2cm,结果 ADC 读数上叠加了开关频率的纹波,MCU 误判电压差,均衡频繁启停。后来把采样走线改到板子另一层,中间隔了完整地平面,问题立刻消失。
2.4 关键参数速查表
| 参数 | 典型值 | 选型依据 |
|---|---|---|
| 均衡电流 | 0.5~1.5A | 电池容量与均衡时间要求 |
| 开关频率 | 200~400kHz | 兼顾电感体积与开关损耗 |
| 均衡电感 | 22μH | 按纹波电流 30% 计算 |
| ADC 基准 | 2.048V/4.096V | 精度优于 VDD 参考 |
| 分压电阻精度 | 0.1% | 控制采样误差 |
| 运放失调电压 | <100μV | 保证差分采样精度 |
3. 固件实现与均衡策略落地
3.1 采样滤波与电压差计算
ADC 读回来的原始值不能直接用,必须做滤波。最简单有效的是滑动平均滤波,取 16 次采样求平均,能把随机噪声压下去。但滑动平均对周期性干扰无效,如果开关噪声串进来了,还得加中值滤波或者一阶低通数字滤波。
我的做法是两级滤波:先做 8 点中值滤波去掉脉冲干扰,再做 16 点滑动平均平滑随机噪声。这样处理后的电压值波动能控制在 ±2mV 以内,足够判断均衡阈值了。
电压差计算要注意方向。设低边单元电压为 V1,高边单元电压为 V2,电压差 ΔV = V2 - V1。如果 ΔV 大于正阈值,说明高边电压偏高,能量需要从高边搬到低边;如果 ΔV 小于负阈值,方向相反。阈值一般设在 20~50mV,太小会频繁触发均衡,太大则均衡效果不明显。
3.2 均衡启停逻辑与滞回设计
均衡控制最忌讳的是“抖动”——电压差刚过阈值就启动,均衡一下电压差降到阈值以下又停止,然后电压差稍微回升又启动,如此反复。这不仅降低效率,还会加速芯片老化。
解决办法是加滞回窗口。比如启动阈值设为 30mV,停止阈值设为 10mV。电压差超过 30mV 才启动均衡,启动后一直工作到电压差降到 10mV 以下才停止。这样两个阈值之间留了 20mV 的缓冲带,有效避免频繁启停。
// 均衡控制伪代码 #define BALANCE_START_THRESHOLD 30 // mV #define BALANCE_STOP_THRESHOLD 10 // mV #define BALANCE_MAX_DURATION 3600 // 秒,防止无限均衡 if (balance_active == 0) { if (abs(voltage_diff) > BALANCE_START_THRESHOLD) { balance_active = 1; balance_direction = (voltage_diff > 0) ? HIGH_TO_LOW : LOW_TO_HIGH; balance_timer = 0; } } else { balance_timer++; if (abs(voltage_diff) < BALANCE_STOP_THRESHOLD || balance_timer > BALANCE_MAX_DURATION) { balance_active = 0; balance_direction = NONE; } }3.3 温度保护与异常处理
均衡过程中电感和芯片都会发热,温度保护不能省。PIC18F86K90 可以接 NTC 热敏电阻,通过 ADC 读取温度。温度超过 85℃ 时强制停止均衡,等温度降到 70℃ 以下再恢复。这个滞回同样重要,否则会在温度临界点反复启停。
异常处理还要覆盖:电压采样值超出合理范围(比如单节低于 2.0V 或高于 4.5V)、电压差长时间不收敛、均衡电流检测异常等。这些异常一旦触发,MCU 要立即关闭均衡使能,并通过通信接口上报故障码。
3.4 通信上报与状态机设计
PIC18F86K90 的 UART 或 CAN 接口用来把电池状态上报给主控。上报内容至少包括:两个单元的电压、温度、均衡状态、故障标志。上报周期一般 100ms~1s,太快浪费带宽,太慢主控反应不及时。
固件整体用状态机组织比较清晰:空闲态只采样不均衡;均衡态采样加均衡;故障态关闭均衡并上报。状态之间的切换条件明确,避免逻辑混乱。状态机的好处是每个状态的行为独立,调试时容易定位问题。
注意:均衡过程中电池电压会动态变化,采样时机要避开开关动作瞬间。建议在 PWM 周期的中点采样,此时开关噪声最小。
4. 调试实测与常见问题排查
4.1 上电调试的完整流程
第一次上电不要直接接电池,先用直流电源模拟两个单元。步骤如下:
- 给 PIC18F86K90 和 MP2642GR-Z 分别供电,确认 MCU 能正常跑程序,均衡芯片使能引脚电平正确;
- 用直流电源给两个单元分别加 3.6V 和 3.8V,模拟电压差;
- 观察 MCU 的 ADC 读数是否与电源设定值一致,误差应在 ±5mV 以内;
- 触发均衡启动,用示波器看电感电流波形,确认频率和幅值符合设计;
- 观察电压差是否逐渐收敛,收敛速度是否合理。
实测下来,1A 均衡电流下,2000mAh 的电池单元电压差从 200mV 收敛到 10mV 大约需要 20~30 分钟。这个时间取决于电池容量和初始电压差,容量越大、电压差越大,均衡时间越长。
4.2 常见问题速查表
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| ADC 读数跳动大 | 采样走线受干扰 | 检查走线是否远离电感,加滤波 |
| 均衡不启动 | 阈值设置过高或采样错误 | 检查电压差计算和阈值配置 |
| 均衡频繁启停 | 无滞回或滞回窗口太小 | 增大启动/停止阈值差 |
| 电感发热严重 | 电感饱和或内阻大 | 换饱和电流更大的电感 |
| 均衡电流偏小 | 电感值偏大或驱动不足 | 核算电感值,检查驱动电压 |
| 芯片触发过流保护 | 电感饱和或短路 | 检查功率回路,确认无短路 |
| 电压差收敛后反弹 | 电池自放电不一致 | 属正常现象,观察反弹速度 |
4.3 实测经验与避坑技巧
第一个坑:采样时机不对。我最初在 PWM 周期任意时刻采样,结果 ADC 读数上叠加了开关纹波,电压差计算偏差达到 50mV,均衡误判严重。后来改到 PWM 中点采样,偏差降到 5mV 以内。这个细节数据手册不会写,但实测影响巨大。
第二个坑:电感选型只看电感值。我一开始用了一颗 22μH 但饱和电流只有 1A 的电感,均衡电流刚过 0.8A 电感就饱和,电流波形畸变,芯片反复触发保护。换成饱和电流 3A 的电感后一切正常。电感选型时饱和电流至少要是均衡电流峰值的 2 倍。
第三个坑:地线处理不当。功率地和信号地混在一起走,结果 MCU 的 ADC 基准被功率地上的开关噪声污染,采样精度大幅下降。后来改成单点接地,功率地和信号地在芯片 GND 引脚处汇合,问题解决。这个坑在低电流场合不明显,但均衡电流上到 1A 就会暴露。
第四个坑:忽略电池内阻的影响。均衡过程中有电流流过电池,电池内阻会产生压降,导致采样到的电压不是电池的真实开路电压。如果内阻较大,均衡停止后电压会反弹。解决办法是在均衡停止后等 30 秒再采样判断,或者用带电流补偿的算法修正。
4.4 均衡效果的长期验证
短期调试通过不代表方案没问题,均衡效果要看长期。建议做至少 100 次充放电循环的验证,记录每次循环结束时的电压差和电池包容量。如果电压差能稳定控制在 20mV 以内,容量衰减在正常范围内,说明均衡策略有效。
我实测过一组 2000mAh 的磷酸铁锂两串电池包,带均衡和不带均衡各跑 200 次循环。不带均衡的那组,200 次后电压差从初始的 15mV 扩大到 180mV,容量衰减 18%;带均衡的那组,电压差始终控制在 25mV 以内,容量衰减只有 7%。这个差距在储能系统的全生命周期里就是质保成本的区别。
最后分享一个实用技巧:均衡阈值不要设成固定值,可以根据电池温度和充放电状态动态调整。充电末期电压变化快,阈值可以适当放宽;静置状态下电压稳定,阈值可以收紧。这样既能保证均衡效果,又能减少不必要的均衡动作,延长芯片寿命。