资讯详情

2S锂电池被动均衡实战:从硬件拓扑到均衡算法全解析

📅 2026/10/15 19:49:20 | 华诺云谱 👁 阅读
2S锂电池被动均衡实战:从硬件拓扑到均衡算法全解析
两节串联锂电的均衡听起来是个小问题。真上手做的时候才发现这个“小问题”能在一堆项目里把性能和寿命都拖下水。前阵子我处理一个2S结构的储能备用电源BMS两节全新电芯放在同一个电池包环境温度差不到3度跑了不到一个月压差就到了80mV以上充电恒压阶段随时可能触发过充保护。想省事就得在硬件上加均衡在软件上把均衡策略想清楚。这个项目最终采用的方案是MP2642GR-Z 做电池前端的信号采集和均衡驱动MK20DX128VFM5 这颗 Cortex-M4 单片机做控制大脑。整体是经典被动均衡路线两颗芯片各管一段实测效果很稳。这篇文章就把需求推导、硬件拓扑、软件算法、调试踩坑和解决办法都梳理一遍给同样在做2S储能或备用电源BMS的朋友一个可直接参考的方案。1. 两个串联电芯为什么需要均衡——需求与设计思路1.1 不均衡是怎么产生的先说结论电芯不均衡是必然的只是早晚问题。同批次电芯出厂时容量、内阻、自放电率不会完全一致一般容量离散在1%以内已经算不错了一旦装进电池包温度场不均匀会进一步放大这个差异。离发热源近的电芯温度高自放电速率更快长期下来两只电芯的荷电状态就会有肉眼可见的偏差。在备用电源这种长期浮充的场景里问题会更明显。两只电芯长期处于相同电压但自放电率不同就会有一只偏高、一只偏低下一次充电时高的那只先到满电恒压阶段整个系统都被它拖住另一只永远充不满。这个循环不打断压差就滚雪球最终结果是保护板经常误报过充整包容量下降严重时高压侧电芯加速老化甚至胀气。我实测过一组不均衡的参考板新电池装上去压差6mV50个循环后变成65mV再过50次循环到120mV。而另一组带均衡的样机经过同样的循环压差一直压在20mV以内。这个对比很直观地说明了一个问题均衡不是可选可不选的加分项而是2S系统长期稳定运行的必要条件。再说回场景本身。储能和备用电源系统有一个特点大部分时间挂在浮充或待机状态真正放电的时长占比很低。这种工况对均衡策略的要求和纯电动汽车不一样不需要追求大电流瞬时均衡更看重的是静置和浮充阶段的可靠性以及整个系统的低功耗表现。所以方案选型时重点是简单、稳定、够用。1.2 为什么选被动均衡主动均衡电感/变压器/电容效率高通过能量转移而不是耗散但2S这种小系统里主动均衡带来的成本、体积、控制复杂度全都过剩。两颗电芯之间的压差通常在几十mV量级典型失配能量也就是几百mWh被动均衡的电阻耗散完全能接受。成本上主动均衡需要一颗功率电感加上对应的电流控制电路占据的PCB面积几乎是被动方案的3到4倍可靠性也更难保证。被动均衡的思路很简单把电压偏高的电芯通过电阻放电直到它与另一节电芯趋近高出来的能量变成热。结构上每节电芯并联一个均衡电阻加一个MOS开关单片机决定什么时候合上哪一路开关。相比主动方案这种直接并联放电的拓扑有天然优势均衡MOS在关断状态下电阻回路是完全断开的不存在静态漏电路径系统休眠时不会白白耗电。设计指标我定的是这样参数取值设计理由均衡开启阈值50mV大多数情况压差低于此值时影响很小避免频繁开启均衡关闭阈值20mV加滞回区间防止MOS在阈值附近反复开关均衡电流30-50mA电阻功耗控制在0.25W量级兼顾均衡速度和热设计单次最长均衡时间2小时防止单节电芯异常导致均衡回路长时间发热最高允许均衡温度45℃避免均衡发热叠加环境温度加速电芯老化这些数值不是拍脑袋定的下面每一条都会有对应的解释。等你们自己调试完就会认同阈值和滞回的设计对均衡系统体验的影响甚至比硬件选型还要大。2. 硬件架构两颗芯片的分工与合作2.1 MP2642GR-Z 在前端做了什么先讲这颗前端芯片。它在电路中的位置直接跨在电芯正极、中点和负极之间负责两件核心的事第一件是测量两只电芯的单体电压第二件是驱动均衡用的MOS管。拿到的这颗料和常见的前端监测芯片功能结构差不多内部有可配置的测量通道和均衡控制位通过串行接口跟MCU通信。为什么要用专用前端芯片而不是直接用MCU的ADC去采直接采也行但2S结构里中点电压是浮动的单片机的ADC通常以参考地为准直接跨接会有共模误差而且均衡开启时MOS开关动作会把噪声耦合进采样回路。用一颗专门的前端芯片把高电压域的信号转换成低电压域的模拟或数字量再给MCU整体测量精度会稳很多。MP2642GR-Z 和 MK20DX128VFM5 之间通过一路串行接口通信读取各电芯电压、温度、状态标志也下发均衡使能指令。具体寄存器地址各家数据手册都有我这里只强调三条经验一是上电后先读版本/ID寄存器确认通信正常二是配置均衡控制位之前先确认MOS驱动输出没有被安全锁存三是采样通道的滤波电容别省建议0.1uF到1uF之间太小滤波不够太大响应变慢。芯片本身由电池组总压通过线性稳压供电待机时主控可以把它切换到休眠模式降低整机功耗。这里有一个硬件设计细节容易被忽略前端芯片的供电电压范围要考虑电芯最低电压。2S系统总压最低可能到5V甚至更低如果是磷酸铁锂两个2.5V也只有5VLDO的压降要足够低否则通信和测量在低压状态下都会异常。2.2 MK20DX128VFM5 作为控制大脑主控用的 MK20DX128VFM5核心是 Cortex-M4128KB Flash封装很小适合塞进2S电池包这种紧凑空间。它在这个系统里管三块事跑均衡状态机跟 MP2642GR-Z 通信处理过温、过压等联动逻辑。Cortex-M4 在这个场景下性能是过剩的但过剩不重要重要的是低功耗稳定性和外设匹配。这颗芯片在待机模式下电流很小适合电池包这种常年挂在系统里的设备。ADC 是16位SAR类型虽然实际有效位数大概13-14位但对毫伏级电压判断已经足够。关键是它内部有可编程的ADC参考源和硬件均值功能可以减少单片机CPU负担。引脚资源不多但我们的需求本来也不多一路串行接口、两路GPIO做均衡MOS控制如果用外部MOS的话我这里使用的是前端内部驱动逻辑MCU只通过寄存器去控制、一路NTC温度输入、一个状态灯。如果项目里还需要RS485或CAN上报均衡状态那就得选Flash更大的型号但电路逻辑可以完全保留。选型时还要考虑QFN手工焊接的问题。VFM5这种封装引脚间距很小建议用钢网刷锡加回流焊手工拖焊容易连锡。这也是经验很多朋友第一版样板就栽在这里焊完一量引脚短路还以为是设计错了。2.3 整体电气拓扑与关键BOM整个电路的电气路径是这样的2S电池组总正出来接到电芯1正极电芯1负极就是中点中点再接电芯2正极电芯2负极回到总负。电芯1两端并联均衡电阻R_bal1加MOS管Q1电芯2两端并联R_bal2加Q2。MP2642GR-Z的采样输入接电芯1两端和电芯2两端均衡驱动输出接Q1、Q2的栅极。MK20DX128VFM5通过串行接口连前端芯片NTC接电池包温度采样点。关键BOM清单如下均衡放电电阻100Ω 1% 0.5W两只。不要选0.25W实测余量不够均衡MOS逻辑电平型N-MOSVgs(th)尽量低这里选Vth约1V、Rds(on)小于100mΩ的型号栅极串联电阻100Ω到1kΩ防止驱动信号振铃采样RC滤波1kΩ加0.1uF放在前端芯片采样输入附近LDO低静态电流输出给前端芯片和MCU供电保护器件TVS、防反接、保险丝BOM里最容易翻车的是均衡电阻的功率。很多工程师算电流42mA、电阻功耗0.18W觉得0.25W够了。实际长时间均衡时旁边还有电池发热、PCB铜箔散热不足0.18W的温升已经能让电阻本体到60度以上建议直接选0.5W成本只差几毛钱。另一个容易忽略的是电芯采样线走线。采样线最好从电芯极柱直接引出不要经过结构件转接线束的接触电阻在几十毫欧量级时会直接吃掉采样精度。我在第一版走线时图省事把采样点放在PACK输出端子附近结果因为线束压降实际电芯电压和采样电压差了近10mV均衡阈值怎么调都不准后来改成开尔文接法才解决。3. 均衡控制逻辑与算法实现3.1 单体电压采样与测量时机均衡算法再花哨电压采不准全白搭。第一个坑就是测量时机。均衡MOS一导通就有几十毫安电流从电芯内部流过电芯内阻虽然只有几十毫欧但产生的电压降可以到几毫伏40mA乘50mΩ等于2mV。看着不大但我们要判断的压差只有几十毫伏2mV的误差会让阈值判断失准。我的做法是需要做均衡决策时先关闭两路均衡MOS等待10到20ms让电芯电压恢复到开路状态再启动采样。采样完成后如果压差仍然超过阈值再重新开启均衡。这个“先断采、再开放”的节奏是均衡逻辑里最重要的时序约束没有之一。调试时如果发现均衡行为时好时坏十有八九是这个时序没做好。数据滤波方面连续采5次去掉一个最高、去掉一个最低剩下3次取平均作为本次测量结果。别用简单的移动平均因为均衡前后电压本来就会跳变移动平均会拖一个很长的尾巴导致控制滞后。中值加平均的混合滤波在保留响应速度的同时能滤掉ADC采样的毛刺实测效果不错。3.2 压差判定与滞回控制均衡判定不要做成一超过阈值就打开、一到阈值下就关闭。这样在阈值点附近MOS会以很高的频率抖不仅MOS和电阻发热还会干扰电压采样。正确处理是加滞回压差超过50mV才打开均衡压差回到20mV以下才关闭。20mV到50mV这个区间就是缓冲带控制输出保持原状态。另外加两个必要条件温度低于热保护阈值比如45度且不处于放电状态。放电时电芯电压本身在快速变化此时均衡意义不大。系统静置时才允许低频均衡充电过程中才允许全速均衡。核心状态机可以用下面这段伪代码表达#define BAL_OPEN_THRESHOLD_MV 50 #define BAL_CLOSE_THRESHOLD_MV 20 #define BAL_MAX_TIME_MS (2 * 60 * 60 * 1000) // 返回需要均衡的方向0不需要1电芯1偏高2电芯2偏高 int balance_judge(uint16_t v1_mv, uint16_t v2_mv) { int diff (int)v1_mv - (int)v2_mv; if (!bal_enable_flag) { if (diff BAL_OPEN_THRESHOLD_MV) return 1; if (diff -BAL_OPEN_THRESHOLD_MV) return 2; } else { if (abs(diff) BAL_CLOSE_THRESHOLD_MV) { bal_enable_flag 0; return 0; } } return bal_channel; }这里 bal_channel 是上一轮状态滞回靠这个变量保持输出。真正工程代码里还要记录均衡开启的开始时间戳一旦超过 BAL_MAX_TIME_MS 就强制关闭并进入至少10分钟的冷却时间。这个超时保护是为了防止单节电芯内部微短路等异常情况下均衡回路一直发热。3.3 PWM降额与温度联动根据压差自动调整均衡强度是个很实用的手段。我的做法是压差大于100mV时用100%占空比全速均衡压差在50mV到100mV之间时用50%占空比低速均衡。这样有两个好处大压差时快速追上接近目标时降低发热。PWM频率选100Hz左右太低会让电阻产生可听见的嗡鸣太高会引入EMI100Hz在两者之间比较均衡。温度联动也是必须做的。均衡电阻产生的热量会传导到电池包内部如果电池本身在充电环境温度本来就不低两者叠加可能超过安全温度。我的逻辑是在NTC温度大于45度时降低占空比到30%大于50度时直接关闭均衡并把温度过高事件上报系统。这里的温度点不是绝对的磷酸铁锂和三元锂的耐受温度有差异具体数值按电芯规格书标定。PWM控制还有一个容易被忽略的点MOS开关时的电压尖峰。虽然均衡回路是电阻性负载但MOS本身的寄生电容和走线电感在关闭瞬间会产生负压尖峰如果示波器看到栅极波形有明显振铃那就是栅极串联电阻太小了。我最后把栅极电阻调整到470Ω振铃才压下去。3.4 与充电、放电、静置工况的联动均衡不是孤立的动作要跟系统的充放电状态联动。我把系统切分成充电、放电、浮充、静置四类工况充电恒流段可以全速均衡但此时如果电芯压差过大且已经接近恒压要警惕超标电芯的过充风险保护IC优先充电恒压段均衡黄金窗口电压稳定均衡效率最高优先开启放电段不建议均衡额外耗电会影响运行时间负载波动也会让采样噪声变大静置段做低频均衡每次均衡后记录结果也可以用时间片轮询每隔5分钟均衡一次每次持续30秒我见过不少方案只在充电时均衡其实静置均衡同样重要。在长期浮充的备用电源系统里系统大部分时间处在静置状态定期低速均衡能持续修正电芯自放电率差异带来的漂移。关键是静置均衡占空比要低避免把电池包温度拉起来。4. 固件与调试实录4.1 底层初始化和前端配置先说初始化顺序。上电后MCU先做时钟和外设初始化打开串行接口和GPIO随后对 MP2642GR-Z 做一次软复位再读取芯片ID这一步能快速排除通信和供电问题。我习惯把每次读回的前端状态字打印出来或者存到调试变量线上调试时很省事。// 伪代码初始化流程 void bms_init(void) { mcu_clock_init(); i2c_init(400 * 1000); // 或者SPI按实际配置 gpio_init(BAL_Q1, OUTPUT_LOW); // 均衡使能引脚初始关闭 gpio_init(BAL_Q2, OUTPUT_LOW); fe_sync_reset(); // 软复位前端芯片 fe_read_chip_id(); // 读ID确认通信正常 fe_clear_flags(); // 清除状态锁存 adc_init_for_ntc(); nvic_enable_timer(BAL_TIMER_PERIOD_MS, 100); }这里复位为什么要做两次甚至三次因为前端芯片在电池包上电瞬间供电可能还没稳定一次复位可能失败。我调试时遇到过一次很隐蔽的现象初始化流程一切正常但插上电池的瞬间通信偶发失败后来在复位前增加了200ms延时问题就消失了本质上是给电源稳定留出时间。4.2 均衡任务的调度调度上用定时器中断做1ms时基主循环里跑均衡状态机。我维护一个1s周期的“均衡决策节拍”每次执行前先取最新滤波结果。决策函数要尽量短不要在中断里跑大段逻辑这是单片机开发的老规矩但总有人忽略。// 主循环伪代码 void main_loop(void) { while (1) { uint32_t now tick_ms(); if (now - last_balance_tick 1000) { last_balance_tick now; bal_status_t st get_bal_status(); switch (st) { case BAL_NEED_FORCE: set_bal_channel(HIGH_VOL_CELL, PWM_100); break; case BAL_NEED_SOFT: set_bal_channel(HIGH_VOL_CELL, PWM_50); break; default: set_bal_channel(NONE, 0); break; } } } }决策模块读到的电压来自前端芯片的测量寄存器模块内部负责换算成毫伏并做滤波。有个细节不同前端芯片的电压寄存器可能有偏移和增益误差批量生产中要校准。我当时的做法是产线阶段用精密电源给每一路灌一个已知电压测出误差系数存到Flash里运行时用这个系数修正。不做校准的话同一批电路板之间测量结果可能差出5到8mV均衡精度就无从谈起。4.3 实测数据与波形记录拿一个实验电池包做记录两只18650电芯初始压差68mVA电池4095mVB电池4027mV静置温度25度。开启全速均衡约1小时20分钟后压差降到18mV均衡关闭。期间均衡电阻表面温度最高52度MOS管温度48度PACK整体温度没有明显异常。具体记录如下时间分钟A电压(mV)B电压(mV)压差(mV)备注04095402768开启均衡154078403147全速均衡中304062403824全速均衡中45404940409接近关闭60404140383开始关闭流程停止后恢复404240393关闭均衡静置30分钟注意中途电压整体下降是正常的因为均衡电阻在持续放掉高位电芯的能量而放电端没有补给。如果系统处于充电状态整体电压会被充电器托住压差变化曲线会平缓一些。实测压差从68mV到20mV以内消耗能量大约是均衡电流42mA乘以持续时间也就0.3Wh左右对电池包容量影响很小这正是被动均衡在这个场景下能接受的原因。5. 常见问题与排查技巧5.1 均衡开启后电压测量偏低这个坑在刚开始调试时几乎必踩。现象是打开均衡后前端芯片上报的电压值瞬间掉了10到20mV你以为电池坏了。原因是均衡电流流过电芯内阻产生了压降。电芯内阻典型值30到80mΩ42mA均衡电流经过它会产生2到3mV压降但高频PWM开启瞬间电流尖峰会让误差更大。解决办法就是前面说的测量前关闭均衡并等待恢复时间如果系统必须实时监测那就分开两个采样时段一个在均衡开启时做保护判断另一个在均衡关断后做均衡决策两个时段的采样结果要标记状态不能混用。我在状态结构体里加了一个 flag标识这次电压是在均衡开还是均衡关的状态下采到的这样后续逻辑不会拿错数据。5.2 均衡MOS发烫甚至烧毁MOS发热大多数不是MOS选小了而是栅极没有彻底驱动到导通状态。有些逻辑电平MOS在Vgs等于3V时导通特性已经很好但2S系统在某一节点电压低到3V以下时驱动条件会不足。尤其是当靠近负极的电芯电压低时前端的电荷泵如果没有正常工作栅压可能上不去。用示波器看栅极波形最直接导通时Vgs平台应该明显高于阈值波形显示方波顶部平直而不是锯齿状。另外PWM频率别选太高。我试过1kHz以上时MOS的开关损耗明显上升100Hz就够用。如果MOS还是热检查一下栅极串联电阻是否过大过大的栅极电阻会延长开关时间让MOS在放大区停留更久发热反而更严重。真正常踩的组合是大栅极电阻加高PWM频率两者叠加基本等于一个小型加热器。5.3 均衡不启动或过早停止均衡不启动通常不是算法问题而是前端芯片的状态位或安全锁没有清掉。例如一些前端芯片在发生过压时会锁存均衡输出必须通过寄存器复位才能恢复。我在调试时先读回状态寄存器看是不是有过压、过流标志如果有先清理再重新使能。还有可能是阈值设置太高。很多人一上来就设100mV以上想着压差大再均衡实际上电芯失配是很缓慢的过程100mV阈值会让绝大多数时间处于不均衡状态。我的经验是50mV起步30mV加进稳定量产系统在储能和备电场景可以更低。判断均衡是否启动可以临时把阈值改到5mV做测试如果这样能启动说明硬件链路是通的问题就在阈值或状态位配置上。5.4 待机功耗偏大电池包静态功耗直接影响备用电源系统的可用时长。系统里常驻耗电的主要是前端芯片、MCU、分压采样网络。均衡电阻虽然只在动作时耗电但如果MOS漏电流大也会偷走几个微安。我做休眠流程的顺序是先完成一次均衡决策把需要的均衡信息存到SRAM然后关闭均衡MOS、停掉前端测量、MCU进入低功耗定时唤醒模式以极小占空比醒来做一次电压检查。实测整机待机电流从原来的1mA级别压到100uA以内。这里有个容易被忽略的点如果均衡控制MOS是低阈值型号栅极悬空或者下拉电阻不够强漏电流会比想象中大。我给栅极加了一个1M欧姆的下拉电阻确保在MCU未初始化时MOS保持关闭这个习惯后来救过一次产线测试有块板子MCU程序没烧录待机电流异常偏大查了半天就是MOS栅极悬空导致的。6. 几条个人经验与可能的扩展方向按我个人经验2S均衡想做好有几个经常被忽视的点一是均衡电阻的功率和热设计别只看静态计算二是采样时序先关均衡再采样三是阈值滞回没有滞回的控制在真实系统中一定会抖。这三个点做到位均衡系统基本就稳了。如果这个方案要继续往上走可以往主动均衡或者SOC均衡方向扩展。比如用相同硬件但加入库仑计积分让均衡依据容量不匹配而不是单纯电压偏差或者把两路被动均衡改成简单电感式主动均衡在大压差瞬间提高均衡电流而不产生大量热。这两种方向我在另一个项目里做过基础验证主动均衡的效率优势在持续大电流均衡场景下是明显的但控制复杂度和BOM成本也确实高一个台阶。最后分享一个调试技巧在均衡MOS旁边留两个测试点一个测栅极、一个测源极示波器两个探头同时夹上去看Vgs波形。这一步能过滤掉90%的开关相关疑难杂症。我在所有PCB版本上都留了这两个点排障速度明显加快这个小习惯一直保留到了现在希望对你有用。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