1. 储能电池均衡的底层逻辑与方案选型
储能系统和备用电源系统里,串联电池组的均衡问题是个绕不开的坎。我接触过不少做户外储能、基站备电、UPS 的团队,大家一开始都觉得“电池一致性”是个可以靠筛选电芯解决的问题,结果批量出货之后,售后返修里有一大半都跟串联电池组的不均衡有关。这个项目标题里提到的方案,是用 MP2642GR-Z 这颗双向主动均衡芯片,配合 TM4C129EKCPDT 这颗带以太网和 CAN 的 ARM Cortex-M4 主控,去解决两个串联电池单元的均衡问题。两串电池听起来简单,但恰恰是很多小型储能包、便携电源、备用电池模块里最常见的拓扑,做扎实了,往更多串扩展也就有了基础。
先说清楚这个方案到底在干什么。两个串联的电池单元,比如两节磷酸铁锂或者两节三元锂,串联之后电压翻倍,但容量受限于最弱的那一节。充电时,容量低的那节先到截止电压,充电必须停,另一节还没充满;放电时,容量低的那节先到欠压保护点,放电也得停。日积月累,两节电池的差距越来越大,整个电池包的可用容量就跟着缩水。被动均衡靠电阻放电,把电压高的那节多余的能量白白烧掉,效率低、发热大,而且只能在充电末期慢慢放。主动均衡则是把能量从高电压那节搬到低电压那节,能量不浪费,均衡电流也能做大。MP2642GR-Z 就是干这个的,它是一颗双向 buck-boost 架构的主动均衡芯片,专门针对两串电池设计,均衡电流可以做到安培级别,效率也高。
那为什么主控选 TM4C129EKCPDT?这颗芯片在工业控制和通信领域用得很多,Cortex-M4 内核带浮点运算,主频 120MHz,关键是它集成了 CAN 控制器和以太网 MAC,对于储能系统来说,BMS 需要跟 PCS、EMS 或者上位机通信,CAN 和以太网都是刚需。而且它的 ADC 采样速率和精度足够做电池电压、电流、温度的监控。用一颗主控同时管均衡、采样和通信,省掉了额外的通信芯片,整体 BOM 更紧凑。这个组合的定位很明确:中小功率储能和备用电源的 BMS 核心板,两串电池均衡是切入点,后续可以扩展成多串的分布式均衡架构。
适合谁来参考这个内容?如果你在做便携储能、家庭储能的小型电池包、通信基站备用电源、或者电动工具的电池管理,这个方案可以直接抄作业。如果你只是刚接触 BMS,想搞明白主动均衡到底怎么落地,这里面的采样、驱动、保护逻辑也够你吃透一阵子。我下面会从芯片选型、硬件设计、采样与均衡控制、通信与保护、常见问题几个维度,把整个方案拆开讲,尽量把“为什么这么选”和“实际怎么调”都说清楚。
2. MP2642GR-Z 与 TM4C129EKCPDT 的硬件设计要点
2.1 MP2642GR-Z 的外围电路与关键参数计算
MP2642GR-Z 是一颗双向主动均衡芯片,内部集成了 buck-boost 功率级和驱动,外围只需要电感、电容和少量电阻就能工作。它的输入是两串电池的总电压,输出分别接到两节电池的正负极,通过内部开关矩阵实现能量在两节电池之间的双向转移。先看它的关键引脚:VIN 接电池组正极,也就是两串的总正,GND 接电池组负极,也就是第二节的负,MID 接两节电池中间的节点,也就是第一节的负和第二节的正。这样芯片就能分别感知两节电池的电压,并通过电感在 MID 和两端之间搬能量。
电感的选择是第一个要算的东西。MP2642GR-Z 的开关频率可以通过外部电阻设定,典型值在 300kHz 到 1MHz 之间。频率越高,电感可以越小,但开关损耗会上去。我一般建议设在 500kHz 左右,兼顾效率和体积。电感值根据均衡电流和纹波要求来算。假设我们设定均衡电流 I_bal = 2A,开关频率 f_sw = 500kHz,允许的纹波电流 ΔI = 0.4A,那么电感值 L = (V_bat × (1 - D)) / (f_sw × ΔI)。这里 V_bat 是单节电池电压,取 3.6V,D 是占空比,在 buck-boost 里最恶劣情况是 D = 0.5,所以 L = (3.6 × 0.5) / (500k × 0.4) = 9μH。实际选 10μH 的标准值就行,饱和电流要大于均衡电流加上纹波峰值,也就是 2A + 0.2A = 2.2A,留点余量选 3A 以上的屏蔽电感。
输入输出电容也不能随便放。VIN 和 GND 之间的电容要承受两串总电压,耐压至少 2 倍裕量。两节磷酸铁锂满电是 7.2V,两节三元锂满电是 8.4V,所以电容耐压选 25V 足够。容值方面,每安培均衡电流配 10μF 陶瓷电容,2A 就放两颗 22μF 的 1210 封装 X7R 电容,并联在 VIN 和 GND 之间,再在 MID 和 GND 之间放同样规格的。这些电容要尽量靠近芯片引脚,走线短而粗,减少寄生电感。
注意:MP2642GR-Z 的 MID 引脚是能量转移的中间节点,这个节点的走线要能承受均衡电流,宽度至少 2mm 以上,过孔要多打几个。很多新手在这里用细线,结果均衡电流一大就发热严重,效率也掉得厉害。
2.2 TM4C129EKCPDT 的采样与驱动接口设计
TM4C129EKCPDT 负责三件事:采电池电压和电流、控制 MP2642GR-Z 的使能和模式、跟外部通信。先看采样。两串电池的电压采样,可以用电阻分压加运放缓冲,再进 ADC。TM4C129 的 ADC 是 12 位、2Msps,精度对于电池电压监控够用。分压电阻的选型要注意:上电阻和下电阻的比值要匹配 ADC 参考电压,同时分压后的阻抗要低,不然 ADC 采样保持电容充电不够,读数会飘。我一般用 100k 和 33k 的分压,把 8.4V 分到 2.1V 左右,再用一颗低失调运放做电压跟随,输出阻抗降到毫欧级,ADC 读起来就稳了。
电流采样用霍尔传感器或者采样电阻加电流放大器。对于 2A 级别的均衡电流,采样电阻选 10mΩ,功耗是 I²R = 0.04W,可以接受。用一颗差分放大器把采样电阻两端的压差放大 50 倍,输出 0 到 2V 给 ADC。这样 2A 对应 1V,分辨率是 12 位 ADC 的 0.8mV,换算成电流就是 1.6mA,足够精细。温度采样用 10k NTC 热敏电阻,跟一个 10k 电阻分压,进 ADC,查表或者用 Steinhart-Hart 公式算温度。
MP2642GR-Z 的控制接口很简单,一般有使能引脚和模式选择引脚。TM4C129 的 GPIO 直接驱动就行,但要注意电平匹配。TM4C129 的 IO 是 3.3V,MP2642GR-Z 的逻辑输入也是 3.3V 兼容,所以直连没问题。如果中间有长线,加个 100Ω 的串联电阻抑制振铃。使能引脚上拉一个 100k 电阻到 3.3V,默认关闭,主控拉低才开启,这样上电时均衡不会误动作。
2.3 电源树与保护电路的规划
整个 BMS 板的电源从电池组取电,但 TM4C129 需要 3.3V,MP2642GR-Z 的逻辑部分也需要 3.3V。所以需要一个 buck 或者 LDO 把电池组电压降到 3.3V。两串电池电压范围是 5V 到 8.4V,用一颗宽压输入的 buck 芯片,比如支持 4V 到 40V 输入的同步 buck,输出 3.3V,电流能力 500mA 就够。LDO 也行,但效率低,电池组电压 8.4V 降到 3.3V,压差 5.1V,如果主控和外围耗电 100mA,LDO 上就白白烧掉 0.51W,对小型电池包来说不划算。所以优先用 buck。
保护电路分两级:一级是电池本身的保护,过压、欠压、过流、短路,这些可以用专用的保护 IC 加 MOS 管来做,独立于主控,确保主控死机时电池也不会被搞坏。二级是主控层面的保护,通过 ADC 采样判断异常,然后关断均衡和负载。保护 IC 的过压阈值根据电池类型设定,磷酸铁锂单节过压 3.65V,欠压 2.5V;三元锂过压 4.25V,欠压 2.8V。过流保护点根据系统最大负载电流来定,一般取 1.5 倍额定电流。
提示:保护 IC 和主控的采样要分开走线,保护 IC 的采样点直接连到电池极耳,主控的采样点可以稍微靠后,这样保护动作更快,主控还能看到保护前的电压。
3. 均衡控制策略与软件实现
3.1 电压采样与 SOC 估算的工程处理
两串电池的均衡,核心依据是电压还是 SOC?这个问题我踩过坑。单纯看电压,在电池静置时是准的,但充放电过程中,内阻和极化会让电压偏离真实 SOC。比如放电时,内阻大的那节电压会被拉低,看起来好像 SOC 低,其实可能只是内阻大。如果这时候去均衡,反而把能量搬到了内阻大的那节,越均衡越糟。所以我的做法是:静置时用电压查表估算 SOC,充放电时用安时积分加电压修正。安时积分需要电流采样,前面已经设计了 10mΩ 采样电阻加差分放大器,精度够用。积分周期用 100ms,每次采样电流后累加,再根据温度和内阻做补偿。
具体实现上,TM4C129 的定时器每 100ms 触发一次 ADC 采样,采两节电池电压、总电流、温度。电压采样做 16 次平均,去掉最大最小值,剩下的取平均,这样能滤掉开关噪声。电流采样做 8 次平均。然后进 SOC 估算函数:如果电流绝对值小于 50mA,认为静置,用电压查表得到 SOC;如果电流大于 50mA,用安时积分,但每 10 秒用电压查表修正一次,修正系数根据电流大小调整,电流越大,电压修正权重越低。这样既不会在动态过程中被电压带偏,也不会让积分误差累积太大。
均衡的开启条件也要设阈值。两节电池的 SOC 差或者电压差超过一定值才均衡,避免频繁动作。电压差阈值设 30mV,SOC 差阈值设 5%。同时均衡只在电池电压处于中间区间时进行,比如单节 3.0V 到 4.0V 之间,太低了均衡没意义,太高了接近充满,均衡电流要降下来。均衡电流也不是固定 2A,根据电压差动态调整:差 30mV 到 50mV 用 0.5A,50mV 到 100mV 用 1A,超过 100mV 用 2A。这样既快又不会过冲。
3.2 MP2642GR-Z 的驱动时序与模式切换
MP2642GR-Z 的工作模式由主控 GPIO 控制。它一般有两种模式:充电均衡和放电均衡,或者叫 buck 模式和 boost 模式。当高电压电池在上端时,能量从上端搬到下端,芯片工作在 buck 模式;当高电压电池在下端时,能量从下端搬到上端,芯片工作在 boost 模式。主控需要根据哪节电压高来决定模式,然后拉高使能,芯片内部会自动完成软启动和开关动作。
驱动时序上,我建议这样:先设置模式引脚,等 1ms 让电平稳定,再拉高使能。使能之后,芯片内部有软启动,均衡电流会在 2ms 内从 0 升到设定值。关闭时,先拉低使能,等 5ms 让电感电流降到零,再切换模式或者进入待机。这个顺序不能乱,否则电感电流突变会产生高压尖峰,可能打坏芯片。我在早期版本里试过先切模式再关使能,结果 MID 引脚上出现了 15V 的尖峰,芯片当场冒烟。后来加了 5ms 的关断等待,再也没出过问题。
均衡过程中,主控要持续监控两节电压和电流。如果电压差降到阈值以下,或者温度超过 45℃,或者总电流异常,立即关断均衡。关断后等 30 秒再判断是否需要重新开启,避免振荡。这个 30 秒的冷却时间很关键,因为均衡时芯片和电感会发热,连续工作温度会累积,停一会儿让热量散掉,可靠性高很多。
3.3 通信协议与上位机数据交互
TM4C129EKCPDT 的通信能力是这个方案的一大优势。它自带 CAN 控制器和以太网 MAC,可以根据系统需求选一种或者两种都用。对于储能系统,CAN 是标配,因为 PCS 和 EMS 一般都走 CAN。以太网则适合跟本地监控或者云端网关通信。我一般把 CAN 作为实时控制通道,波特率 500kbps,每 100ms 上报一次电池电压、电流、温度、SOC、均衡状态。以太网作为配置和数据记录通道,用 TCP 或者 UDP 把历史数据传到上位机。
CAN 报文的设计要紧凑。两串电池的数据量不大,一帧 8 字节可以放:第一节电压 2 字节,第二节电压 2 字节,电流 2 字节,温度 1 字节,状态 1 字节。状态字节里用位表示均衡开关、保护标志、故障码。这样一帧就够,100ms 一帧,总线负载很低。上位机收到后解析,画曲线、做告警。以太网那边可以用 Modbus TCP,把数据映射到寄存器,方便组态软件读取。
注意:CAN 总线的终端电阻不能忘,120Ω 两端各一个。我见过不少板子调试时 CAN 不通,查半天是终端电阻没焊。另外 CAN_H 和 CAN_L 的走线要等长,差分阻抗 120Ω,不然通信误码率会高。
4. 实操调试与常见问题排查
4.1 上电调试的步骤与关键波形观测
板子焊好之后,别急着上电池。先用直流电源模拟两串电池,设定 7.2V,限流 1A,接到 VIN 和 GND,MID 悬空或者用电阻分压模拟中间点。然后测 3.3V 电源是否正常,主控是否能烧录程序。TM4C129 的烧录用 JTAG 或者 SWD,我习惯用 SWD,四根线,简单。烧录一个 GPIO 翻转的程序,测晶振和 IO 是否正常。
接下来测 MP2642GR-Z 的使能和模式引脚。用示波器看使能信号,拉高时是否干净,有没有振铃。然后接上模拟电池的中间点,用两个直流电源分别模拟两节电池,比如上节 3.6V,下节 3.5V,总电压 7.1V。给使能,看电感电流波形。正常的波形是三角波,频率 500kHz,峰值和均衡电流设定值对应。如果波形是乱的,或者频率不对,先查电感值和开关频率电阻。我遇到过电感饱和电流不够,波形顶部削平,均衡电流上不去,换了大电流电感就好了。
测效率的时候,用电子负载和功率分析仪。输入功率是两节电池的总输出,输出功率是低电压那节接收的功率。MP2642GR-Z 在 2A 均衡电流下,效率能到 90% 以上。如果效率明显偏低,摸一下芯片和电感温度,烫手的话可能是开关损耗大,试着降低开关频率到 300kHz,或者换更低 DCR 的电感。
4.2 均衡不动作或动作异常的排查思路
均衡不动作,先分三层查:主控有没有发指令、芯片有没有响应、功率级有没有工作。主控层,用调试器看 GPIO 输出,使能引脚有没有拉高,模式引脚电平对不对。如果主控没动作,查 ADC 采样值,是不是电压差没超过阈值,或者温度超了。我见过 NTC 查表算错,温度显示 80℃,主控以为过热就不均衡了。后来用万用表测 NTC 阻值,对照表一看,是分压电阻焊错了。
芯片层,使能拉高后,测 MP2642GR-Z 的 SW 引脚有没有开关波形。没有波形,查 VIN 电压是否在芯片工作范围内,使能阈值是否够。MP2642GR-Z 的使能高电平阈值是 1.2V 左右,3.3V 肯定够。如果 VIN 正常、使能正常,还是没有开关,可能是芯片坏了,换一颗试试。功率层,有开关波形但均衡电流小,查电感是否虚焊,采样电阻是否焊错,MID 节点是否接触不良。
均衡动作异常,比如两节电压差越均衡越大,那肯定是模式搞反了。能量搬到了高电压那节,低电压那节更低了。这时候要检查模式引脚的电平跟代码里的定义是否一致。还有一种情况是均衡电流振荡,一会儿开一会儿关,那是阈值设得太窄,或者冷却时间太短。把电压差阈值从 30mV 加到 50mV,冷却时间从 10 秒加到 30 秒,基本就能稳住。
4.3 常见问题速查表与避坑经验
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 均衡不启动 | 电压差未超阈值 | 读 ADC 值,算差值 | 调整阈值或检查采样精度 |
| 均衡不启动 | 温度误报过高 | 测 NTC 阻值,对照温度表 | 换 NTC 或修正分压电阻 |
| 均衡电流小 | 电感饱和 | 看电感电流波形是否削顶 | 换大饱和电流电感 |
| 均衡电流小 | 采样电阻偏大 | 测采样电阻实际阻值 | 换精度更高的采样电阻 |
| 芯片发热严重 | 开关频率过高 | 测 SW 波形频率 | 降低开关频率到 300kHz |
| 芯片发热严重 | 电感 DCR 大 | 测电感直流电阻 | 换低 DCR 电感 |
| 通信丢帧 | CAN 终端电阻缺失 | 测 CAN_H 和 CAN_L 间电阻 | 补焊 120Ω 终端电阻 |
| 通信丢帧 | 波特率不匹配 | 示波器测位时间 | 统一波特率 |
| 电压采样跳动 | 分压阻抗太高 | 测分压点对地阻抗 | 加电压跟随器 |
| 电压采样跳动 | ADC 参考不稳 | 测参考电压纹波 | 加滤波电容 |
提示:均衡芯片的散热焊盘一定要焊到地平面,而且地平面要足够大。MP2642GR-Z 的封装底部有散热焊盘,很多新手只焊引脚,散热焊盘虚焊,芯片工作几分钟就过热保护。用热风枪或者大功率烙铁从背面加热,确保焊盘吃锡。
还有一个坑是电池极耳的连接。两串电池的中间节点,也就是 MID 的采样线,要从电池极耳直接引,不要从 PCB 的功率走线上分叉。因为功率走线上有均衡电流,会产生压降,采样线如果从那里取,电压读数会偏。我试过从功率走线中间取 MID,均衡时电压差读数比实际小了 20mV,导致均衡提前停。后来单独拉一根采样线到电池极耳,问题就没了。
5. 方案扩展与多串架构的演进思路
两串均衡做稳之后,往多串扩展是自然的想法。MP2642GR-Z 是两串专用,四串可以用两颗,八串用四颗,每颗管相邻两串,主控通过多路复用或者菊花链通信来协调。但这里有个问题:相邻两串之间的均衡,能量只能在相邻节之间搬,如果第一节和第四节差距大,能量要经过中间节中转,效率会打折。所以多串架构一般用分布式均衡,每颗芯片管两串,主控做全局调度,优先均衡差距大的相邻对,逐步把整组拉平。
TM4C129EKCPDT 的 CAN 和以太网在多串架构里就更有用了。每颗 MP2642GR-Z 配一颗小 MCU 或者用主控的 GPIO 扩展,通过 CAN 总线把各节点的电压、温度、均衡状态汇总到主控。主控跑一个均衡调度算法,决定哪些节点开启、电流多大。以太网则把整组数据上传到云端或者本地 HMI。这个架构的 BOM 成本比集中式高一些,但可靠性和扩展性好,适合 8 串到 16 串的储能包。
软件上,多串的 SOC 估算和均衡策略要更复杂。安时积分要对整组做,但每节的 SOC 要单独估。均衡时不能只看相邻节,要看整组的最低节和最高节,能量从最高节往最低节搬,中间节作为中转。调度周期可以放长到 1 秒,因为多串均衡本来就是个慢过程。保护逻辑也要分层,单节过压欠压、整组过流短路、温度梯度异常,都要能独立响应。
我个人在实际操作中的体会是,两串均衡看起来简单,但把采样精度、驱动时序、保护逻辑都做扎实,后面扩展多串就是复制粘贴加调度的事。最怕的是一开始图省事,采样随便分压,驱动随便拉高,结果批量出货后均衡效果参差不齐,返修率居高不下。这个方案里 MP2642GR-Z 加 TM4C129EKCPDT 的组合,硬件上不算复杂,软件上把 SOC 估算和均衡阈值调好,基本就能覆盖大部分中小储能和备电场景。最后再分享一个小技巧:均衡电流的设定值不要一上来就拉满,先用 0.5A 跑通整个链路,测效率、测温升、测通信,都没问题了再往上加。这样即使有问题,损失也小,排查也容易。