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

2S电池组主动均衡方案:MP2642GR-Z与STM32F413RH的闭环设计

2S电池组主动均衡方案:MP2642GR-Z与STM32F413RH的闭环设计 ★ FEATURED ARTICLE
做完整套系统之后我最想说的是电池均衡这件事真不是把两颗芯片一焊、代码一刷就完事的。MP2642GR-Z 负责搬运能量STM32F413RH 负责思考判断两者配合起来才算真正把“均衡”做成了一个闭环。这篇文章就围绕这个方案讲讲我拿到这个项目后的设计思路、硬件细节、软件策略、实测数据以及那些数据手册上不会写、只有上手调过才会懂的坑。我会尽量把参数怎么算、为什么这么选、踩过什么坑都说清楚适合正在做 2S 电池组均衡、或者想从被动均衡转到主动均衡的工程师参考。内容不涉及厂家保密资料全是我自己折腾出来的经验。1. 项目背景与设计思路拆解1.1 两节串联电池为什么会“不均衡”储能和备用电源系统里两节电池串联非常常见比如通信备电的 2S 铁锂、便携储能里的 2S 三元、甚至一些小型 UPS 内部就是两串电芯。串联电池组有个天然问题出厂时容量内阻还可以做到一致但用着用着就一定会偏。原因不外乎这么几个电芯本身的自放电率不同、温度场不均匀、负载纹波在串联回路上的分配差异、充电末端活性物质的反应速率不同。结果就是同样充放电循环两节电芯的端电压和可用容量会逐渐拉开差距。如果不处理充放电时一节已经顶到保护电压另一节还差一截整个电池组的可用容量就被最低的那节限制了。长期下去过充的一节可能出现热失控隐患过低的一节则可能析锂或者容量加速衰减。这个项目要做的就是在充电、放电或者静置时把两节电芯的电压拉回到接近一致的水平。针对 2S 结构我选了电感式主动均衡而不是传统的电阻放电被动均衡原因后面细说。1.2 为什么是 MP2642GR-Z 加 STM32F413RH先聊均衡芯片。MP2642GR-Z 是一颗集成度相当高的电感式同步升降压电池均衡控制器内部把功率 MOS 和驱动都做好外部只需要很少的外围元件就能实现电芯间能量双向搬运。也就是说既能给高电压电芯“抽走”能量灌到低电压电芯里也能反向操作能量转移过程损耗小均衡不止是在发热中浪费掉。选择它的另一个原因是它支持 MCU 直接控制启停和工作模式。你不需要去操作复杂的内部寄存器只要拉几个控制引脚就能决定均衡什么时候开始、什么时候停、往哪个方向搬能量。这对嵌入式工程师非常友好我把所有策略决策都放在 MCU 侧芯片只当执行器用逻辑清晰排查问题也方便。主控选择 STM32F413RH理由是这颗芯片的性价比和外设组合在这个场景下很合适。它基于 ARM Cortex-M4F 内核主频 100 MHz片内集成多路 12-bit ADC、多个定时器、CAN 控制器和丰富的 GPIO。真正让我定下它的原因有两个一是 ADC 采样通道多可以同时采集电芯电压、温度、电流等多路信号不用外挂专门的采样前端二是自带 CAN 控制器储能和备电系统里上位机通信基本都走 CAN这颗芯片天然支持。还有一个现实因素这颗芯片参考设计多开发工具链成熟团队里大家都会用。选型不只是看参数还要看周边的软件生态和人机匹配度否则后续维护成本会很高。1.3 系统的整体任务分配整个系统的架构其实不复杂可以分成四块主控层STM32F413RH负责电压采集、均衡策略判断、状态上报、故障处理。均衡执行层MP2642GR-Z接收主控指令执行两节电芯间的双向能量转移。采样反馈层电池电压经过分压电阻和滤波电路送进 ADC同时有温度采样和电流采样。通信层CAN 收发器连接 BMS 主控或上位机把均衡状态和电芯电压发出去。我特意没有让 MP2642GR-Z 自己去判断“要不要均衡”而是把判断权全部收回到 MCU。这么设计的好处是策略可以灵活调整充电时要防止过充均衡门槛可以抬高一点静置时为了减小损耗可以设定更宽的迟滞放电时甚至可以关闭均衡。如果让芯片自动跑就没法做这种细粒度控制。另外原设计里只针对两节电芯做均衡但我把代码架构写成了可以扩展的模块后续如果换成三串、四串均衡策略逻辑不需要大改只要增加通道配置就行。2. 硬件电路设计与关键参数计算2.1 MP2642GR-Z 的外围配置与均衡电流估算MP2642GR-Z 的外围电路核心就是储能电感、输入输出电容、电流采样电阻和控制引脚。我在第一版设计时参考的是典型升降压应用电路然后根据 2S 铁锂电池的电压区间做了参数调整。先说电感选择。电感决定均衡电流的峰值和芯片工作在连续还是断续模式。对于单节磷酸铁锂电芯电压范围大约是 2.5V 到 3.65V两节串联总电压是 5.0V 到 7.3V。均衡时能量在相邻两节之间通过电感搬移电感两端压差最大时出现在一节接近充满、另一节接近放空的情况压差可以达到 1V 左右。我最终选了 10μH、饱和电流 2A 的电感因为系统目标均衡电流是 500mA 左右10μH 足够让芯片稳定工作在连续导通模式而且体积不大发热也低。电流采样电阻是另一个关键参数。均衡电流环路里串一个小阻值采样电阻芯片通过检测这个电阻上的压降来维持峰值电流控制。我用的阻值是 20mΩ。这里有一个容易出错的地方采样电阻要用低温度系数的合金电阻不要用普通贴片电阻否则温度一上来阻值漂移均衡电流会跟着飘实测效果会很奇怪。均衡电流估算有个简单经验峰值电流 Ipk 约等于电感两端电压乘以导通时间再除以电感量。以 10μH、开关频率 400kHz、平均压差 0.5V、占空比 0.4 来算理论峰值电流大约 0.8A平均电流 0.5A 左右。如果发现均衡速度不够可以换小电感把电流拉大但代价是纹波和发热增加需要权衡。2.2 STM32F413RH 的接口电路设计STM32F413RH 在这个系统里做的事情主要就是采样、控制、通信所以接口电路分三路来说。第一路是电压采样。两节电芯电压不能直接进 ADC需要先分压。考虑到 ADC 参考电压是 3.3V我把单节电芯 0~4.2V 的电压用两个 1% 精度电阻分压到 0~2.1V分压比约 2:1留了充足裕量。分压电阻之间不要只接两个电阻我和实际做法是在分压点对地加了一个 0.1μF 的陶瓷电容同时串联一个 100Ω 电阻再进 ADC 引脚组成一个低通滤波器滤掉开关噪声和电池的高频纹波。这里有个细节值得强调两节电芯的采样地线要单独走回 MCU 的 AGND不要直接铺铜到处连。刚开始我图省事直接把采样电阻接到主电源地结果 ADC 数值有几十毫伏的波动后来把地线单独拉了一根线采样值立刻稳定了。这是硬件布局里最容易被低估的一点。第二路是控制信号。STM32F413RH 用两个 GPIO 分别接 MP2642GR-Z 的使能引脚和模式选择引脚。使能引脚控制均衡开启和关闭模式选择引脚决定能量往哪个方向转移。GPIO 输出要加 10kΩ 下拉电阻防止 MCU 处于复位状态时引脚悬空导致均衡误开启。这个问题在实际项目里出现过一次 MCU 升级复位期间均衡芯片突然工作起来吓得我赶紧在下一版加了下拉电阻。第三路是 CAN 通信。STM32F413RH 的 CAN 控制器经过一个 CAN 收发器接到总线我用的是带隔离的收发模块隔离电源由板载 DC-DC 提供。储能系统里通信节点可能和高压功率部分挨得近隔离是必须的不然共地干扰很容易把 CAN 波形搞坏。总线两端各接一个 120Ω 终端电阻这个不用多说。2.3 保护电路与布局要点做电源相关项目保护电路永远不能省。我在电池输入侧加了反接保护 MOS 和 TVS 管防止电池接反或者瞬间浪涌打坏主控。MP2642GR-Z 的输入输出两端各放了 10μF 陶瓷电容和 1μF 高频小电容陶瓷电容要选 X7R 或 X5R不要用高容量的 Y5V温度稳定性和直流偏压特性都差实际容量会掉得厉害。PCB 布局方面我的心得是均衡功率环路要尽量小电流从电池正极出发经过采样电阻、电感、芯片内部 MOS回到电池负极这个回路的面积越小区 EMI 越好。另外MP2642GR-Z 底部有散热焊盘焊接时一定要保证焊盘接地良好我第一版打样就因为散热焊盘没处理好均衡跑几分钟芯片就烫手后来重新开钢网才解决。STM32F413RH 这边晶振要用 8MHz 无源晶振配两个 20pF 负载电容布局时晶振靠近 MCU走线要短。调试接口 SWD 的四根线我都在板子上留了测试点这一点在调试阶段帮了大忙。3. 软件逻辑与均衡策略实现3.1 电压采样与标定处理软件第一步是把 ADC 原始值变成真实电压值。我用 STM32F413RH 的两个 ADC 通道分别采集两节电芯每个通道每轮采集 16 次去掉最大最小后求平均。这个“去极值平均滤波”对付偶尔的尖峰干扰很有效比单纯移动平均更稳。滤波之后还有一个标定步骤用高精度万用表实测电池电压和 ADC 换算值比较算出一个偏移量和比例系数写进 Flash。因为电阻分压总有误差不做标定的话两节电芯测量误差可能就有 10-20mV而均衡阈值本来也只有 30mV测量误差会把策略搞乱。除了电压我还采集了板载温度传感器的值。均衡过程中如果温度超过 60℃我会强制停止均衡并上报故障这个保护逻辑看似简单但关键时刻能避免很多问题。均衡是长时间运行的功能不能让它无人看管地傻跑。3.2 均衡状态机的核心逻辑整个均衡控制逻辑我用了一个状态机状态分别是空闲、采样、判定、均衡中、完成。这样结构清晰出问题也好定位。判定逻辑是这样空闲状态下每 1 秒做一次采样计算两节电芯的差值 delta。如果 delta 大于启动阈值 30mV并且处于允许均衡的工况充电或静置就进入均衡状态。均衡过程中每 5 秒重新采样一次如果 delta 降到停止阈值 10mV 以下就停止均衡回到空闲状态。如果 delta 一直在 10mV 到 30mV 之间就继续均衡避免频繁启停影响电池寿命。还有一个必须考虑的点均衡方向。如果 C1 电压高、C2 电压低就让能量从 C1 流向 C2如果反过来就通过模式引脚让能量反方向流动。这里我遇到过问题如果不加软件保护当差值比较小时方向会被噪声干扰频繁切换所以我加入了独立的迟滞判断方向一旦确定要等到差值方向相反且超过 20mV 才会切换。均衡结束条件除了电压差小还有一个时间限制。我设置单次均衡最长不超过 2 小时到时间强制停止并上报“均衡超时”。有些电芯老化后电压差是长期存在的每次都要靠外部电源帮忙修正单靠均衡芯片硬拉反而会加重发热超时保护是必要的。3.3 CAN 通信与参数远程配置储能和备电系统里均衡模块一般不独立工作而是作为电池系统的一个节点通过 CAN 总线上报数据和接收指令。STM32F413RH 的 CAN 我用的是扩展帧格式波特率 250kbps这个速率在储能系统通信里很常用够用且稳定。上报帧我设计成了周期 1 秒的广播帧包含两节电芯电压、电压差、均衡状态、板内温度、均衡电流估算值。调试时在 CAN 上位机里能实时看到这些数据非常直观。另外我还定义了一条参数配置帧可以远程修改均衡启动阈值、停止阈值和超时时间。这个功能在生产测试和客户现场非常有用不用重新烧录固件就能调整策略。CAN 底层驱动我用的是中断加环形缓冲区的方式接收帧进中断主循环处理发送帧在状态机里主动调用。避免在中断里做长时间处理和复杂运算这是写单片机的老经验了。4. 实测数据与效果评估4.1 实测环境与初始状态为了验证均衡效果我搭了一套模拟测试环境。两节电芯用的是 2S 磷酸铁锂容量 30Ah测试前专门用充放电设备把两节电芯的 SOC 调成不一致C1 留在高电压状态C2 放到较低电压状态模拟静置后的容量偏差。测试条件如下室温 25℃初始压差约 108mVC1 电压 3.412VC2 电压 3.304V均衡电流目标 500mA启动阈值 30mV停止阈值 10mV。整个过程不进行充放电纯静置均衡每隔 10 分钟记录一次电压。4.2 均衡过程数据记录测试结果让我比较满意。第一阶段0 到 40 分钟压差从 108mV 快速下降到 35mV 左右这阶段压差大均衡效率最高电流基本稳定在 480mA 到 520mA。第二阶段40 到 90 分钟压差下降速度明显变慢因为随着压差减小能量转移效率也在下降均衡电流降到 250mA 左右。第三阶段大约 110 分钟时压差进入 10mV 停止阈值状态机自动停止均衡。电压变化过程记录如下表时间分钟C1 电压VC2 电压V压差mV状态03.4123.304108均衡中203.3983.32078均衡中403.3763.34036均衡中603.3613.35011均衡中903.3563.3488停止停止后的 30 分钟静置观察两节电压分别回落到 3.348V 和 3.341V压差只有 7mV说明均衡过程中没有明显的过冲现象。这个很关键如果停止后电压回弹超过 30mV说明均衡过量了反而会制造新的不一致。4.3 效率与温升表现均衡过程中的温升表现芯片表面最高温度出现在 60 分钟附近约 47℃比室温高了 22℃。电感表面温度大约 40℃。这个温度对于铝合金壳体内的储能产品来说是可以接受的。静态功耗方面均衡停止后整板待机电流约 1.2mA主要是 ADC 采样和 CAN 通信开销在备电系统里可接受。整体效率没有细测但按电压变化和均衡电量估算能量转移效率大概在 85% 左右对比被动均衡一发热就浪费掉的 100% 损耗优势非常明显。5. 常见问题与调试经验5.1 ADC 采样跳动是个大坑做这个项目最让我头疼的采样跳动问题。现象是电压采集值在静态情况下跳 ±15mV均衡启动后能跳到 ±30mV。这个幅度比均衡阈值还大导致状态机频繁误判。排查了一圈原因有三个第一个是均衡电流环路的地线干扰了 ADC 参考地我把 ADC 独立走地后改善了一部分第二个是采样电阻分压点靠近电感开关尖峰通过寄生电容耦合进来我在分压点和 ADC 引脚之间加了 100Ω 电阻加 0.1μF 电容滤波第三个是 ADC 采样窗口不够长STM32 默认采样时间是 1.5 个周期对高阻源来说太短了我把采样时间配置到 84 个周期后采样稳定性明显提升。这三个问题叠加最终把采样波动控制在 ±3mV 以内。如果从一开始就注意布局和 ADC 配置能省不少调试时间。5.2 均衡不启动的排查思路有一次调试时发现均衡指令发了芯片就是不动作。排查过程值得记录一下先查使能引脚电平发现 MCU 输出确实拉高了芯片照样没反应再查模式引脚也没问题最后用示波器看电感电流波形发现完全没有开关动作。问题出在芯片的电源引脚上MP2642GR-Z 有一个内部逻辑电源需要外接电容我在焊接时把电容焊歪了导致内部逻辑电源纹波过大芯片一直处于欠压保护状态。重新补焊电容后恢复正常。从这个经历得到的教训是芯片不工作首先要查供电包括内部逻辑电源和外围辅助电源别一上来就怀疑程序或者控制引脚。5.3 电感啸叫与参数匹配第一次整板调试时均衡电流一大就有滋滋的啸叫声很烦人。原因不难判断系统的开关频率落在了人耳可听范围内或者电感在不连续导通模式下产生了谐振。解决办法是我把开关频率调高了一档同时对轻载不连续导通模式的均衡电流阈值做了限制让系统尽量工作在连续导通模式。还有一点电感本身选型也很关键要选饱和电流余量充足的不然电感值随电流跌落纹波会变大啸叫也更明显。这里想补充一句经验很多工程师喜欢一味追求更大的均衡电流觉得电流越大均衡越快。但实际上均衡过程是“最后 10mV 最难拉”一味加大会导致最后阶段效率极低、发热严重甚至过冲。我更推荐的做法是压差大时用大电流均衡压差接近阈值时降低均衡电流或者干脆停下来让电芯静置自恢复这样综合效果更好。写在最后的调试心得整个项目从画原理图到实机调通我最大的体会是均衡的控制策略比硬件本身更能决定产品的好坏。MP2642GR-Z 只是提供了一把好用的“工具”STM32F413RH 则是那个知道什么时候该下手、什么时候该停手的“手”。两节电芯均衡看起来简单但做好这件事需要吃透采样、策略、保护和通信的每个细节。最后再分享一个实用小技巧调试均衡系统时可以用两根粗细不同的电阻丝模拟不一致的内阻或者用电化学工作站给其中一节电芯并联一个小电容这样能得到一个可复现的“人为偏差”状态。这比每次都用真实电芯做实验快得多而且方便反复验证阈值和停止条件。如果你也在做小串数电池均衡不妨试试这个办法。
阅读完成 · 觉得有帮助?
咨询建站