
做 2S 电池备电模组时很多人觉得只有 8 串、16 串的大电池包才需要均衡两节电池串联的差异能有多大我最初也这么想结果在某个备电系统联调时被现实教育了一回两节全新电芯静置一个月后压差直接拉到 70mV充电阶段高节先到截止电压整组被保护板按上限截停可用容量少跑了 1/3。后来我用 MP2642GR-Z 搭配 STM32F217ZG 给这两节串联电池单元做了主动均衡把压差稳定收敛到几毫伏以内。这篇文章不绕弯子把芯片均衡的原理、主控侧的采样与控制链路、判据和策略、实测数据和调试坑一次说清楚想在储能或备用电源系统里做 2S 均衡的朋友可以直接拿这套思路去搭。1. 为什么两节串联电池也躲不开均衡问题1.1 电池配对再准也挡不住老化层面的分化电池出厂时可以做容量、内阻、自放电率的多项筛选同一批次的两节电芯初始差异可能只有百分之几。但这个“出厂目标”只是起点不是终点。锂电池的容量衰减速度与温度、放电深度、充放电倍率强相关串联回路里电流完全一样散热条件却可能完全不同靠壳体的那节温度高衰减就快靠内部的那节温度低容量保持率就好。几十个循环之后两节电池的实际可用容量就不再对等。更麻烦的是自放电。同一批电芯的自放电率即使只差 0.5%/月静置两个月后 SOC 也会拉开 1 个百分点以上。对单体电压来说这个差异在 SOC 中部可能只有十几或几十毫伏一旦到了充电末端电压曲线变陡同一个小 SOC 差异会被放大成几百毫伏的压差这就是 2S 系统里最典型的失衡路径。1.2 储能和备用电源场景会把失衡问题放大储能和备用电源另一个特殊性是“长期浮充、偶尔放电”。备用电源平时挂在直流母线上做浮充负载波动很小均衡动作往往只在充电后期触发储能调度则可能是低谷充电、高峰放电一充一放之间缺乏足够的静置观测时间。相比持续充放电的消费电子电池这种场景给失衡的累积留了更长的窗口。加上电池堆天然存在温度梯度靠近发热元件的那节电芯老化速度明显快于另一节。也就是说同一个电池组里两节电池从“很接近”到“明显失配”只是时间问题。设计的时候不预留均衡能力后面就会频繁碰到单节保护触发。1.3 失衡失控的后果过充、容量缩水与保护误动失衡的收益是隐性的后果是延迟的所以容易被忽略。真正失控时问题会集中暴露高节过充锂离子电池在充电末端继续被灌电流电压超过安全上限轻则加速老化重则热失控。低节过放低容量那一节先到放空电压系统 SOC 显示还有余电实际已经低于工作下限。保护板误动作BMS 按最高单体电压或最低单体电压做保护判断一节提前到限整组被截断。失衡现象根因后果充电时高节先到 4.2V容量失配或自放电差异大充电提前终止容量充不满放电时低节先到 3.0V低节容量衰减快放电提前截止负载掉电静置时压差缓慢增大自放电率不一致长期搁置后无法使用浮充时反复触发保护末端电压差异被放大系统频繁启停可靠性下降所以两节电池串联均衡不是可选项是维持容量、延长寿命、减少保护误动作的必要功能。2. MP2642GR-Z 的能量搬移内核与外围设计2.1 从电阻放热到能量转移均衡效率的质变被动均衡的本质是把高电压单元多出来的能量通过电阻变成热量。简单可靠但在 2S 后备电源这类小系统里问题很明显均衡电流一大于数百 mA发热就很可观而且能量是白白扔掉的。主动均衡的思路则相反——不把能量往空气里扔而是把高节电池多出来的电荷搬到低节电池里。两节串联电池的系统里这更像一种“削峰填谷”。MP2642GR-Z 这类集成芯片把功率开关、驱动逻辑和保护逻辑做在了一颗器件里。板级设计时只需要在电池之间放置储能电感和少量采样、滤波器件芯片按内部状态机切换开关就能完成单元间双向能量搬移。相比用分立 MOS 自己搭集成方案的死区控制、短路保护、驱动电压都已经被处理过第一版跑通概率高很多。2.2 电感型方案的对外接口与关键器件选取按最常见的电感型双向均衡拓扑理解就可以高节电池先对电感储能电感再把能量释放到低节电池反之亦然。这个动作以固定频率循环均衡电流大小由开关占空比和电感参数决定。设计时我重点关注三件事电感饱和电流、DCR、布板位置。器件推荐取值原因功率电感饱和电流 ≥ 1.5~2 倍峰值均衡电流DCR 低于 50mΩ防止饱和导致电流失控低 DCR 降低损耗和温升输入/输出电容低 ESR 陶瓷电容10~47μF吸收开关纹波必须靠近芯片引脚放置采样电阻精度 ≥ 1%温漂尽量小影响均衡电流的闭环精度散热铺铜芯片底部大面积接地铜皮加过孔阵列均衡时芯片和电感都发热散热决定持续均衡能力不要把均衡电流调得过高。MP2642GR-Z 这类器件的极限参数固然重要但系统层面还要看电池能否长时间承受这个电流的热效应。对常见的 18650 电芯0.5A~0.8A 是比较舒服的工作区间。需要更大电流时应该优先确认电芯规格和散热方案而不是只看芯片标称。2.3 为什么均衡本体和主控必须是两颗芯片为什么不让均衡芯片自己做决策非要加一颗 STM32F217ZG因为功率器件擅长处理“怎么搬”主控擅长处理“什么时候搬、搬多少、搬多久”。纯硬件均衡电路用固定的电压阈值无法根据充放电状态动态调整也看不到均衡效果的历史数据MCU 的存在让阈值、时长、方向都成为可配置项出问题还能回传分析。STM32F217ZG 外设充足ADC、UART、GPIO 都有成本也不算高做 2S 均衡主控完全够用。3. STM32F217ZG 在均衡系统里到底干什么3.1 单体电压采样链路精度和共模电压都要解决2S 系统总电压最高在 8.4V 左右而 STM32F217ZG 的 ADC 输入范围是 0~3.3V。直接把电池端电压接进 ADC 肯定不行。正确的做法是先把单体电压转换成 MCU 参考地附近的小信号。工程上最常用差分运放运放正输入端接高边电池正极负输入端接串联中点输出直接进 ADC。这样采样的是真正的单体电压共模干扰也能被抑制。电压换算关系可以写成Vcell (adc_code / 4096) × Vref × DIV_GAIN其中 DIV_GAIN 是采样链路的衰减或放大倍率。12 位 ADC 在 Vref3.3V 时理论分辨率约 0.8mV但实际会因为地线噪声、运放失调和参考源漂移被拉低所以代码里一定要做多次采样平均或者做一点简单的中值滤波。我一般用 16 次采样取平均控制循环跑在 10Hz既不会让 MCU 忙不过来也能滤掉大部分开关噪声。3.2 均衡控制状态机从采样到使能的一小段代码主控侧的逻辑说出来并不复杂就是“测量压差、超过阈值就开启均衡、收敛后停止”。难点在于不能因为噪声误触发也不能在阈值边缘反复切换。我给出一段状态机示例适合放到 10Hz 的控制循环里调用typedef enum { BAL_IDLE 0, BAL_TRANSFER, BAL_PAUSE } bal_state_t; static bal_state_t bal_state BAL_IDLE; static uint16_t pause_cnt 0; void balance_loop_10hz(void) { uint16_t adc1, adc2; float v1, v2, delta; adc1 adc_read_average(ADC_CH_CELL1); adc2 adc_read_average(ADC_CH_CELL2); v1 adc_to_cell_voltage(adc1); v2 adc_to_cell_voltage(adc2); delta (v1 v2) ? (v1 - v2) : (v2 - v1); switch (bal_state) { case BAL_IDLE: if (delta 20.0f) { bal_state BAL_TRANSFER; mp2642_enable(1); } break; case BAL_TRANSFER: if (delta 10.0f || balance_timeout_flag) { mp2642_enable(0); balance_timeout_flag 0; bal_state BAL_PAUSE; pause_cnt 300; /* 暂停30秒避免频繁切换 */ } break; case BAL_PAUSE: if (pause_cnt 0) { pause_cnt--; } else { bal_state BAL_IDLE; } break; } }这套状态机的核心思想很简单压差超过 20mV 才启动均衡收敛到 10mV 就停停完强制休息 30 秒再重新评估。20mV 到 10mV 之间的 10mV 就是滞回带比系统实测噪声大所以不会在阈值边缘反复跳变。实际项目的阈值要按电芯类型和系统噪声重新标定不要照抄。3.3 故障保护与通信上报主控不能只管均衡MCU 除了控制均衡还要承担故障保护。比如 NTC 采集均衡器件温度超过 70℃ 就暂停均衡给均衡动作做计时超过 2 小时仍没有收敛就退出并上报异常还要有独立的看门狗防止程序跑飞后均衡一直开着。串口或 CAN 上报内容至少有两节单体电压、当前压差、均衡状态、累计均衡时长。这些数据后续还可以喂给上位机做容量估算和健康度分析。4. 均衡策略收敛、滞回与防震荡4.1 触发阈值不是拍脑袋定的阈值定多少取决于三个因素采样噪声、电池搁置电压特性、均衡电流。如果采样链路的峰峰噪声有 5mV那启动阈值 20mV 就合理停止阈值 10mV滞回区间至少大于噪声两倍如果噪声都有 30mV那 20mV 阈值必然误触发。下面这组数据只是示例实际要按你自己的硬件重新标定采样噪声推荐启动阈值推荐停止阈值≤ 3mV15mV5mV≤ 10mV25mV10mV≤ 30mV60mV20mV总的原则启动阈值要显著大于噪声停止阈值要留出滞回空间宁可晚启动、早停止也不要反复抖动。均衡本身是一个慢过程早几分钟启动和晚几分钟启动对最终效果影响不大但误触发带来的振荡会让人很难调试。4.2 收敛过程的时间管理和换向逻辑均衡是慢变量。以 2Ah 电芯为例若两节 SOC 相差 2%需要转移的电荷大约是 40mAh。用 0.5A 均衡电流去补理论耗时约 8 分钟但电压曲线在中部平缓、末端陡峭实际收敛时间会长一些通常要按几十分钟到数小时来设计。所以固件里要有最大均衡时长上限并且允许在充电、放电、静置三态下采用不同的均衡时段。另外要明确方向。电路具备双向能力但控制逻辑不是每次都从高节往低节搬就行而要避免“搬过头”。处理办法是每次均衡启动前重新判断高低方向均衡过程中若方向反转先进入暂停状态重新采样确认后再继续不要在几分钟内反复翻转。4.3 充放电状态联动避免“越均衡越乱”充电末期和静置状态是最值得做均衡的两个窗口。放电状态下低节电压本来就会被负载拉低此时开均衡容易把判断搞乱充电状态下压差放大是因为高节 SOC 更快进入陡峭区此时启动均衡能防止单节提前过充。如果系统里有充电器和负载的通断信号把这几路状态引到 STM32策略就可以做得更细只有充电或静置时才允许均衡放电时强制暂停。这样能避免一边放电一边反向搬移的无效动作也更符合储能备电系统的实际使用习惯。5. 实测数据与调试时踩过的坑5.1 一套简单可信的测试平台我搭的测试平台很简单两节 18650 串联人为把两节充成不同 SOC 做出约 70mV 压差均衡板用 MP2642GR-Z主控用 STM32F217ZG串口每 5 秒打印一次两节电压和均衡状态负载和充电器都不接只观察静置压差收敛。测试环境温度约 25℃均衡电流设置在 0.5A。5.2 典型测试数据从 70mV 压差收敛到 5mV 以内时间V1V2压差t03.652V3.581V71mV30min3.641V3.597V44mV60min3.633V3.609V24mV90min3.627V3.616V11mV120min3.621V3.619V2mV前 60 分钟压差从 71mV 降到 24mV收敛速度很快后 60 分钟只从 24mV 收敛到 2mV。这符合主动均衡的物理规律压差越大转移电流越大压差越小转移电流越小。没必要追求 0mV 完全一致能稳定在 5mV 以内对 2S 备电系统已经足够。5.3 采样地线毛刺导致的均衡误判这个坑最值得展开。初版样机上ADC 读数在均衡动作时会跳动 20~30mV均衡状态在 IDLE 和 TRANSFER 之间不停切换。用示波器看采样点波形发现高节采样线靠近电感功率节点开关噪声直接耦合进了信号地高边采样走线又过长像天线一样把噪声接进来。处理办法是分三步采样点从电池极柱独立拉线不经过任何功率电流路径高边和低边采样差分走线紧贴在一起ADC 入口加 RC 低通1kΩ 配 100nF 截止频率约 1.6kHz。软件再补一层 16 次平均。改完之后噪声降到 3mV 以内误触发彻底消失。硬件上先解决软件滤波只能做补救。5.4 温升、低功耗与看门狗的其他提醒问题现象根因处理电感发热均衡 20 分钟后电感温度接近 85℃均衡电流 0.8A电感 DCR 偏高电流降到 0.5A换低 DCR 大线径电感均衡 15 分钟后暂停散热 1 分钟均衡反复中断串口记录显示均衡启动后很快退出看门狗复位后状态机回到 IDLE使能被关复位后重新评估压差按需恢复均衡或让 MCU 在均衡暂停阶段再进入低功耗电压读数跳变静置时压差偶尔冲到几十 mV采样端接触不良或线束松动检查连接器压接工艺采样线用镀金端子并点胶固定低功耗尤其容易踩。很多备电系统要求主控空闲时进 sleep但如果你在 sleep 前把均衡使能脚释放了或者看门狗复位后状态没有恢复均衡就会悄悄停掉。我的建议是sleep 前不关闭均衡设备供电只关闭非必要外设复位后由状态机自己判断当前压差是否需要恢复比在 main 函数里写死更稳。6. 这套双芯方案还能怎么扩展6.1 从 2S 到更多串均衡主体和主控的分工优势2S 只是最小的串联模型。如果以后要扩展到 4S、6S可以每个相邻单元对用一个 MP2642GR-Z多颗均衡芯片之间需要按顺序调度避免同时动作互相抢电流。STM32F217ZG 有多组 ADC 和多路 GPIO扩展并不难但多串系统里单体电压采样的共模问题会更突出我建议此时引入专门的电池监测 AFE 做采集均衡功率部分继续交给均衡芯片主控统一调度策略。这个分工在架构上是干净的采样归采样功率归功率策略归策略。6.2 均衡数据回传与管理策略融合每次均衡的数据都可以存下来启动压差、结束压差、均衡时长、累计工作时间。这些数据积累起来以后能非常直观地反映电芯的健康趋势。比如某节电芯每次均衡都需要更长时间说明它的自放电或容量衰减已经加速可以提前预警更换。这部分逻辑不复杂关键是采样和记录要做好别等出了问题才去找数据。STM32F217ZG 自带的片内 Flash 或外部 EEPROM 都够用定时写一次磨损很小。6.3 我保留的一点个人取舍最后说点个人体会。用 MP2642GR-Z 加 STM32F217ZG 做均衡比直接用带均衡功能的 AFE 芯片方案多花了一点开发和调试时间但换来的可控性很值得——阈值、策略、数据记录全都是自己的出问题也能定位到具体环节。而且这套架构在 2S 备电这种小系统里没有太多冗余成本。我现在做类似小系统时还是会先按这个双芯思路搭原型跑出数据再决定要不要替换成集成度更高的方案。均衡这件事方案选型重要但真正决定成败的还是采样精度和控制策略这两块扎实了后面换什么芯片都不慌。