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

两串磷酸铁锂主动均衡板设计:STM32F071与MP2642GR-Z实战

两串磷酸铁锂主动均衡板设计:STM32F071与MP2642GR-Z实战 ★ FEATURED ARTICLE
前阵子我做了块两串磷酸铁锂的从控均衡板主控选用 STM32F071VB均衡部分用了 MP2642GR-Z目标是放进一套储能和备用电源的电池模组里对两个串联电池单元做主动均衡。当时身边不少同事的第一反应是才两节电芯串几个电阻做被动均衡不就行了但真正在储能这种大容量、长时间运行、经常浮充的场景里跑过数据之后我确认这个想法是错的——两串恰恰是最容易出问题、也最容易被忽视的短板点。这篇文章不打算介绍那套“均衡把电压拉平”的刻板思路而是把我选这两颗料的原因、硬件设计取舍、软件状态机设计以及调试中踩过的四个值得记下来的坑完整拆开讲一遍。1. 两节电芯串联为什么也绕不开均衡1.1 短板效应在储能系统里被放大了两个电池串联容量受最差的一节限制这是串联电池的物理规律。假设电芯 A 容量 50Ah电芯 B 容量只有 48Ah那么充电时 B 会先到截止电压系统只能停止充电放电时 B 也先到欠压点系统又要停止放电。A 明明还能充一点、还能放一点但整个模组的工作窗口被 B 掐住了可用容量硬生生被拉到 48Ah损失了 4Ah折算下来是 8% 的可用电量。在手机电池或小容量工具电池里损失 8% 可能只表现为“续航短了一点”但在储能系统或者备用电源里这是安时数和瓦时数实实在在的减少。尤其是磷酸铁锂体系电压平台非常平坦SOC 从 20% 到 80% 可能电压只变化 200mV 左右电池制造过程中的微小差异就会被放大成明显的压差。另一个容易被忽略的情况是长期浮充备用电源系统经常处于“充满、浮充、几乎不放电”的状态两节电芯各自的自放电率、温度场甚至 PCB 布局温差都会导致 SOC 漂移时间一长压差就慢慢积累。前阵子我测过一组浮充半年的两串电池静态压差到了 180mV这就是很典型的“不均衡老化”信号。1.2 被动均衡放热 vs 主动均衡转移能量传统被动均衡的思路很直接给每节电芯并联一个电阻和放电 MOS电压高的电芯通过电阻把能量“烧”掉。做到 1A 均衡电流时一个 3.5V 的单节就是 3.5W 的热量放在密闭电池包里是个难题。而且储能电芯容量大需要搬运的能量动辄几十瓦时被动均衡把能量白白放掉效率低热问题突出。主动均衡的思路是“转移”而不是“消耗”。MP2642GR-Z 这类开关电容式电荷泵均衡芯片本质上是通过电容把高电压电芯的能量搬运到低电压电芯里。同样 1A 均衡电流被动均衡要耗散 3.5W 热主动均衡则把这部分能量变成了低压电芯的补充电荷整包能量没有损失。所以对储能和备用电源这类系统主动均衡不是锦上添花而是容量保持率和管理成本的刚需。1.3 先把“均衡目标”定义清楚最后对齐的是 SOC 而不是电压这里要特别说清楚一个容易误解的点均衡的目标不是让两节电芯的电压完全相等而是让它们的荷电状态SOC趋向一致。尤其磷酸铁锂这种电压平台极平的电芯开路电压差几毫伏可能对应的 SOC 差好几倍反过来 SOC 差 1% 可能电压上根本看不出来。所以盲目追求“压差等于零”没有意义反而会让均衡陷入频繁启停。我在设计状态机时把均衡判据设成了“静态压差大于一定阈值才启动压差回到更小阈值才停止”并且要求系统先进入静置状态再触发均衡。为什么必须静置因为放电或充电时两节电芯的内阻差异会导致动态压差这个压差是极化造成的搬一晚上能量也搬不平甚至会把高内阻电芯越搬越亏。先静置再均衡才是真正往 SOC 一致这个方向上走。2. MP2642GR-Z 是怎样在两节电芯之间搬运能量的2.1 开关电容电荷泵同一个电容反复“倒水”MP2642GR-Z 的核心是开关电容电荷泵简单理解就是让一个飞跨电容在两个电池之间反复“倒水”。第一个阶段芯片内部开关把电容并联在电压较高的电芯两端电容被充电电压升到该电芯电压第二个阶段开关切换电容改接到电压较低的电芯两端电荷释放到低压电芯里。这个切换频率很高每一轮搬运的电荷量大概是Q CFLY × (V_high - V_low)假设飞跨电容取 22μF压差 200mV切换频率 300kHz每个周期转移电荷约 4.4μC每秒搬运约 1.32A 的平均等效电流。也就是说压差越大单位周期搬运的电荷就越多均衡速度越快随着压差减小搬运量下降系统自然趋向平衡不会像被动均衡那样电压越低放得越慢还要硬烧。这个机制对于两串系统非常合适——一颗芯片直接跨接在两个电芯之间由芯片内部 MOS 开关阵列自动完成换相外部只需要按手册要求配置好飞跨电容和输入侧电容。我实际测试时发现在压差 150mV 的情况下都能稳定看到接近 1A 的搬运电流这已经足够应付大多数 50Ah 级的磷酸铁锂两串模组。如果想估算均衡时间可以简单这样算假设两节电芯容量 50AhSOC 差 5%相当于需要搬运约 2.5Ah 电荷。用 1A 均衡电流理论需要 2.5 小时左右。实际因为有效率和散热折减留出 3 到 4 小时的均衡窗口比较稳妥。2.2 飞跨电容和外围器件怎么选外围器件选型是这块板子最容易翻车的地方尤其是飞跨电容。我试过两类电容差别非常明显。第一类普通电解电容或高 ESR 的电容。用这类电容时均衡电流上不去实测只有 0.4A 左右芯片温度却升得很快原因很简单电容 ESR 吃掉了太多电压余量等效内阻把充电电流压了下来。第二类低 ESR 的 X7R 或 COG 多层陶瓷电容。换上去之后均衡电流立马回到 0.9A 以上芯片温升也明显下降。选电容时还要注意耐压两串磷酸铁锂总电压最高约 7.3V我最终选的是额定耐压 25V 的 X7R 陶瓷电容裕量充足ESR 又够低。除了飞跨电容输入侧并联一个 10μF 左右的电容做电荷池输出侧放一个 0.1μF 高频退耦电容这些用量都按照芯片手册推荐值来。其他注意点芯片引脚对应两个电池节点B、中间抽头、B- 三个点的连线面积要足够均衡电流毕竟是安培级的走线太细会引入额外压降和噪声直接影响搬运效率。2.3 均衡效率、发热与极限电流实测参数心里要有数做硬件设计最忌讳只看理想公式实际效率不是 100%。开关管的导通电阻、电容 ESR、PCB 铜箔电阻都会造成损耗这部分的能量最后变成芯片附近的热量。我在整块板子测试时测过一组数据工况均衡电流输入端功率电芯侧吸收功率估算效率压差 200mV0.95A约 1.5W约 1.3W85% 左右压差 50mV0.35A约 0.6W约 0.5W约 80%这些数据说明两件事第一均衡效率在中等负载下能做到 80% 以上比被动均衡的零效率强太多第二芯片附近始终会有瓦特级的热PCB 散热焊盘、过孔阵和铺铜都要给足不能因为均衡芯片看着小就忽视了散热设计。3. STM32F071VB 管的是“策略”而不是“搬运”3.1 为什么选 M0 内核 CAN算力刚好够通信跑得稳MP2642GR-Z 自己负责能量搬运而 STM32F071VB 的角色是做监控和策略管理读电压、读温度、判断是否允许均衡、把状态通过 CAN 上报给上级控制单元。为什么选这颗核心原因有三个它带 CAN 控制器可以直接在储能系统里和总控通信不用再外挂 SPI 转 CAN 模块它是 Cortex-M0 内核主频虽然只有 48MHz但处理两串均衡的采样、滤波和状态机绰绰有余它内置 128KB Flash 和 16KB RAM后续如果要扩展记录故障日志、存储校准参数也不会捉襟见肘。有些人会觉得主动均衡芯片都自己工作了还要 MCU 干什么真不是这样。芯片只是机械地搬运电荷它不知道电芯什么时候过压、什么时候过温、什么时候应该停止。例如磷酸铁锂单节上限 3.65V如果均衡芯片在电芯已经接近过压时还继续从高压侧抽电问题不大但如果它持续给低压侧充电而低压侧其实已经满了那就可能把电芯充过头。还有当系统正在大电流放电时均衡和放电电流重叠会给采样造成干扰。这些决策必须由更高层级的 MCU 来做芯片只负责执行。3.2 电压采集链路分压、基准与软件滤波STM32F071VB 的 ADC 是 12 位但实际的精度瓶颈往往不在 ADC 位数而在参考电压的稳定度和采样链路的噪声。我的做法是外部用一颗低温漂基准给 ADC 做参考不要直接依赖 MCU 内部 VREF 或电源电压否则温度一变整条采样曲线都飘。分压电阻上我选的是 1% 精度的金属膜电阻把单节最高 3.65V 分压到 ADC 输入范围内。分压比例约 1/4那么 3.65V 对应 0.9125V配合基准 3.0V 时 ADC 读数约 1246还有余量。这个分压网络必须用精密的等比值电阻两个单节的采样链路要尽量对称否则两个采样链路本身就带来几十毫伏的误差比电芯压差还大后面均衡判断就全乱了。软件上做了一组过采样和滑动滤波连续采 16 次去掉最高最低取平均。这样能把开关噪声大概率抑制掉。实测采样抖动控制在 ±3mV 左右满足 20mV 均衡阈值的判断需求。具体参数见表项目参数采样周期100ms过采样次数16分压电阻精度1%采样输入 RC100Ω 1μF均衡启动阈值静态压差 20mV 且持续 10s均衡停止阈值静态压差 10mV 或单体过压/欠压3.3 均衡状态机与保护逻辑的工程实现均衡策略的核心是一个简单但严谨的状态机状态包括空闲、均衡等待、均衡中、均衡暂停和故障保护。空闲状态下每 100ms 检查一次两节电芯的电压差、单节电压和温度只有两节电芯都处于正常电压区间、温度在 0℃ 到 45℃ 范围内并且系统处于静态或微小负载状态时才允许进入均衡等待。进入均衡等待后软件会启动一个 10s 的确认计时器。为什么要有这个确认时间因为瞬时扰动可能造成虚假启动。比如负载突然切换时电芯极化电压跳了几下虽然看起来压差超过 20mV但那不是真实的 SOC 差距等 10s 再看大概率自己就收敛了。确认之后MCU 通过控制均衡子板的使能端来启动 MP2642GR-Z。均衡进行中保护优先级最高。只要任一电芯电压超过 3.65V、低于 2.5V或者温度越限MCU 立即断开均衡使能并置一个故障标志上报 CAN。均衡结束条件不是电压差等于 0而是压差回落到 10mV 以下并持续一段时间。这样设计是为了避免均衡在“启动-停止-再启动”之间反复横跳既能完成 SOC 对齐又不会让系统总是在高功耗模式下空转。4. 从原理图到样机两串均衡子板的完整实现过程4.1 采样线与功率线分开开尔文接法在最前面这块板子我画第一版时栽了个跟头采样线直接就近接到了主功率回路上结果两个电芯的采样电压总是偏低而且负载越大偏低越多。原因很典型——功率回路走大电流时MOS 内阻和铜箔压降叠在采样点采样点离电芯端子越远误差越大。正确做法是采用开尔文接法功率长距离走线归功率走线采样线单独从电池端子的根部引出走细线到分压电阻中间不要和功率电流路径共用铜箔。采样线电流极小所以线上不会有什么压降测到的就是实实在在的电芯端电压。我的板子上把采样线出线点直接做到了端子排根部功率线则是另一条粗铺铜路径两路在电气上只在一个点汇合。调试时被这个细节救了很多次建议做 BMS 的人这个习惯一开始就养成。4.2 均衡子板与主控板的接口设计我把均衡子板和主控板做成两块分开的 PCB中间通过排针连接器对接。子板上的核心器件就是 MP2642GR-Z、飞跨电容、输入输出电容和一些保护器件主控板上放着 MCU、基准、CAN 收发器、LDO、采样电阻网络。这样的好处是均衡大电流路径独立调试时可以单独给子板供电做均衡实验主控板单独跑采样和通信逻辑方便排查问题。子板和主控板之间关键信号有一个均衡使能信号、一个故障输出信号、一个来自主控的 PWM 或单片机 IO 控制信号以及电源和地。这个接口的单片机侧最好加一个 10kΩ 下拉电阻防止主控板没上电时子板被误触发导致均衡常开。故障输出信号则当作备用保护通道即使主控死机子板自身检测到单芯过压也能拉断使能形成一道硬件兜底。4.3 PCB 布局里最容易翻车的三个位置总结我这版板子迭代下来的经验有五个位置值得反复检查。第一飞跨电容要尽量靠近 MP2642GR-Z 的电容引脚容量越大越要近。高频电荷泵的电流回路如果绕远了回路电感会把开关尖峰放大到很夸张的程度均衡效率下降不说EMI 也会麻烦。第二芯片底下要放散热过孔阵列焊盘上打通孔到底层铺铜。前面提到过瓦特级热量集中在芯片区域只靠顶层的铜皮是不够的。第三采样电阻的位置必须避开均衡大电流路径。我把采样分压电阻放在了板子靠边缘的位置离电荷泵的开关节点至少 10mm 以上中间有地线隔离走线。第四CAN 收发器和 MCU 之间的走线要尽量短终端电阻的位置按协议处理。第五两个电池的中间抽头作为整个系统电位参考点走线要粗、要稳因为均衡电荷转移的所有电流都会从这个点流过。4.4 充电、静置、放电三种场景下的实测表现板子调通后我在三种典型工况下分别做了实测结果挺有参考价值。场景初始压差均衡效果备注静置空载220mV约 2.5 小时后压差降到 25mV均衡效率最理想的窗口0.2C 放电中180mV压差先波动后缓慢缩小但速度慢动态压差干扰判断不建议长时间均衡充电末端170mV压差收敛很快但出现过压风险需要严格保护逻辑避免过冲实测显示静置场景是均衡的“黄金窗口”因为电池极化最小搬运电荷几乎全部转化为 SOC 对齐。充电末端虽然压差收敛快但单芯电压逼近 3.65V 上限此时均衡芯片理论上会从高压侧抽电给低压侧但如果低压侧也已经接近满电继续搬运就等于对整组“微过充”所以我最后选择在电压超过 3.55V 时先暂停均衡等浮充阶段再做处理。放电过程中则不建议启动均衡最好等系统切到空载或待机状态再启用这个结论也是实测跑出来的。5. 调试中踩过的四个坑每一个都值得记下来5.1 采样点放在 MOS 后面过压误报了一个星期第一版原理图我把采样点放在了反接保护 MOS 和低边 FET 的后面想着这样接线方便。结果一上电就发现静置时单体电压偏低约 80mV充电时偏低 20mV放电时偏低 120mV而且数值还会跟着负载电流抖动。当时我一度怀疑是电芯分容不准甚至换了一批电芯还是这样。后来静下心测各路压降才发现 MOS 通态电阻和铜箔电阻制造的压降全部落在了采样回路里。比如低边 MOS 导通电阻大约 8mΩ放电电流 10A 就产生了 80mV 压降全都算到了电芯头上。解决办法就是前面说的采样线重新改到电芯端子根部用开尔文接法避开功率路径。改完后校准精度立刻恢复正常。这里提醒一句不要相信 MOS 规格书上的导通电阻温度升高后电阻会涨到常温的一点几倍压降误差也跟着翻倍。5.2 被动均衡还在开着主动均衡越工作压差越大这是我调试中遇到的最诡异的问题主动均衡开通后压差先快速缩小然后反弹最终甚至比初始压差还大。查到最后发现是板上原有的被动均衡电路还在工作而且没有关闭。被动均衡电阻接在单节电池上会持续把高压芯的能量放掉。主动均衡把能量从高压芯搬到低压芯被动电路又同时把高压芯“额外烧掉”两个环节相互拉扯等于一套系统里有人灌水有人放水。最终低压芯被主动均衡充电高压芯被被动均衡放电压差反而被拉大。解决办法很直接确认主动均衡方案后把被动均衡电阻和 MOS 全部移除或者在逻辑上保证主动均衡工作时被动均衡 MOS 强制关闭。这种问题在改装项目里尤其容易遇到吃一堑长一智。5.3 均衡一启动ADC 就跳 ±15mV均衡功能开启后MCU 采到的电压开始剧烈跳动跳动幅度接近 15mV已经超过均衡阈值导致状态机疯了一样来回切换。用示波器看采样点能看到幅度几百毫伏的高频毛刺频率正好和电荷泵开关频率对上。这个噪声耦合进 ADC 分压网络我的解决组合拳是在 ADC 输入分压后加一级 RC 低通时间常数约 1ms软件上把采样的时间点特意安排在均衡开关周期中的“静默窗口”并且把采样优先级放在均衡启动指令执行之前先停一下均衡等 10ms 采样完成再恢复。这套组合下来采样抖动从 ±15mV 降到了 ±3mV状态机也稳定了。这类问题和布局有关如果发现 RC 滤不掉大概率是采样线把噪声带进来了记得回归开尔文接法并在采样线两侧包上地。5.4 CAN 总线在大电流脉冲时丢帧最后一个坑出现在整机联调均衡电流比较大的瞬间CAN 通信偶发错误帧严重时连续丢几帧。刚开始怀疑是波特率配错反复核对了寄存器没问题也怀疑过收发器质量问题换了两家的收发器仍然存在。排查到最后根源是开关噪声通过板内电源地平面灌进了 CAN 收发器再加上系统里有多个功率模块共地地弹效应导致总线差分电压畸变。解决思路有四个方向CAN 差分线两端加 120Ω 终端电阻保证总线阻抗匹配收发器的电源脚加磁珠和高频退耦电容把电流尖峰隔离在外数字地和大电流功率地在板内单点连接端子入口处加 TVS 和共模电感。做了这组整改后错误帧完全消失。这里提个容易被忽略的细节终端电阻只能加在总线最远两端如果多个节点都加了总线负载会被拉跨反而更容易出通信错误。如果后续项目要从两串扩展到 8 串、13 串甚至更高这套做法的思路可以平滑迁移以每两串为一个标准均衡单元每单元配一颗 MP2642GR-Z 或者对应型号的电荷泵芯片所有单元由 STM32F071VB 或同类带 CAN 的 MCU 协调管理。重点是把最小两串单元调稳采样、均衡、保护、通信这四条链路摸透了扩展起来基本上就是复制加上地址分配的事。我自己的体会是做电池管理系统不一定非要从顶层的复杂架构开始先吃透一个最小的串联单元比什么都强。
阅读完成 · 觉得有帮助?
咨询建站