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

2S电池组主动均衡板实战:MP2642GR-Z+TM4C123方案全解析

2S电池组主动均衡板实战:MP2642GR-Z+TM4C123方案全解析 ★ FEATURED ARTICLE
做电池管理的同行应该都有同一个体会串联电池的“一致性”是最难缠的问题。就算出厂时电压配得一模一样用几个月之后因为内阻、自放电率、温度环境总有差别两个电池的电压就会慢慢拉开。在储能和备用电源系统里2S电池组两个串联电池单元用得非常多一旦两节压差拉大充电时高的先满、低的还饿着放电时低的先到截止、高的还有余量整个系统的可用容量就被最差的那一节拖死了。我最近做了一块基于 MP2642GR-Z 和 TM4C123GH6PZ 的2S主动均衡板MP2642GR-Z负责系统供电TM4C123GH6PZ负责采样、控制和均衡策略外围用一套电感型有源均衡电路在两组串联电池单元之间搬运能量。这篇文章把需求拆解、方案选型、电路设计、均衡算法、实测数据以及调试中踩过的坑完整整理出来给准备做电池均衡、BMS、储能备用电源的朋友做个参考。1. 需求拆解与方案选型1.1 两个串联电池单元为什么需要均衡先说最底层的问题两节电池串联充放电电流完全一样为什么还需要额外做均衡原因在于每个电池的单体参数不一致。即使出厂时配组电压、容量都挑过使用中也会逐步漂移。主要有几个来源电池本身的容量差制造工艺不可能让每节电池的容量完全一致哪怕只差1%长期循环之后SOC就会拉开。自放电率不同自放电快的电池在静置时电压掉得快再次充电时它会先充满。温度梯度靠近发热元件的电池温度高化学反应速度快内阻变化和容量衰减都不同。内阻差异内阻大的电池在放电时压降大在充电时抬升快这会导致采样电压不真实。在2S系统中这些问题被放大了。因为没有中间抽头独立管理两节电池被迫共享同一条充放电回路。储能系统每天要充放循环备用电源系统常年浮充都会让上述不一致性逐渐积累。不一致的后果不只是“容量小了”这么简单。充电时电压高的那节先到达截止电压充电回路被迫停止电压低的那节始终充不满可用容量下降放电时则是电压低的那节先到截止高的那节还有能量但用不出去。更严重的是长期过充和过放会加速电池劣化形成“越不一致越恶化”的正反馈。所以2S系统同样必须做均衡不是说电池少就可以省。1.2 为什么选有源均衡而不是无源均衡均衡的经典做法有两种无源均衡和有源均衡。无源均衡被动均衡是把多余的能量通过电阻放掉。电路简单用一个MOSFET和一颗功率电阻并联在每节电池上电压过高的电池通过电阻放电。便宜可靠软件也好写。但问题很明显能量白白变成热量均衡电流还不能太大不然板子烫手而且它只能“放”不能把能量补给电压低的电池。有源均衡主动均衡用储能元件电感、电容或变压器把能量从高电压单元转移到低电压单元。效率高均衡电流可以做得比较大也不会产生大量热量。缺点就是电路复杂成本和调试难度都上去了。在储能和备用电源系统中我最后选了有源均衡。原因是这两个场景都要求长期可靠运行储能系统要反复充放电能量浪费不划算备用电源系统常年浮充用无源均衡等于长期挂着一个发热电阻对系统寿命和功耗都不利。有源均衡虽然复杂一点但效率高时间长了收益非常明显。1.3 MP2642GR-Z和TM4C123GH6PZ的角色分配项目标题把两颗芯片并列正好也是我实际设计中的分工。MP2642GR-Z是一颗同步降压DC-DC转换器我把它的输入接在2S电池组总电压上输出稳定的5V系统电源轨。这颗芯片宽输入范围覆盖2S电池的工作区间没有问题同步整流的效率也比较高整个板子的功耗绝大多数由它转换。5V电源轨同时给栅极驱动、运放、指示灯供电再经过一颗LDO降成3.3V给主控。TM4C123GH6PZ是一颗带浮点单元的ARM Cortex-M4F微控制器主频120MHz。我看重它的几个点12位ADC精度足够做电池采样PWM模块可以生成带死区的互补PWM信号直接驱动半桥CAN接口方便和储能系统上位机对接。整颗芯片运行均衡状态机、采样滤波、通信上报和故障保护。均衡功率级的MOSFET开关信号由它生成。简单说MP2642GR-Z管“电”TM4C123GH6PZ管“脑”外围电感均衡电路管“能量搬运”。为什么不直接用专用的2S电池前端芯片我过去也用过AFE芯片开发确实快均衡逻辑也封装好了。但在这种需要深度定制均衡策略、做算法验证、研究储能系统均衡控制的场景里专用芯片的灵活度不够。用MCU自己写控制逻辑阈值、回差、电流、超时全部可调出了问题还能远程改参数这对工程调试和后续迭代非常重要。2. 硬件电路设计与实现2.1 电源轨设计MP2642GR-Z典型电路电源是所有功能的地基。如果给主控和驱动的电源不稳定后面采样再准也没用。MP2642GR-Z的典型应用电路并不复杂关键是外围参数要选对。我的输入来自2S电池组磷酸铁锂和三元都兼容所以输入电压范围按5.0V到9.0V设计。输出目标5.0V最大负载电流按1.5A设计实际上整板正常工作大概在300mA左右留了不少余量。外围器件参数如下注意具体数值一定要以MP2642GR-Z的数据手册为准不同批次和封装会有差异外围器件推荐参数说明输入电容2 x 22uF / 16V 陶瓷电容靠近VIN引脚放置降低输入纹波输出电容2 x 22uF / 10V 陶瓷电容保证负载瞬态响应功率电感6.8uH饱和电流≥3ADCR越小效率越高功率电感别用普通色环电感反馈分压电阻上分压120kΩ下分压30kΩ具体阻值根据芯片基准电压计算使能引脚10kΩ上拉到VIN保证上电后自动启动软启动电容参考数据手册推荐值防止上电冲击电流反馈分压电阻一定要用1%精度或更好的低温漂电阻。这个细节吃过亏后面在调试部分会详细说。输出电压公式是Vout Vref * (1 Rup/Rdown)如果你用的MP2642GR-Z基准是1.0V那5V输出可以用120k和30k正好是5倍。反馈电阻走线要靠近芯片的FB引脚远离电感产生的磁场。5V电源轨出来之后我分了三路直接给半桥栅极驱动器供电这一路在均衡开启时会有脉冲电流需要加大输出电容稳定电压。通过一颗LDO降成3.3V给TM4C123GH6PZ供电LDO前面加一颗10uF电容滤掉电源高频噪声。经过一个RC滤波给运放和ADC参考电压使用减少电源纹波对采样的干扰。2.2 电池电压采样链路均衡算法的核心输入是两节电池的电压所以采样精度直接决定了均衡效果。TM4C123GH6PZ内部ADC是12位参考电压3.3V分辨率约0.8mV。但电池电压在2.5V到4.2V之间不能直接进ADC需要分压。我用的分压电路是每个电池单元单独一个电阻分压器分压比取1/3。也就是说电池电压3.6V分压后为1.2V近ADC输入范围中间区域线性度最好。分压电阻用100k和50k的组合等效阻抗约33kADC采样时输入电流很小对电池电压的影响可以忽略。这里有一个容易忽略的坑两节电池串联时Cell2的一端是电池组中点另一端是负极端所以采样Cell2时ADC输入地的参考点是电池组负极。而Cell1的采样地也是电池组负极这两个信号进MCU的同一个ADC模块如果接错了就会造成共模问题。更稳妥的做法是用差分采样把Cell1和Cell2分别做差分放大后送进ADC。我实际用的是运放差分电路每个电池单元一路放大倍数设为0.8把3.6V缩到2.88V左右这样既减少了共模问题又提高了小电压差的分辨率。运放选的是轨到轨、低失调的型号供电用5V。每路采样都加了RC滤波截止频率大约1kHz把电池电压里的高频纹波滤掉。软件里再做一次中值滤波和滑动平均这样采样稳定性基本就没问题了。上电之后要做校准。我用高精度万用表测出实际电池电压再读MCU的ADC原始值算出一个实际分压比写进Flash作为校准系数。因为电阻本身有误差即使1%也有偏差校准之后电压误差能做到±5mV以内。2.3 均衡功率级电路均衡功率级采用电感型有源均衡拓扑这是2S系统里比较经典的一种方案。核心就是4颗N沟道MOSFET加上一颗电感组成两个半桥中间用电感连接。先看电路结构。Cell1的正极接半桥1的高端Cell1的负极即Cell2的正极也就是系统中点接半桥1的低端Cell2的正极系统中点接半桥2的高端Cell2的负极接半桥2的低端。电感跨接在两个半桥的中点之间。当Cell1电压高于Cell2时控制半桥1的高端管和半桥2的低端管让Cell1的电流先给电感储能然后再通过续流回路把电感中的能量释放给Cell2充电。这个动作本质上就是一个Buck电路只是输入是Cell1输出是Cell2。反过来如果Cell2电压高就让能量从Cell2流向Cell1。整个过程不需要额外的电源完全靠电池自己的能量这就是有源均衡的意义。MOSFET选型有讲究。首先是耐压2S电池组瞬态电压加上开关振铃至少要选20V耐压的管子我用的25V规格留有余量。其次是导通电阻Rds(on)均衡电流0.5A时Rds(on)20mΩ的管子损耗也只有5mW级别的导通损耗但开关损耗和死区损耗也要考虑所以Rds(on)尽量选小最终选的是10mΩ左右的管子。栅极电荷也要关注Qg太大会增加栅极驱动损耗导致驱动器发热。栅极驱动用的是半桥栅极驱动器每个驱动器内置一个高边和一个低边驱动外部只要一个PWM输入就能输出互补的高低边信号带死区时间控制。这里特别强调死区时间不能省。如果没有死区上下管会直通电池瞬间短路电流可以冲到几十安培轻则炸管重则伤电池。我设置的死区时间是200ns对100kHz的开关频率来说大约占2%的周期损耗很小。电感选型是整个均衡功率级的重中之重。它有四个关键参数电感值、饱和电流、DCR直流电阻和额定电流。我用的电感值是10uH饱和电流至少2ADCR控制在50mΩ以内。电感值选小了电流纹波大峰值电流容易超选大了电感体积大动态响应慢。10uH在100kHz开关频率下0.5A纹波电流控制得比较理想。均衡电流采样也不能省。我在均衡回路中串了一个10mΩ的合金采样电阻经过差分放大器放大后送ADC。有了电流反馈就可以做闭环控制让均衡电流稳定在目标值避免因为电池电压升高导致电流失控。2.4 通信与接口设计储能系统和备用电源系统一般都有上位机或者总BMS均衡板必须能和它们通信。TM4C123GH6PZ自带CAN控制器这是它一个很大的优势。我设计了一路CAN接口通过隔离收发器接到总线上上报电池电压、温度、均衡状态、故障码也可以接收远端下发的均衡参数比如阈值、电流、超时时间。此外留了一路UART调试口方便开发时看日志。LED指示灯用两颗一颗表示上电正常一颗闪烁时表示均衡正在工作。3. 均衡控制算法与保护策略3.1 均衡判据与状态机均衡不是一上来就满功率干而是要根据电池状态动态决策。太灵敏会导致频繁启停太迟钝又达不到均衡效果。我的设计里用到了阈值和回差两个参数。判定逻辑当Cell1电压比Cell2高30mV以上时认为需要均衡进入Cell1向Cell2转移能量的状态。当压差降到10mV以内时停止均衡回到空闲状态。压差在10mV到30mV之间时保持当前状态不动作避免频繁切换。这个10mV回差是经验值太小的话开关反复翻转浪费功耗太大会导致均衡不彻底。实际测试下来10mV到20mV之间都合适。均衡状态的切换不是直接跳变中间要加延时确认。因为电压采样有噪声有可能一个毛刺触发误判。我在状态机里加了一个确认计数器连续5次采样压差都超过阈值才真正切换状态。这就避免了在边界电压附近来回震荡。整体状态机分成四个状态IDLE空闲不执行任何开关动作只做采样监测。BAL_1_TO_2Cell1向Cell2转移能量。BAL_2_TO_1Cell2向Cell1转移能量。FAULT检测到故障关闭所有PWM输出等待故障恢复。每个状态之间切换都使用了防抖计数。这样设计之后均衡动作的稳定性提高了很多。3.2 PWM控制时序详解PWM控制是均衡的核心执行层时序必须精确。以Cell1向Cell2转移能量为例一个完整的PWM周期分两个阶段。第一阶段储能阶段半桥1的高边MOSFET导通半桥2的低边MOSFET也导通。此时Cell1的正极经过高边管、电感、低边管回到Cell1负极形成一个完整回路。电感中的电流线性上升把Cell1的能量以磁场形式存储起来。第二阶段释放阶段关断第一阶段的两个管子打开半桥1的低边管或者利用半桥2低边管的体二极管续流但用同步整流效率更高。此时电感中的电流不能突变会通过续流回路给Cell2充电电感电流线性下降能量从磁场变成电场充进Cell2。这里有一个关键点。在半桥架构中两个半桥的输出是互补的不能同时导通上下管。TM4C123GH6PZ的PWM模块可以生成带死区的互补PWM信号我把两对互补信号分别接到两个半桥驱动器上硬件上就保证了不会直通。PWM频率我设为100kHz。这个频率的选择是权衡的结果频率高了电感可以选小但开关损耗增大频率低了开关损耗小但电感体积大。100kHz在10uH电感、0.5A均衡电流下电流纹波在可接受范围内。如果均衡电流要加大到1A建议把频率提高到150kHz。占空比的设定更有学问。理想情况下Cell1给Cell2均衡时输出电压Cell2电压等于输入电压Cell1电压乘以占空比即D V2 / V1。比如Cell1电压3.6V、Cell2电压3.4V那么占空比约0.944。但因为续流期间二极管或同步管有压降实际占空比要略微调整。大部分情况下占空比的底数按这个公式计算然后通过电流闭环微调。电流环用一个经典的PI控制器目标值是设定的均衡电流0.5A反馈值是采样电阻测到的实际电流输出调节PWM占空比。这样即使电池电压在均衡过程中变化电流也能稳定在设定值附近。3.3 保护机制均衡电路直接接触电池保护做不好就可能出安全事故。我板上做了这几层保护。过压和欠压保护任何一节电池电压高于4.3V或低于2.5V时禁止均衡。高于4.3V说明接近过充此时均衡动作可能加剧失衡低于2.5V说明电池已深度放电继续搬运能量没有意义。过温保护NTC热敏电阻贴在功率电感和MOSFET附近。当温度超过65℃时暂停均衡降到55℃以下恢复。温度超过85℃则直接进入FAULT状态必须断电或人工复位才能恢复。过流保护采样电阻测到均衡电流超过预设限值比如1.2A时立即关断所有PWM并在下一次启动时以更小的占空比试探。连续触发三次过流则进入FAULT状态。均衡超时保护设置一个最大均衡时间比如连续均衡30分钟压差仍没有收敛认为异常停止均衡并上报故障。这可以防止因为电池内部故障导致的“永远也均衡不完”的假象。最后还有一个MCU自身的看门狗保护。TM4C123GH6PZ内部看门狗如果发生程序跑飞100ms内没有喂狗就会自动复位复位后所有PWM输出默认关闭保证不会出现失控的开关状态。4. 软件实现要点4.1 ADC采样与滤波TM4C123GH6PZ的ADC模块有12位分辨率采样速度足够快。我用了定时器触发ADC转换每1ms触发一轮采样处理完再进下一轮。单次采样直接就用的话噪声数据会干扰判断。我写了三阶处理第1步连续采样8次去掉最大值和最小值取剩下6次的平均值。第2步滑动平均保存最近5轮的均值取平均作为最终结果。第3步变化率限制相邻两轮采样的电压变化超过100mV时认为是异常丢弃这次结果。这三步下来电压读数非常稳定。实测静态时读数抖动在±1mV以内这在均衡判断中足够可靠。4.2 PWM模块配置TM4C123GH6PZ的PWM模块配置要设置周期、占空比、死区、互补输出和对齐方式。我用的是PWM模块0的生成器0和生成器1分别驱动两个半桥。关键配置PWM频率100kHz所以周期寄存器值 系统时钟 / 预分频 / 100000。死区时间设为200ns装载值根据时钟计算。两个PWM输出配置为互补模式并且使能故障输入。初始占空比设为0即默认全部关断直到均衡状态机批准后才开始输出。软件里我封装了三个函数pwm_set_duty(direction, duty)pwm_start()和pwm_stop()。方向参数决定哪个半桥先行占空比由PI控制器实时更新。这里有一个重要细节均衡方向切换前必须先把PWM完全关闭等100us之后确认电感电流已经下降到零再打开新的方向。否则电感里的残余电流会瞬间冲击新的开关管导致炸管或过流保护误触发。4.3 状态机与均衡算法伪代码状态机的核心代码结构大致如下。我简化了关键逻辑实际工程里还加了大量日志和断言检查。typedef enum { IDLE, BAL_1_TO_2, BAL_2_TO_1, FAULT } balance_state_t; float cell_voltage_filtered[2]; float balance_current; uint16_t cycle_counter; while (1) { // 采样与滤波 cell_voltage_filtered[0] read_filtered_voltage(CH_CELL1); cell_voltage_filtered[1] read_filtered_voltage(CH_CELL2); balance_current read_current(); board_temp read_temperature(); // 安全检查 if (cell_voltage_filtered[0] OVP_LIMIT cell_voltage_filtered[0] UVP_LIMIT cell_voltage_filtered[1] OVP_LIMIT cell_voltage_filtered[1] UVP_LIMIT board_temp OTP_LIMIT) { // 正常状态 } else { set_state(FAULT); } // 状态机切换 switch (state) { case IDLE: if ((cell_voltage_filtered[0] - cell_voltage_filtered[1]) BAL_THRESHOLD) { set_state(BAL_1_TO_2); } else if ((cell_voltage_filtered[1] - cell_voltage_filtered[0]) BAL_THRESHOLD) { set_state(BAL_2_TO_1); } break; case BAL_1_TO_2: if ((cell_voltage_filtered[0] - cell_voltage_filtered[1]) BAL_HYSTERESIS) { pwm_stop(); set_state(IDLE); } break; case BAL_2_TO_1: if ((cell_voltage_filtered[1] - cell_voltage_filtered[0]) BAL_HYSTERESIS) { pwm_stop(); set_state(IDLE); } break; case FAULT: // 禁止均衡等待故障消失 pwm_stop(); if (all_conditions_normal()) { set_state(IDLE); } break; } // 均衡执行PI电流闭环 if (state BAL_1_TO_2 || state BAL_2_TO_1) { pwm_duty pi_controller(TARGET_CURRENT, balance_current, pwm_duty); pwm_set_duty(state, pwm_duty); pwm_start(); } delay_ms(10); }代码不复杂但可靠性体现在细节里。所有状态切换都有逻辑保护任何异常都优先关PWM、再报故障这是嵌入式电源设计的铁律。4.4 通信与日志调试阶段我用UART9600波特率输出日志每秒打印一次两个电池电压、压差、均衡电流、PWM占空比、状态、温度。用串口助手看整个系统运行过程一目了然。与上位机的CAN通信走的是标准CAN 2.0A帧ID自定义报文格式里包含电压、温度、状态、故障标志。上位机下发配置帧可以修改均衡阈值、目标电流、超时时间。这个设计在实际调测中非常有用不用重新烧录固件就能调整参数。4.5 看门狗与异常恢复TM4C123GH6PZ看门狗使用的是独立的时钟源主程序循环里喂狗。如果因为某种原因进入了死循环或者任务卡住看门狗会强制复位MCU。复位后我专门加了一个标志位判断原因。如果是看门狗复位会把本次均衡的日志保留下来下一次启动时不自动恢复均衡先上报故障等上位机确认后再尝试。这样可以避免系统在故障状态下反复重启、反复均衡的失控局面。5. 实测数据与结果分析5.1 测试环境与方法测试用的是两节磷酸铁锂电池额定容量10Ah标称电压3.2V。为什么选磷酸铁锂因为储能和备用电源系统用磷酸铁锂的比例非常高浮充电压、截止电压和三元差别很大测试结果更有参考价值。我把其中一节电池故意放掉一部分电量制造出明显的电压差然后让均衡板自动工作。用万用表每分钟记录一次两节电池电压用温度计记录功率级MOSFET和电感的表面温度同时通过UART日志记录均衡电流和PWM占空比。测试包括三个场景场景1Cell1偏高电压差210mV正向均衡。场景2Cell2偏高电压差190mV反向均衡。场景3把电压差缩小到30mV以内观察系统回差控制是否稳定会不会频繁启停。5.2 典型均衡过程场景1的实测结果最有代表性。初始状态Cell13.42VCell23.21V压差210mV。系统上电后大约3秒状态机完成确认进入BAL_1_TO_2状态。均衡电流稳定在0.5APWM占空比在94%左右和理论计算吻合。电感轻微啸叫但听不见100kHz超出人耳范围功率级表面温度从28℃缓慢上升。压差变化过程如下时间分钟Cell1电压Cell2电压压差均衡电流03.42V3.21V210mV0.50A53.39V3.24V150mV0.51A103.37V3.27V100mV0.50A153.35V3.29V60mV0.49A203.33V3.31V20mV0.50A233.32V3.31V10mV0.49A第23分钟时压差降到10mV状态机触发停止均衡回到IDLE状态。最终稳定压差不超过5mV均衡效果符合预期。这里有个值得注意的现象均衡过程中Cell1和Cell2的电压都在缓慢变化不是Cell1单纯下降、Cell2单纯上升而是两者都在变化。这是因为电池的端电压受SOC和极化效应共同影响电压绝对值的升降并不完全等于能量的增减。所以判断均衡是否完成主要看压差而不是看某节电池的绝对电压。反向均衡场景2的曲线基本对称系统在BAL_2_TO_1状态下的表现同样稳定。说明两个方向的功率级对称性做得还不错没有出现单向性能偏差。5.3 均衡效率与温升整个均衡过程平均电流0.5A平均转移电压约3.3V转移功率约1.65W。功率级总损耗包括MOSFET导通损耗、开关损耗、电感铜损和铁损。实测MOSFET表面温度最高48℃电感温度最高45℃环境温度28℃温升约20℃。对0.5A均衡电流来说这个温升完全可接受。如果长期连续均衡建议加一点风道或者把功率器件铺铜面积加大温度还能再降几度。均衡效率用能量法粗略估算转移能量 / (转移能量 损耗能量)。我拿电池放电曲线和均衡前后SOC对比估算效率大约在85%到90%之间。比无源均衡的0%效率全部损耗好太多了。这也是有源均衡在储能系统中最大的价值。5.4 场景3回差控制实测把两节电池压差人为调整到28mV刚好超过启动阈值30mV不触发均衡。再手动微调让压差进入30mV到50mV区间观察系统启停。实测结果系统启动均衡后压差会快速降到20mV以下然后触发回差停止。停止后压差会缓慢回升因为电池自放电和极化恢复但回升速度远低于均衡速度。整个系统没有出现频繁启停的振荡现象十分钟内只触发了两次均衡每次工作不超过两分钟。回差设置10mV的效果达到了预期。6. 常见问题与调试技巧实录6.1 采样电压比万用表偏高或偏低现象ADC读到的电压和万用表实测相差50mV以上用于均衡判断完全不可信。原因基本就是两个分压电阻误差或者ADC参考电压不准。解决分压电阻用0.1%的低温漂电阻成本贵不了多少精度提升明显。ADC参考电压我用的是内部3.3V本身精度一般所以必须做两点校准。上电后先测电池实际电压把计算出的分压比修正值存在Flash里每次启动加载。校准之后实测误差在±5mV以内。6.2 PWM一开采样电压毛刺很大现象均衡没开启时电压读数很稳一旦PWM开始输出ADC读数剧烈跳动甚至出现负值。这是典型的开关噪声耦合。MOSFET开关瞬间地弹和辐射会干扰ADC采样。解决思路有两个方向。硬件上采样运放的电源要从MP2642GR-Z的5V经过LC滤波后再取采样信号走线远离功率电感。软件上把ADC采样触发时间避开PWM开关沿。我用的是PWM同步触发在PWM一个周期末尾开关动作完成后再触发采样毛刺问题基本消除。6.3 均衡电流上不去或者不稳定现象目标电流设了0.5A但实测电流只有0.2A或者电流忽大忽小。先检查MOSFET的栅极驱动波形。用示波器测半桥中点的开关波形看上升沿和下降沿是否陡峭。如果波形缓慢爬坡说明栅极驱动电流不够需要加强驱动能力。再检查电感是否饱和。电流越大电感量越低如果电感进入饱和电流会失控上升PI控制器根本拉不住。我调试时就遇到过电流突然从0.5A跳到1.2A的情况换了大饱和电流的电感后解决问题。最后检查PI参数。比例系数太大容易振荡积分系数太大容易过冲。我最终参数是Kp0.1、Ki0.02一次到位比较稳。6.4 MOSFET异常发热现象均衡工作几分钟后MOSFET温度超过80℃闻起来有点糊味。基本可以断定是开关损耗过大或者死区时间不够导致直通。用示波器看半桥两路栅极波形如果上下管的导通时间有重叠那就是死区不够。我调大到200ns后直通问题消失。如果波形正常还是热那就是开关频率太高导致开关损耗大。我试过把频率从100kHz降到80kHz温度降了6℃左右。但频率降低后电感体积要加大需要权衡。还要留意同步整流的方向。续流阶段打开哪颗管、关断哪颗管没有完全按照电流方向来就可能出现“该导通的时候不导通、该关断的时候不关断”的反激状态电流波形异常发热剧增。6.5 电感啸叫现象均衡开启后电感发出“滋滋”声听起来很烦。电感啸叫通常是PWM频率落在音频范围内20Hz到20kHz或者PWM占空比在振荡。我用的100kHz正常听不到但如果工作在轻载PFM模式脉冲频率会降低就会啸叫。我的解决办法是均衡模式强制使用连续导通模式CCM不要让电流进入断续模式。继续加大一点均衡电流或者调整占空比下限啸叫就消失了。另外电感线圈如果绕制不紧磁芯或漆包线会在交变磁场中微振动这也会啸叫。换一体成型电感之后这类机械噪声基本听不到了。6.6 上电反复复位现象电池一接上板子反复重启LED闪个不停UART打印乱码。一般是电源不稳。可能是MP2642GR-Z输出带载能力不够或者输出电容不足导致启动瞬间电压跌落。我用示波器抓5V电源轨发现启动瞬间有个明显的下陷。解决加大输出电容到44uF检查反馈分压电阻焊得对不对再不行就把软启动时间调长一点。另外一个容易忽略的点是TM4C123GH6PZ的3.3V LDO前级必须干净如果5V轨纹波大MCU的ADC和逻辑都不稳。6.7 均衡结束时电压反弹现象压差降到10mV系统停止均衡但几分钟后压差又慢慢涨回30mV甚至更高。这其实是正常现象不需要恐慌。电池端电压由SOC、极化和内阻压降共同决定。均衡停止后极化效应慢慢恢复Cell1和Cell2的端电压都会变化如果两节电池的极化恢复速度不一样压差就会出现短期反弹。解决的办法是停止均衡的判定阈值不要只看瞬时的压差而是看几分钟稳定后的压差。我在软件里加了一个“稳定期观察”状态压差小于10mV后持续观察5分钟如果压差仍能稳定在15mV以内才完全回到IDLE。如果反弹超限就再启动一轮均衡。经过这样处理基本不会出现“均衡完又反弹”的抱怨。6.8 常见问题速查表现象可能原因排查与解决电压采样偏差大分压电阻精度不够 / ADC参考电压误差换0.1%电阻做两点校准PWM后采样毛刺开关噪声耦合采样错开开关沿电源隔离滤波均衡电流不足栅极驱动弱 / 电感饱和 / PI参数不当检查驱动波形换大饱和电流电感调PIMOSFET温度高死区不够 / 频率过高 / 同步整流方向错加大死区降频检查续流时序电感啸叫断续模式 / 占空比振荡强制CCM调整占空比下限上电复位电源带载不足 / 软启动过快加大输出电容延长软启动均衡结束电压反弹极化恢复导致增加稳定期观察逻辑7. 从2S扩展到多S的扩展思路这套方案虽然针对2S串联电池但核心的均衡策略和软件架构完全可以扩展到更多节串联的电池组。如果把均衡单元从一对电池扩展为多对可以采用多级电感均衡拓扑每个均衡单元负责相邻的几节电池。也可以在软件上把状态机改成轮询方式依次处理每一对电池的压差。控制核心TM4C123GH6PZ的PWM资源足够驱动多个半桥所以硬件上主要增加的是功率级。如果项目往大容量储能方向走均衡电流可能需要提到2A以上。这时功率级的MOSFET、电感和采样电阻都要升级散热方案也不能疏忽。均衡算法也可以从简单的压差均衡升级为SOC均衡或者容量均衡但这需要加荷电状态估算算法复杂度会上一个台阶。我个人在实际操作中的体会是均衡系统能不能长期稳定运行七成取决于功率级的可靠性三成取决于软件保护的完备性。刚开始做的时候我一度把大量精力花在调算法和调阈值上结果发现只要功率级参数选对、保护做全面算法部分反而很顺。所以如果你也在做类似的项目建议先把MOSFET驱动波形用示波器看透再回来调均衡参数会少走很多弯路。最后再分享一个小技巧均衡板调试时别急着接真实电池。先用两台可调直流电源模拟两节电池电压差任意设置电流限制调到0.5A这样即使软件写错了也不会炸电池。等所有逻辑在模拟环境下跑顺了再接真实电池做实际均衡测试。我在整个开发过程中都是用这个流程安全系数高很多排查问题也快很多。
阅读完成 · 觉得有帮助?
咨询建站