串联电池包里的两节电池,真的做不到“出厂即一样”。哪怕同一批次、同一厂家,只要循环次数、内阻、环境温度有一点差异,两节电池在储能和备用电源系统里就会越跑越偏。我这次做的项目,就是针对“两节串联电池单元”的均衡,思路是用 MP2642GR-Z 做能量搬移,TM4C123GH6PZ 做采样和控制,把一个耗散型均衡器换成有源双向均衡器,让高容量电池给低容量电池“输血”,而不是把多余能量白白烧掉。
这个方案适合做 2S 电池包的 BMS 辅助均衡、24V 备用电源模块的电池维护,也适合太阳能储能系统里的小型电池组。下面我把整个设计思路、硬件细节、控制算法以及调试过程中踩过的坑整理出来,给大家一个可以直接参考的实物方案。
1. 为什么串联电池非均衡不可
1.1 “木桶效应”在电池包里的放大
串联电池组有个很要命的特性:充电电流和放电电流是一样的,但每节电池的容量和内阻不一样。充电时,容量小的那节先充满,可系统还在继续充,它就会被过充;放电时,容量小的那节先放空,系统还在继续放电,它就会被过放。过充和过放都会加速电池老化,老化又加剧容量偏差,这就是一个正反馈死循环。
我实测过一组用了半年的 2S 磷酸铁锂电池,初始电压差只有 10mV 左右,半年后静态电压差能拉到 80mV 以上。带载状态下差距更夸张,瞬间能到 200mV。如果不做均衡,整包可用容量是按照最低那节电池算的,系统标称 20Ah,实际用出来可能只有 16Ah 甚至更少。
在备用电源场景里这个问题更敏感。备用电源平时浮充待命,电池长期处于“充满但不工作”的状态,自放电率不一致会慢慢拉大两节电池的电压差。一旦市电断电,电池要带载放电,电压低的那个单元会最先触底,触发保护后整包直接停止输出。明明还有电,但设备就是不能工作,这比容量衰减更让人头疼。
1.2 无源均衡为什么“治标不治本”
常见的均衡方案是无源均衡,也就是给每节电池并联一个放电电阻和开关。当某节电池电压偏高时,打开对应开关,通过电阻把这节电池的能量消耗掉。好处是电路简单,成本极低,坏处也很明显:
- 能量被浪费成热量,电池舱散热压力大
- 均衡电流通常只有几十到几百毫安,速度很慢
- 高电压电池被强行“放气”,但低电压电池一点好处都没得到
- 在备用电源这种长期浮充的场景里,无源均衡既慢又低效
有源均衡则完全不同。它的核心思想是把高电压电池的能量搬到低电压电池里去,让两节电池电压重新对齐,同时不浪费能量。针对两节串联电池,最实用的拓扑就是“交叉升压”结构:用 MP2642GR-Z 组成升压转换器,配合 TM4C123GH6PZ 控制的开关网络,让能量在高电压电池和低电压电池之间双向流动。
1.3 我为什么坚持选“MCU + 升压电源”这套组合
市面上有专门的电池均衡芯片,比如某些多节电池的主动均衡前端。我之前也试过,说白了它们的可调性不够,均衡电流、均衡策略、保护阈值都写死在芯片里。对于两节电池的定制系统,我更愿意把控制权握在自己手里。
MP2642GR-Z 负责“能量搬移”的粗活,只管把输入电压升到目标电压并稳定输出。TM4C123GH6PZ 负责“聪明决策”的细活,采样两节电池电压、估算压差、控制开关网络选通方向、决定什么时候开始均衡、什么时候停止。两个角色分工明确,调试起来逻辑很顺。
另外 TM4C123GH6PZ 的资源对这个项目来说非常够用。它内置两个 12 位 ADC,可以同时采样两路电压;PWM 模块有足够的通道去驱动电源芯片的使能和开关网络;ARM Cortex-M4F 内核跑个简单状态机绰绰有余,还留有余量做上位机通信。整套系统测下来,均衡精度控制在 20mV 以内完全不是问题。
2. 系统结构搭建:两块电池一个控制器
2.1 从功能看整体架构
整个均衡模块从功能上可以拆成四个部分:电池电压采样网络、均衡核心(升压转换器)、能量方向切换开关阵、主控制器 TM4C123GH6PZ。我在设计时给每个部分都定了明确接口,方便单独调试。
电压采样网络把两节电池的电压分别通过电阻分压器降到 MCU ADC 可接受的范围,再经过一阶 RC 滤波送到 TM4C123GH6PZ 的 ADC 引脚。主控制器根据采样结果判断当前压差方向和均衡需求,然后输出控制信号给开关网络和 MP2642GR-Z 的使能端。
当检测到 BAT1 电压高于 BAT2 时,控制器选通“BAT1 输入、BAT2 输出”的路径:MP2642GR-Z 从 BAT1 取电,升压后给 BAT2 充电。反过来,BAT2 电压偏高时,就选通反向路径。整个过程里,能量一直在两节电池之间流动,不消耗、不发热,这就是有源均衡的核心价值。
文字描述可能有点抽象,我用一个简单的等效关系说明能量流向:
BAT1 电压高 -> MP2642GR-Z 将能量从 BAT1 抽出 -> 升压后灌入 BAT2 BAT2 电压高 -> MP2642GR-Z 将能量从 BAT2 抽出 -> 升压后灌入 BAT1MP2642GR-Z 内部本身只负责单向升压,方向切换完全靠 TM4C123GH6PZ 控制外部开关矩阵来实现,这也是整个硬件设计里最需要注意的地方。
2.2 均衡核心 MP2642GR-Z 的选型理由
MP2642GR-Z 是一个升压型开关电源芯片,典型的应用是 LED 驱动、电池充电和升压供电。我选中它主要看中三个特点:
- 输入电压范围宽,能覆盖单节锂电池的 2.7V 到 4.5V 工作区间,也适合 12V 铅酸电池的半电压场景
- 集成度高,外围元件少,升压电感、采样电阻、分压反馈电阻加上输入输出电容就能工作,非常适合做紧凑模块
- 开关频率可配置,能通过外部电阻设定频率,方便避开 MCU PWM 和 ADC 采样可能产生的干扰频段
在均衡器里,MP2642GR-Z 不是简单当普通升压电源用,因为它面对的负载是电池而不是纯电阻。电池本身是电压源,升压输出如果直接怼上去会电流失控,所以还有一层控制逻辑:MP2642GR-Z 设置的是一个“高于目标电池当前电压的恒定电压”,然后通过外部限流或者输出电流检测来限制灌入电流。
实际使用中,我会把升压目标电压设置成比电池最高充电电压略高一点,比如 2S 磷酸铁锂单体最高 3.65V,我就把升压输出目标设在 3.75V 左右,再配合限流电阻保证灌入电流不超过 1A。这样无论目标电池当前电压是多少,只要低于 3.75V,均衡电流就是可控的。
2.3 TM4C123GH6PZ 的职责不只是采样
很多人拿到 TM4C123GH6PZ 第一反应就是“这是个 MCU,用来读电压的”,但在均衡系统里它承担的事要多得多。
电压采样只是基础。更关键的是采样时机和采样策略。如果错误地在升压开关动作瞬间去采样,ADC 读到的电压会混入严重的开关噪声,导致误判。我通常采用“时序分片”策略:先关闭均衡核心,等电压稳定 1ms 以上,再启动 ADC 采样,等采样完成后再重新开启均衡。一个完整均衡周期大概 5ms 到 20ms,完全不影响均衡效率,但采样精度能提高一个量级。
TM4C123GH6PZ 还负责控制均衡方向。它在内部维护一个状态机,状态包括“静默监测”“正向均衡”“反向均衡”“均衡完成”“异常保护”五个状态。每一个状态切换都有严格的电压阈值和延时确认条件,防止瞬时波动引起误动作。
IO 口资源也很充裕。两路 ADC 用于采样,两路 GPIO 控制开关矩阵,一路 GPIO 控制 MP2642GR-Z 的 EN 引脚,再留两路 GPIO 接蜂鸣器和状态指示灯。对这个小系统来说资源绰绰有余。
2.4 为什么这种“分立方案”优于“一体化方案”
市面上也有把采样、控制、均衡集成在一起的专用芯片,比如多节电池的主动均衡前端。这些芯片在笔记本电池、电动工具电池里很常见,优势是开发快、外围少。
但这个项目我坚持分立方案,理由是:
- 均衡策略完全可定制。专用芯片的均衡算法是写死的,很难针对磷酸铁锂这种“放电平台平坦”的电池单独调阈值。磷酸铁锂充满和放空的电压差很小,只有 0.5V 左右,需要非常精准的电压判断逻辑,分立方案可以自己写。
- 开关网络可控性强。我可以根据实际均衡电流需求选择不同电流等级的 MOSFET,而不受芯片内部开关管的限制。
- 调试透明。用示波器可以清晰地看到每一级信号,这在做原型验证时太重要了。一体化芯片内部状态不透明,出了问题很难定位。
当然,分立方案也有代价:BOM 增加、PCB 面积变大、开发周期变长。但对于两节电池的定制系统,这些代价是完全值得的。
3. 关键硬件设计细节
3.1 升压转换器:从原理图到参数计算
MP2642GR-Z 的典型应用电路可以照搬数据手册里的升压拓扑,但用在均衡器里需要改几个关键参数。
电感选择是这个项目里第一个坑。升压电感的饱和电流必须大于最大均衡电流,我设计的最大均衡电流是 1.2A,那就不能只按 1.2A 选,考虑到启动瞬间和电池压差较大时的浪涌,至少要留 30% 裕量,选饱和电流 1.8A 以上的电感。电感值也不能太大,太大动态响应慢,均衡电流爬升迟缓;太小则纹波电流大,容易在输出端产生电压纹波干扰采样。我最后用的是 22uH 的电感,实测效果不错。
反馈电阻决定升压输出目标电压。MP2642GR-Z 内部参考电压固定,外部两个分压电阻的比值就够了。这里有个非常关键的点:目标电压必须根据实际应用动态设定,而我这里没有做动态调压,直接固定目标电压。原因在于均衡器不是充电器,它不需要按照恒流恒压曲线去控制电池,只需要一个略高的目标电压把能量“推”过去。
输出电容的选择也有讲究。均衡过程中输出会接一个电池,电池本身的内阻非常低,相当于一个巨大的电容,所以输出电容的主要作用是滤除高频纹波,不需要太大容量。我选了 22uF 陶瓷电容加 100uF 电解电容的组合,兼顾高频和低频。
还有个很容易忽略的点是输入侧的防倒灌。MP2642GR-Z 升压转换器在关断时,输出端可能会通过内部体二极管倒灌到输入端。因为均衡方向切换时,两个电池的电压可能非常接近,倒灌电流虽然不大,但会干扰电压采样,甚至导致开关网络误动作。我在输入和输出之间加了 MOS 管做隔断,由 TM4C123GH6PZ 一并控制。
3.2 采样电路的精度,决定整个均衡的质量
均衡器做得好不好,第一看采样精度,第二才是算法。哪怕控制算法写得再漂亮,如果电压采样漂了 30mV,那均衡结果就是“傻均衡”,可能会把本来健康的一节电池拉到不健康的状态。
TM4C123GH6PZ 的 ADC 是 12 位的,参考电压是 3.3V,理论分辨率 0.8mV,看起来绰绰有余。但实际使用时,电池电压是 3.0V 到 4.2V,直接采样肯定不行,必须用电阻分压器降到 2V 左右再进 ADC。这个分压比的精度就直接影响采样精度。
我用的分压电阻是 0.1% 精度的薄膜电阻,分压网络设计成 1kΩ 和 6.8kΩ。选大阻值是为了降低静态功耗,但阻值太大又会对 ADC 采样电容建立时间造成影响。好在 TM4C123GH6PZ 的 ADC 内部有采样保持电路,只要把采样时间设置足够长,这个影响可以忽略。我的做法是把 ADC 采样序列的采样时间设为最大,并增加一次额外的“空转换”丢弃结果,让内部采样电容充分充电后再取有效值。
RC 滤波也是关键。在分压电阻后面加一个 0.1uF 电容和 10kΩ 电阻组成低通滤波,截止频率大约 160Hz,可以有效滤除均衡开关带来的高频干扰。这里要注意,RC 滤波会引入相位延迟,也就是电压响应变慢。对于均衡这种秒级的控制,几百毫秒的延迟完全感知不到,所以不用担心。
采样校准我强烈建议做一下。虽然用了 0.1% 精度电阻,但 PCB 上的焊点和走线阻抗仍然会造成微小偏差。我在固件里做了一次两点校准:用高精度台式万用表分别测两节电池的真实电压,同时读取 ADC 原始值,计算每个通道的比例系数和偏置,保存到 Flash 中。这样校准之后,系统能稳定做到 ±5mV 以内的测量误差。
3.3 开关矩阵:能量方向的真正执行者
前面反复提到的“开关矩阵”,是整个硬件里最容易被低估的部分。它的作用是选择 MP2642GR-Z 的能量流动方向。
我用的是四个 P-MOSFET 组成的双通道开关结构。以 BAT1 向 BAT2 均衡为例,过程是这样的:BAT1 的正极通过一个 P-MOS 连接到 MP2642GR-Z 的输入,MP2642GR-Z 的输出通过另一个 P-MOS 连接到 BAT2 的正极。反向均衡时,控制器把这两个 MOS 关断,同时打开另一组对应的 MOS。电池的负极在整个系统中是公共参考点,不需要切换。
这个结构有一个隐藏的坑:P-MOSFET 的体二极管。MOS 完全关断后,源漏之间仍然存在一个体二极管,如果电池电压高于升压输出,就会通过体二极管倒灌。解决方法是使用“背靠背”连接,两个 MOS 源极相接或漏极相接,让体二极管方向相反,这样双向都能阻断。这个细节不加的话,你会在调试时发现明明开关已经关断,电池电压还是被拉到一起,非常迷惑。
栅极驱动也要单独考虑。P-MOS 要完全导通,栅源电压要比源极电压低一定值,通常用 PMOS 驱动,需要把栅极拉到系统地。而源极接的是电池正极,电压会随均衡过程变化。所以栅极驱动不能简单用一个 GPIO 直接驱动,中间必须加一个小 NPN 三极管或者专用的栅极驱动芯片。
我实测下来的做法是:GPIO 经过一个 100Ω 电阻接 NPN 三极管基极,三极管集电极接 P-MOS 的栅极,发射极接系统地。当 GPIO 输出高电平时,三极管导通,P-MOS 栅极被拉到地,MOS 导通。这里要注意加一个 10kΩ 到 100kΩ 的栅极泄放电阻,防止三极管截止时栅极悬空,导致 MOS 误触发。
3.4 保护逻辑不能少
均衡器本质上是把两节电池短路在一起(通过电感),一旦失控,后果不是烧个芯片那么简单,可能直接损坏电池包。所以我不仅在 MCU 固件里加保护,硬件层面也加了多重保险。
第一重保险是硬件过流保护。MP2642GR-Z 的电流采样引脚接一个低阻值的采样电阻,当电流超过设计值时,电源芯片内部的过流保护会直接关断开关,这个响应速度是微秒级的,比 MCU 任何软件保护都快。
第二重保险是 MCU 的电压窗口判断。两节电池的电压范围必须分别在 2.8V 到 4.4V 之间,均衡才允许开启。如果超出这个范围,比如一端欠压、一端过压,系统直接进入保护状态并点亮故障灯。因为这种异常已经不是均衡能解决的了,而是电池本身出问题了。
第三重保险是均衡超时保护。我设了一个定时器,如果连续均衡 2 小时压差仍然无法缩小到设定阈值,就强制停止并报警。这种情况意味着两节电池的容量差已经大到无法通过均衡修复,需要人工检查。
这三重保险层层递进,覆盖了从瞬时故障到长期退化的大部分风险场景。做嵌入式设计的人都知道,靠一层保护就像靠一根安全带,三重保险才敢把系统交给用户。
4. 均衡控制算法:从电压差到状态机
4.1 均衡判定:别让噪声骗了你
均衡算法的第一步是判断“要不要均衡”。最直接的标准是看两节电池的电压差,但直接拿瞬时采样值去判断是最容易翻车的做法。
电池在静置和带载时的电压表现完全不同。静置时,极化效应逐渐消失,电压会缓慢回升;带载时,内阻压降会让电压瞬间变化。如果在带载过程中采样,看到的大概率是噪声而不是真实电压差。
我的做法分三步:第一步是“静置采样”,只有在系统没有大功率充放电时才进行均衡判定。第二步是“多次平均”,连续采样 32 次,去掉最大最小再取均值,有效抑制随机噪声。第三步是“延时确认”,如果判定结果达到均衡启动阈值,比如电压差大于 30mV,则必须连续三次采样都满足条件才真正启动均衡。三步下来,误触发的概率几乎为零。
均衡启动阈值不能设得太小。磷酸铁锂在静置状态下,即使匹配得很好,两节电池的电压也可能有 5mV 到 15mV 的随机漂移。阈值设成 10mV 的话,系统会频繁启动又频繁停止,不仅均衡效率低,还白白消耗开关寿命。建议的启动阈值是 30mV 到 50mV,停止阈值是 10mV 到 20mV,中间留一个明显的滞环区间。
4.2 均衡电流如何限制
确定了要均衡之后,下一个问题是均衡电流设置多大。均衡电流越大,均衡速度越快,但热量和损耗也越大。均衡电流越小,速度越慢,电池长期处于“微均衡”状态反而更稳定。
我的经验是:对于容量为 10Ah 到 20Ah 的电池单元,均衡电流设为 0.5A 到 1A 比较合适。太小的话,对已经明显失衡的电池组来说,均衡时间太长,用户体验差;太大的话,均衡过程中电池发热明显,而且需要更大电感、更大电流的 MOS 和开关,PCB 面积也会增加。
实际上,MP2642GR-Z 的开关频率是固定的,我调节均衡电流主要靠限制它的输出电流。通过在输出端串联一个电流采样电阻,把电流信号送给主控制器的 ADC,在固件里做一个简单的 PI 电流环。当检测到电流超过目标值,就周期性关断 MP2642GR-Z 的 EN 引脚,用“间歇式”控制把平均电流拉下来。这种方式比改变反馈电压要简单,响应速度也足够。
这里要给一个非常重要的建议:不要用线性方式连续调节 EN 引脚占空比来限流。MP2642GR-Z 的 EN 引脚虽然支持 PWM 调光,但在电池均衡场景下,频繁开关会导致输出电压反复建立和跌落,容易在输出端产生浪涌。间歇式控制要限制频率,比如每 100ms 关断一次,每次关断 20ms,这样输出电压不会完全跌落,平滑性好很多。
4.3 状态机设计:一切尽在掌控
把控制逻辑写成状态机,比写一个“串行 if-else”要清晰得多。我的状态机分五种状态,用一个枚举变量表示:
- 静默监测:默认状态,不进行均衡,每 1 秒采样一次电压
- 正向均衡:BAT1 向 BAT2 传输能量
- 反向均衡:BAT2 向 BAT1 传输能量
- 均衡完成:压差已经进入滞环区间,停止均衡,重新进入监测
- 异常保护:电压超限、电流超限或超时,锁存故障,需要人工复位
状态机的好处是逻辑边界清晰。比如从“正向均衡”切换到“反向均衡”时,必须经过“静默监测”状态,而不能直接切换。因为能量方向切换需要先把当前开关全部关断,等待残留电荷泄放完,再打开另一组开关。直接切换可能会在瞬间形成一个直通路径,把两个电池短接。
延时确认在每个状态入口都要做。我习惯用一个 200ms 定时器,每 50ms 检查一次状态条件,条件持续满足 4 次才切换。200ms 对电池均衡来说是很短的时间,但足够过滤掉大多数瞬态干扰。
4.4 均衡终止的精细处理
很多人以为均衡终止就是“压差小于阈值就停止”,但实际项目中还有一个更精细的考量:均衡停止后,电池电压并不会立刻收敛,而是会经历一个回弹过程。
因为在均衡过程中,高压侧电池处于放电状态,电池极化效应会拉低它的电压;低压侧电池处于充电状态,极化效应会抬高它的电压。当均衡停止时,极化效应消失,高压侧电压会回升,低压侧电压会回降。如果只按停止阈值来判断,可能出现一种情况:均衡时看着压差已经到 15mV,停止后回弹到 40mV,马上又启动均衡,来回震荡。
解决办法是放宽停止阈值的迟滞。我的设置是:启动阈值 40mV,停止阈值 20mV。均衡停止后,即使压差回弹到 30mV,也处于滞环区间内,系统保持静默。只有压差再次超过 40mV 才会重新启动。实测下来,一个均衡循环之后,两节电池的电压差通常稳定在 10mV 到 25mV 之间,不会再反复震荡。
另外,均衡操作最好安排在电池静置时间段。我设计了一个“静置窗口检测”,如果系统检测到充放电电流持续低于 100mA 超过 5 分钟,才允许均衡真正启动。这样做的目的是保证电池工作在接近开路电压的状态,让电压差反映真实的 SOC 差异,而不是内阻差异。
5. 实操过程、BOM 选型与调试记录
5.1 原型搭建:先分模块调,再整机联调
如果直接把整套系统焊好再上电调试,出了问题会非常难定位。我花了大量时间在分模块测试上,这个环节省下来的时间远比投入的多。
第一步先调采样电路。单独给 MCU 供电,接好分压网络,用高精度电源模拟电池电压,从 2.5V 扫到 4.5V,对比 ADC 读数和万用表读数,记录误差曲线。这一步如果误差超过 10mV,就要检查分压电阻、滤波电容和接地布局。
第二步调升压核心。把 MP2642GR-Z 的输入接一个可调电源,输出接一个电子负载,测试升压功能是否正常。此时先不要接电池,也不要接开关矩阵,就用纯电阻负载验证恒压输出。重点观察带载时输出电压的纹波,以及电感的发热情况。
第三步调开关矩阵。用一个 10Ω 功率电阻模拟负载,通过 MCU 控制 MOS 开关,验证方向切换是否正确。用示波器同时看两组 MOS 的栅极信号,确保没有任何时刻两组 MOS 同时导通。这个测试很重要,因为两组 MOS 同时导通是致命的。
最后一步才是整机联调。把两节真实电池接上,在电池之间串联一个精密电流表,观察均衡电流是否与设置值一致。然后人为让两节电池产生不同初始电压,比如一节 3.9V、一节 3.5V,启动均衡,记录整个过程中两节电池电压和电流的变化曲线。
5.2 BOM 选型参考
| 元器件 | 选型建议 | 备注 |
|---|---|---|
| 升压主控 | MP2642GR-Z | 输入宽压,外围少 |
| 主控制器 | TM4C123GH6PZ | ARM Cortex-M4F,ADC精度高 |
| 升压电感 | 22uH,饱和电流 1.8A 以上 | 优先选屏蔽电感,减少辐射干扰 |
| 采样电阻 | 3W 功率电阻,阻值按电流设定 | 精度 1%,尽量选带 Kelvin 连接的四线电阻 |
| 分压电阻 | 0.1% 精度,阻值按量程计算 | 温漂 25ppm 以下 |
| P-MOS | 耐压 20V 以上,电流 2A 以上 | 注意体二极管方向,背靠背连接 |
| 栅极驱动管 | NPN 三极管或专用栅极驱动芯片 | 按开关频率和栅极电荷选型 |
| 输出电容 | 22uF 陶瓷 + 100uF 电解组合 | 兼顾高频滤波和低频稳定 |
| 指示电路 | 双色 LED + 蜂鸣器 | 用于显示均衡状态和故障 |
这里要特别提一句采样电阻。均衡电流经过采样电阻产生的压降很小,但它的功耗却不容小觑。1A 电流流过 0.1Ω 电阻,功耗就是 0.1W,如果用的是 0402 封装,会热得烫手,电阻值也会漂移。我的建议是至少用 0805 以上封装,功率裕量留到 3 倍以上。
5.3 常见问题与排查技巧
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 均衡启动后电流为 0 | MP2642GR-Z 未使能,或输入电压低于启动阈值 | 用示波器看 EN 引脚电平,测量输入电压是否正常 |
| 均衡电流忽大忽小 | 电感饱和,电流采样不稳定 | 换更大饱和电流电感,检查采样电阻焊点 |
| 两个电池电压快速拉平后反向拉开 | 开关网络倒灌 | 检查 MOS 体二极管方向,确认背靠背连接 |
| MCU 采样电压波动大 | ADC 采样时机和均衡开关冲突 | 采用时序分片,采样前关闭均衡核心 |
| 系统发热严重 | 均衡电流过大或电感选择不当 | 测量各元件温度,锁定发热源 |
| 均衡结束后电压回弹明显 | 极化效应影响,停止阈值设置过小 | 增大滞环,调整启动和停止阈值 |
“均衡结束后电压回弹明显”是我在实际调试中遇到最多的现象。第一次测试时,我把停止阈值设成 5mV,结果系统几乎无法稳定,来回切换,把两节电池折腾得够呛。后来把停止阈值放宽到 20mV,启动阈值提高到 40mV,延迟确认时间从 50ms 增加到 200ms,整个系统才稳定下来。
另一个常见问题是 MOS 栅极振荡。在面包板或飞线上调试时,栅极走线太长会引入寄生电感,高速开关时产生振铃,严重的话 MOS 会在开关瞬间反复导通关断,导致莫名发热。解决办法是在栅极串联一个 10Ω 到 47Ω 的电阻,配合原有的栅极泄放电阻,把振铃抑制掉。这个电阻也可以降低 EMI,值得作为标准设计保留。
5.4 我踩过的几个坑
第一个大坑是启动瞬间的浪涌电流。第一次给均衡器上电测试时,我直接用一对 4.2V 锂电池,上电瞬间一股大电流从高压电池涌向低压电池,接近短路的水平,直接把采样电阻烧红了。原因是我漏掉了 MCU 初始化阶段对开关网络的默认状态定义,在上电的一瞬间,GPIO 处于高阻状态,外部下拉电阻没来得及把 MOS 栅极拉高,导致两组开关同时处于不确定状态。
解决办法很直接:在所有 MOS 栅极上加 100kΩ 下拉电阻,保证 MCU 未初始化时开关全部截止。然后在固件里将 GPIO 初始化为“先设输出值再设方向”的顺序,防止中间状态直通。
第二个坑是电池自放电率差异被误判为均衡失效。我的故障率逻辑是“均衡 2 小时压差不缩减 20mV 就报警”,结果有一个测试单元总是在运行一段时间后报警。拿万用表一测,发现这不是均衡器的问题,而是其中一节电池本身自放电率极高,一边均衡一边漏电,收益被自放电抵消了。这个案例说明,均衡器只能处理容量差异,无法修复内部微短路。与其强行均衡,不如把异常电池挑出来。
第三个坑是电磁干扰对电压采样的影响。MP2642GR-Z 工作在高频开关状态,它产生的电场和磁场会耦合到附近的采样走线上,导致 ADC 读数随负载变化而漂移。我之前把采样走线紧贴着升压电感走,采样值简直不能看。后来把采样走线改为距离电感 5mm 以上并增加覆铜隔离,同时在 ADC 输入引脚直接加 1nF 旁路电容,问题立刻解决。这个教训对 PCB 布局很有参考意义。
6. 后续扩展:让它不只是“两节电池的均衡器”
这套方案做完之后,我心里冒出来的第一个想法是:既然能用固件控制方向、用开关阵列切换路径,那是不是能扩展到更多节电池?答案是肯定的,但要注意一些限制。
扩展到 4 节电池时,均衡路径会变得更加复杂。两节电池只需要一个升压核心加两组开关,四节电池就需要高密度开关阵列来选通任意两节电池之间的路径,控制复杂度指数级上升。我的建议是保留已有的两节均衡模块,把它作为“均衡单元”,然后把多个均衡单元级联起来。每个单元只负责相邻两节电池的电压对齐,单元之间通过 MCU 的通信接口协调优先级。这样模块化设计,单个单元出问题时也方便替换。
对于更高电压的系统,比如 12V 铅酸电池组,可以把每个“电池单元”定义为一整块电池而不是单节电芯,均衡器只在两块电池之间搬运能量。此时升压比会变大,MP2642GR-Z 的耐压和功率裕量就需要注意了,必要时得换更高耐压的升压芯片。控制逻辑不变,变的只是电压采样分压网络和电流参数。
还可以给系统加上上位机功能。TM4C123GH6PZ 自带 UART 模块,可以实时把两节电池电压、均衡电流、状态机状态、故障码发送给上位机,方便后台监控。在储能系统中,这些数据可以帮助维护人员判断电池健康度,甚至在均衡启动前就预告电池风险。我最后就把 UART 接到了一个数据终端,在调试时能看到完整的曲线,确实省了不少事。
从我个人的实际操作体会来说,这套“升压核心 + MCU 开关阵列”的有源均衡方案,比无源均衡有质的提升,主要体现在三个地方:均衡过程中没有明显的热量堆积,均衡速度比无源方案快了 5 倍以上,而且整套系统能精确知道自己在干什么。虽然第一版调试过程踩了不少坑,但把这些经验整理下来之后,后续做多节电池的方案就顺畅多了,希望你拿到这份记录后,也能少走几步弯路。