ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

两串锂电池均衡设计:基于MP2642与PIC的被动均衡方案

两串锂电池均衡设计:基于MP2642与PIC的被动均衡方案

1. 项目思路与整体设计拆解

1.1 两节串联电池为什么也需要均衡

先说结论:串联节数越少,单节电压不一致造成的容量损失越容易被忽视,但实际上非常致命。

我接过不少备用电源相关的活儿,很多是给安防设备、表计、小型储能柜做后备电池管理。这类系统最常见的是两节磷酸铁锂串联,或者两节铅酸串联。很多人觉得两节而已,电压差能有多大?实际做过就知道,由于电池出厂内阻差异、所处温度位置不同、充放电循环次数不一致,经过几十个循环之后,两节电池的电压差距可以轻松拉开到 100mV 以上。

在充电阶段,假设系统是 2S 磷酸铁锂,充电截止电压按单节 3.65V 算,总电压 7.3V。如果两节电池一个偏高一个偏低,充电管理器按照总电压判断,高的一节可能已经到 3.70V,低的那节才 3.55V。这时候如果继续充电,高的那节就会过充,带来安全隐患;如果停止充电,低的那节永远充不满。放电阶段也一样,总电压看着还有余量,实际上其中一节已经接近欠压保护点,直接触发系统断电。

所以,均衡不是多串电池组的专利。两节串联的系统同样需要,而且因为电池数量少,均衡控制的逻辑更简单,但采样精度和判定策略反而更容易被低估。

1.2 MP2642GR-Z 与 PIC18F45K50 的分工逻辑

这个项目里两个核心芯片的分工非常清晰:MP2642GR-Z 负责电源路径管理和充电控制,PIC18F45K50 负责电压采样、均衡判定和执行控制。

MP2642GR-Z 是前端的电源管理芯片,完成输入电源到电池组之间的充电管理。它处理恒流恒压充电曲线、输入限流、系统负载优先这些事。我可以把它理解为“管家”,只管电怎么流进电池、怎么流到系统负载,它不管电池之间谁高谁低。

PIC18F45K50 则是整个均衡系统的“大脑”。它通过 ADC 采样两节电池各自的电压,计算差值,判断当前是充电状态还是待机状态,然后决定要不要打开均衡开关,什么时候关掉,以及遇到异常情况怎么保护。

两个芯片之间不是简单的“主从关系”,更像是一种配合关系。PIC 需要知道当前 MP2642GR-Z 的工作状态——是在充电、还是在浮充、还是已经保护——这样才能决定均衡是否允许介入。我在设计中用 MP2642GR-Z 的状态输出脚接一个 GPIO 到 PIC,PIC 通过电平判断当前充电阶段。如果系统处于恒压浮充阶段,均衡介入效果最好;如果是大电流恒流充电阶段,均衡反而可能干扰充电管理器的判断。

2. 系统架构与均衡方案选型

2.1 电源路径管理:MP2642GR-Z 在系统里的位置

这套系统的供电拓扑是这样的:外部直流电源输入,经过 MP2642GR-Z 后,分两路走,一路给电池组充电,另一路通过它内部集成的路径管理直接给系统负载供电。这个“路径管理”功能在实际产品里特别重要。

什么叫路径管理?简单说就是当输入电源能力不足时,优先保证系统负载的供电,剩余电流才用来给电池充电。比如输入适配器最大只能提供 2A 电流,系统负载吃掉了 1.5A,那电池充电就只能拿到 0.5A。如果没有路径管理,传统方案里充电器和负载抢电流,很容易把输入电源拉垮,甚至导致系统电压跌落复位。

在备用电源场景中,这个功能更关键。平时市电正常,系统用外部电源供电同时给电池浮充;市电断开时,MP2642GR-Z 的输入掉电,系统自动切换到电池放电回路,负载由电池直接供电。切换过程不能导致系统断电,所以芯片内部需要有理想二极管或者 FET 开关做无缝切换。这一块 MP2642GR-Z 自己处理,PIC 不需要干预,但 PIC 要能感知当前是“外部供电模式”还是“电池放电模式”,因为均衡只能在外部供电模式下进行。

