首页 / 资讯中心 / 文章详情

串联电池主动均衡方案:MP2642与PIC18F87J60的硬件与控制详解

串联电池主动均衡方案:MP2642与PIC18F87J60的硬件与控制详解 ★ FEATURED ARTICLE
两节电池串联组成的储能/备用电源系统最大的隐性问题不是容量不够而是两节电池越用越不齐。我最近做了一套主动均衡样板以 MP2642GR-Z 同步降压转换器作为能量搬运功率级PIC18F87J60 作为主控和网络通信核心专门解决两节串联电池在长期浮充、循环后的电压失衡问题。整套硬件拓扑、控制逻辑和调试踩坑记录都在下面适合正在做 BMS、UPS 或者户用储能均衡模块的工程师参考。这版方案不追求花哨胜在功率级好找、代码可控、远程能看得见状态也算是一条能落地的主动均衡路线。1. 串联电池SOC差为什么会被储能系统放大——先说清均衡的必要性1.1 一个 24V 备电系统里最容易被忽略的电量黑洞我在一次连续 48 小时放电测试里发现两节出厂配对的 12V 铅酸电池在浮充状态下电压几乎完全一致但一旦进入循环放电落后电池的端电压会以肉眼可见的速度往下掉。原因是串联回路的电流处处相等但两节电池的内阻、容量、自放电率不可能完全相同。出厂差 1%循环 50 次后可能拉大到 10% 以上。用数字更直观假设两节电池实际容量差 2%每完成一次 50% DOD 的放电落后电池就比另一节少放出约 24mAh 电量。如果系统每天循环一次一个月后这个差值就会累积到 700mAh 左右。到真正需要备电切换的时刻落后电池最先撞上欠压保护点整组直接停机储能系统等于白装。这恰恰是所有备用电源最怕的容量黑洞平时静态电压看着正常带载后立刻现形。市面上的保护板只做总电压高/低压保护根本发现不了单体失衡。所以必须有一个能感知单体状态、主动拉平能量的环节。1.2 被动均衡的代价把能量变成热量还均衡不快传统 BMS 里最常见的被动均衡原理很简单通过一个并联电阻给电压偏高的电池放电把富余能量变成热量耗掉。实现成本很低所以在消费类电池包里用得很多。但它有两个硬伤。一是慢。受限于散热和 PCB 面积均衡电流通常只有 100~200mA。要对 100mV 左右的压差完成校正往往需要连续放电几个小时期间均衡电阻一直发热电路板温度升高还会拉低采样精度。二是在储能场景不划算。备用电源的本质是关键时刻把能量放出来被动均衡却是把本来可以保留的能量提前变成热。如果系统经常处于浅充浅放状态被动均衡不仅没有提升可用容量反而每次都在浪费能量。主动均衡的意义就在于把高电池的富余能量搬到低电池去理论上 80%~90% 的能量可以被重新利用。1.3 主动均衡的路径选择为什么是DC-DC 功率级主动均衡的常见实现有电容飞渡、电感转移、反激变压器隔离、DC-DC 变换器。电容飞渡实现简单但只在相邻单元之间搬运电流做大后开关损耗很高适合小容量手持设备。电感转移开关时序复杂双向控制要写不少逻辑。反激变压器能实现大压差跨单元转移但变压器设计和漏感吸收都需要额外精力。两节串联是最简单的拓扑DC-DC 方案的性价比就体现出来了。MP2642GR-Z 内部集成同步高/低边 MOS本质是一个完整的半桥功率级配合一只电感和中点节点就能在上下两个电池之间搬运能量。外围元件少效率高控制量只有目标中点电压这一个自由度。这就是我把标题里的主动均衡落在 MP2642GR-Z 上的原因。2. 硬件骨架把 MP2642GR-Z 变成电池间能量搬运工2.1 选型逻辑为什么一颗同步降压转换器够用MP2642GR-Z 是很常见的同步降压转换器输入电压范围覆盖常见电池组持续输出能力到 2A内部集成高低边 MOSFET 和同步整流控制。在这里我没有把它当成传统的 Buck 降压器去给某个固定的低电压轨供电而是借用它内部的半桥开关单元配合外部电感让它可以双向搬移能量。它要实现的场景是两节电池串联总正极为 BAT中间节点为 MID总负极为 GND。MP2642 的输入接 BAT 与 GNDSW 引脚通过一只功率电感接到 MID。这样功率级实际上就是一个同步 Buck但负载不是普通电阻而是电池中点。通过控制 SW 的平均电压可以让电感电流正向流动从 SW 向 MID也可以反向流动从 MID 向 SW从而决定能量从哪一节电池搬向另一节。这里要提醒一点很多工程师第一次听到降压转换器做均衡会下意识认为输入接高电池、输出接低电池其实那需要两个相互隔离的浮动输入端普通非隔离 Buck 很难切换目标。真正好用的接线方式就是把半桥并接在整个串联组的正负两端让电感一端落到中点。这也是通过 MP2642GR-Z 实现均衡这句话的准确含义。2.2 功率级连接与能量方向控制连接关系可以整理成下面这张表理解之后再看控制逻辑就顺了。端口连接对象说明MP2642 VINBAT串联组总正极输入母线MP2642 GNDGND串联组总负极与输入共地MP2642 SW功率电感 L 的一端L 的另一端接 MIDMP2642 FB中点电压取样分压电阻参考被 MCU 微调MP2642 ENMCU GPIO均衡使能低有效禁用稳态情况下忽略电感直流电阻和开关压降SW 的平均电压等于电感的平均电压也就是 MID 点电压。MP2642 内部的误差放大器会持续调节开关占空比把 FB 电压稳住。FB 分压电阻的取点接到 MID本质上可以让转换器跟踪中点电压相当于一个主动负载。想要能量从高边电池搬向低边电池时MCU 通过 FB 注入电流抬高参考MP2642 认为输出电压偏低自动增大占空比SW 平均电压升高电感电流从 SW 流向 MID给低边电池充电。与此同时整个串联组都会因为功率级从输入母线取电而承受相同的输入电流高边电池也在被消耗于是净效果就是高边电池能量减少、低边电池能量增加。反过来MCU 降低参考电压SW 平均电压低于 MID电感电流反向低边电池的能量流回输入母线侧等效给高边电池补充。控制方向和电流大小本质上就是控制 FB 参考偏移量和闭环速度。功率电感建议选 10uH~22uH、饱和电流 3A 以上DCR 越低越好。开关频率内产生的纹波电流控制在 0.3A 左右既能保证半桥工作稳定又不至于在电池上叠加明显噪声。MP2642 的输入侧要放低 ESR 的陶瓷电容总容量至少 22uF 起步。2.3 电压采样链路两节电池的端电压怎么读才可信PIC18F87J60 自带的 ADC 是 10 位直接拿它衡量 100mV 量级的均衡差会很难受。我的做法是先用高精度电阻分压把 BAT 和 MID 分别降到 ADC 量程内然后对两个通道采样再在软件里做差分V1 VBAT - VMIDV2 VMID - GND。分压电阻要用 0.1% 精度、低温漂的金属膜电阻每个采样点对地加 100nF 电容做 RC 滤波时间常数选在毫秒级既能滤掉开关噪声又不会拖慢动态响应。这里有一个容易被忽略的细节绝对精度远不如通道间一致性重要。均衡判据看的是 V1 和 V2 的差值而不是它们各自相对于真实值有多准。只要两个通道采用相同型号的分压电阻、同样的布局长度温漂系数一致差分结果就能稳定到几个毫伏级别。我甚至没有另外做高精度基准校准而是靠差分设计把 10 位 ADC 的缺陷绕开了。电流采样放在功率电感的输入侧或 MID 侧。采样电阻可以选 0.01Ω/1W 的锰铜电阻经过仪表放大器放大后再进 ADC。仪表放大器的共模抑制比很关键因为在均衡过程中 MID 点电位会小幅波动不能简单用单端采样电阻看电流。2.4 PCB 布局的几条具体经验布局上MP2642 的 SW 节点是整个板子最脏的地方。电感必须紧贴 SW 引脚环路面积尽量小输入电容要靠近 VIN 和 GND 引脚否则开关尖峰抑制不住。采样走线要远离 SW 和电感用细线从电池端直接拉回 MCU中间不要穿过功率地。地线建议采用单点回流功率地、模拟地、数字地在 ADC 采样附近汇合。电池连接端子用开尔文接法采样线独立于功率线避免大电流在 PCB 铜箔上产生 10mV 级压降直接影响均衡判断。热设计方面我实际跑 1A 均衡电流时MP2642 和电感本身的损耗会让局部温升接近 15℃所以顶层和底层都要为功率器件铺设大面积敷铜过孔散热。温度采样探头贴在电池极耳和 MOS 附近超过 60℃ 就降流或停机。3. PIC18F87J60 主控ADC 精度、均衡状态机与以太网监控3.1 为什么选这颗自带以太网接口的 MCU备用电源系统的痛点在于没人值守。如果均衡器只会本地工作故障了只能等人拿着万用表去查这不符合实际运维需求。PIC18F87J60 系列一大特点就是内部集成了以太网 MAC 和 PHY外部只需要一个带隔离变压器的 RJ45 插座就能联网不用额外接 PHY 芯片PCB 面积和调试成本都省下一大截。MCU 本身主频、Flash、RAM 应付均衡状态机和轻量 TCP/IP 协议栈足够。Microchip 生态里也有现成的 TCP/IP 协议栈可以参考不需要从零写网络协议。对两节电池的均衡控制来说IO 和定时器资源绰绰有余。3.2 ADC 采样链路与校准方法ADC 不是越高越好关键是采样策略。我每个通道连续采样 64 次软件排序后取中位值再对中位值做滑动平均。这样可以同时抑制随机噪声和脉冲干扰。采样时机上尽量避开功率级开关动作和以太网发送瞬间减少电源串扰对 ADC 参考电压的影响。我另外在板上留了一个 2.5V 精密基准接在某一个 ADC 通道上。每次上电先测基准通道把计算到的增益误差用到整个系统上。这个校准不能解决差分电阻带来的绝对误差但能保证同一颗芯片在不同温度下读数更稳定。需要特别说明的是均衡是否完成的判断不能只看瞬时压差。我建议加一个稳定窗口只有连续 2 分钟压差都小于阈值才判定均衡结束。因为均衡电流切断的瞬间电池内部的极化电压会回弹瞬时读数很容易造成误判。3.3 均衡状态机设计整个均衡逻辑用状态机实现状态包括 IDLE、BALANCE、DONE、FAULT。IDLE 状态下每隔 5 秒做一次压差判断|V1-V2| 大于 30mV 且持续一定时间才进入 BALANCE防止负载波动造成误触发。BALANCE 状态下根据压差符号决定电流方向每 200ms 闭环一次电流。DONE 状态保持监控 10 分钟观察电压回弹情况。FAULT 状态下立即切断均衡使能禁止 MOSFET 动作等待上位机复位。状态触发条件动作退出条件IDLE上电初始化完成采样监控压差大于 30mV 持续 5sBALANCE压差有效恒流均衡方向自动压差小于 10mV 持续 2minDONE均衡完成停止搬移观察回弹回弹大于 30mV 重新均衡FAULT过压/欠压/过温/超时关断所有输出上位机手动复位超时保护非常关键。我设置了最大均衡时间 4 小时超过后强制进入 FAULT并把故障码和累计均衡电量通过网络上报。这样可以防止因为某节电池微短路导致均衡器无限工作下去给故障排查留出现场。3.4 以太网监控从 Modbus TCP 到简单 JSON 状态页网络通信方面我第一版协议用的是 Modbus TCP。寄存器地址 0x100 到 0x105 分别映射 V1、V2、压差、均衡电流、状态字和温度Modbus 写寄存器可以设置均衡允许、目标压差阈值和强制均衡开关。Modbus TCP 的好处是上位机组态软件直接支持不用额外写调试工具。如果需要快速 Web 调试也可以在 TCP/IP 协议栈上方加一个极简 HTTP 服务返回 JSON 格式状态。Wireshark 抓包做通信验证时Modbus 报文更容易解释所以我更推荐先上 Modbus TCP。需要注意 Modbus TCP 本身没有认证机制工程上不能把它们直接暴露在公网或办公网需要放进独立的设备管理 VLAN或者用防火墙做来源 IP 白名单。4. 均衡控制的关键细节判断阈值、搬运时长与安全边界4.1 用电压差还是 SOC 差来触发均衡最直观的触发条件是端电压差但它受负载电流、极化和温度影响很大。大电流放电时内阻大的电池端电压低不代表 SOC 一定低。如果这时候触发均衡很可能把能量搬到错误的方向。我的做法是均衡只有在空闲且无充放电条件下才触发而且要等开路静置 5 分钟以上。如果系统正在带载即使看到压差很大也只记录不动作。判断方向时优先使用开路电压差因为开路电压与 SOC 的对应关系比端电压靠谱得多。对要求更高的系统可以再做一张 OCV-SOC 查表根据开路电压估出两节电池各自的 SOCSOC 差超过 3% 再启动均衡。两节电池的场景下表很小我实测下来用简单电压差加静置条件已经足够稳定。4.2 均衡电流设定为什么我限制在 1A 而不是 2AMP2642 的持续电流能力是 2A但我实际工程里把均衡目标电流限制在 0.8A~1.2A原因有三。第一均衡电流产生在电池内阻上的压降会干扰采样。以一节内阻 120mΩ 的电池为例1A 电流会在端子上产生 120mV 的压降和要校正的压差同一个数量级。如果电流再大采样时必须加入 IR 补偿否则方向判断都可能反掉。第二热管理。1A 均衡电流下 MP2642 半桥的开关损耗、导通损耗和电感铜损叠加板上温升已经能达到十几摄氏度。跑到 2A 需要有强风冷或大面积散热器不符合备用电源系统的体积要求。第三均衡不是充电没有人要求半小时内把差填平。铅酸和锂电的极化效应决定了压差收窄后大电流反而让效率大幅下降。我在程序里做的是压差大时用 1A压差小于 40mV 时自动降流到 0.4A这样后半段既不激进又不会让系统处于功率级长时间高负荷状态。4.3 滞环和超时保护防止无尽均衡电池是存在自恢复特性的。均衡做完后如果立刻检测压差大概率会反弹。我设置的结束条件是压差小于 10mV 并持续 2 分钟而重新启动条件是压差大于 30mV 持续 5 秒。这个 10mV/30mV 的滞环能避免系统在边界处反复启停对 MOSFET 和功率电感也都友好。超时保护的前面提过这里补一个细节均衡过程中每 10 秒记录一次累计搬运电量如果 1 小时内的压差改善小于 5mV程序认为电池可能存在微短路或容量严重匹配问题直接进 FAULT 而非继续空转。这种效率监看比单纯超时要更能暴露隐藏问题。4.4 失败模式分析MOS 误导通、FB 参考注入不稳定、采样漂移调试过程中最容易翻车的是上电时序。MCU 的 GPIO 在复位期间是高阻态如果 MOSFET 栅极没有下拉电阻VDD 爬升过程中栅极可能被噪声拉起导致均衡功率级意外开启电池组瞬间形成短路通路。解决方法是每个控制 MOS 栅极都并联 10kΩ 下拉电阻同时在 MCU 程序 main 函数第一步就把所有均衡控制脚配置为输出低电平最后再使能 MP2642 的 EN。FB 参考注入如果直接用 PWM 滤波纹波会叠加到 MP2642 的误差放大器上表现为均衡电流周期性抖动。我的处理是将 PWM 频率放在 10kHz 以上做两级 RC 滤波时间常数 10ms 左右让它变成一个足够干净的直流电平。注入电阻的取值也要控制否则会影响 FB 分压网络的默认工作点。采样漂移是另一个常见陷阱。分压电阻的温度系数虽然是 50ppm听起来很小但两节电池采样通道如果布局不对称温差 20℃ 就能带来几个毫伏的误差。均衡判定要留出余量触发阈值设 30mV 而不是 10mV就是为了避免热噪声把均衡器变成永动机。5. 实测结果、踩坑经历与对这套方案的复盘5.1 一次完整的均衡过程记录我用两节标称 12V/7Ah 的铅酸串联组做了完整验证。初始开路电压分别是 12.31V 和 12.19V压差 120mV。程序判定方向为高边向低边搬运能量启动 1A 恒流均衡。时间状态V1V2ΔV均衡电流备注0:00IDLE12.31012.190120mV0开始0:10BALANCE12.28012.24040mV0.83A前半段快速收窄1:00BALANCE12.25012.23020mV0.78A极化效应显现2:10BALANCE12.24012.23010mV0.42A自动降流2:30DONE12.23812.2308mV0停止搬移2:40HOLD12.23512.22213mV0电压回弹这条曲线说明两件事压差大时均衡速度主要受制于安全电流压差缩到 20mV 以下后继续大电流均衡的效率很低降流是对的。最终停止后回弹到 13mV处于滞环以内系统不会误重启。5.2 调试中遇到的三个坑逐个说清第一个坑是 MCU 上电瞬间的 MOS 误导通。有一次我在上电波形里看到均衡电流瞬间冲高到 2.5A检查后确认是 GPIO 复位期间的高阻态让栅极漂移。加了 10kΩ 下拉并延长均衡使能延时到上电 500ms 之后这个问题彻底消失。第二个坑是轻载反向电流。MP2642 作为半桥功率级电感电流在均衡结束阶段会降到很低如果内部控制进入非连续导通模式反向电流会导致 FB 检测混乱电流读数来回跳。我在程序里设置了最小均衡电流 0.2A一旦检测到目标电流低于下限直接切断功率级而不是让它在小电流下硬撑。第三个坑比较隐蔽以太网变压器中心抽头接法不对导致网口完全 Link 不上。自查发现是中心抽头到地的电容漏焊。重新按参考设计补齐中心抽头退耦电容后立即恢复。这个坑提醒我网络隔离变压器的参考设计不能想当然删减。5.3 效率、温升与优化建议实测效率在压差 1.2V、电流 1A 时约 88%压差降到 0.3V 以下时效率只有 40% 左右原因主要是开关损耗占比迅速上升。这个现象很正常也说明主动均衡系统不该在极小压差下持续大电流运行收益太低。我在逻辑里增加压差小于 0.3V 时进入低频小电流补能模式就是基于这个实测。温升最明显的地方是功率电感和 MP2642 底部。如果机箱有自然对流1A 长时均衡后局部温度会到 55℃~60℃2A 时直接奔着 85℃ 去这已经逼近器件规格上限。所以散热设计应该以 1A 为基准如果系统想跑更大电流必须补强制风冷或者降低环境温度指标。电感选型上DCR 每降低 10mΩ1A 电流下就能少 10mW 损耗听着不多但积少成多。我最后用了铁硅铝磁环绕制电感发热比普通功率电感小得多饱和特性也更好。5.4 扩展到更多节串联的思路两节只是这套方案的最小闭环。四节串联时可以有两种扩展方向要么每两节相邻电池之间放一个同样的半桥均衡器形成链式结构要么做一个集中式母线用多个开关矩阵把任意一节电池的正极接入功率级MCU 统一仲裁。链式结构优点是不需要高压开关矩阵控制逻辑可以复用现有状态机缺点是非相邻单元之间要靠中间单元中转均衡速度略有损失。矩阵方案速度快但 MOSFET 数量、驱动电路和故障保护都要复杂很多适合电池节数更多的储能机柜。我建议先在两节样板上把所有异常状态处理明白再往四节扩充。因为均衡器真正难的不是正常搬运而是异常时不出事。两节时都很难靠仿真覆盖全部边界多节之后状态爆炸更需要成熟的状态机和保护逻辑。以太网部分在扩展后价值更明显。每个均衡模块上报自己的电压和电流集中监控后台可以看到整组电池的健康度曲线。将来做电池更换决策时这些数据比任何出厂报告都可靠。
阅读完成 · 觉得有帮助?
咨询建站