1. 储能电池均衡的底层逻辑与方案选型
1.1 为什么串联电池组必须做均衡
先聊一个我在实际项目中反复遇到的场景:两组标称容量相同的电芯串联使用,跑了大概两百个循环之后,整组可用容量掉了将近百分之十五,但单独测每一节电芯,容量都还在标称值的九成以上。问题出在哪?就出在串联结构本身。
串联电路里电流处处相等,这是初中物理就讲过的。但电芯个体之间,内阻、自放电率、初始容量、温度分布,这些参数不可能完全一致。充电时,容量偏小或者内阻偏大的那一节会先到达上限电压,此时如果继续按整组电压充电,这一节就会过充;放电时,它又会先到达下限电压,如果继续放电,它就会过放。BMS 的保护逻辑通常是"木桶效应"——只要有一节触限,整组就得停。结果就是:容量最小的那节决定了整组的实际可用容量,而且随着循环次数增加,不一致性会被放大,形成恶性循环。
所以均衡电路的核心任务,不是"把电充满",而是把各节电芯的荷电状态拉回同一水平线,让整组在充放电时能同步触限。这件事在储能系统和备用电源里尤其关键,因为这类场景往往要求电池组长时间浮充、浅充浅放,或者频繁做备电切换,电芯之间的微小差异会在几个月内被累积放大。
1.2 被动均衡与主动均衡的取舍
均衡方案大致分两派:被动均衡和主动均衡。
被动均衡说白了就是"给电压高的那节并一个电阻放电",把多余的能量以热量形式消耗掉。优点是电路简单、成本低、可靠性高,缺点是效率低、发热、均衡电流做不大(通常几十到一两百毫安)。主动均衡则是把能量从高电压电芯"搬"到低电压电芯,用电感、电容或者变压器做能量转移,效率高、均衡电流可以做到安培级,但电路复杂、成本高、控制逻辑也更麻烦。
在这个项目里,我最终选的是被动均衡路线,原因有三点。第一,储能和备用电源系统的充电电流本身不大,均衡窗口(充电末期到浮充阶段)时间足够长,不需要大电流快速拉平。第二,被动均衡的失效模式更"温和"——就算均衡开关短路,最坏情况是持续放电,不会像主动均衡那样出现能量倒灌或者环路失控。第三,成本敏感,被动均衡每通道的 BOM 成本可以压到很低。
1.3 为什么是 MP2642GR-Z 加 PIC18F86J11 这个组合
选型这块我踩过坑,值得展开说。
MP2642GR-Z这颗芯片,本质是一颗带均衡功能的电池管理前端。它内部集成了电压采集、比较逻辑和均衡开关驱动,能直接对串联电芯做电压监测,并在检测到某节电压超过阈值时导通对应的均衡 MOS。它的封装小,外围元件少,特别适合两串这种小规模电池组。用它做均衡,最大的好处是把模拟侧的判断逻辑硬件化了,MCU 不需要频繁轮询每一节电压再做决策,响应速度快,而且主控的负担轻。
PIC18F86J11是一颗 8 位 MCU,带 12 位 ADC、多个定时器和丰富的 GPIO,工作电压范围宽,抗干扰能力在工业级应用里口碑不错。它在这个方案里的角色是"大脑":负责读取 MP2642GR-Z 的状态、管理充电/放电逻辑、做温度补偿、和上位机通信、记录均衡事件。为什么不用更高级的 32 位 MCU?因为两串电池的管理逻辑并不复杂,8 位机的算力完全够用,而且 PIC18 系列在低功耗和长期供货稳定性上有优势,储能设备动辄要求十年以上的生命周期,选料的长期可得性比性能更重要。
这个组合的分工很清晰:MP2642GR-Z 管"手脚"(采集与执行),PIC18F86J11 管"大脑"(策略与通信)。两者通过 I2C 或者 SPI 交互,具体用哪个后面会讲。
2. 核心细节解析与硬件设计要点
2.1 MP2642GR-Z 的引脚功能与外围配置
MP2642GR-Z 这类前端芯片,引脚大致分几组:电芯电压采样输入(每节一个通道)、均衡驱动输出、通信接口、电源和地。实际布线时,有几个细节必须注意。
采样输入的 RC 滤波。每节电芯到芯片采样引脚之间,我习惯串一个 100 欧姆的电阻,再并一个 0.1 微法的电容到地,构成一个低通滤波器。截止频率算一下:f = 1/(2πRC) = 1/(2×3.14×100×0.1e-6) ≈ 15.9 kHz。这个频率远高于电池电压的正常波动频率,但能有效滤掉开关噪声和瞬态尖峰。为什么是 100 欧姆而不是 1k?因为采样引脚的输入阻抗和 ADC 采样保持电路的充电时间需要匹配,电阻太大会导致采样不准,尤其是在多通道轮询的时候。
均衡驱动的限流电阻。均衡 MOS 导通时,电芯通过一个外部电阻放电。这个电阻的取值决定了均衡电流。假设单节电芯电压 3.7V,均衡 MOS 导通压降 0.1V,想做到 100mA 均衡电流,那么电阻 R = (3.7 - 0.1) / 0.1 = 36 欧姆。功耗 P = I²R = 0.1² × 36 = 0.36W,所以至少要选 0.5W 的封装,实际我一般用 1W 的金属膜电阻,留足余量。这里有个经验:均衡电阻不要贴着电芯或者温度传感器放,否则均衡时产生的热量会干扰温度采样,导致 MCU 误判。
电源去耦。芯片的 VCC 引脚旁边必须放一个 1 微法和一个 0.1 微法的电容并联,大电容储能,小电容滤高频。这两个电容要尽量靠近引脚,走线越短越好。我见过一个案例,去耦电容离芯片两厘米远,结果均衡开关动作时芯片复位,查了半天才发现是电源纹波导致的。
2.2 PIC18F86J11 的资源分配与低功耗设计
PIC18F86J11 在这个方案里要干几件事:定时采集电压和温度、执行均衡策略、管理充电状态机、通过 UART 或者 CAN 和系统主控通信、在异常时触发保护。资源分配上,我的做法是:
- ADC 通道:一路用于 MP2642GR-Z 的模拟输出(如果它输出模拟电压),或者直接用 I2C 读数字量;另外两路接 NTC 热敏电阻,分别监测两节电芯的温度。
- 定时器:Timer0 做系统滴答,Timer1 做均衡超时保护,Timer2 做通信波特率发生。
- GPIO:几个用于状态指示 LED,一个用于控制充电 MOS 的使能,一个用于蜂鸣器报警。
- 通信:UART 用于调试和上位机通信,如果系统要求更高可靠性,可以启用 CAN 模块。
低功耗这块,储能设备虽然通常有市电供电,但备用电源场景下 MCU 可能长期靠电池供电,所以休眠策略要设计好。我的做法是:正常监测时 MCU 处于空闲模式,定时器唤醒做一次采集,采集完继续睡;只有在均衡动作或者通信时才全速运行。这样平均电流可以压到几百微安级别。
2.3 两串电池的电压采集精度保障
两串电池的电压采集,看似简单,其实坑不少。第一个坑是共模电压。第二节电芯的正极电压等于两节电压之和,如果采样电路的地参考没处理好,第二节的采样值会包含第一节的误差。MP2642GR-Z 内部如果是差分采样,这个问题不大;如果是单端采样,就必须确保每节电芯的采样参考点正确。
第二个坑是采样时序。两节电芯的电压不能同时采集,必须分时复用 ADC。如果两节之间切换太快,采样保持电容还没充到位就切换,读数会偏低。我的经验是每通道至少留 10 微秒的建立时间,具体看 ADC 的采样保持电容和外部滤波电阻的乘积。
第三个坑是温度漂移。电阻分压网络的温漂会直接影响采样精度。如果分压电阻用的是普通碳膜电阻,温度系数可能到几百 ppm/°C,在 -20°C 到 60°C 的范围内,误差可能超过 1%。所以分压电阻我一般选金属膜或者薄膜电阻,温度系数控制在 50 ppm/°C 以内。
3. 均衡策略的实现与固件开发
3.1 均衡启动条件与阈值设定
均衡什么时候启动?这是策略的核心。我的做法是设定三个条件,同时满足才启动均衡:
- 充电状态:只有在充电末期或者浮充阶段才允许均衡。放电过程中均衡没有意义,因为放电时电压差异主要反映内阻差异,均衡反而会加剧能量浪费。
- 电压差阈值:两节电芯电压差超过 30mV 才启动。这个阈值不能太小,否则噪声会导致均衡频繁启停;也不能太大,否则均衡效果不明显。30mV 是我在多个项目里验证下来比较平衡的值。
- 温度窗口:电芯温度在 10°C 到 45°C 之间才允许均衡。低温下电芯内阻大,均衡电流会导致电压骤降;高温下均衡发热叠加环境温度,有热失控风险。
这三个条件在固件里用一个状态机实现。每次定时器中断触发采集,更新电压和温度,然后判断条件。条件满足则打开对应通道的均衡 MOS,条件不满足则关闭。
3.2 均衡电流的计算与热管理
均衡电流不是越大越好。前面算了 100mA 对应 36 欧姆电阻,但实际选值还要考虑热管理。假设两节电芯同时均衡,总功耗 0.72W,如果 PCB 是紧凑布局,温升可能到 20°C 以上。所以我的做法是:
- 均衡电阻分散布局,不要集中在一起。
- PCB 铜箔面积适当加大,帮助散热。
- 如果空间允许,均衡电阻选 2W 封装,实际功耗降额到 50% 使用。
- 固件里加一个"均衡占空比"控制,比如均衡 10 秒停 5 秒,进一步降低平均发热。
这里有个计算公式值得记住:均衡时间估算。假设两节电芯容量差 100mAh,均衡电流 100mA,那么理论均衡时间 = 100mAh / 100mA = 1 小时。但实际因为电压差会随着均衡逐渐减小,均衡电流也会下降(电压差小到一定程度,MOS 可能不完全导通),所以实际时间通常是理论值的 1.5 到 2 倍。做系统设计时,要确保充电末期有足够的浮充时间来完成均衡。
3.3 固件中的状态机与异常处理
固件的主循环是一个状态机,状态包括:待机、采集、判断、均衡、保护、通信。每个状态的切换条件都要明确。
异常处理是重点。我列几个必须处理的异常:
- 均衡超时:如果某个通道均衡超过预设时间(比如 2 小时)电压差还没降到阈值以下,说明电芯可能已经损坏,此时要停止均衡并上报故障。
- 电压突变:如果某节电压在短时间内跳变超过 200mV,可能是采样电路故障或者电芯内部接触不良,要立即停止均衡并报警。
- 温度超限:任何一节温度超过 60°C,立即停止充放电和均衡,进入保护状态。
- 通信丢失:如果和上位机通信中断超过 30 秒,系统进入安全模式,只保留基本保护功能。
这些异常处理逻辑,我建议在开发阶段就用一个表格列清楚,每条异常对应的检测条件、响应动作、恢复条件都写明白,然后逐条在代码里实现和测试。这样比边写边想靠谱得多。
4. 实操过程与关键环节实现
4.1 硬件搭建与上电调试步骤
拿到 PCB 之后,不要急着焊电池。我的调试顺序是这样的:
第一步,空板检查。用万用表测各路电源对地阻抗,确认没有短路。特别是 MP2642GR-Z 的 VCC 和采样引脚,如果有短路,上电就烧芯片。
第二步,只焊电源部分。先焊 MCU 和前端芯片的电源电路,上电测电压。PIC18F86J11 的 VDD 应该是 3.3V 或者 5V(看具体型号),MP2642GR-Z 的 VCC 按手册要求。用示波器看纹波,峰峰值应该小于 50mV。
第三步,焊 MCU 最小系统。烧一个最简单的 LED 闪烁程序,确认 MCU 能正常运行、晶振起振、复位电路正常。
第四步,焊前端芯片和采样电路。用可调电源模拟两节电芯,分别给 3.7V 和 3.8V,读 MCU 的 ADC 值,确认采样准确。误差应该在 ±10mV 以内。
第五步,接真实电芯。先接两节电压接近的电芯(差异小于 10mV),观察待机电流和采样值。然后故意制造电压差(比如给其中一节单独充一点电),观察均衡是否启动、均衡电流是否正常。
这个顺序看起来繁琐,但能帮你把问题隔离在最小范围内。我见过太多人一上来就全焊完然后接电池,结果出问题不知道是哪个环节,查起来非常痛苦。
4.2 均衡效果的实测验证方法
均衡效果怎么验证?不能只看"电压差变小了",因为电压差在静置后会反弹。我的验证方法是:
- 记录均衡前后的开路电压。均衡结束后,断开充电,静置 2 小时,再测两节电压。如果静置后电压差仍然小于 20mV,说明均衡有效。
- 做充放电循环测试。连续做 5 次完整充放电,每次记录整组可用容量。如果容量没有明显衰减,说明均衡在起作用。
- 用数据记录仪长时间监测。把电压、温度、均衡状态记录下来,画成曲线。正常的曲线应该是:充电末期电压差逐渐缩小,放电时电压差保持稳定,循环多次后整体一致性不恶化。
这里有个经验:均衡效果不是立竿见影的。第一次均衡可能只能把电压差从 100mV 降到 50mV,需要多次充放电循环才能慢慢拉平。所以验证要有耐心,至少跑一周的数据再下结论。
4.3 通信协议与上位机数据交互
PIC18F86J11 和上位机的通信,我一般用 Modbus RTU 协议,因为工业现场兼容性好,很多组态软件直接支持。数据帧里包含:两节电压、两节温度、均衡状态、故障码、循环次数。
寄存器映射我习惯这样安排:
| 寄存器地址 | 内容 | 数据类型 | 说明 |
|---|---|---|---|
| 0x0000 | 电芯1电压 | uint16 | 单位 mV |
| 0x0001 | 电芯2电压 | uint16 | 单位 mV |
| 0x0002 | 电芯1温度 | int16 | 单位 0.1°C |
| 0x0003 | 电芯2温度 | int16 | 单位 0.1°C |
| 0x0004 | 均衡状态 | uint16 | bit0/bit1 对应两通道 |
| 0x0005 | 故障码 | uint16 | 按位定义 |
| 0x0006 | 循环次数 | uint32 | 高16位和低16位 |
通信波特率用 9600 或者 19200,校验用 CRC16。为什么不用更高的波特率?因为储能现场电磁环境复杂,低波特率抗干扰能力更强,而且电池数据变化慢,不需要高刷新率。
5. 常见问题与排查技巧实录
5.1 均衡不启动或频繁启停
这是最常见的两个极端问题。
均衡不启动,先查三个条件:是不是在充电状态?电压差是不是真的超过阈值?温度是不是在窗口内?我遇到过一次,电压差明明有 80mV,但均衡就是不启动,最后发现是温度采样通道接错了,MCU 读到的温度是 70°C,触发了温度保护。所以排查时先看原始数据,别急着怀疑策略。
频繁启停,通常是阈值设置太接近噪声水平。比如阈值设 10mV,而采样噪声就有 ±5mV,那均衡就会反复开关。解决办法有两个:一是加大阈值到 30mV 以上;二是加迟滞,比如启动阈值 30mV,停止阈值 15mV,这样就不会在阈值附近抖动。
5.2 采样值跳变或偏差过大
采样值跳变,先看硬件:滤波电容是不是虚焊?采样电阻是不是温漂太大?参考电压是不是稳定?我遇到过一次,采样值每隔几秒跳一次,最后发现是 MCU 的 ADC 参考电压引脚旁边有个大功率电阻,均衡时发热导致参考电压漂移。把电阻挪远就好了。
偏差过大,通常是分压电阻精度不够或者 ADC 校准没做。PIC18F86J11 的 ADC 有内部校准功能,建议在产线测试时做一次两点校准(比如 3.0V 和 4.2V),把校准系数存到 EEPROM 里。
5.3 均衡发热严重或效率低下
均衡发热严重,先算功耗:P = I²R。如果电阻选小了,或者均衡电流设大了,发热必然严重。解决办法:加大电阻值降低电流,或者换更大功率的封装,或者加散热铜箔。
效率低下,表现为均衡很久电压差都降不下来。原因可能是:均衡电阻实际阻值比设计值大(比如买了误差 5% 的电阻,实际偏大),或者 MOS 导通电阻大(选型时没注意 Rds(on)),或者均衡时间不够(充电末期浮充时间太短)。我一般会在设计阶段就用一个表格把理论值、实测值、偏差都列出来,方便对比。
5.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不启动 | 温度超限、电压差不足、非充电状态 | 读原始数据,逐条核对条件 | 调整阈值或修复采样 |
| 均衡频繁启停 | 阈值接近噪声、无迟滞 | 观察电压曲线 | 加大阈值、加迟滞 |
| 采样跳变 | 滤波不良、参考电压漂移 | 示波器看波形 | 加滤波、挪开发热源 |
| 采样偏差大 | 电阻精度差、未校准 | 万用表对比 | 换精密电阻、做校准 |
| 均衡发热 | 电流过大、散热不足 | 测温、算功耗 | 降电流、加散热 |
| 均衡无效 | 电阻偏大、MOS 压降大、时间不够 | 测实际电流 | 换电阻、换 MOS、延长浮充 |
| 通信中断 | 波特率不匹配、CRC 错误 | 抓包分析 | 核对参数、加屏蔽 |
| MCU 复位 | 电源纹波、看门狗误触发 | 示波器看电源 | 加去耦、调看门狗 |
5.5 几个容易被忽略的实操心得
第一个心得:均衡电阻的精度不重要,但功率余量很重要。均衡电阻不需要 1% 精度,5% 足够了,因为均衡电流本身不需要很准。但功率一定要留足,我一般按计算功耗的 2 倍选封装,比如算出来 0.36W,就选 1W 的。
第二个心得:温度传感器要贴在电芯表面,不是 PCB 上。我见过有人把 NTC 焊在 PCB 上,结果测的是板子温度,不是电芯温度。均衡时电阻发热,板子温度比电芯高十几度,导致温度保护误触发。正确做法是用导热胶把 NTC 粘在电芯壳体上,引线接到 PCB。
第三个心得:均衡 MOS 的驱动电压要够。如果 MCU 是 3.3V 供电,而均衡 MOS 是标准阈值 MOS,3.3V 可能驱动不充分,导致 MOS 工作在线性区,压降大、发热严重。解决办法是选逻辑电平 MOS,或者加一级驱动电路。
第四个心得:固件里一定要加均衡次数统计。每次均衡启动,计数器加一。如果发现某个通道的均衡次数远高于另一个,说明那节电芯可能老化了,需要提前预警。这个数据对预测性维护很有价值。
第五个心得:PCB 布局时,采样走线和均衡走线要分开。均衡走线电流大,会在周围产生磁场,如果和采样走线平行走,会耦合噪声。我一般让它们垂直交叉,或者用地线隔开。
6. 系统集成与长期可靠性考量
6.1 与储能系统主控的协同
这个均衡模块不是孤立的,它要接入整个储能或者备用电源系统。和主控的协同,主要靠通信。主控会下发充电指令、查询状态、接收故障报警。我的做法是:均衡模块作为一个从站,主控作为主站,主站轮询从站数据。
协同的关键是充电策略的配合。均衡需要时间,如果主控充电到截止电压就立刻断电,均衡根本没时间做。所以主控的充电策略要留一个"浮充均衡窗口",比如充到截止电压后,转浮充,保持 1 到 2 小时,让均衡模块完成工作。这个窗口时间要和均衡模块的均衡能力匹配,前面算过,100mAh 差异需要 1 到 2 小时,所以浮充窗口至少 2 小时。
6.2 长期运行的一致性监测
储能设备要跑十年,均衡模块的长期可靠性至关重要。我建议在固件里加一个"一致性趋势记录"功能:每隔一定循环次数(比如 50 次),记录一次两节电芯的电压差和均衡时间。如果发现电压差在逐渐变大,或者均衡时间在逐渐变长,说明电芯一致性在恶化,需要提前维护。
这个数据可以存在 MCU 的 EEPROM 里,掉电不丢。上位机可以定期读取,画成趋势图。我做过一个项目,就是靠这个趋势图提前三个月发现了电芯异常,避免了一次现场故障。
6.3 保护功能的冗余设计
均衡模块本身也要有保护。除了前面说的均衡超时、电压突变、温度超限,还要考虑:
- 均衡 MOS 短路保护:如果 MOS 击穿短路,电芯会持续放电。硬件上可以加一个自恢复保险丝,软件上通过检测均衡关闭后电压是否继续下降来判断。
- 通信隔离:如果均衡模块和主控之间距离较远,通信线要加隔离,防止地环路干扰。
- 电源冗余:如果系统要求高可靠性,MCU 的电源可以加一个超级电容或者小电池,在主电源掉电时维持几秒钟,让 MCU 有时间保存数据。
这些保护措施会增加成本,但储能设备的价值高,一次故障的损失远大于保护电路的成本。我的原则是:保护功能宁多勿少,但每一条保护都要有明确的触发条件和恢复条件,避免误动作。
6.4 从两串扩展到多串的思路
这个方案虽然针对两串,但思路可以扩展到多串。MP2642GR-Z 这类前端芯片通常支持级联,多颗芯片串起来可以管理更多电芯。PIC18F86J11 的固件架构也可以扩展,把均衡策略做成通用的,每个通道独立判断。
扩展时要注意:级联后的通信协议要重新设计,采样时序要重新安排,均衡电流的总功耗要重新算。我建议先从两串做稳定,再逐步扩展,不要一上来就做多串,否则问题会成倍增加。
7. 写在最后的实操体会
这个方案我在几个备用电源项目里实际用过,整体稳定性不错,均衡效果也能满足要求。最大的体会是:均衡这件事,硬件是基础,策略是关键,验证是保障。硬件设计不好,采样不准、发热严重,后面怎么调策略都白搭;策略设计不好,该均衡的时候不均衡,不该均衡的时候瞎均衡,电芯反而受损;验证不充分,实验室里看着正常,现场跑几个月就出问题。
另外一点,不要迷信芯片手册上的典型电路。手册上的电路是理想条件下的,实际应用中,PCB 布局、元件选型、环境温度都会影响性能。我一般会在典型电路基础上做至少三轮迭代:第一轮验证功能,第二轮优化参数,第三轮做环境测试。每一轮都记录数据,对比分析,这样才能把方案做扎实。
最后分享一个小技巧:在均衡电阻旁边放一个测试点,调试时可以直接用示波器看均衡电流波形。这个测试点成本几乎为零,但排查问题时能省很多时间。我现在的板子上,每个均衡通道都留了测试点,已经成为标准做法了。