我在状态设计里,把 MP2642GR-Z 的工作模式通过两个 GPIO 读进来:一个表示输入电源是否在位,一个表示是否处于充电状态。只有输入在位且充电状态有效时,均衡模块才允许动作。这样能避免一个常见问题——系统在电池放电模式下误开均衡,白白浪费电池能量。

提示:规划电源拓扑时,一定要把均衡电路放在 MP2642GR-Z 的输出侧、电池组的两端并联位置,不要放在输入端。否则均衡动作会影响输入电源的稳定。

2.2 被动均衡 vs 主动均衡:这个场景为什么选被动

均衡从能量处理方式上分两大类:被动均衡和主动均衡。

被动均衡的做法是,检测到某一节电池电压偏高时,通过并联在这节电池两端的电阻,把多余的能量以热量的形式消耗掉。优点是电路简单、成本低、控制逻辑直接,缺点就是能量被浪费掉,而且电阻发热。

主动均衡的做法是,用双向电源转换电路,把高电压电池的能量搬到低电压电池里去。效率高,热量小,但是电路复杂,一个双向升降压拓扑加上变压器或电感,成本翻几倍,控制算法也麻烦很多。

在备用电源这个场景,我最终选了被动均衡。理由主要有三个。

第一个理由是均衡的必要性低。备用电源大多数时间处于浮充状态,充放电循环次数少,电池之间的分化速度比动力电池慢得多。只需要在浮充期间把电压差拉回到一个可接受范围就行,不需要频繁进行大电流均衡,被动均衡的时间足够。

第二个理由是发热可以被接受。被动均衡的发热量由均衡电流决定。我把单节均衡电流限制在 100mA 到 200mA 之间,对应的功率也就 0.4W 到 0.8W 左右,用合适的 PCB 铜箔散热就完全能扛住。

第三个理由是故障模式更安全。被动均衡的电路故障模式是“开关短路导致一直放电”和“开关开路导致不均衡”,两种都能被电压检测发现。而主动均衡电路一旦控制时序出错,可能直接引发电池间环流,这种故障在备用电源这种长期无人值守的场景里非常危险。

那两串电池能不能做主动均衡?能,而且很多 IC 方案就是这么干的,用开关电容或者反激变换器在电池之间搬能量。但自主设计的话,做两串主动均衡的性价比很低,你还得额外处理 MP2642GR-Z 和均衡模块之间的电流交互,复杂度会高不是一星半点。

3. 均衡控制的核心逻辑与算法设计

3.1 电压采样与校准:决定均衡精度的第一道关卡

被动均衡的控制依据是两节电池的电压差。这个差值测得准不准,直接决定均衡的效果。

两节串联电池的采样点有三个:总正极、中间连接点、总负极。我必须分别测出“上电池电压”和“下电池电压”。注意,MCU 的 ADC 参考地是系统 GND,也就是电池总负极。所以我要采两个电压值,一个是总正极电压,一个是中间连接点电压,然后下电池电压就是中间连接点电压本身,上电池电压则是总正极电压减去中间连接点电压。

这里有个容易踩坑的地方:如果直接把电池正极接 MCU 的 ADC 脚,两串电池的总电压可能超过 MCU 的供电电压,会烧引脚。必须用分压电阻先把电压降到 ADC 量程以内。

对于磷酸铁锂两串,总电压最高大约 7.3V,PIC18F45K50 如果 VDD 是 3.3V,那分压比至少要大于 2.2。我用了两个电阻,一个是精密电阻加固定电阻的串联分压,分压比设计在 2.5 倍左右,也就是 ADC 输入电压最高不超过 3V。中间连接点电压最高 3.65V,也超过 3.3V,同样需要分压。

