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

两节串联锂电池主动均衡设计:从压差到BMS落地的完整实践

两节串联锂电池主动均衡设计:从压差到BMS落地的完整实践 ★ FEATURED ARTICLE
提到“两个串联电池”很多人第一反应是不就两节电芯吗电压不高、风险不大均衡是不是个伪需求我在一套家庭储能和备用电源双用途的电源模块上认真做了主动均衡之后可以负责任地说——起点恰恰是两串因为所有的失配问题都在这里开始而且两串均衡的架构一旦想清楚了往更多串扩展时才不会走弯路。这个项目用的核心器件是 MP2642GR-Z 和 STM32L073RZ前者负责把高电压电池的能量搬给低电压电池后者负责测量、判断、保护和策略切换整个系统完成之后两组电池的静置压差能从 70mV 以上稳定收窄到 10mV 以内。这篇分享适合三类人正在做 2S 锂电池保护或 BMS 的硬件工程师、想了解主动均衡算法怎么落地的嵌入式开发者以及被电池一致性折腾过、想从原理层面解决问题的人。文章不会只贴原理图重点讲清楚每一步为什么这么选、实际调试时哪里容易翻车。1. 为什么两个串联电池也需要主动均衡1.1 串联失配是物理问题不是制造问题串联电池组的失配根源在于“同一标号不代表同一实际”。哪怕出厂时电压一致、容量一致只要使用温度和老化路径不同两节电池的内阻、自放电率、可用容量就会逐渐拉开差距。当两个电池串联时放电电流完全相同但可放出的容量由容量低的那节决定充电电流也完全相同但电压爬升速度由内阻大、容量小的那节先触发终止。举例来说两节标称 2000mAh 的锂离子电池实际可用容量分别为 1950mAh 和 2050mAh。串联放电时容量小的先到截止电压系统被迫断电此时容量大的那节还剩不少能量。换句话说整个系统的可用容量不是平均值而是短板值。更麻烦的是如果保护板没有均衡功能长期反复让容量小的那节深度放电它的衰减又会加速失配会像滚雪球一样越来越大。充电侧同样致命。串联充电时容量小的那节电压上升更快可能先达到 4.2V 或 3.65V 的满充电压充电器为了保证安全必须停充或进入恒压容量大的那节就永远充不满。这就是为什么很多 2S 成品电池用几个月后“越来越不经用”——不是电池坏了是均衡缺失导致的容量锁死。1.2 被动均衡的代价和主动均衡的意义最常见的均衡方案是把高电压电池并联一个几十欧姆的电阻把多余能量烧掉。被动均衡的优点是电路极其简单但它的工作前提是“充电末端才动作”而且均衡电流很小只有几十到一两百毫安遇到压差大的电池组需要好几个小时才能拉平。另外所有被耗散的能量都变成热量集中在电芯旁边对电池的温升控制并不友好。主动均衡则完全不同。它通过功率变换电路把高电位电池的能量直接搬给低电位电池能量没有变成热量而是在组内重新分配。均衡电流可以做得比较大例如 0.5A 到 1A 甚至更高相同时间内的差分纠正幅度远大于被动方案。对于储能和备用电源场景主动均衡的价值还有一层这些系统经常长时间浮充或长期处于静置状态电池差异在浮充末期最明显如果能在每次充满后把各节都拉到接近满电系统的可用备电时间会明显提升。1.3 均衡不等于保护先分清角色这里要写清楚一个容易被混淆的点主动均衡解决的是“一致性”不解决“安全性”。过压、欠压、过流、短路这些保护仍然要由独立的保护逻辑或专用 IC 完成。我在这套系统里把功能切得很开保护动作由比较器和 MCU 的快速中断通道负责均衡模块只是在一个安全边界内做能量调度。两者角色一旦混淆很容易出现“均衡把低电压电池硬拉到满电结果过充保护也失效”的隐患。2. 系统硬件架构与器件选型思路2.1 MP2642GR-Z 在系统里到底承担什么角色这颗芯片是一颗同步整流降压转换器内部集成高侧和低侧功率管。很多人一听降压转换器第一反应是“做电源的”怎么会用在电池均衡上这就要从均衡的本质说起。串联电池均衡的本质是“把电压高的那节电池的一部分能量搬运到电压低的那节”。能量转移的方向是从高压节点到低压节点这个过程天然就是一个降压变换高电压电池作为输入源低电压电池作为输出负载。只要两节电池之间存在压差Buck 变换器就有正压差可以工作MP2642 这类同步 Buck 正好可以高效完成电压变换和能量搬运。选它的另一个原因是同步整流带来的高效率。均衡电流如果做到 500mA 到 1A非同步二极管整流方案的二极管损耗可能超过 0.3V 压降折算下来热量非常可观。同步整流结构在低压差时仍能保持高频开关下的低损耗加上需要加散热片和热仿真。项目里实测 500mA 均衡电流时功率级温升不到 10℃这对于放在电池包内部的模块来说是非常关键的优势。2.2 STM32L073RZ 为什么比普通 MCU 更合适电池均衡系统的核心工作不是搬能量而是“知道什么时候搬、搬多少、什么时候停”。这需要 MCU 有足够的模拟输入通道、稳定的 ADC 参考、以及能在电池组长期静置时保持低功耗的能力。STM32L073RZ 首先具备非常充足的 IO 和 ADC 通道12 位 ADC 可以用来同时测量两节电池电压、均衡电流、MOS 管温度等多个模拟量。其次它带有 DAC 输出这在均衡模块的电流设定里特别实用。可以用 DAC 输出一个参考电压配合外部比较器或运放构成一个可编程限流值MCU 根据均衡进度实时调整电流目标。它的另一个关键特性是超低功耗。备用电源系统有很多时间处于待机状态电池组既不充也不放此时 MCU 如果一直在全速跑待机功耗会把电池慢慢耗干。STM32L073RZ 在睡眠模式下可以保持 RTC 运行和低压检测微安级的待机电流对电池组几乎没有影响。再加上它还集成硬件 AES、多路 UART/I2C/SPI后续如果要做上位机通信或数据加密不需要额外加芯片。2.3 单变换器加通道切换用最少的功率器件解决双向均衡两个电池串联理论上有两种均衡方向电池 1 向电池 2 搬能量或者反过来。如果做两个独立的 DC-DC 变换器分别对应两个方向硬件成本和体积都会翻倍。我采用的方案是单变换器加通道切换核心思想是MP2642 降压模块本身是双向可用的它的输入侧和输出侧分别通过开关矩阵选择接到电压较高的那节电池和电压较低的那节电池。系统有 P、M、G 三个节点分别对应电池 1 正极、电池 1/电池 2 的中点、电池 2 负极。开关矩阵通过一组 P 沟道和 N 沟道 MOSFET 组成MCU 判断出哪节电池电压偏高后把较高电池的正负极接入 MP2642 输入侧把较低电池的正负极接到输出侧。由于 Buck 的输入电压始终大于输出电压能量自然从高压端流向低压端。这个架构最核心的优势是功率级只做一份一颗功率电感、一组功率 MOS、一套反馈网络控制逻辑全部由 MCU 统一调度。2S 场景的成本和体积都被压到最小而且后续扩展到多串时只需要增加通道开关和策略逻辑功率级可以原样复用。3. 硬件设计中的关键细节3.1 电压采样精度决定了均衡窗的宽度均衡系统对电压测量的要求比保护板更高。保护板只需要知道“有没有过压”而均衡系统需要分辨“两节电池差了 10mV 还是 50mV”这直接决定均衡是否开启、开启多久。我的采样电路采用一对高精度分压电阻把每节电池电压降到 ADC 可接受范围。电阻必须选 0.1% 精度、低温度系数的规格因为两节电池的分压比不一致会直接引入系统误差。比如电池 1 用 100k 和 30k 分压电池 2 用 99k 和 30k 分压即使真实电压完全相同ADC 读数也会差出几十 mV这是最常见的“假不均衡”来源。ADC 的参考电压同样关键。直接拿 MCU 的 VDD 当参考源是最省事的做法但 VDD 会随负载波动采样结果跟着漂。STM32L073RZ 内置的 VREFINT 通道可以用来校准 ADC我在软件里每 100 次采样就做一次参考电压修正实际效果是把测量噪声抑制到正负 2mV 以内。采样时机也需要讲究。均衡电流 500mA 时电池内阻和线路电阻上的压降会造成电压虚高或虚低。同一瞬间采样两节电压还不够必须在均衡关闭的“静默窗口”里采样或者采用多次采样、剔除最大值最小值后取平均的办法否则系统会把负载压降误判成电池真实电压差。3.2 通道开关矩阵与浮地问题最容易翻车的环节单变换器加通道切换听起来简单但实际画原理图时有一个非常隐蔽的工程问题MP2642 降压模块的地不是固定的系统 GND。当电池 1 向电池 2 搬能量时模块输入接 P 和 M输出接 M 和 G反过来电池 2 向电池 1 搬能量时输入接 M 和 G输出接 P 和 M。两种情况下模块的参考地一会儿是中点一会儿是系统 GND整个功率模块实际上是浮动的。如果 MP2642 的控制引脚直接由 MCU 驱动MCU 的地和浮动模块地之间存在电位差轻则采样混乱重则烧毁控制引脚。我的处理办法是所有送往浮地模块的控制信号全部经过数字隔离器件PWM 和使能信号在隔离器两侧做电平匹配让 MCU 看到的是一个普通的低电压逻辑信号而功率模块内部以自己所在电池的负极为参考地工作。这个方案的代价是增加两颗隔离芯片和一路隔离电源但对可靠性的提升是决定性的。如果没有隔离电源条件还有一条简化路线放弃 MCU 实时控制 MP2642 的方式改用模拟比较器在模块内部自动判断“输入侧电压高于输出侧多少毫伏”并自动开始均衡MCU 只通过隔离 IO 控制一个总的允许/禁止开关。这种做法控制精度低一些但能大幅降低浮地通信带来的风险。3.3 功率电感和输出电容的参数估算MP2642 的外围参数需要按均衡电流目标来计算。假设均衡电流定为 500mA开关频率取典型值 500kHz输入电压为电池 1 电压 3.8V输出电压为电池 2 电压 3.5V占空比约为 0.92电感纹波电流取输出电流的 30%也就是约 150mA。根据电感纹波公式 L (Vin - Vout) × D / (f × ΔI)带入数值计算得到 L 约为 (3.8-3.5)×0.92 / (500k×0.15) 3.7uH。实际选型时会取一个标称值 4.7uH留出足够余量。电感饱和电流需要大于最大均衡电流加纹波峰值也就是至少 1A 以上我选择的是饱和电流 1.8A 的功率电感保证满负荷工作时电感值不塌缩。输出电容主要承担滤波和吸收开关纹波22uF 的 X7R 电容加上一颗小容量的高频电容组合实测纹波控制在 20mV 以内。这里想特别提醒一点不要把均衡电流目标定得过大。均衡电流越大发热越集中而且电池在大电流均衡过程中的端电压会被极化效应干扰让“电压差”这个判据变得不可靠。500mA 对于 2S 系统中常见的 2Ah 到 5Ah 电池包已经够了。3.4 保护逻辑的硬件落点均衡系统虽然不做主保护但必须具备自己的安全兜底。我加了三层硬件保护第一层是每节电池独立的过压比较器一旦电压超过门限直接封锁均衡通道第二层是均衡电流采样电阻上的限流比较器电流超过设定值 1.2 倍时快关 PWM第三层是温度保护NTC 贴在功率电感和电池表面温度超过 60℃ 时软件降额或停机。这三层保护都不依赖 MCU 的正常运行状态。MCU 死机或者程序跑飞时第一层和第三层的硬件比较器仍然能切断功率路径这是电源系统设计中必须有的底线思维。4. 均衡算法与软件状态机4.1 状态机设计让系统永远知道自己在干什么软件核心是一个有限状态机包含空闲、采样、开启均衡、关闭均衡、故障保护五个状态。主循环跑通信和状态迁移定时器中断跑 ADC 采样和滤波。状态迁移条件全部带滞回避免临界点来回跳。空闲状态是系统的常态。此时 MCU 进入低功耗模式RTC 定时唤醒执行一次采样。采样完成后判断压差是否超过开启阈值如果超过且没有故障标志进入开启均衡状态输出开关矩阵的驱动信号并启动均衡计时器。均衡过程中每 100ms 检查一次压差和电流如果压差降到关闭阈值以下或者连续均衡时间超过设定上限则关闭功率路径回到空闲。故障保护状态是最高优先级。任何硬件比较器触发、任何软件检测到异常电压、温度或电流系统都会立即关闭均衡并记录故障原因。这个状态只能通过人工清除或断电复位不允许自动恢复因为自动复位可能掩盖潜在的安全问题。4.2 ADC 采样与滤波先让数据可信再谈算法我调试前期最大的烦恼不是算法而是 ADC 读数不稳定。均衡电流一开采样电压就跳。后来总结出一套有效的处理组合硬件上采样点加 RC 低通滤波时间常数约 1ms软件上每次采样连续采 16 次排序后去掉最高的 2 个和最低的 2 个剩下 12 次取平均。整个流程由定时器触发DMA 搬运数据CPU 在采样期间不被打断。滤波时间常数不能加大。电池电压本身变化很慢但均衡状态切换瞬间会有瞬态响应滤波过重会让系统响应迟钝均衡窗口被拖得很长。1ms 左右的时间常数是均衡场景下的折中值。4.3 均衡判据压差阈值、滞回和电流设定均衡判据最朴素也最可靠的是端电压差。充电末期端电压差能较准确反映 SOC 差静置状态时经过足够长时间恢复后的端电压差也有参考价值。开启阈值我设为 50mV关闭阈值设为 20mV中间留了 30mV 的滞回。这样做的原因是整机测量噪声和电池极化恢复叠加的误差约在 10mV 量级阈值如果设成 10mV系统很容易陷入频繁开断的振荡。均衡电流设定不是固定的。压差大时用 500mA 快速拉平压差缩小到 30mV 以下时把电流减半到 250mA防止过调。DAC 在这里发挥了作用MCU 用 DAC 输出电压控制限流比较器的参考点实现电流目标的软件可调整条链路没有使用数字电位器响应速度更快、成本更低。4.4 均衡时长与低功耗策略我一直认为无限制的均衡跟没有均衡一样糟糕。长时间均衡会让电池持续处于微循环状态对循环寿命的影响虽然小于深度充放但也没有必要。我设置了两个时间保护单次均衡最长 4 小时单日累计均衡最长 8 小时。达到上限后强制关闭并在 EEPROM 里记录一次均衡事件。低功耗策略依赖 STM32L073RZ 的 STOP 模式。设备静置时MCU 进入 STOP 模式RTC 每 30 秒唤醒一次执行一轮采样和判断没有均衡需求就继续休眠。实测整套系统在休眠状态下的功耗不到 10uA对于备用电源场景来说基本可以忽略。5. 调试实录我踩过的坑和排查方法5.1 通道切换瞬间的母线短路第一次上电测试我在切换均衡方向时没有做先断后合的处理结果 MOSFET 驱动信号在交叉时刻出现短暂重叠两节电池的 P 和 G 节点被同时导通形成母线直接短路。虽然只持续了几百纳秒功率器件还是冒了烟。解决方案是软件和硬件双保险软件上所有通道切换必须先关闭驱动等待 2us 死区再开启目标通道硬件上加了大电流通道的 RC 延迟防止 MCU 异常时驱动信号同时有效。5.2 采样电压跳动导致均衡误判均衡电流打开后电池端电压出现明显跳动ADC 读数最大偏差超过 30mV。排查过程从采样电阻布局开始发现采样回路和功率回路共用了一小段 PCB 走线电流流过时产生压降。把采样点改成独立的差分走线直接从电池端子和采样电阻两端引出不用电源平面问题大幅改善。5.3 功率电感啸叫某次调试时听到滋滋声频率在 3kHz 到 10kHz 之间非常刺耳。原因是 MP2642 的工作频率和 MCU 的采样频率产生了低频拍频电感在这个频率上激发机械共振。解决办法是固定开关频率不要让负载变化导致频率抖动同时在电感底部加了一小块泡棉减震声音基本消失。5.4 均衡开启后压差先变大再变小有时候均衡开始时压差不降反升最多能往上跳 20mV。这是因为大电流均衡让电池内部产生极化正在被充电的电池端电压虚高正在被放电的电池端电压虚低测量值反而扩大了。我把采样时刻挪到均衡关闭后的 50ms 静默窗口并用软启动方式让均衡电流从 0 逐步爬升到目标值压差跳变的问题就不再影响判断。5.5 常见问题速查表现象可能原因排查方法解决办法均衡不启动压差阈值设置过高或测量误差偏大用万用表复核电压查看 ADC 原始值校准分压电阻降低噪声均衡振荡频繁滞回窗口太窄记录开启关闭日志加大滞回范围均衡过程中压差变大极化效应叠加对比均衡静默时采样增加静默采样窗口MOS 管发热严重死区不足或栅极驱动太弱测量开关波形优化驱动电阻和死区待机电流过大MCU 未进入 STOP 模式测量各模块待机电流关闭外设时钟浮地通道通信乱跳隔离器件地电位异常检查隔离电源纹波改善隔离电源滤波6. 实测效果、扩展思路与长期使用体会6.1 实测数据参考整机调试完成后我做了几组验证实验。第一组是静置均衡测试两节电池经过不同条件老化后静置电压分别为 3.512V 和 3.438V压差 74mV。系统以 500mA 均衡电流工作30 分钟后压差降到 52mV90 分钟后降到 31mV约 2 小时 20 分钟后稳定在 12mV 左右继续均衡到 4 小时压差收窄到 8mV。增大均衡电流到 1A 不会显著改善最终收敛值因为电化学体系的极化效应限制了末端精度但会明显缩短前段拉平时间。第二组测试模拟充电场景以 0.5C 恒流充电到满电配合均衡功能的电池组比不均衡的电池组提前约 35 分钟完成充电且满电后两节电压最大差不超过 25mV。对备用电源来说这个差异直接对应备电时间的长短。6.2 从 2S 扩展到更多串这套架构的可扩展性比预想的更好。多串电池组可以按“两串为一个均衡单元”组织每个单元独立完成内部均衡单元之间通过 MCU 的通信接口协调。这样做的好处是功率级方案完全复用不需要重新设计高压侧的 DC-DC 拓扑。如果要往更高串数走需要在开关矩阵上增加通道数量并且在软件里把“两两比较”升级为“全组电压排序后按最大最小配对均衡”。MP2642 的功率级不用改STM32L073RZ 的 IO 数量够支撑 6 到 8 串的通道切换如果串数更多可以考虑换用 STM32L0 系列中引脚更多的型号。6.3 长期使用中积累的三条体会第一均衡参数不要追求极致。压差收敛到 10mV 以内已经足够优秀继续抠几个毫伏的精度会把系统推向噪声边缘得不偿失。第二均衡系统的可靠性取决于采样和保护的硬件基础算法再聪明也弥补不了采样噪声和地线设计的问题。第三均衡记录非常有用。我在 EEPROM 里保存了每次均衡的持续时间和压差变化曲线这些数据在系统售后排查时能清楚地告诉你是电池老化了还是均衡失效了对定位问题帮助极大。这个项目最后稳定运行在备用电源模块里待机功耗、均衡效率、保护响应都达到了预期。两串电池看似简单真正把主动均衡做扎实之后我对串联电池组的理解上了一个台阶后面再做 3 串以上的项目时这套架构可以直接平移升级这才是这个方案最有价值的地方。
阅读完成 · 觉得有帮助?
咨询建站