基于MP2642GR-Z与PIC18F87J60的2S主动均衡模块设计与实现
做储能和备用电源的人对“短板效应”应该早就被教育过无数遍整包电池可用容量不取决于状态最好那颗而取决于状态最差那颗。两节串联电芯出厂时容量差 2%、内阻差 10%、自放电率差一点装进后备电源里浮充半年电压差就能被拉到几十毫伏充不满、放不干最后整包提前退役。这次聊的项目就是用 MP2642GR-Z 和 PIC18F87J60 搭一个 2S 均衡模块PIC 负责电压采样、均衡判断和以太网远程监控MP2642GR-Z 负责执行能量搬移把高电芯的多余电量强制搬到低电芯去。文章会从为什么需要主动均衡讲起然后拆硬件拓扑、参数计算、算法状态机、调试波形最后把踩过的坑整理成清单。适合正在做锂电池 BMS、小容量后备电源模块或者想搞明白主动均衡闭环细节的人参考。1. 项目核心与设计思路拆解1.1 两颗串联电芯为什么会越用越不平衡先说清楚一个基本事实串联电池组里流过每颗电芯的电流是绝对相等的但每颗电芯“接住”电荷的能力不一样。出厂一致性再高也只是标称值一致。容量标 2Ah 的两节电芯实测很可能一个 1.96Ah、一个 2.04Ah内阻差百分之十几是常态自放电率也有差异。这些差异平时不吭声一旦进入串联充放电就会被放大强电芯先到充电截止电压弱电芯还在中段平台由于系统按整组电压停止充电强电芯实际上一直没机会充满弱电芯却反复被充到“自己够得着”的上限。放电时反过来弱电芯先到放电截止整组立刻停止对外供电。于是每次循环弱的越弱强的越强。在备用电源场景里还有个更隐蔽的问题长期浮充。整组始终挂在充电回路里弱电芯因内阻偏大、容量偏小常年承受超额的浮充电流电压被顶着走析气、升温、加速老化。一颗电芯的老化又反过来加剧下一轮失配形成正反馈。所以均衡不是“锦上添花”是延长系统寿命、防止热失控风险的必要手段。1.2 为什么先从“两颗串联”做起2S 是串联电池组里最小的失配单元却是做闭环均衡最好的起步点。第一实验环境可控。两节电芯、一个中点、两组采样量测和接线都简单出问题容易定位。第二成本低逻辑快。硬件投入小算法可以在几小时内反复迭代适合把“电压判据、滞回、软启动、保护时序”这一整套流程打磨熟。第三可扩展。2S 均衡单元本身就是节块后面的 4S、8S 甚至更大规模系统可以由多个这样的单元级联覆盖只要每颗电芯都被相邻的均衡单元“照顾到”就行。这个方案最合适的落点是小容量后备电源、便携储能、手持设备、低压光储配套单元。这些系统电芯少、对成本敏感但同样面临串联失配问题一个 2S 主动均衡模块加一颗带以太网的 MCU性价比刚好。1.3 这个模块在整个系统里的位置整个系统可以画成三条线第一条是能量流两颗串联电芯的正、中、负极引到双向均衡功率级功率级在 MP2642GR-Z 的控制下把电荷从高电压电芯搬向低电压电芯。第二条是信息流电芯电压、温度经过采样调理进 PIC18F87J60 的 ADCPIC 跑均衡状态机输出使能和 PWM 参考给 MP2642GR-Z同时把状态量打包成 Modbus TCP 帧通过网口送到上位机。第三条是保护链过压、欠压、过流、过温、看门狗任何一个触发PIC 要么关 PWM要么拉低使能把功率级停掉。这个结构最大的好处是决策和执行分离PIC 管“要不要均衡、往哪个方向均衡、均多久”MP2642 管“怎么把电流稳在设定值”。底层电流环交给专用芯片上层策略留给 MCU调试时两边可以分开验证少吵很多架。2. 方案选型为什么是这两颗芯片2.1 均衡拓扑横向对比做均衡之前先得在被动和主动之间站好队。被动均衡就是用电阻把高电芯的能量白白放掉简单便宜但电流小、发热大而且只能“削峰”不能“填谷”。主动均衡的核心思路是“搬”把高电芯的能量送到低电芯理论上不浪费但在拓扑选择上有讲究。我对比过的几条路线拓扑均衡电流能力效率成本实现复杂度典型场景电阻被动均衡50~200mA极低热量最低极低小容量电芯、允许长时间均衡开关电容均衡随压差变化压差小则电流小中等无磁件低低对电流要求不高、压差较大的场景双向电感均衡可恒定1A~2A 容易实现高85%~90%中中本项目所选小压差也能搬隔离反激/变压器大电流、支持大压差高但磁件大高高多节串联、需要电气隔离的场合开关电容最大的毛病是均衡电流和电压差成正比电芯压差越大搬运电流越大一旦压差被搬到很小搬运能力就断崖式下降最后几十毫伏很难拉平。双向电感型则不同电流环会主动维持设定电流哪怕压差只剩 10mV照样按 1A 搬直到滞回边界停住。这正是主动均衡想要的性格。2.2 MP2642GR-Z 在电路里具体干什么MP2642GR-Z 是这个方案的功率级控制核心QFN 封装属于电源芯片厂家的紧凑型同步开关控制器件。在项目里它负责四件事产生半桥驱动信号、控制同步整流时序、采样均衡电流并对设置值做闭环、触发过流和欠压保护。外部配四颗 MOSFET 和一颗功率电感就构成一个完整的双向升降压均衡单元。芯片和 MCU 之间的接口很少通常就是使能、PWM同步、故障输出和一颗设定电流的电阻。PIC 不需要知道电流环里电感的细节只要告诉它“开启目标电流 1A方向向下”剩下的事由它自己完成。故障输出直接进 PIC 的外部中断一旦关断立即记录原因。有一点必须说明具体到某一批次芯片的寄存器位、引脚命名不同版本的官方数据手册可能存在差异本文讲的是功能逻辑层面的实现思路做硬件前一定以芯片资料为准。2.3 PIC18F87J60 为什么“够用又能上网”选 PIC18F87J60 最主要的原因是它把以太网 MAC 和 PHY 集成在了内部支持 10BASE-T外部只需要一颗网络变压器和 RJ45 座不用再接一颗独立以太网控制器。在一些老设计里MCU 加独立以太网芯片要额外占两个 SPI 口和一片缓冲区BOM 和布局成本都高不少。这颗 8 位机有百来 KB 的 Flash、约 3.8KB 的 SRAM。Flash 跑精简版 TCP/IP 协议栈够用SRAM 则要省着花。以太网收发缓冲、TCP 连接控制块都会吃掉 RAM所以通讯协议不能写得太胖。我选择只做被动服务器端维护一个 TCP 连接命令帧短、状态帧短SRAM 压力可控。这是整篇设计中“不够强但够用”的典型代表。它自带的 10 位 ADC、定时器、CCP 模块也够用采样电芯电压、读 NTC 温度、输出 PWM 同步信号、看门狗复位一颗 MCU 全包了。再加上以太网口意味着这套模块可以直接挂进储能电站、机房动环监控网络用 Modbus TCP 和上位机通信这是一般串口 BMS 方案不具备的远程管理能力。2.4 模块的关键指标立项阶段先定了硬指标后面所有设计都围绕这些数字参数指标说明输入电压范围5.0V ~ 8.4V兼容 2S 磷酸铁锂与三元锂电芯均衡电流0.5A / 1.0A 可设电阻设定PWM 软启动采样式样精度±5mV采样线直接到电芯端子均衡停止差压5mV可配置滞回避免反复启停通信接口10M 以太网Modbus TCP远程监控与命令下发保护项OVP/UVP/OCP/OTP/WDT保护动作后通过网口上报3. 硬件设计与参数推导3.1 双向电感均衡功率级怎么搭两颗串联电芯分别记为 top 电芯和 bottom 电芯中点作为公共参考。功率级采用典型的两半桥加单电感结构第一组半桥跨接在 top 电芯两端第二组半桥跨接在 bottom 电芯两端两颗半桥中点之间接一颗功率电感。top 电芯电量高时PWM 驱动让电感先从上电芯吸收能量再释放到下面bottom 电芯电量高时方向反过来。因为两个方向完全对称只需要在状态机里定义“方向”一位即可。同步整流时序由 MP2642GR-Z 内部逻辑保证主开关管导通时电感储能续流管同步导通提供电流回路死区时间要足够防止上下管直通。这里有个新手容易翻车的地方电感均衡的开关节点电压摆幅大、dv/dt 高采样线和控制线如果走得太近很容易被耦合出几伏的干扰尖峰。功率回路要尽量短采样网络要离开关节点两厘米以上最好再用一个小面积铜皮把功率区与模拟区分开。3.2 电感、频率与均衡电流的参数计算均衡电流取 1A开关频率取 500kHz电感纹波电流按 30% 设计。按单端升降压的近似公式估算L Vin × D / (f × ΔI)取电芯平台电压 Vin ≈ 3.3V占空比 D ≈ 0.5f 500kHzΔI 0.3AL 3.3 × 0.5 / (500000 × 0.3) ≈ 11µF实际取 22µH余量翻倍纹波电流降到 15% 左右。电感峰值电流约 1.15A选电感时饱和电流至少 2A留一倍裕量否则大压差满载时电感会“缩水”电流环斜率突然变化很容易触发过流保护。电流采样用低侧采样电阻采样电阻连接到 MP2642GR-Z 的电流检测脚再经过 RC 滤波。RC 时间常数不能太大否则电流环带宽被压低动态响应变慢也不能太小否则开关纹波直灌比较器误触发保护。经验值在 100ns 到 200ns 的量级结合实际波形再调。MOSFET 选型上导通电阻 Rds(on) 尽量小于 20mΩQg 和死区时间匹配。同步整流管的体二极管反向恢复时间也要注意500kHz 下这是个容易被忽视的损耗点。3.3 电压采样毫伏级精度才是均衡判据的命根子均衡的判断全部建立在电压差 ΔV 上采样精度不够后面算法写得再漂亮也是白搭。PIC18F87J60 内部 ADC 是 10 位参考电压按 3.3V 算ADC 的 LSB 约 3.2mV电芯电压最高 4.2V需要分压后测量折算到电芯端约 9.6mV。这意味着单次采样根本分辨不出 5mV 的滞回边界。解决的办法是“软硬并用”。硬件上采样线用独立走线直接从电芯端子引出也就是俗称的 Kelvin 接法不允许流经功率电流的走线混进来分压电阻再并联一个 RC 滤波截止频率不超过几百赫兹滤掉开关噪声。软件上每路电压连续采样 32 次取中值加平均等效位数能提升两到三位配合两点校准时实测可以做进 ±5mV。如果追求更高精度可以外挂一颗 16 位 I2C SAR 型 ADC。但在 2S 模块上PIC 内部 ADC 加均值校准已经够用少一片料少一份 layout 面积。3.4 保护链路与 PCB 布局保护链路的优先级是“先硬件后软件”。硬件层MP2642GR-Z 自身有过流和过温保护PIC 外部中断接故障输出故障发生时能在微秒级关断 PWM。软件层PIC 周期检查电芯电压范围、温度、均衡持续时间一旦越界立即停均衡并上报。反接保护在 2S 便携模块上容易被忽略。我的做法是输入串联一颗 P 沟道 MOS 做防反正常上电时导通反接时不导通。成本不高但省了无数返修。PCB 布局的要点功率开关回路尽量短电感和 MOSFET 的开关节点铺铜面积不要过大防止天线效应和 EMI晶振、以太网变压器、MCU 和模拟采样区放在远离功率区的一侧地平面完整分割但在 MCU 下方单点汇合避免数字噪声污染模拟地。4. 均衡控制算法与软件实现4.1 均衡判据与滞回控制均衡算法不是简单的“差压大于阈值就干活”而是要考虑方向、干扰和电芯状态。先定区间只有两颗电芯电压都在合理范围内比如 2.8V~4.2V才允许均衡。欠压时一启动均衡就会把弱电芯电压拉得更低可能触发放电保护过压时均衡会误以为强电芯被强行限压其实只是充电曲线末端的正常平台。再定启动与停止阈值启动差压 20mV停止差压 5mV方向指向电压高的电芯。为什么留 15mV 的滞回带因为采样有噪声、电芯在浮充时电压会有小幅波动。没有滞回系统会在阈值边缘反复启停继电器、MOS 管和电感都在受罪均衡效率反而低。针对 LFP 电芯还要多一个心眼磷酸铁锂的开路电压平台非常平静置状态下电压基本不反映 SOC如果拿静置电压差做均衡判据会出现“电压明明一样实际一个满一个空”的情况。我的做法是在充电后期进入恒压充电段后才允许均衡或者用库仑计估算电量差代替电压差。电压型判据用在 NMC、三元体系更可靠。4.2 状态机与执行时序软件核心是一个五状态状态机空闲、软启动、均衡中、暂停、完成。PIC 的定时器中断每 100ms 处理一次电压采样和中值滤波主循环跑状态机以太网任务穿插执行。typedef enum { BAL_IDLE, BAL_SOFTSTART, BAL_RUNNING, BAL_PAUSE, BAL_DONE } bal_state_t; void balance_task(void) { int16_t dv v_cell_top - v_cell_bottom; switch (bal_state) { case BAL_IDLE: if (dv START_THRESHOLD cells_in_range()) set_direction(TOP_TO_BOTTOM); bal_state BAL_SOFTSTART; else if (dv -START_THRESHOLD cells_in_range()) set_direction(BOTTOM_TO_TOP); bal_state BAL_SOFTSTART; break; case BAL_SOFTSTART: ramp_target_current(); if (current_reached()) bal_state BAL_RUNNING; break; case BAL_RUNNING: if (abs(dv) STOP_THRESHOLD) disable_balancer(); bal_state BAL_DONE; else if (balance_timeout()) disable_balancer(); bal_state BAL_PAUSE; break; case BAL_PAUSE: if (cool_down_elapsed()) bal_state BAL_IDLE; break; case BAL_DONE: if (abs(dv) START_THRESHOLD) bal_state BAL_IDLE; break; } }软启动这一步特别重要直接全电流启动会在电感里建立很快的电流突变冲击电流很容易触发 MP2642 的过流保护。实际做法是目标电流从 0.2A 线性爬升到 1A爬升时间约 50ms波形上能看到电流包络平滑上去过流保护一次都不误触发。均衡超时也要设我设的是单次最长 120 分钟。连续均衡两小时还没收敛说明电芯差异已经不在均衡能力范围内继续耗只会发热不如停下来上报告警。4.3 基于以太网的监控与命令协议通信采用 Modbus TCP这是工业自动化里最通用的协议上位机组态软件、PLC 都能直接对接。PIC18F87J60 跑精简 TCP/IP 协议栈开一个 TCP 被动连接端口 502。寄存器表设计成只读和读写分开寄存器地址类型内容单位0x0000只读电芯电压 VtopmV0x0001只读电芯电压 VbotmV0x0002只读均衡状态0空闲/1运行/2完成/3故障0x0003只读当前均衡电流mA0x0004只读模块温度0.1°C0x0010读写均衡使能0停止/1允许0x0011读写启动差压阈值mV0x0012读写停止差压阈值mV0x0013只读故障原因位掩码PIC 的 SRAM 不大Modbus 报文帧一次只处理一小段解析完一个寄存器立即返回不缓存整包。实测在 10M 以太网下轮询周期 200ms 完全够用。5. 上电调试与实测记录5.1 先把安全护栏搭好调试均衡模块第一步绝不能直接拿两颗真实电芯上电。我的顺序是先用两台可编程电源串联模拟两颗电芯电源设置限流再用两颗大容量超级电容模拟出“一个电压高一个电压低”的初始状态。这样即使功率级有问题也只是电容在充放电不会烧爆炸。等控制逻辑、保护时序都跑顺了再换真实电芯。真实电芯测试前确认三件事电芯健康状态正常、没有鼓包、接线极性和采样线极性全部核对过。模块输入端串一颗快速熔断器功率级附近放热电偶万一电流失控能第一时间看见温度上升。5.2 均衡收敛的实测过程实测用的是一组 2S 三元锂电芯标称 7.4V、单节 2Ah。上电静置半小时后读到 V1 3.312VV2 3.265V差压 47mV。按设定的 1A 均衡电流理论搬运电荷量按 0.1Ah 估算对应时间约 6 分钟加上损耗实测 7 分半钟。用示波器挂电感电流波形纹波幅度约 0.15A和设计的 22µH、500kHz 估算一致。MP2642GR-Z 的使能脚拉高后电流包络按软启动斜率爬升没有过冲。均衡过程中 V1 缓慢下降、V2 缓慢上升差压从 47mV 一路收拢到 4mV 时状态机按停止阈值关闭 PWM观察 10 分钟没有重新触发说明滞回设计生效。效率方面用精密功率计分别测输入和输出侧能量双向电感拓扑在 1A 档的效率约 87%比先前用被动均衡方案时“一边烧电阻一边担心热失控”的体验完全不在一个层级。5.3 以太网联调与远程控制网络联调比预想顺利但也有一个坑最初 PC 直连模块无论如何 ping 不通。排查发现是 MDI-X 极性不对换了一根交叉网线或是把 PHY 配置改成自动极性协商立刻恢复。之后在 PC 上用 Modbus 轮询工具读取 0x0000 和 0x0001 两个寄存器显示的电压和万用表实测偏差在 3mV 以内。远程下发“停止均衡”命令观察状态寄存器从 1 变 0再量功率级开关节点确实停振。这意味着这套模块可以放在机柜里人不用到现场就能干预均衡过程对备用电源长期运维来说省的可不止跑腿。6. 常见问题与排查实录6.1 踩过的六个坑第一个坑一使能就过流保护。原因是软启动没做上电瞬间电感电流直接冲顶。解决方式就是加电流斜坡实测过流保护再没误触。第二个坑小压差时均衡电流上不去。检查发现电感选小了1A 满载时饱和电流不够电流波形明显削顶。换 2A 饱和电流的电感后恢复正常。第三个坑电压采样跳动超过 ±10mV。排查方向是采样线走了功率区附近的过孔被开关节点耦合。重布采样线、加 RC 滤波后稳定在 ±3mV 以内。第四个坑以太网连不上。除了 MDI-X 极性问题还遇到过 IP 地址和现场网络冲突。解决方法是模块默认 DHCP 失败后降级到固定 IP并在协议栈里做好冲突检测。第五个坑均衡完后过十几分钟差压又被拉开。这不是硬件问题是判据太灵敏停止阈值设成 2mV而采样噪声本身就接近这个值。把停止阈值改到 5mV并加入“连续三次采样均满足”才停止的确认逻辑问题消失。第六个坑长时间运行看门狗复位。追下来是 Modbus 处理函数里有一处大数组在栈上把 PIC 的 SRAM 栈空间挤爆了。改成静态缓冲区并压缩协议栈连接数后连续跑 72 小时稳定。6.2 快速排查速查表现象重点检查常见根因对策均衡启动即保护电感电流波形、软启动时间软启动缺失或电感饱和加 50ms 电流爬升换饱和电流余量电感差压小但不均衡采样滤波、阈值配置停止阈值太大或方向误判检查滞回区间与方向状态机采样电压跳动大采样走线、分享地采样线靠近开关节点重布采样线加 RC 滤波以太网 ping 不通网线类型、PHY 极性MDI-X 不匹配配置自动极性协商均衡完又拉开停止阈值、确认逻辑阈值过小、噪声触发加大滞回连续三次确认看门狗复位RAM 使用率、栈大小大数组撑爆栈改静态缓冲区压缩协议栈最后再分享一点我的实际体会这个 2S 模块做完后我已经把它当作后续所有均衡项目的基础模板。四颗 MOS 加一颗电感加两颗芯片的架构在 2S 上跑通了电压型判据、滞回控制、软启动、远程监控、故障上报这套控制逻辑换到 4S、8S 系统上核心状态机基本不用变只是采样通道和均衡单元数量增加。如果要继续扩展我会优先做两件事一是给 LFP 电芯补上库仑计 SOC 估算把均衡判据从“电压差”升级为“SOC 差”这是真正解决磷酸铁锂平台区均衡误判的正路二是增加一路 CAN 接口方便挂到储能系统的主控网络上毕竟不是所有机柜都有以太网布线。最后想提醒正在做同类项目的人均衡系统的可靠性不在算法有多花哨而在每一个保护条件是否都留了余量、每一根采样线是否都干净利落。先让系统在故障时不失控再谈把电量均衡得多漂亮。