但分压电阻一加,问题就来了:电阻有误差。普通 1% 精度的电阻,分压比误差会直接影响采样电压的绝对值。比如 100k 和 51k 的分压结构,1% 误差可能导致几十 mV 的测量偏差。对于均衡控制来说,这个偏差比电池本身的不均衡还大,必须校准。

我的做法是两点校准。每块板子在出厂前,用一台精度 0.05% 的可调电源,分别在两个电压点下做校准,算出实际分压比的修正系数,烧录进 EEPROM。ADC 采集的时候用这个修正系数做线性换算。这套校准流程看起来增加了一点生产步骤,但换来的是电池电压采样精度达到 ±5mV 以内,后期调试会非常舒服。

注意:校准数据必须存在 EEPROM,不要存在 Flash 程序的常量区。不同板子的分压电阻实际阻值不一样,常量区写死校准值的话,每换一块板子都要重新编译固件,项目后期维护会疯掉。

3.2 均衡判定与滞回控制:阈值怎么定更合理

均衡判定的核心是:什么时候打开均衡,什么时候关闭均衡。我的实现思路不是简单的“差值大于阈值就开着,小于阈值就关”,而是采用滞回控制,避免均衡开关反复抖动。

具体参数我是这样设的:

以磷酸铁锂两串为例,均衡开启条件是,两节电池电压差值大于 30mV,且此时系统处于充电或浮充状态。均衡关闭条件是,差值小于 15mV,或者系统退出充电状态,或者任一电池出现过压保护。

30mV 和 15mV 这个 15mV 的滞回带宽,配合采样滤波之后,可以保证开关不会在临界点来回抖动。如果开启阈值和关闭阈值设成同一个值,比如都是 20mV,那只要采样噪声有波动,开关就会反复通断,均衡 MOS 管在这种高频开关下发热非常明显,而且会产生电磁干扰。

还有一种情况要特别处理:如果两节电池电压都偏高,比如都超过 3.55V,但差值只有 10mV,这样不应该开均衡吗?我的答案是,不应该。因为这个差值在正常范围内,说明电池是均衡的,不需要动作。真正需要处理的场景是一节 3.58V、另一节 3.49V,差值 90mV,这种情况下即使两节都没到充满电压,也必须开始均衡,防止高的一节继续被充电推到过压。

均衡使能还需要一个最低电压条件。我设成两节电池都高于 3.0V 时才允许均衡。低于这个电压,电池处于深度放电状态,此时的首要任务是充电补电而不是均衡,先让电池恢复到安全电压区间再说。

3.3 安全保护与故障切换

均衡系统虽然简单,但不能裸奔,必须设计一套保护逻辑。我用软件实现了几类保护。

过压保护:任意一节电池电压超过 3.70V,PIC 立即关闭均衡 MOS,并拉低 MP2642GR-Z 的充电使能脚,停止充电。这个动作要在 10ms 内完成,防止电池被推到危险电压。如果软件跑飞或者 ADC 出问题,硬件上还有一节单独的电压比较器做第二道防线,可以直接拉断充电回路,这个我在后面硬件部分细说。

过流保护:被动均衡的电流主要由泄放电阻阻值决定,理论上不会过流。但 MOS 管如果被击穿短路,均衡电流会持续流过。我在每个均衡支路串了一个 0.2A 的自恢复保险丝,加上固件里判断“如果均衡开启超过 2 小时且电压差值没有下降”,就上报故障并锁存,需要人工复位。

均衡超时保护:如果均衡开启时间超过设定上限,说明电池可能已经出现了不可恢复的分化,这时继续均衡已经没有意义。我的做法是记录连续均衡时间,超过 2 小时后关闭均衡并点亮告警灯,提示维护人员检查电池状态。

4. 硬件电路与关键参数详解

4.1 电压采样电路设计

采样电路我做成了三级结构:分压、滤波、钳位保护。

