基于MP2642GR-Z与PIC18F57K42的两串电池主动均衡方案设计与实现 1. 储能电池均衡的底层逻辑与方案选型1.1 为什么串联电池组必须做均衡两节电芯串联给负载供电是最常见的储能与备用电源拓扑之一。很多人第一次接触这个场景时会有一个直觉误区两节电池出厂标称一样、容量一样串起来用不就行了实际跑一段时间就会发现两节电芯的端电压开始分叉一节偏高、一节偏低而且这个差距只会越来越大不会自己收敛。原因不复杂。电芯在生产过程中就存在容量、内阻、自放电率的微小差异这是工艺决定的无法完全消除。串联回路里流过两节电芯的电流完全相同但每节电芯的实际可用容量不同于是充电时容量小的那节先到上限放电时它又先到下限。如果没有任何干预BMS电池管理系统只能按最弱的那节电芯来限制整组的工作窗口整组可用容量被拖累严重时弱电芯会被反复过充或过放加速老化甚至出现安全风险。均衡要解决的就是这件事把两节电芯的荷电状态拉回同一水平让整组容量尽可能接近两节电芯中较强的那一节。均衡分被动和主动两条路线被动均衡靠电阻放电把高的那节拉低简单便宜但能量白白变成热主动均衡把能量从高的一节搬到低的一节效率高但电路复杂。这个项目里用的是主动均衡思路核心器件是 MP2642GR-Z控制器是 PIC18F57K42。1.2 为什么选 MP2642GR-Z 做均衡执行器MP2642GR-Z 是一颗面向双向 buck-boost 应用的同步升降压控制器它的定位非常适合两串电池之间的能量搬运。两节电芯的电压关系是动态的充电时上面那节可能偏高放电时可能偏低谁高谁低会随工况翻转。如果用固定方向的变换器就得配两套电路或者加继电器切换成本和体积都上去了。双向 buck-boost 的好处是同一套功率级就能实现双向能量流动方向由控制器逻辑决定硬件不用动。选它还有几个实际考量。第一它是控制器而非集成开关的模块外置 MOS 可以按电流等级灵活选型两串电池的均衡电流从几百毫安到几安培都能覆盖扩展性好。第二同步整流架构效率高均衡过程中损耗小对于备用电源这种长期在线、偶尔均衡的场景静态损耗和均衡损耗都要控制。第三它的工作电压范围能覆盖两串锂电的整个窗口从深度放电到满充都在范围内不需要额外的预稳压。注意MP2642GR-Z 是控制器不是“接上就能跑”的成品模块。外围的 MOS、电感、采样电阻、补偿网络都要自己设计这一点和用集成均衡 IC 的体验完全不同新手要有心理准备。1.3 PIC18F57K42 在系统里扮演什么角色PIC18F57K42 是这套方案的“大脑”。它要干三件事采集两节电芯的电压和均衡电流判断能量该往哪个方向搬然后输出控制信号去驱动 MP2642GR-Z 的使能、方向选择和电流设定。选这颗 MCU 的理由是它的模拟外设比较全。它带 12 位 ADC差分输入和内部参考都有采两节电芯电压和采样电阻上的压差不用外挂太多运放。它还有多路 PWM 和比较器做电流环或者简单的滞环控制都够用。另外它的工作电压和 IO 电平跟常见的 3.3V 逻辑兼容跟 MP2642GR-Z 的使能、模式引脚对接不需要电平转换。从系统分工上看MP2642GR-Z 负责功率变换的“体力活”PIC18F57K42 负责“判断和调度”。这种分工的好处是控制逻辑可以做得比较灵活比如均衡阈值、均衡电流、休眠策略都能在固件里改不用动硬件。2. 硬件设计的关键细节与参数计算2.1 功率级拓扑与器件选型两串电池均衡的功率级本质是一个双向 buck-boost 接在两节电芯之间。把两节电芯记为 Cell1下端和 Cell2上端均衡器的一端接 Cell1 正极另一端接 Cell2 正极公共参考点是两节电芯之间的中点。这样均衡器看到的是两节电芯的压差能量从电压高的一节流向电压低的一节。电感选型是第一个要算的东西。假设均衡电流设计为 1A开关频率 500kHz最恶劣工况是压差最大时。两串锂电的压差在均衡启动瞬间可能到 0.3V 到 0.5V取 0.5V 来算。buck-boost 在压差小的时候占空比接近 50%电感纹波电流按额定电流的 30% 设计也就是 0.3A。电感量计算公式L (Vin × D) / (fsw × ΔIL)代入 Vin 取单节电压 3.7VD 取 0.5fsw 500kHzΔIL 0.3AL (3.7 × 0.5) / (500000 × 0.3) ≈ 12.3μH实际选 10μH 到 15μH 之间的屏蔽电感饱和电流要留足余量至少 2A 以上因为瞬态时电流可能冲高。电感的直流电阻要小DCR 大了均衡效率会明显下降建议选 DCR 在 30mΩ 以内的。MOS 选型看两点导通电阻和栅极电荷。均衡电流 1A 不算大但为了效率Rds(on) 选 20mΩ 以内的逻辑电平 MOS。栅极电荷影响开关损耗500kHz 下不能选太大Qg 控制在 10nC 量级比较合适。上下管都用 N 沟道注意 buck-boost 拓扑里高侧 MOS 的驱动需要自举或者电荷泵MP2642GR-Z 自带高侧驱动这点省事。采样电阻放在电池回路里用来测均衡电流。1A 满量程的话选 50mΩ 能得到 50mV 的满量程压差配合 PIC18F57K42 的 ADC 内部增益放大分辨率够用。采样电阻的功率要算1A 下 50mΩ 的功耗是 50mW选 0805 封装 0.125W 的够用但要注意温漂选 50ppm/℃ 以内的合金电阻。2.2 电压采样与 ADC 配置两节电芯电压采样不能直接接 ADC因为上端电芯的电压是叠加在中点电位上的。常见做法是用电阻分压把每节电芯的电压缩到 ADC 量程内再用差分输入或者两个单端通道相减。Cell1 电压采样简单直接分压到 ADC 量程。Cell2 电压采样要注意它的参考点是中点不是地。如果 ADC 是单端对地测量那 Cell2 的采样值减去 Cell1 的采样值才是 Cell2 的真实电压。这种“相减”的方法会引入两次采样的误差叠加所以分压电阻的精度要选 0.1% 的不然误差会累积。PIC18F57K42 的 ADC 配置有几个要点。参考电压用内部 2.048V 或 4.096V比用 VDD 做参考稳定因为 VDD 会随负载波动。采样时间要留够分压电阻和 ADC 采样电容构成 RC 网络电阻大了采样时间要加长。如果分压电阻取 100k 量级采样时间至少设 10μs 以上。转换时钟选 Fosc/16 左右兼顾速度和精度。实操心得ADC 采电池电压时最好在分压点对地并一个 100nF 电容滤掉开关噪声。均衡器工作时开关噪声很大不滤波的话 ADC 读数会跳得厉害固件里做平均也救不回来。2.3 均衡电流设定与保护均衡电流不是越大越好。电流大了均衡快但发热和损耗也大而且对电芯的冲击也大。两串电池的均衡电流一般按电芯容量的 0.5C 到 1C 来选但实际产品里通常远小于这个值因为均衡是长期慢过程不需要快。这个项目里把均衡电流设在 0.5A 到 1A 之间通过 PIC18F57K42 的 PWM 或者 DAC 去设定 MP2642GR-Z 的电流参考。MP2642GR-Z 内部有电流环外部给一个参考电压它就按这个参考去调节占空比把采样电阻上的压差稳定在参考值对应的水平。保护逻辑必须做。第一是过流保护采样电阻上的压差超过阈值就立刻关断这个用 MCU 的比较器做硬件级关断最快不要只靠软件轮询。第二是过温保护MOS 和电感附近放 NTC温度超限降额或者停机。第三是电芯欠压保护任何一节电芯低于下限就停止均衡避免把弱电芯进一步拉空。第四是压差回差均衡到压差小于某个值比如 20mV就停过一会儿压差又大了再启动避免频繁启停。3. 固件实现与均衡策略3.1 主循环与状态机设计固件的主循环不复杂但状态机要设计清楚。我一般把均衡器分成几个状态空闲、检测、均衡中、故障、休眠。空闲状态下MCU 周期性采两节电芯电压算压差。压差超过启动阈值比如 50mV且持续一段时间比如 10 秒防抖进入检测状态。检测状态确认压差真实存在不是采样噪声然后判断哪节电芯电压高决定能量流向进入均衡中。均衡中状态下MCU 设定 MP2642GR-Z 的方向和电流参考然后持续监测电压和电流。压差降到停止阈值比如 20mV以下或者任何保护条件触发就退出均衡回到空闲或者故障状态。休眠状态是为了省电。备用电源系统长期在线均衡器大部分时间没事干MCU 可以进低功耗模式定时唤醒采一次电压。PIC18F57K42 的低功耗模式配合看门狗定时器唤醒静态电流可以做到几十微安对备用电源的待机功耗影响很小。3.2 电压采集的滤波与校准ADC 采回来的原始值不能直接用要做滤波。最简单的是滑动平均采 8 次或 16 次求平均能压掉大部分随机噪声。但滑动平均对周期性噪声效果一般如果开关噪声和采样频率有固定关系平均也压不掉。这时候可以在固件里做中值滤波采 5 次去掉最大最小再平均对脉冲噪声更有效。校准是必须做的。分压电阻有误差ADC 有增益和偏移误差不校准的话电压读数可能偏几十毫伏均衡阈值就失准了。校准方法是用高精度电源给一个已知电压读 ADC 值算增益和偏移存到 EEPROM 里。生产时每台校准一次或者用 0.1% 精度的电阻把误差控制在可接受范围内省掉校准工序。注意校准用的参考电压源精度要比目标精度高一个数量级。想做到 10mV 精度参考源至少 1mV 精度不然校准本身就把误差引进去了。3.3 均衡电流环的调试MP2642GR-Z 的电流环是内部模拟环外部只需要给参考电压。但环路的响应和稳定性跟外部补偿网络有关调试时要用示波器看采样电阻上的波形。调试步骤是这样的先不给参考让 MP2642GR-Z 处于关断状态确认没有输出。然后给一个很小的参考比如对应 100mA看电流是不是稳定在 100mA。如果电流振荡说明补偿网络不合适要调 MP2642GR-Z 的 COMP 引脚上的 RC。如果电流上不去检查采样电阻值和参考电压是否匹配以及 MOS 驱动是否正常。电流环稳定后再测阶跃响应。把参考从 100mA 跳到 500mA看电流上升时间。上升太快可能过冲太慢则均衡效率低。一般上升时间在几百微秒到 1ms 之间比较合适。如果过冲严重加大 COMP 引脚的电容如果太慢减小电容或者调整电阻。3.4 均衡策略的优化基础的压差触发均衡已经能用但实际跑下来会发现几个可以优化的地方。第一个是均衡时机的选择。如果系统在充电均衡可以在充电过程中做因为充电时电芯电压在上升压差变化快均衡能及时跟上。如果系统在放电或者待机均衡也可以做但要注意别把弱电芯拉得太低。我的做法是充电时均衡阈值放宽一点放电时收紧一点待机时只在压差很大时才均衡。第二个是均衡电流的自适应。压差大的时候可以用大电流快速拉近压差小的时候用小电流精细调整避免大电流在压差小时造成过冲。这个用 MCU 根据压差查表设定电流参考就行逻辑不复杂但效果明显。第三个是温度补偿。电芯电压和温度有关低温时电压读数会偏低均衡阈值要做温度补偿不然冬天和夏天的均衡行为会不一致。NTC 采温度固件里查表修正阈值。4. 实测问题与排查经验4.1 常见问题速查表现象可能原因排查方法解决措施均衡电流上不去采样电阻值偏大或参考电压偏低测采样电阻实际阻值和参考电压调整参考电压或更换采样电阻电流振荡补偿网络不合适示波器看采样电阻波形调整 COMP 引脚 RC电压读数跳动大开关噪声耦合到 ADC示波器看分压点波形加分压电容增加采样时间均衡不启动压差阈值设太高或采样误差大读实际电压值对比万用表校准 ADC调整阈值MOS 发热严重开关损耗大或驱动不足测栅极波形和 MOS 温度换低 Qg MOS检查驱动电阻静态电流大MCU 未进低功耗或外围漏电测整机静态电流优化休眠逻辑检查漏电点4.2 开关噪声导致的采样异常这是调试时最容易踩的坑。均衡器一工作ADC 读数就开始跳压差算出来忽大忽小均衡逻辑跟着抽风。一开始以为是固件滤波没做好加了滑动平均和中值滤波改善有限。后来用示波器看分压点的波形发现开关瞬间有几百毫伏的尖峰直接把 ADC 采样窗口污染了。解决办法有两个层面。硬件上分压点对地并 100nF 加 1μF 两级电容把高频尖峰压下去。软件上把 ADC 采样时刻和 PWM 开关时刻错开在开关管关断期间采样避开噪声最大的窗口。两个措施一起上读数就稳了。实操心得ADC 采样和 PWM 同步是个好习惯。PIC18F57K42 的 PWM 模块可以触发 ADC 转换把触发点设在开关管关断后的一小段延时采样窗口就干净了。这个功能用起来比单纯靠滤波省事得多。4.3 均衡方向判断错误的排查有一次测试时发现均衡器把能量从低压电芯搬到了高压电芯越均衡压差越大。查了半天发现是电压采样的通道映射搞反了。Cell1 和 Cell2 的采样通道在固件里写反了导致方向判断整个颠倒。这种问题排查起来不难但容易忽略。方法是用可调电源分别给两节电芯设不同电压读固件里的电压值跟万用表对比确认通道映射正确。然后在均衡启动时用电流钳表测电流方向确认能量流向和预期一致。这两个检查做完方向问题基本不会漏。4.4 长期运行的漂移与维护均衡器跑几个月后可能会发现均衡效果变差压差收敛不到以前那么小。原因通常是采样电阻温漂或者分压电阻老化导致电压读数漂了。解决方法是定期自校准或者用更高精度的电阻。另一个长期问题是电芯本身的老化。两节电芯老化速度不一样压差会越来越大均衡器需要搬的能量也越来越多。如果发现均衡器长期满负荷工作说明电芯已经严重不匹配该考虑换电芯了光靠均衡救不回来。5. 方案扩展与个人体会这套两串均衡方案可以扩展到更多串。思路是一样的每两节相邻电芯之间放一个双向 buck-boostMCU 轮流或者并行控制。串数多了之后MCU 的 ADC 通道和 IO 可能不够可以用模拟开关扩展采样通道或者用多颗 MCU 分布式控制。MP2642GR-Z 加 PIC18F57K42 的组合优点是灵活、可扩展、控制逻辑自己说了算。缺点是外围器件多设计工作量大适合有一定电源设计基础的团队。如果只是想快速做个两串均衡用集成均衡 IC 可能更省事但灵活性和可调性就差一些。我个人在实际操作中的体会是均衡器的难点不在功率级而在采样和控制逻辑。功率级按手册设计一般不会出大问题但采样噪声、通道映射、阈值设定这些细节才是决定均衡器好不好用的关键。调试时多花时间在采样上把电压读数做准做稳后面的逻辑就顺了。另外保护逻辑一定要做扎实均衡器失控把电芯搞坏比不均衡的后果严重得多。