在储能和备用电源系统里,串联电池均衡是一个绕不开的话题。两节电池串联看似简单,但真正投入到产品里就会发现,电芯容量衰减速度不一致、内阻不同、自放电率有差异,用上一段时间后必然出现一节偏高、一节偏低的情况。如果不处理,充电时低压的那节还没充满,高压的已经触发了过压保护;放电时高压的还没放完,低压的已经欠压停机,系统实际可用容量直接被最弱的那节电芯锁死。这个项目做的就是基于 MP2642GR-Z 与 PIC18F67K40 这两个核心器件,实现对两个串联电池单元的动态均衡。
整个方案的核心思路很简单:功率执行交给 MP2642GR-Z,判断调度交给 PIC18F67K40。微控制器负责实时采集两节电池电压、判断电池间的压差状态、控制均衡通道的接通与断开;功率级负责把整组电池的电能安全地灌入低电压的那一节电芯,让电压高的等待、电压低的追赶。项目最终做成了一版可稳定运行的主动均衡单元,均衡电流可以控制在 0.1A 到 0.5A 之间,压差阈值可配置。这篇文章会把硬件架构、参数计算、软件状态机以及联调中踩过的坑完整梳理一遍,适合正在做 BMS、便携储能、两串锂电池后备电源的硬件工程师和嵌入式开发者参考。
1. 项目整体设计与选型思路
1.1 为什么必须做均衡,被动均衡够不够用
两节串联电池的失衡是必然的,不是概率问题。即使出厂时是同一批次、同一容量档的电芯,经过几十次充放电循环之后,容量衰减、内阻增大的速度也会因为温度分布、装配应力、自放电差异而明显分化。更麻烦的是,保护板通常只监测整组电压或者只对串联总电压进行保护,单体过压和欠压很难被及时发现,最终要么造成过充发热,要么造成过放损坏。
行业里最简单的处理方式是被动均衡,也就是在每节电池上并联一个放电电阻和开关,当某节电压偏高时,通过电阻把多余的电量以热量形式消耗掉。被动均衡胜在电路简单,控制逻辑也很直白,但它有两个硬伤:一是均衡电流受限于散热,一般只能做到几十毫安,对容量稍大的电芯来说基本是在“挠痒痒”;二是它只能降压不能升压,遇到某节电压偏低需要补充电量时,被动均衡完全无能为力。
本项目面向的是储能和备用电源系统,这类设备长期处于浮充、间歇放电、深度循环交替的工况,对单体电压一致性要求高,而且机箱内往往没有条件做大规模散热。因此从一开始就确定用主动均衡方案,把能量从高电压单元搬向低电压单元,而不是白白烧掉。MP2642GR-Z 在这里承担的就是能量搬移的核心功率级角色。
1.2 MP2642GR-Z 与 PIC18F67K40 的分工逻辑
选型时我首先确定的是控制核心。PIC18F67K40 是一颗自带丰富模拟外设的 8 位 MCU,内部集成了分辨率足够的 SAR ADC、比较器、运放和 PWM 模块,这对电池采样和均衡控制来说非常合适。用一颗 MCU 直接完成电压采集、逻辑判断、通道切换、异常保护几件事,可以省掉一颗专用的模拟前端芯片,BOM 成本更低,而且控制逻辑完全在软件层手里,后期调整阈值不需要改板。
MP2642GR-Z 则是一颗集成度不错的同步降压转换器,内部集成了功率管,使用它作为均衡电源的输出级,好处是开关频率高、外围器件少、转换效率可观。在主动均衡方案里,它负责把两节电池的串联总电压转换为适合给单节电池补电的电压和电流。整个系统里 MCU 是“大脑”,MP2642GR-Z 是“手臂”,两者之间通过控制信号、反馈网络和采样电阻联系起来。
我把整个系统切成了几个模块:电池电压采样模块、功率转换模块、均衡通道切换模块、保护与指示模块。PS:在实际项目里,均衡通道切换模块的可靠性往往决定了整个方案的成败,这个后面会重点展开。
1.3 主动均衡拓扑怎么选
两节串联电池的主动均衡,拓扑上有几个方向可选:升降压变换器跨接在单体电池之间、飞渡电容电荷泵、以及我今天用的“降压变换器 + 通道开关矩阵”方案。
飞渡电容方案结构简单、成本极低,但均衡电流做不到很大,效率也受电容容量和控制时序影响,在真正的产品里容易变成“看起来能工作但是效果不明显”的状态。升降压跨接方案性能最好,但需要一颗四开关的升降压控制器,控制逻辑和控制环路都更复杂,两串系统里有点杀鸡用牛刀。
最终我选择了“整组取电、单体补电”的结构:MP2642GR-Z 的输入端接在两节电池的串联总电压上,输出端通过一组 MOS 开关矩阵,可以灵活连接到第一节电池或第二节电池。当 MCU 判断第一节电压偏低时,输出端被接通到第一节电池;当判断第二节偏低时,开关矩阵把输出端切换到第二节电池。这种方式不需要改变功率级的电流方向,降压转换器始终工作在单向 buck 模式,控制环路只需要针对“给单体电池充电”这一个场景调好,稳定性比双向方案好处理得多。
2. 核心硬件电路设计与参数计算
2.1 系统总体结构说明
系统硬件上主要包含以下部分:两节串联电池组、MP2642GR-Z 降压功率级、输出端的 MOS 开关矩阵、电池电压差分采样电路、PIC18F67K40 主控及其供电电路。
电池组正极记为 BAT+,中间串联点记为 MID,负极记为 BAT-。MP2642GR-Z 的输入正极接 BAT+,输入负极接 BAT-,转换器地就是 BAT-。输出端 VOUT 和输出地 GND_OUT 是浮动的,通过开关矩阵选择接到哪一节电池。给第一节电池补电时,VOUT 接 MID,GND_OUT 接 BAT-;给第二节电池补电时,VOUT 接 BAT+,GND_OUT 接 MID。之所以要把输出地也做成可切换,是为了确保在任何一路均衡路径上,电流都能从电池正极流入、负极流出,方向不会搞错。
PIC18F67K40 的供电单独由一个低压差线性稳压器从整组电池电压转换而来。两节锂电池组在正常工作范围内约 6V 到 8.4V,LDO 输出 3.3V 给 MCU 和外围逻辑电路使用。这里不太建议用 DC-DC 给 MCU 供电,因为开关电源的纹波会耦合进 ADC 采样通道,影响电压判断精度。
2.2 电池电压采样与差分处理
均衡系统里,最基础也最关键的是电压测量。MCU 需要知道两节电池各自的实际电压,再决定要不要均衡、均衡多久、均衡电流多大。
两节电池中,第一节电池的负端就是 BAT-,正端是 MID,这个电压可以相对系统地直接分压后送 MCU ADC。第二节电池的负端是 MID,正端是 BAT+,相对系统地的电位被抬高了,不能直接把 BAT+ 分压后当作第二节电压来计算,因为 ADC 的地是 BAT-,测出来的只是 MID 和 BAT+ 的绝对电位。
我最初在验证板上用的是直接分压相减的方案:用两个精密电阻网络分别把 METER 的 MID 和 BAT+ 降到 ADC 量程内,软件里用 V_BAT+ 减去 V_MID 得到第二节电压。这个方案硬件简单,但精度受分压电阻误差和 ADC 量化误差双重影响,两个绝对值相减之后误差会被放大。后来改成了运放差分采样电路,用一片低失调电压的运放把第二节电池的电压直接差分成相对系统地的单端信号,再送 ADC。实测下来,差分采样方案的精度比单纯相减提高了不少。
采样电路的参数按照 12 位 ADC 设计,满量程 3.3V。第一节差分采样系数设为 1/2,也就是说 MID 对 BAT- 的 0 到 4.2V 电压被映射到 0 到 2.1V。第二节采样也采用同样的分压系数,保证两路信号的增益一致,后续软件标定会轻松很多。在每个 ADC 输入端并联了一只 100nF 电容和一只 1kΩ 电阻组成低通滤波,抑制开关噪声。
2.3 MP2642GR-Z 功率级参数设定
MP2642GR-Z 的输入范围覆盖两节锂电的整组电压,输出目标电压按单节锂电的充电目标设定。我这里设定的均衡目标电压是 4.1V,低于电芯的满充电压 4.2V,这样做的目的是避免均衡过程把电芯充到过压临界点。
输出电压由反馈电阻分压网络决定。参照 IC 内部基准电压,我设定的反馈分压比使 VOUT 稳定在 4.1V。计算过程不复杂,但有一个细节容易被忽略:均衡工况下输出直接并联在电池两端,而电池本身不是一个恒压源,它更像一个容值巨大的电容。转换器输出电压会被电池电压“拽住”,这时候电流会自然回落,所以不能只看空载输出电压,必须关注整个环路的恒流能力。
均衡电流的目标值设定为 0.25A,这个电流对于两串电池系统中常见的 2Ah 到 5Ah 电芯来说足够用,而且产生的温升可以控制在 MOS 管和电感可接受的范围。电流采样使用输出回路中的一个毫欧级采样电阻,把电流信号放大后反馈给 PWM 控制环路。需要说明的是,均衡电流不是越大越好,电流大了功率级和开关管的发热会明显增加,而且在大电流下电池内阻产生的压降会导致电压判断失真,反而容易让软件做出错误的均衡方向判断。
计算采样电阻时,我选用了 100mΩ 的合金采样电阻,目标均衡电流 0.25A 时采样电压约 25mV,这个量级还要经过放大后才好送 ADC。放大器的增益设定为 20 倍,这样满量程对应 0.5A 均衡电流,电压刚好落在 MCU 可检测的舒适区间。
2.4 均衡通道切换与保护电路
通道切换是主动均衡方案里最容易出问题的环节。给第一节电池均衡时,输出正极接 MID、负极接 BAT-;给第二节均衡时,输出正极接 BAT+、负极接 MID。这两组路径绝对不允许同时导通,否则 MP2642GR-Z 的输出端就会被直接短路。
我在设计时没有直接用简单的一对 MOS 管并联,而是把开关矩阵拆成独立的四组单刀单掷开关:SW_A 连接 VOUT 到 MID,SW_B 连接 GND_OUT 到 BAT-,SW_C 连接 VOUT 到 BAT+,SW_D 连接 GND_OUT 到 MID。控制逻辑上用两个 MCU 引脚分别输出“选择第一节”和“选择第二节”的使能信号,并且把这两路信号做了硬件互锁。
硬件互锁我用的是一个简单的逻辑电路:第一节使能信号经过反相后与第二节使能信号做与逻辑,只有当第一节关闭时第二节才能打开,反过来也一样。这个措施非常重要,因为 MCU 如果在极端情况下跑飞,或者 PWM 初始化瞬间引脚电平不确定,仍然很容易出现两组开关同时导通的情况,单纯靠软件延迟来避免风险是不可靠的。
MOS 管选型上,我用了低导通电阻的 N-MOS 和 P-MOS 混合搭配方案。由于输出回路中的电压基准不同,不是所有位置都适合同一种 MOS 管,具体栅极驱动电平需要根据 VOUT、MID、BAT+、BAT- 之间的电位差来选择。在电池负端一侧的开关用 N-MOS 比较方便,在电池正端一侧则要考虑栅极电压是否能完全开启 MOS 管,必要时加一个小电荷泵驱动或改用 P-MOS 加电平偏移。
每路开关还串了一个小阻值的限流电阻,确保即使控制逻辑异常,瞬间电流也不会超过功率级和电芯的安全承受范围。
3. 基于 PIC18F67K40 的均衡控制软件实现
3.1 ADC 采样与数据处理
软件部分的第一步是把两节电池的电压读准。PIC18F67K40 的 ADC 模块支持多通道采集,我把第一节电压通道和第二节电压通道分别接在 AN0 和 AN1 上。初始化时设置 ADC 参考电压为 3.3V,转换结果右对齐,采样时间适当延长以确保输入电容完全充电。
实际采集时我做了两个层面的滤波:一是硬件上已加的 RC 低通,二是软件上的多次采样取中位值。每个电压通道连续采样 15 次,排序后取中间值作为本次有效采样结果。这比简单的算术平均更能抵抗偶发的尖峰干扰,而且不会把真实电压变化平滑掉。
软件里还需要存一组校准系数。每个产品在出厂测试时,会使用高精度万用表测量 MID 和 BAT+ 的实际电压,同时记录 MCU 内部的 ADC 原始值,据此计算出每个通道的增益和偏置系数。这两组系数保存在数据 EEPROM 里,后续每次电压计算都用校准系数修正。这一步骤在量产里尤其重要,因为即使使用 1% 精度的电阻,分压网络的绝对误差也足以让 20mV 级别的均衡阈值判断失真。
3.2 均衡判定算法与状态机
均衡控制的核心是一个带滞回的状态机,避免因为电压在小范围内波动导致均衡通道反复通断。状态机的输入量是两节电池的当前电压,输出量是“不均衡、给第一节均衡、给第二节均衡”三个状态。
首先计算两节电池的电压差。当压差大于启动阈值时,进入对应的均衡状态。启动阈值我设置为 30mV,数字不算大,但对于两串电池系统来说,30mV 已经能反映出明显的容量或内阻差异。进入均衡状态后,只有当压差回落到停止阈值以下时才退出,停止阈值设置为 10mV。这种滞回设计防止了均衡器在临界点附近来回切换,否则 MOS 开关管会被频繁开关,损耗和 EMI 都会变得很难看。
除了电压差,状态机还考虑总电压范围。如果整组电压过低,说明电池处于深度放电状态,此时不允许开启主动均衡,因为能量从高压侧转移到低压侧会加剧整组电压的下降,可能触发系统的欠压保护。如果整组电压过高,同样不推荐长时间均衡,避免在浮充阶段对电芯造成额外热应力。
均衡还加了一个总时长限制。连续均衡时间超过设定值后强制退出,等待下一轮判断周期重新开始。这一条是针对极端情况的兜底,防止某节电芯内部微短路造成电压永远无法拉平,系统却一直在给它补电。
简化后的状态逻辑如下:
typedef enum { BALANCE_IDLE, BALANCE_CELL1, BALANCE_CELL2 } bal_state_t; bal_state_t balance_state = BALANCE_IDLE; void balance_update(uint16_t vcell1_mv, uint16_t vcell2_mv) { int16_t diff_mv = (int16_t)vcell1_mv - (int16_t)vcell2_mv; uint16_t total_mv = vcell1_mv + vcell2_mv; if (total_mv < HOLD_OFF_MIN_TOTAL_MV || total_mv > HOLD_OFF_MAX_TOTAL_MV) { balance_state = BALANCE_IDLE; balance_disable(); return; } switch (balance_state) { case BALANCE_IDLE: if (diff_mv > BALANCE_START_THRESHOLD_MV) { balance_state = BALANCE_CELL1; balance_select_cell(1); } else if (diff_mv < -BALANCE_START_THRESHOLD_MV) { balance_state = BALANCE_CELL2; balance_select_cell(2); } break; case BALANCE_CELL1: if (diff_mv <= BALANCE_STOP_THRESHOLD_MV) { balance_state = BALANCE_IDLE; balance_disable(); } break; case BALANCE_CELL2: if (diff_mv >= -BALANCE_STOP_THRESHOLD_MV) { balance_state = BALANCE_IDLE; balance_disable(); } break; } }3.3 均衡电流闭环控制
MP2642GR-Z 输出回路的电流采样信号经过运放放大后,接入 MCU 的另一个 ADC 通道。软件里我用一个简单的 PID 控制器来微调功率级的反馈分压点,从而实现限流效果。电位器调节当然也可以,但软件可调的好处是可以在不同工况下动态改变均衡电流,比如在高温环境下自动降低电流,或者在压差特别大时适当加大电流。
PID 参数不用调得过于激进。均衡电流本身是一个慢变量,电池电压在补电过程中的变化速率非常缓慢,所以 P 项取值保守一些,I 项可以稍微给一点积分作用消除稳态误差,D 项我直接设置为 0。控制周期设定为 100ms,每次采样到的新电流值经过低通滤波后参与运算,输出值是调整反馈基准的数值。
实际调试中我发现一个有意思的现象:均衡电流除了受 PID 输出控制,还强烈受到电池本身电压的影响。当被均衡的电池电压较低时,即使转换器目标是限流 250mA,实际电流也可能只有 150mA,因为电池端电压被拉低后,续流阶段的电流自然减小。这个时候强制让 PID 去追 250mA 只会让占空比越开越大,整个功率级的应力显著上升。我的处理方式是:允许实际均衡电流在一个范围内浮动,只有当电流超过上限或者明显偏低异常时才介入调节,而不是教条式地恒流控制。
3.4 异常保护机制
软件侧的保护主要有四类:过流保护、过温保护、输出短路保护和开关矩阵冲突保护。
过流保护通过电流采样 ADC 判断,如果连续几个周期检测到均衡电流超过 0.6A,立即关闭 MP2642GR-Z 的使能脚和所有开关通道,并置位故障标志。短时间内触发三次过流则直接锁死均衡功能,直到设备重新上电。过温保护使用一个 NTC 热敏电阻贴在功率电感附近,当温度超过 85 摄氏度时暂停均衡,等温度回落后再恢复。
输出短路保护有两种实现层级:一种是硬件的,MP2642GR-Z 本身自带限流保护,输出短路时电流会被限制住;另一种是软件的,MCU 通过采样电阻检测到输出电流异常时主动切断开关矩阵。这两个层级必须同时存在,因为硬件限流点可能比软件保护点高,只有软件配合才能真正保护电池和 MOS 管。
开关矩阵冲突保护除了前面提到的硬件互锁电路,软件里还加了一道自检逻辑:在每次切换均衡对象之前,先读取开关驱动引脚的回读状态,确认当前没有异常导通,再执行切换指令。这个回读功能通过对 MOS 管漏源两端的分压采样实现,虽然会增加一点硬件成本,但对于需要长时间无人值守运行的储能系统来说,这个安全检查非常值得。
4. 联调过程与实测经验记录
4.1 测试平台搭建
完成硬件焊接和软件初版之后,我搭了一套简单但有效的测试平台。电源部分使用两台可编程电子负载模拟两节不同容量状态的电池,一台设置为 3.85V,另一台设置为 3.6V,模拟 250mV 的压差。之所以用电子负载而不是真实电池来做初版测试,是因为可以精确设定电压,而且不会因为电量变化导致测试过程中电压漂移,便于验证控制逻辑的一致性。
等控制逻辑确认无误后,再换用真实的两节 18650 电芯复测。真实电芯的电压在均衡过程中会缓慢变化,这时候观察均衡电流曲线和电压收敛曲线才能真正反映系统在实际工况里的表现。我在测试板上预留了多路测试点,用示波器同时抓取开关节点波形、输出电流采样波形和 MCU 的 PWM 控制信号。
4.2 实测数据与波形分析
实测中比较典型的场景是:第一节电压 3.6V,第二节电压 3.85V,压差 250mV。系统上电后,MCU 经过两轮采样确认压差超过启动阈值,随后把均衡通道切换到第一节电池。从切换完成到均衡电流稳定到 250mA 大约用了 300ms,PID 响应没有发生过冲,电流曲线平滑上升。
示波器上观察 MP2642GR-Z 的开关节点波形,开关频率稳定,占空比大约在 40% 左右,没有出现抖动或低频振荡。输出电压纹波在电池端口测量大约 20mVpp,这个水平对于电池均衡应用完全够用,不会干扰到 MCU 的电压检测。MOS 开关切换瞬间没有看到明显的尖峰电压,说明吸收电路和开关顺序的设计是合理的。
均衡过程中,被均衡的电池电压从 3.6V 慢慢上升。测试持续了 40 分钟,电压从 3.6V 上升到 3.72V,另一节电池的电压下降到 3.78V,压差从 250mV 缩小到 60mV。之后均衡电流逐渐降低,说明控制环路正在正常地降低补电强度。达到 10mV 停止阈值时,软件正确退出了均衡状态,整个收敛过程没有出现振荡。
4.3 极限工况测试
除了正常工作状态,我还模拟了几个极端工况。
第一个极端工况是严重失衡:一节电池 3.2V,另一节 4.1V,压差接近 900mV。此时系统启动均衡,电流迅速上升到限流点,功率级和 MOS 管温度在 20 分钟内上升到 70 摄氏度左右。这个工况下,均衡时间足够长,系统的热设计压力较大,需要在结构上保证功率器件附近有散热路径,否则长时间满载均衡会触发过温保护。
第二个极端工况是均衡中途拔掉负载,模拟电池回路断开的异常情况。这时候 MP2642GR-Z 的输出会瞬间失去电池这个“大电容”的钳位,电压可能迅速上升。实测中拔掉电池后输出电压出现轻微的过冲,但被转换器的环路快速修正,没有造成 MCU 复位或 MOS 管损坏。这个表现说明反馈环路的响应速度是足够的。
第三个极端工况是 MCU 复位。在均衡过程中手动触发 MCU 复位,观察开关矩阵的状态。由于复位瞬间所有 IO 恢复到默认状态,通道使能信号会被硬件互锁电路保持在关闭状态,MP2642GR-Z 的 EN 引脚也通过下拉电阻维持低电平,整个功率输出被彻底切断。重新启动后,软件会重新做一轮电压采样,然后恢复正常工作。这个测试验证了“上电瞬态不会导致误均衡”这个对储能系统至关重要的要求。
5. 常见问题与排查技巧实录
5.1 电压采样抖动导致均衡误动作
调试初期最让我头疼的问题是,第二节电池的电压采样值总在跳,波动范围达到 ±40mV 以上,导致状态机频繁进入和退出均衡状态。排查后发现问题来自两个源头:一是采样电路的地线走线太长,和功率级的高频开关回路共用了地平面,开关噪声直接耦合进了 ADC 参考地;二是采样电阻分压后的信号线没有做滤波,高频噪声直接进入了 ADC 输入引脚。
解决方式是重新布局采样电路,让模拟地单独走线,并在 ADC 引脚附近增加一级 RC 滤波。同时软件里把采样次数从 8 次提高到 15 次,配合中位值滤波,电压波动被控制到 ±5mV 以内。另一个小技巧是 MCU 的采样触发避开 PWM 开关瞬间,使用定时器在开关周期中间时刻触发 ADC,这个简单改动对噪声改善很显著。
5.2 均衡电流始终偏低,PID 输出饱和
有段时间发现均衡电流最大只能到 160mA,怎么调 PID 都上不去。后来用示波器测量后发现,反馈网络的基准电压有问题。我最初设计的输出目标电压是 4.1V,但实际被均衡的电池电压只有 3.6V,输出电压被电池钳位后,反馈环路中的电压误差很小,转换器自然就会降低占空比,电流也就压不上去。
这个现象不是故障,而是电路拓扑本身的特性。处理方法是把均衡电流设定的逻辑改为动态目标:当电池电压明显低于目标电压时,适当抬高反馈基准,让转换器有更大的电压误差空间去维持目标电流。简单说,就是让转换器始终尝试输出一个比当前电池电压高一点的电压,电流才会持续流动。这个调整需要在软件里增加一个根据当前电池电压计算动态目标的功能。
5.3 MOS 开关矩阵发热异常
在长时间均衡测试中,我发现给第二节电池均衡时,MOS 开关管的温升明显高于给第一节均衡。拆机后用万用表测量 MOS 管的导通压降,发现其中一颗 P-MOS 并没有完全导通,栅源电压不足。原因是该位置的源极电位接近 BAT+,而栅极控制电平来自 MCU 的 3.3V 系统,两者之间的电位差无法满足 P-MOS 的完全导通条件。
修正方案是给该 MOS 管的栅极驱动增加一个简单的电平位移电路,或者改用一颗逻辑电平型 P-MOS。实际项目里我改用了一颗阈值电压更低的逻辑电平 P-MOS,驱动问题解决,发热也降下来了。这个案例提醒我,在多电池串联系统中,不能想当然地用一个统一的电平去驱动所有开关管,必须逐个确认每个 MOS 管的源极电位和栅极驱动电压是否匹配。
5.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 电压采样跳变 | 采样地线受开关噪声干扰 | 示波器观察 ADC 引脚噪声 | 模拟地单独走线,RC 滤波,定时触发采样避开 PWM 边沿 |
| 均衡电流达不到设定值 | 输出目标电压设置过低 | 测量反馈引脚电压 | 根据电池电压动态调整反馈基准 |
| 某路均衡 MOS 发热 | 栅极驱动电压不足 | 实测栅源电压 | 增加电平位移或换用逻辑电平 MOS |
| 均衡状态频繁切换 | 压差阈值无滞回 | 软件打印状态切换日志 | 加入滞回比较,启动阈值和停止阈值分开 |
| 均衡过温保护触发 | 长时间大压差工况 | 热成像仪检查发热点 | 增加散热,降低高温工况下的均衡电流 |
| 整组电压过低时仍启动均衡 | 软件缺少总电压判断 | 查看电压日志 | 增加整组电压上下限条件,欠压时不均衡 |
| 停止均衡后电压回弹 | 电池极化效应 | 观察电压曲线确认回弹速度和幅度 | 属正常现象,必要时把停止阈值再调低 |
6. 联调中的几个额外心得
这套系统从原理图到稳定运行,过程中最值钱的经验其实不是某个具体的数值,而是对“均衡”这件事本身的理解。均衡不是简单地把两个电压拉平就完了,它是一场和时间、发热、寿命的博弈。实际的储能系统里,电池的 SOC 和电压并不是线性关系,尤其在磷酸铁锂体系中,电压平台非常平缓,可能电压只差 20mV,SOC 差距已经超过 10%。这种情况下如果只盯着电压差,均衡系统很容易做一些无用功,甚至在某些区间做出错误判断。
所以我在后期把软件里加了一个“均衡时间权重因子”:电压差只是一个启动条件,真正决定均衡时长的,是过去一段时间内电压差的积分。也就是说,如果两节电池持续存在一个小压差,即使没到启动阈值,系统也会累积一个较短的均衡时间;而两个大压差持续出现时,均衡时间会快速累加。这样处理比单看瞬时电压差要合理得多,也避免了在磷酸铁锂平台上因为电压平台平坦而出现均衡不工作的问题。
另外,对于备用电源这种长期浮充的应用场景,均衡系统不一定需要每次都把压差消除到零,只要能把压差控制在允许范围内,并且保证任何一节电池都不会触底或触顶,系统就已经达到目的了。过犹不及,频繁的均衡动作反而会缩短开关管和转换器的寿命,同时给电池引入额外的循环损耗。
量产环节还需要注意校准的一致性。每个板卡出厂前都要经过一次完整的电压校准和均衡电流测试,数据写入 MCU 内部存储区。校准工装用一只高精度仪表同时测量两节电池电压,再读取板卡上报的采样值,自动生成补偿系数。这一步不能省略,因为批量焊接中电阻精度、MCU 基准电压的个体差异,都会让不同板卡对同一个电压显示出不一样的读数。
最后想说的是,做这类电源管理系统,硬件要保守,软件要灵活。硬件上的每个开关都多留一份余量,每条信号路径都保证能被软件检测到;软件上则要尽可能多地做状态自恢复和异常自检,因为储能设备往往部署在无人值守的现场,出了问题不可能随时拿着示波器去查。MP2642GR-Z 和 PIC18F67K40 这套组合,从这个角度看是很合适的:功率部分足够皮实,控制部分足够灵活,均衡逻辑可以放心地持续迭代优化。