第一级分压:上电池采样点(总正极 V+)和中间节点(Vmid)各用一个分压电阻网络。V+ 采用 100kΩ 和 51kΩ 分压,Vmid 采用 100kΩ 和 51kΩ 分压,比例都是约 1.51:1。注意,这里电阻一定要选低温度系数的,普通贴片电阻温度系数可能达到 100ppm/℃,在 -20℃ 到 60℃ 范围内会引入不小的漂移。我选的是 25ppm/℃ 的薄膜贴片电阻,温度漂移基本可以忽略。

第二级滤波:分压后的信号串一个 1kΩ 电阻,对地并一个 0.1μF 电容,构成一阶低通滤波,截止频率大约 1.6kHz。这个滤波很关键,因为 MP2642GR-Z 是开关电源芯片,开关噪声会通过 PCB 走线耦合到采样线上,不加滤波的话 ADC 采出来的数据跳动非常大。

第三级钳位保护:ADC 引脚对地并联一个 3.3V 的 TVS 管,防止电池反接或者带电插拔时过压损坏 MCU。

采集顺序上有个细节:PIC18F45K50 的 ADC 只有一个采样保持电容,多通道切换时,通道之间会互相串扰。所以我在固件里做通道切换后延时 10μs 再启动转换,确保前一个通道的电荷已经泄放掉。

4.2 均衡执行电路设计

均衡支路结构是:电池两端并联一个 MOS 管加一个泄放电阻。

两串电池需要两个均衡支路。下电池(Cell2,连接在总负和中间节点之间)的均衡支路,MOS 管源极可以直接接地,栅极由 PIC 的 GPIO 通过 10kΩ 限流电阻驱动,控制逻辑最简单。上电池(Cell1,连接在中间节点和总正之间)就麻烦了。

上电池的均衡支路,如果想用 N 沟道 MOS 管做低边开关,MOS 管的源极会接在中间节点上,这个节点电压是浮动的,大约在 2.5V 到 3.7V 之间。PIC 的 GPIO 输出高电平是 3.3V,栅源电压不够,无法可靠导通 N 沟道 MOS 管。如果直接用 P 沟道 MOS 管做高边开关,栅极驱动逻辑就要反一下,而且 P 沟道 MOS 管的栅极耐压要仔细算。

我最终选择了用 P 沟道 MOS 管搭高边开关的方案。P-MOS 的源极接中间节点,漏极接泄放电阻到总正极,栅极通过一个 100kΩ 电阻上拉到中间节点,同时通过一个 2N7002 小信号 N-MOS 管下拉到地。PIC 的 GPIO 控制 2N7002 的栅极,当 GPIO 输出高电平,2N7002 导通,把 P-MOS 栅极拉低,P-MOS 导通,均衡电流从上电池的正端流出,经泄放电阻回到中间节点。这里 P-MOS 的栅源电压大约是 3V 到 3.6V,已经足够导通,但要注意选低阈值电压的 P-MOS,比如阈值电压在 -1V 左右的型号。

泄放电阻的阻值选择也很有讲究。均衡电流取 100mA 时,对于磷酸铁锂单节 3.2V,泄放电阻约 32Ω,功率 0.32W。我选了 30Ω/1W 的电阻,留足裕量。实际测试中,持续均衡半小时,电阻表面温度稳定在 70℃ 左右,手摸上去有点烫,但完全在安全范围内。如果想进一步降低温度,可以把均衡电流降到 50mA,电阻改 62Ω,代价是均衡时间翻倍。

实操心得:泄放电阻务必用绕线电阻或者大封装厚膜电阻,不要用 0603 贴片电阻。0603 封装在 0.3W 持续功耗下会非常烫,长期工作容易出问题。我最后用的是 2512 封装,温升控制好很多。

4.3 MP2642GR-Z 与 PIC 的联动接线

MP2642GR-Z 和 PIC 之间的联动,我用了几根线:充电状态输出、输入电源在位输出、充电使能输入。这三根线把两个芯片的职责边界划清楚,后续固件逻辑就非常好写。

