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

基于MP2642GR-Z与MKV42F128VLH16的双电池主动均衡方案

基于MP2642GR-Z与MKV42F128VLH16的双电池主动均衡方案 ★ FEATURED ARTICLE
做储能和备用电源这几年我最常被问到的就是串联电池组均衡问题。两节电池堆在一起用时间一长容量、内阻、自放电率的差异会被放大短板效应越来越明显。标题里那颗 MP2642GR-Z 电源芯片和 MKV42F128VLH16 MCU就是这套双电池均衡方案的硬件核心。这篇文章把整个项目从需求拆解、电路设计到均衡策略、调试验证完整过一遍适合正在做双向储能、UPS、便携备用电源的硬件工程师和嵌入式开发者参考看完可以直接抄作业。1. 动因与设计目标电池均衡到底解决什么问题1.1 串联电池的一致性魔咒任何电芯出厂后都不是完全相同的东西。用同一批次的电芯SOH一致、SOC一致、内阻一致只是理想状态。实际使用中温度梯度、焊接阻抗差异、充放电循环次数不同都会让两节电池的荷电状态产生偏差。串联回路电流相同容量小的电池会在充电时先充满、放电时先放空结果就是过压保护频繁触发整个系统可用的容量被那一节弱电池拖死。这就是所谓的木桶效应。备用电源场景更敏感。主电断掉的瞬间电池组要立即顶上如果两节电池压差大均衡能力又弱负载切换的一瞬间就会触发欠压或者过压保护。之前在某客户现场就遇到过2S电池组放了两个月再带载输出电压直接掉到保护点拆开量单节电压一节3.6V另一节只有3.0V。这就是典型的存放自放电不一致导致的失衡。1.2 主动均衡真的比被动均衡强吗传统被动均衡就是给每节电池并联一个放电电阻电压高的那节多放点电让电压往低的那节靠拢。优点是便宜、简单、不会出错缺点是能量全变成热量均衡电流一般也就几百毫安想纠正明显失衡需要好几个小时。主动均衡的思路则是让能量在电芯之间搬移高电量的电池通过电感或电容把电荷送给低电量的电池。效率高均衡电流能到1A以上发热也不严重。缺点就是电路复杂需要做双向功率变换对控制时序和保护逻辑要求高。这套方案选择的就是主动均衡核心是一个双向同步变换器由 MP2642GR-Z 提供功率级驱动和电流采样MKV42F128VLH16 负责状态判断和均衡算法。比起DIODES或者TI的专用均衡芯片方案用MCU加电源芯片的组合灵活性高很多电压阈值、均衡策略、通信上报都能自定义。1.3 这个项目要达成的指标清单项目启动时定了几项硬指标后续所有设计都围绕这些指标展开均衡电流峰值 1.5A平均电流不低于 1A保证2小时内把50mV压差拉回10mV以内支持充电、放电、静置三态下的均衡策略差异化处理具备过压、欠压、过温、反向保护故障时进入安全状态均衡过程中的电池电压采样误差小于5mV数据更新周期100ms以内整机静态功耗控制到uA级备用电源待机时间不能被均衡电路拖垮指标本身不激进但要在两节串联的拓扑里同时兼顾功率密度和采样精度还是有不少坑要踩。2. 硬件方案从芯片手册到电路落地2.1 为什么选择开关电感型双向均衡两节电池的主动均衡拓扑大致有开关电感型、开关电容型、变压器型三条路线。开关电容型不需要电感但电荷泵效率低均衡电流随压差降低衰减很快最后10mV压差根本没有足够驱动力。变压器型隔离好、适合多级串联但绕制麻烦体积大两节电池场景杀鸡用牛刀。开关电感型结构最简单本质就是Buck-Boost能量转移效率70%-85%控制灵活适合做1.5A级别的均衡电流。具体拓扑是两个串联电池Cell A在上、Cell B在下和功率级的输入输出构成一个两端口系统。均衡电流从高压侧灌入电感再斩波输出到低压侧。控制方向由MCU根据采样电压决定目标是让两节电压趋近一致。这套设计里功率级的开关管、驱动、电流检测由那颗电源芯片协同外围完成MCU只发PWM和模式切换信号不直接推IGBT简化了软件侧的逻辑。2.2 MP2642GR-Z在电路中的具体角色与关键参数第一次看到 MP2642GR-Z 这个型号很多人会把它当普通Buck芯片用。但在均衡场景里它的角色更接近一个带同步整流的双向功率变换引擎控制引脚接受MCU的PWM和使能信号内部集成了高边低边驱动以及对应的功率MOS配合外围电感就能实现能量的双向转移。实际电路里我给这颗芯片规划了三个关键工作模式正向均衡Cell A电量高功率级工作为Buck模式Cell A对Cell B放电反向均衡Cell B电量高功率级工作为Boost模式Cell B对Cell A放电关断休眠压差在滞回区间内芯片关断系统进入低功耗频率设定电阻选择200kHz。频率太低电感体积大、纹波大频率太高开关损耗上来了MP2642GR-Z驱动能力也会打折扣。200kHz下、1.5A电流纹波的控制效果比较理想电感感值也合适。芯片的软启动时间调到2ms上电不冲击电池试过直接硬启动的话第一个脉冲电流能飙到3A以上对电池寿命不友好。这里要提一句数据手册里标的是典型应用电路均衡场景的压差小、环路特性不一样所以COMP补偿元件的取值别直接抄手册。我第一版直接用了手册推荐的RC值结果在压差只有20mV时环路震荡电感啸叫。后来把增益降下来、补偿电容加大才算压住。2.3 功率级设计电感、MOS、采样电阻的计算电感是这个均衡电路的能量搬运中介。感值小了电流纹波大感值大了动态响应慢。我把最大均衡电流定在1.5A允许纹波系数30%按Buck模式的伏秒平衡来算L (V_Cell_B × D) / (f × ΔI)单节按3.7V200kHz占空比0.5ΔI取0.45A算出来大概是10uH。实际选了10uH、饱和电流4A的屏蔽电感留了余量。采样电阻是电流闭环的“尺子”。PCB走线电阻没法精确控制必须用独立的毫欧电阻。选5毫欧压降小配合芯片内部放大器的增益能分辨50mA的电流变化。这里有个心得采样电阻的两根走线要开尔文接法直接从电阻焊盘引出到芯片的检测引脚走过孔绕开功率路径不然几毫米的走线压降就能让电流采样偏掉10%。MOS管这个设计里由MP2642GR-Z内置但我特意把死区设置拉出来讲。同步整流的两个开关管如果同时导通会直接贯穿电池短路瞬间电流能到几十安培。芯片内部有死区保护但外围电路还是要把限制电阻选好确保开关速度不能太快。之前就在样板测试时遇到过反向导通问题后面把栅极串联电阻从2.2欧调到4.7欧死区影响才消失。2.4 MCU选型的现实考虑MKV42F128VLH16 够不够用均衡控制不复杂但IO资源和模拟采样精度要算清楚。MKV42F128VLH16 属于电机控制向的MCU主频够用关键是带双路ADC、多路PWM、正交解码器接口这些外设在均衡场景里正好物尽其用。对于两个串联电池我需要多少通道两节电池电压、电流采样、温度NTC采样再加上母线电压监测加起来6路模拟输入。MKV42F128VLH16的ADC位数和采样保持能力都够内部还有个可编程增益放大器小信号采样不用外接运放。存储方面128KB Flash对均衡代码来说很宽裕我甚至把两套不同厂家的电芯特性曲线都放进了Flash查表逻辑上也没觉得紧。选这颗MCU还有一个隐藏原因它的PWM模块支持故障引脚强制关断。硬件上把过流比较器的输出直接接到PWM故障输入即使软件挂死了过流也能在微秒级把PWM输出拉低。做储能相关的东西硬件冗余设计不过分这个特性比多两个UART重要得多。3. 软件与均衡策略让硬件按照人的思路工作3.1 状态测量电压、电流、温度的采样架构均衡策略依赖准确的状态估计。这里说的准不是ADC采样瞬间值而是一段时间内的稳定值。电池电压在MOS切换时会有毛刺开关噪声会耦合到采样线上如果拿着瞬态值做判断系统一定在误动作边缘反复横跳。我用的办法是分时采样加动态滤波。每次均衡开启前先关闭PWM输出让母线稳定5ms然后连续采样16次去掉最大值和最小值剩下14次求平均。这样算下来的电压值阻抗压降和开关噪声基本被抹平实测和台式万用表对比误差在3mV以内。温度采样用的是普通NTC10k电阻上拉到VREFMcU的ADC直接采集分压点。温度数据不参与均衡判据主要做安全门限超过45度降额到0.5A均衡超过55度直接关闭。实际测试中电感是最热的地方外壳摸上去大概50度左右降额策略能保证系统不因为一个电感过热而整体停摆。3.2 均衡判据与状态机设计软件状态机的核心思路是“先判方向再控电流最后收尾”。两节电池的电压差是唯一的均衡启动条件但也不是一超过阈值就马上开工。我设置了30mV的启动阈值和5s的确认时间防止负载波动造成的瞬时压差引发误均衡。开始均衡后每100ms更新一次状态。状态图如下IDLE压差小于10mV正常待机BAL_A_TO_BA电压高正向Buck放电BAL_B_TO_AB电压高反向Boost放电FAULT过流、过压、过温立即关断并锁存停止均衡的条件我用了滞回比较。启动阈值30mV停止阈值10mV这个10mV的窗口很关键如果用同一个阈值均衡快结束的时候系统会在开启和关闭之间来回抖PWM反复启停对芯片和电池都是折磨。用滞回曲线后整个均衡过程是一条平滑收敛的曲线最后稳定在压差5mV左右。typedef enum { IDLE, BAL_A_TO_B, BAL_B_TO_A, FAULT } BalState; BalState bal_state IDLE; uint16_t cell_a_mv, cell_b_mv; uint16_t v_diff max(cell_a_mv, cell_b_mv) - min(cell_a_mv, cell_b_mv); if (bal_state IDLE v_diff START_THRESHOLD_MV) { if (confirm_count 50) { bal_state (cell_a_mv cell_b_mv) ? BAL_A_TO_B : BAL_B_TO_A; enable_balancer_pwm(); } } else if (bal_state ! IDLE v_diff STOP_THRESHOLD_MV) { disable_balancer_pwm(); bal_state IDLE; }3.3 占空比控制与限流保护落地均衡模块的电流控制没有走软件PID。MP2642GR-Z本身带模拟恒流环MCU只需要通过DAC输出一个电流基准值芯片会自己去稳定电流。这样软件带宽低环路稳定控制逻辑简洁。DAC输出的基准电压对应电流设置。比如0.5A均衡时采样电阻5毫欧产生的电压是2.5mV放大器增益50倍反馈电压125mVDAC输出就是0.125V。单独做一版限流实测设定电流(A)DAC电压(mV)实际电流(A)偏差0.51250.476%1.02500.955%1.53751.434.7%小电流档偏差大的原因是采样放大器的偏置电压焊点热电势被放大了1.5A档反而准。这个偏差对均衡影响不大反正最终判据是压差不是电流电流偏一点只是均衡时间长短的问题。软件里我还加了一层“斜坡启动”。启动瞬间DAC电压从0慢慢斜升到目标值时间控制在50ms。如果直接一步给到1.5A基准电感电流会冲出个尖峰电池电压瞬间被拉低5mV以上采样系统可能误判方向。3.4 与充电/放电主流程的协同均衡不能架空在充放电流程之外独立运行必须和主控策略联动。比如充电过程中如果系统正在恒压阶段均衡模块开启后低压侧电池电压会被抬高可能导致充电器提前进入涓流状态放电过程中均衡又会改变负载电流的分配。这版设计里均衡模块通过一个使能引脚与主控握手。主控在进入充电模式后根据当前电压差决定是否允许均衡规则是压差小于50mV时均衡不参与压差大于50mV时均衡可以与会但要限制在0.8A以下避免干扰充电曲线。放电中均衡电流上限提高到1.2A毕竟放电是最需要容量均衡的时刻。还有一个关键点均衡结束后要留出300ms的静默时间让电池内部离子扩散电压回弹后再更新均衡判断。这个回弹在铁锂电池上特别明显极化电压可以贡献20mV以上的压差如果不等待回弹直接重新判断均衡会永远停不下来。4. 调试验证与故障排查实录4.1 上电即触发的过压乌龙第一次给整板通电现象很怪MCU刚跑起来均衡还没开始电池保护板就报过压。排查了半天发现是MCU初始化时把DAC引脚虚高输出一个接近满偏的电压均衡基准被拉高PWM一启动就以最大电流冲击电池。其实不是芯片工作异常是初始化顺序错了。解决办法很简单MCU上电进入main函数第一步就把DAC输出清零、PWM禁用所有涉及功率级的IO都拉成安全电平等到状态机跑起来后再使能。这个修改虽然只挪了几行代码但免了一次“开机即炸”的体验。经验就是功率系统的软件初始化安全电平优先于功能初始化。4.2 均衡工作时的纹波与噪声处理均衡电流1A时用示波器测电池端电压能看到20mV左右的开关纹波频率和PWM一致。这会让ADC采样值抖动得厉害。我一开始以为是采样电阻的共模干扰后来用差分探头量才发现是电池引线阻抗引起的振铃。处理方案分三步电池采样线加RC滤波器截止频率20kHz地线单点接地功率地和模拟地在MCU的AGND处汇合均衡关闭期间做采样保持。改造之后示波器上纹波降到了5mV以下ADC读数稳定均衡判断也不会被噪声带偏。4.3 温度漂移导致的均衡误判另一个隐蔽问题出现在连续快充档。两节电池里靠近散热风扇的那节温度低5度温度低的电芯内阻小快充时电压低均衡算法判断它“缺电”反复往这节转移能量结果真正需要均衡的是另一节。排查后确认是温度补偿缺失。MKV42F128VLH16 的ADC采样精度足够但电化学电压受温度影响明显因此在判断电压差时引入了温度修正电压差减去温差乘修正系数修正系数对不同电芯体系需要标定。20度温差、修正系数0.5mV/度修正量就是10mV足以翻转错误的均衡方向。4.4 常见问题速查表现象可能原因排查手段处理方案上电瞬间过压保护IO初始化电平异常示波器测DAC/PWM使能时序主循环先清零后使能电感啸叫环路补偿不当/死区过小听声定位量COMP波形调补偿RC加大死区电阻均衡电流只有设定值一半采样电阻压降被走线分走量采样电阻两端电压PCB改开尔文走线ADC读数随PWM开关跳动地线共阻抗/采样时序差分探头测采样端加RC滤波改采样时序均衡频繁启停压差阈值没有滞回打印状态切换日志启停阈值分开均衡结束后电压反弹极化电压恢复等待300ms后再判定增加静默时间排查这类问题有个通用思路先把功率环路和模拟采样通道隔离验证。断开PWM输出看ADC是否稳定断开采样通道看PWM是否正常。再联合调就能把故障域缩小到具体模块比盲猜快得多。5. 从这版设计里学到的几件事这套两电池均衡项目做下来我最大的感觉是均衡电路的技术难点不在拓扑也不在算法而在对电池动态特性的尊重。芯片手册给的是电气参数电池的极化、回弹、温漂这些电化学特征才是均衡策略真正要面对的东西。其中一个值得记录的小技巧是均衡电流方向和电池老化关系的处理。均衡方向总是从高压侧搬运到低压侧但低压侧的电池如果内阻更大均衡电流会在它内部产生额外压降导致它看起来“一直缺电”。这种情况下我加了一个内阻估算逻辑定期用小电流脉冲测量两节电池的动态内阻差异超过30%时把均衡判据从电压差切换为SOC估算差避免把能量送给“永远填不满”的那节电池。后续如果要扩展这套方案可以改造成4S、6S的多节电池组只需把功率级级联每个pair节点分配一个MP2642GR-Z作为子模块MCU通过PWM或通信接口统一管理均衡流程。不过多节串联要注意地电平偏移建议上隔离CAN或者数字隔离器不然通信非得飘。最后一点建议做储能相关设计不要为了证明方案先进而过度设计。两节电池的场景一套双向变换器加一颗靠谱的MCU已经完全够用均衡效率、电流纹波这些指标适度就好把精力放在长期可靠性和保护冗余上才是正路。
阅读完成 · 觉得有帮助?
咨询建站