1. 从两个串联电芯的电压漂移说起
如果你拆过任何一块储能电池包或者备用电源模块,大概率会看到一串电芯串联在一起。串联的目的很简单——把电压堆上去,满足后级逆变或直流母线的需求。但问题也随之而来:串联的电芯,出厂时容量和内阻再接近,经过几十上百次充放电循环之后,电压一定会出现分化。这种分化在储能和备用电源场景里尤其致命,因为这类系统长期处于浮充或者浅充浅放状态,均衡电路如果做得不到位,木桶效应会让整组电池的可用容量被最弱的那颗电芯拖死。
我这次要聊的,就是针对两个串联电池单元做主动均衡的一个具体方案:主控用PIC18F87J10,均衡执行器件用MP2642GR-Z。为什么是两颗电芯而不是更多?因为两串结构在小型储能、便携式备用电源、通信基站的后备电池组里非常常见,而且两串的均衡逻辑最干净,没有多串系统的地址仲裁和级联复杂度,适合把原理吃透之后再往上扩展。
这篇文章适合谁看?如果你正在做BMS(电池管理系统)的硬件或者固件,尤其是两串到四串这个量级的小型系统,或者你手上有PIC18系列的老平台想复用,再或者你单纯想搞清楚"主动均衡"和"被动均衡"在电路层面到底差在哪,那这篇内容应该能给你一些能直接抄作业的东西。我会把选型理由、电路连接、控制逻辑、实测中踩到的坑都摊开讲,尽量做到你看完就能画板子、写代码。
先给一个整体判断:两串主动均衡的核心难点不在算法,而在均衡电流的路径设计和采样时序的配合。很多人第一次做的时候把精力全花在写PID或者查表上,结果板子一上电发现采样值一直在跳,均衡根本没法闭环。这个坑我后面会专门用一节来讲。
2. 为什么选MP2642GR-Z做均衡执行,而不是自己搭MOS
2.1 主动均衡和被动均衡的本质区别
被动均衡说白了就是给电压高的那颗电芯并一个电阻,把多余的能量以热的形式烧掉。成本低、电路简单,但有两个硬伤:一是能量白白浪费,二是均衡电流做不大,通常几十毫安到一百多毫安,对于容量几千毫安时以上的储能电芯来说,均衡速度慢得让人着急。主动均衡则是把高电压电芯的能量搬到低电压电芯去,或者搬到整组去,能量利用率高,均衡电流可以做到安培级。
在两串系统里,主动均衡最常见的拓扑是电感式或者电容式。电感式通过一个电感和两个开关管,把能量从高电压电芯泵到低电压电芯,效率高、电流大,但电感的选型和开关时序比较讲究。MP2642GR-Z 这类器件本质上就是把功率开关和驱动集成进去,让你不用自己搭半桥,减少外围元件和调试工作量。
2.2 MP2642GR-Z 的定位与关键特性
MP2642GR-Z 是一颗面向电池均衡的专用芯片,内部集成了功率MOS和驱动逻辑,外部只需要配一个储能电感和少量电容就能工作。它的工作方式是通过交替开关,把能量在相邻电芯之间转移。对于两串结构来说,正好是一颗芯片管两个电芯的均衡,不需要级联,这是它在这个场景下最大的优势。
选它而不是自己搭分立MOS,理由有三条。第一,开关时序由芯片内部保证,不会出现上下管直通这种烧板子的事故,自己搭半桥的话死区时间没设好,一上电就冒烟。第二,集成度高,PCB面积小,两串备用电源的板子通常空间紧张,少几个驱动电阻和自举电容很关键。第三,均衡电流可以通过外部电阻设定,灵活性够用,不需要改电路就能适配不同容量的电芯。
当然它也不是没有代价。专用芯片的开关频率和电感取值是绑定的,你如果选了一个不合适的电感,效率会掉得很难看。这一点我在第四节会给出具体的计算过程。
2.3 和PIC18F87J10的搭配逻辑
PIC18F87J10 是一颗8位MCU,资源对于两串BMS来说绰绰有余:它有足够的GPIO去控制均衡芯片的使能,有ADC去采样电芯电压和温度,有UART或者SPI可以接上位机或者显示模块。选它不是因为性能强,而是因为在这个量级的系统里,8位机的确定性和低功耗表现反而比32位机更省心。它不需要跑操作系统,中断响应可预测,休眠电流低,对于长期浮充的备用电源来说,这一点很重要。
MP2642GR-Z 负责"出力",PIC18F87J10 负责"决策"。MCU定期采样两颗电芯的电压,判断压差是否超过阈值,如果超过就使能均衡芯片,并监测均衡过程中的电压变化,防止过均衡。这个分工很清晰,固件也不复杂,但采样和均衡的时序配合是成败关键。
3. 两串均衡的电路连接与关键参数计算
3.1 电芯、均衡芯片与MCU的接线关系
两串电芯从下到上记为CELL1和CELL2,CELL1的负极是系统地,CELL1正极是中间节点,CELL2正极是整组正极。MP2642GR-Z 的两个均衡端口分别跨接在CELL1和CELL2上,芯片的供电取自整组电压。MCU的ADC通过分压网络分别采集CELL1正极(即中间节点)和整组正极的电压,两者相减得到CELL2电压,中间节点电压直接就是CELL1电压。
这里有一个容易忽略的点:分压电阻的精度直接决定均衡判断的准确性。如果你用5%精度的电阻,两个通道的分压比不一致,算出来的压差可能凭空多出几十毫伏,导致均衡误触发或者该触发时不触发。我的做法是分压电阻用0.1%精度,并且在固件里做一次两点校准,把实际分压比算出来存到EEPROM里。
3.2 均衡电感的取值计算
电感是MP2642GR-Z外围最关键的元件。取值太大,储能不足,均衡电流上不去;取值太小,电流纹波大,效率低还容易触发过流保护。计算的核心是均衡电流和开关频率。
假设我们设定的均衡电流目标是500mA,芯片开关频率为典型值(具体以数据手册为准,这里按常见量级举例),根据电感储能公式,在开关导通期间电感电流线性上升,纹波电流通常取均衡电流的30%左右。那么电感值大致满足:
L = (Vcell × D) / (fsw × ΔI)
其中Vcell是单节电芯电压,D是占空比,fsw是开关频率,ΔI是纹波电流。以单节3.7V、占空比0.5、纹波150mA估算,电感值落在几微亨到十几微亨这个区间。实际选型时我会留一定余量,并且优先选饱和电流大于均衡电流两倍以上的电感,否则在大电流瞬间电感饱和,电流会失控。
3.3 采样滤波与均衡的时序隔离
这是整个设计里最容易被低估的部分。均衡芯片工作时,电芯回路上有高频开关电流,如果MCU在这个时候采样电压,ADC读到的值会叠加大量纹波,根本没法用。正确的做法是均衡和采样分时进行:使能均衡一段时间,然后关闭均衡,等待一个稳定延时(比如几毫秒),再启动ADC采样,采完再决定是否继续均衡。
这个"关-等-采-判"的循环,周期可以设在几十到几百毫秒。延时太短,电压还没稳定;延时太长,均衡占空比下降,整体速度变慢。我实测下来,对于容量几安时的电芯,50ms的稳定延时配合200ms的均衡窗口,效果比较均衡。
| 参数 | 建议值 | 说明 |
|---|---|---|
| 均衡电流 | 300~800mA | 根据电芯容量和散热条件调整 |
| 采样稳定延时 | 30~80ms | 关断均衡后等待电压回落 |
| 均衡窗口 | 150~300ms | 单次均衡持续时间 |
| 压差触发阈值 | 20~50mV | 低于此值不启动均衡 |
| 压差停止阈值 | 5~15mV | 回差设计防止频繁启停 |
4. 固件里的均衡状态机与采样校准
4.1 状态机设计:从待机到均衡再到保护
固件不要写成一条直线,用状态机最清晰。我一般分五个状态:待机、采样、判断、均衡、保护。待机状态下MCU大部分时间在休眠,定时器周期性唤醒进入采样。采样状态读取两路ADC,做校准和滤波。判断状态比较压差,决定是否进入均衡。均衡状态使能MP2642GR-Z,计时到窗口结束就回到采样。保护状态监测过压、欠压、过温,一旦触发就强制关闭均衡并置标志位。
状态机的好处是每个状态的职责单一,调试的时候看一个变量就知道当前在干什么。我见过有人把均衡逻辑写在主循环里用一堆if嵌套,结果压差在阈值附近抖动时,均衡使能引脚跟着高频翻转,芯片还没坏算是运气好。
4.2 ADC采样校准的具体做法
前面提到分压电阻精度问题,校准是必须的。做法是:在已知电压下(比如用高精度电源给整组加一个标准电压),分别读取两路ADC的原始值,算出每路的实际分压系数,存到EEPROM。运行时用这个系数反算实际电压。这样即使电阻有偏差,也能通过软件补回来。
还有一点,ADC参考电压的稳定性。PIC18F87J10可以用内部参考或者外部参考,如果用电芯电压直接做参考,那采样值会随电芯电压变化,等于没有绝对基准。我的建议是用一颗低压差稳压器给MCU和ADC参考供电,保证参考稳定,采样才有意义。
4.3 防止过均衡和频繁启停的回差逻辑
均衡的停止条件不能和启动条件设成同一个值。如果启动阈值是30mV,停止阈值也是30mV,那压差降到30mV附近时,均衡会不停地启停,电芯电压也跟着抖。正确做法是设回差:启动阈值30mV,停止阈值10mV,中间这20mV是死区。压差进入死区后保持当前状态,直到明确低于停止阈值才停。
另外,单次均衡时间要有上限,防止某颗电芯异常导致均衡一直进行。我通常设一个累计均衡时间上限,比如连续均衡超过10分钟就强制休息,并上报异常。
5. 实测中遇到的三个坑和排查过程
5.1 坑一:均衡一启动,ADC读数就乱跳
第一次上电测试,待机时两路ADC读数很稳,压差显示也正常。一旦使能均衡,CELL2的采样值立刻上下跳几十毫伏,压差判断完全失效。排查过程是这样的:先用示波器看中间节点和整组正极的波形,发现均衡工作时这两个节点上叠加了明显的高频纹波,频率正好是均衡芯片的开关频率。再查固件,发现我在均衡使能期间没有关闭ADC采样,采样和开关是同时进行的。
修复方案就是前面说的分时隔离:均衡窗口结束后先关断,延时50ms再采样。改完之后读数立刻稳定,压差分辨率回到几毫伏。这个坑的本质是没有尊重模拟信号和开关噪声的共存规则,任何开关电源旁边的ADC采样都要考虑这个。
5.2 坑二:电感发热严重,效率偏低
第二版板子换了更小的电感,想省点空间,结果均衡电流没上去,电感反而烫手。用电流探头看波形,发现电感电流已经进入饱和区,波形顶部被削平,说明电感值不够或者饱和电流选小了。重新计算后换回大一号的电感,饱和电流留了两倍余量,温度降下来,均衡电流也达到了设计值。
这里的心得是:电感选型不能只看电感值,饱和电流和直流电阻同样重要。直流电阻大了,铜损高,同样发热。我后来选电感时会把饱和电流、直流电阻、尺寸三个参数一起权衡,而不是只盯着电感值。
5.3 坑三:长期浮充下均衡频繁触发
备用电源长期挂在浮充状态,电芯电压本来就很接近,但系统运行几天后发现均衡动作很频繁。查下来是采样噪声导致的假压差。虽然做了滤波,但滤波窗口太短,偶尔的噪声尖峰还是能触发判断。解决办法是加长滤波窗口,并且要求压差连续多次超过阈值才启动均衡,单次超限不动作。这个"连续N次确认"的逻辑在电池管理里很常用,能有效滤掉偶发干扰。
6. 从两串扩展到多串时要注意什么
两串做通了,很自然会想扩展到三串、四串。这时候MP2642GR-Z单颗就不够了,需要多颗级联或者换多串专用芯片。扩展时第一个要面对的问题是均衡路径的拓扑:是相邻均衡还是任意两串之间均衡。相邻均衡电路简单,但能量从最上面传到最下面要经过多次转移,效率打折。任意均衡灵活但开关矩阵复杂。
第二个问题是采样通道的扩展和隔离。多串之后,每颗电芯的采样参考点不同,不能简单地用电阻分压后直接进ADC,需要考虑共模电压范围。这时候要么用专用的多串采样芯片,要么用差分运放做电平转换。
第三个问题是固件的复杂度。两串时状态机很简单,多串之后均衡策略要决定先均衡哪一对、均衡顺序怎么排、如何避免同时均衡导致总电流过大。我的建议是扩展时先把均衡策略写成可配置的优先级队列,而不是硬编码顺序,这样后期调整不用改底层。
从我个人经验看,两串系统是理解主动均衡的最佳切入点,电路不复杂,但采样、时序、保护这些核心问题一个都不少。把两串做扎实,后面扩展到多串时,你会发现真正难的不是电路,而是策略和时序的统筹。MP2642GR-Z加PIC18F87J10这个组合,胜在稳定和可控,适合作为长期运行的备用电源方案来打磨。