充电状态输出接到 PIC 的一个 GPIO,用中断加查询两种方式同时处理。中断用于在状态翻转的瞬间快速反应,比如从充电状态切到保护状态时,PIC 要立刻关闭均衡。查询用于主循环里的周期检查,防止中断漏掉。

输入电源在位输出接到另一个 GPIO,PIC 据此判断当前系统是外部供电还是电池放电。这个信号也是均衡使能的必要条件。

充电使能输入由 PIC 控制,正常工作时保持高电平。一旦过压保护触发,PIC 拉低这个脚,MP2642GR-Z 停止充电。这里要注意的是,这个脚不能直接由 PIC 的 GPIO 驱动而不加保护,因为某些芯片的这个脚是开漏输出结构,需要外加上拉。我这边的做法是,PIC 的 GPIO 通过一个三极管反相器驱动,既实现了电平转换,又隔离了两边的地电位和噪声。

5. 固件实现要点

5.1 ADC 采集与滤波:数据抖动的处理思路

PIC18F45K50 的 ADC 是 12 位,理论上分辨率已经足够,但实际采样数据如果不做处理,直接拿来做均衡判定,你会看到差值在几十 mV 范围内疯狂跳动。

根本原因有三个:一是电池本身是化学源,电压存在微小的动态波动;二是 MP2642GR-Z 的开关噪声窜入了采样通道;三是 ADC 的参考电压噪声。

我用的滤波策略分三层。

第一层是硬件滤波,已经在采样电路里做了 RC 低通,把高频噪声压下去。

第二层是软件均值滤波。每个电压采样点连续采 8 次,去掉最大和最小值,剩下 6 次求平均。这样能滤掉偶发的尖峰,也能压缩剩余的高斯噪声。

第三层是滑动平均。把最近 5 轮的平均值再做一次加权滑动平均,最新一轮权重 0.4,前四轮权重各 0.15。这个处理之后,电压值稳定度可以达到 ±3mV 以内,均衡判定完全不会抖动。

代码示意:

uint16_t read_adc_average(uint8_t channel) { uint16_t values[8]; uint16_t min, max; uint32_t sum = 0; // 切换通道后等待模拟开关稳定 ADC_ChannelSelect(channel); __delay_us(10); for (uint8_t i = 0; i < 8; i++) { ADC_StartConversion(); while (!ADC_IsConversionDone()); values[i] = ADC_GetResult(); } min = values[0]; max = values[0]; for (uint8_t i = 1; i < 8; i++) { if (values[i] < min) min = values[i]; if (values[i] > max) max = values[i]; } for (uint8_t i = 0; i < 8; i++) { if (values[i] != min && values[i] != max) { sum += values[i]; } } return (uint16_t)(sum / 6); }

这里有个小细节,去掉最大最小值时,如果有多个相同的最大值或最小值,我的写法是只要不等于第一次找到的 min 和 max 就都保留。实际效果和预期一致,因为异常值通常只有一个。

5.2 均衡状态机:结构清晰比炫技重要

整个均衡控制逻辑,我建议用状态机来实现,不要用一堆 if else 堆逻辑。状态机的好处是状态转移清晰,不容易漏判,调试的时候只需要看状态编号就能定位问题。

我定义了五个状态:IDLE、CHARGING、BALANCING、FAULT、STANDBY。

IDLE 是上电初始状态,此时 PIC 正在做 ADC 自检和参数加载。自检完成后,检查 MP2642GR-Z 的状态,如果输入电源在位且电池电压大于欠压阈值,进入 CHARGING。

CHARGING 状态下,PIC 周期采集两个电池电压,计算差值。如果差值大于 30mV,且充电状态有效,切换到 BALANCING。如果差值一直小于 30mV,则停留在 CHARGING,相当于被动监控。

BALANCING 状态下,打开对应的均衡 MOS 管。如果均衡的是上电池,置高上电池均衡控制脚;如果是下电池,则置高下电池均衡控制脚。然后继续周期采集电压,当差值回落到 15mV 以下,关闭均衡 MOS,回到 CHARGING。如果均衡持续超过 2 小时,进入 FAULT。

FAULT 状态下,PIC 关闭所有均衡动作,拉低充电使能,点亮告警灯。此时需要通过断电重启或者外部复位才能回到 IDLE。这是故意设计的锁存功能,防止故障状态下系统自己恢复继续带病运行。

STANDBY 是电池放电模式,即 MP2642GR-Z 报告输入电源不在位。在这个状态下,均衡逻辑完全禁用,PIC 进入低功耗模式,只保留一个周期唤醒定时器做电压巡检,用于判断外部电源是否恢复。

状态机的核心循环大约 100ms 跑一次,电压采集占 20ms,剩余时间做状态判断和 GPIO 刷新,MCU 负载非常低。

5.3 校准流程与参数存储

均衡算法里有几个参数需要视实际硬件调整:均衡开启阈值、关闭阈值、过压保护阈值、均衡超时时间。这些参数如果写在源码里,每次调整都要重新编译烧录,太麻烦。

我把它们放在 EEPROM 中,通过串口命令修改。具体做法是,PIC18F45K50 的 UART 接收帧格式为“参数名=数值”,比如“BAL_ON=30”,解析后写入 EEPROM。生产调试时,接一个 USB-串口板就能在线调参,非常方便。

EEPROM 写入有寿命限制,所以我在固件里做了个技巧:只有在参数值真正发生改变时才写 EEPROM,并且每条记录后加一个 16 位 CRC。读取的时候先校验 CRC,如果 CRC 错误,说明 EEPROM 数据不可信,就回退到 Flash 里的默认参数。

校准流程在实际生产中是这样的:先不接电池,用高精度可调电源给“电池输入端”加一个已知电压,比如 3.200V 和 3.500V 两个点,通过串口把 ADC 原始值读出来,计算修正系数,写入 EEPROM。这个过程每人每天能做几百块板子,熟练之后很快。

6. 常见问题与排查实录

6.1 均衡电流明显小于设计值

这个现象我刚做第二版样机的时候遇到过。设计均衡电流 100mA,实测只有 60mA 左右。

排查思路先测均衡支路两端电压。把万用表串进泄放电阻回路,发现电流确实只有 60mA,但电池两端电压正常。这说明不是电池电压不够,而是回路等效电阻比设计大。

进一步测 MOS 管导通压降,发现 P-MOS 管漏源电压有 0.5V 左右,明显偏大。回头查数据手册,发现那颗 P-MOS 用的是低阈值型号,但导通电阻 RDS(on) 在 3.5V 栅源电压下高达 1Ω 以上。均衡电流 100mA 时,MOS 管本身就吃掉 0.1V 电压,加上 PCB 走线的电阻,总压降比预期多不少。

解决办法是换了一颗 VGS(th) 在 -0.7V 左右、RDS(on) 在 150mΩ 以下的 P-MOS,再实测电流回到 95mA 左右。这个案例说明,在低压均衡电路中,MOS 管的导通电阻和阈值电压往往比耐压更关键,选型时不能只看封装和电流等级。

排查心得:所有均衡回路中的电压降都要算清楚。电池 3.2V,P-MOS 压降 0.2V,泄放电阻 30Ω 压降 3.0V,这样电流约 100mA。如果 MOS 压降占了 0.5V,电流直接少了 10%。低压系统里,0.1V 都是大事。

6.2 电压采样值跳变导致均衡误触发

有一版样机,均衡控制器总是莫名其妙地频繁开启和关闭,观察采样数据,发现中间节点电压会有规律性地产生约 20mV 的尖峰,持续时间很短,但足够触发阈值判断。

后来发现这个尖峰跟 MP2642GR-Z 的开关频率严格同步。我这边的采样电路虽然已经做了 RC 滤波,但滤波截止频率还是偏高。MP2642GR-Z 的开关噪声辐射出来,通过空间耦合进采样线。

处理办法有两个方向。一是把 RC 滤波器的截止频率降下来,比如把 0.1μF 改成 1μF,截止频率降到 160Hz。但这个改动会拖慢电压响应的实时性。二是调整采样时序,让 ADC 采样避开开关管的开通瞬间。我选择了后者,通过 MP2642GR-Z 的同步信号引脚,在开关管关断期间触发 ADC 采样,效果非常明显,采样值跳动从 ±20mV 降到了 ±3mV。

这个问题的通用处理思路是:如果采样值抖动有固定频率,先判断这个频率是否和电源开关频率一致。如果是,优先采用同步采样而不是一味加强滤波,因为滤波太深会让电压值滞后,在保护逻辑里引入不可控的延迟。

6.3 均衡关闭后电池电压“反弹”超出滞回

实际运行中,我遇到过这样的场景:两节电池差值 35mV,均衡开启,等差值降到 14mV 关闭均衡。结果关闭后过了几秒,差值又回升到 25mV 以上,然后又触发均衡。如此反复。

这个问题的本质是电池内部的扩散极化。当均衡电流从电池抽出时,高电压电池在负载瞬间电压会略有下降,撤掉负载后,电池内部的化学状态重新平衡,电压会回升一部分。这个“回升”如果超过了滞回带的下沿,就会造成反复开关。

解决办法是把均衡关闭阈值再降一档。原来的关闭阈值是 15mV,我改成 10mV,均衡多开一会儿,等电池极化的动态过程基本结束再关。同时,我在关闭均衡后增加了一个 5 秒的锁定时间,无论电压差值如何变化,5 秒内不重新开启均衡。这两个措施叠加后,反复开关的问题彻底消失,均衡 MOS 管的开关次数大幅减少,可靠性和寿命都提升了。

这个经验也解释了为什么要做滞回而不是简单阈值比较——滞回带宽至少要比电池极化的回弹幅度大,否则就会在这个问题上翻车。

6.4 MP2642GR-Z 误保护触发均衡中断

还有一类问题需要关注:MP2642GR-Z 内置的保护功能,比如输入过压、输出过流保护,有可能在均衡开启的瞬间被误触发。这个现象在刚上电、电池电压比较低的时候容易出现。

原因是均衡开启瞬间,泄放电阻像一个额外负载突然挂到电池上,相当于在 MP2642GR-Z 的输出端制造了一个负载突变,输出电流瞬态增大,触发了芯片的过流保护判断。

解决办法是让均衡软启动。固件里不用 GPIO 直接满占空比驱动 MOS 管,而是输出一个 PWM 信号,占空比从 10% 逐步升到 100%,相当于让均衡电流从 10mA 慢慢爬升到 100mA。整个过程大约 200ms,MP2642GR-Z 完全感知不到明显冲击。这个软启动逻辑同时也能减少 MOS 管开关瞬间的电压尖峰,对 EMC 有好处。

注意:PWM 控制均衡电流时,MOS 管开关频率建议选 1kHz 左右,不要选太高。频率太高,泄放电阻上会产生明显的纹波,而且 MOS 管的开关损耗会上升。1kHz 足够平顺,开关损耗几乎可以忽略。

整个项目做完的一些体会

做这个两串均衡项目,前后的调试周期比我预想的长一些,主要在采样精度和状态机边界条件上花了不少时间。要是当初直接把均衡判定逻辑写成简单阈值比较,可能第一版就能调通一个大概,但后续会被各种动态电压问题反复折腾。现在这版,状态机清晰,采样有校准有滤波,均衡参数全部可调,放到不同电池规格的设备上只改参数就行,不需要重新写逻辑。

建议手里有类似项目的人,优先把采集校准和状态机做扎实,均衡电路反而是最不费心思的部分。还有一个可以顺手扩展的方向:这个系统目前只支持被动均衡,如果后续需要支持更大容量电池组,可以把均衡执行换成一个双向 DCDC 模块,控制接口不变,PIC 侧只要增加一个占空比控制输出就能对接,整体思路完全复用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进