1. 为什么两串电池组必须做主动均衡两串电池组看起来简单但真正做过储能和备用电源项目的人都知道两串结构是最容易暴露一致性问题的拓扑之一。原因不复杂串联回路里电流相同但两颗电芯的容量、内阻、自放电率不可能完全一致。充放电循环几十次之后容量偏小的那颗会先到上限电压容量偏大的那颗还没充满放电时反过来容量小的先到下限容量大的还有余量。整个电池组的可用容量被最弱的那颗电芯卡死这就是木桶效应在电池上的直接体现。很多人的第一反应是加一颗被动均衡电阻也就是在每颗电芯上并一个开关加电阻电压高的那颗放电放掉。这个方案成本低、电路简单但问题在于它只能削峰不能填谷。能量以热的形式白白浪费掉而且均衡电流通常只有几十毫安对于储能系统里动辄几安时甚至几十安时的电芯来说均衡速度慢到几乎可以忽略。备用电源系统如果长期处于浮充状态被动均衡还能勉强维持但如果是频繁充放电的储能场景被动均衡基本等于没做。主动均衡的思路完全不同。它把电压高的那颗电芯的能量搬一部分到电压低的那颗上去能量不浪费均衡电流可以做到安培级别速度快一个数量级。在两串结构里主动均衡的实现方式有好几种电感式、电容式、变压器式。电感式方案用一颗电感和两个开关管通过交替导通把能量从高压电芯转移到低压电芯效率高、成本适中是两串场景里最常用的拓扑。我这次选的是 MP2642GR-Z 搭配 STM32L081CB 的组合。MP2642GR-Z 是一颗专门为两串电池管理设计的模拟前端内部集成了均衡开关驱动和电压采集通道省掉了自己搭分立均衡电路的麻烦。STM32L081CB 是 ST 的 Cortex-M0 低功耗 MCU负责跑均衡策略、采集数据、做保护逻辑。两者配合一颗管模拟、一颗管数字分工清晰。下面我把整个方案从选型理由到实操细节拆开讲包括我在调试过程中踩过的坑和验证过的参数。2. MP2642GR-Z 与 STM32L081CB 的分工逻辑2.1 为什么不让 MCU 直接驱动均衡开关有人会问既然 MCU 有 GPIO为什么不直接用 GPIO 驱动 MOS 管做均衡非要加一颗 MP2642GR-Z这个问题我在项目初期也纠结过。直接驱动看似省了一颗芯片但实际做下来会发现三个绕不过去的坎。第一是电平问题。两串电池组的总电压在 6V 到 8.4V 之间上端电芯的正极电位相对于系统地是浮动的。你要驱动上端电芯的均衡开关栅极驱动电压必须参考上端电芯的源极这就需要一个高边驱动或者自举电路。分立方案里这个高边驱动要么用光耦、要么用专用驱动芯片成本和板面积都不省。第二是电压采集精度。MCU 的 ADC 直接测电芯电压需要做分压或者差分放大分压电阻的温漂和 ADC 参考电压的漂移都会影响精度。储能系统对电压采集精度要求通常在 ±10mV 以内分立方案要花不少功夫校准。第三是保护逻辑的实时性。过压、欠压、过流这些保护如果全靠 MCU 软件轮询响应时间受限于采样周期和软件调度。MP2642GR-Z 内部有硬件比较器过压欠压可以直接硬件触发响应速度是微秒级比软件轮询可靠得多。所以分工就很明确了MP2642GR-Z 负责高边驱动、电压采集、硬件保护这些脏活累活STM32L081CB 负责均衡策略、状态机管理、通信上报这些脑力活。这个分工不是随便定的而是根据两颗芯片各自的特长来的。2.2 MP2642GR-Z 的关键引脚与内部资源MP2642GR-Z 的引脚不多但每一个都要接对。我按功能分组说一下实际用到的几个关键引脚。电源和地方面VDD 接电池组正极VSS 接电池组负极也就是系统地。两颗电芯之间的中点接到 VC1 引脚这是电压采集的中间通道。CSP 和 CSN 是电流检测的差分输入接采样电阻两端。如果不需要电流检测这两个脚可以短接到 VSS但我不建议省掉因为储能系统里过流保护是刚需。均衡驱动方面CB1 和 CB2 分别驱动下管和上管的均衡开关。MP2642GR-Z 内部已经集成了栅极驱动外部只需要接 MOS 管和电感。这里要注意CB1 和 CB2 不能同时导通否则两颗电芯直接短路后果很严重。芯片内部有死区时间控制但软件上也要做互锁双保险。通信方面MP2642GR-Z 支持 I2C 或者 SPI 接口我选的是 I2C因为 STM32L081CB 的 I2C 外设用起来很顺手而且两线制省引脚。I2C 地址可以通过 ADDR 引脚配置默认地址是 0x0B如果总线上挂多颗芯片要注意地址冲突。2.3 STM32L081CB 的资源分配与低功耗考量STM32L081CB 是 L0 系列里资源比较均衡的一颗48MHz 主频、128KB Flash、16KB RAM对于均衡控制来说绰绰有余。我实际用到的外设有I2C1 接 MP2642GR-Z、USART2 做调试和上报、TIM2 做均衡周期定时、ADC1 做温度采集、几个 GPIO 做状态指示和使能控制。低功耗是备用电源系统的硬指标。备用电源大部分时间处于待机状态MCU 的功耗直接影响电池自放电。STM32L081CB 在 Stop 模式下典型电流是 0.8μARTC 走时加上 SRAM 保持大概 1.5μA。我的策略是均衡不工作时 MCU 进 Stop 模式靠 RTC 定时唤醒或者外部中断唤醒均衡工作时切到 Run 模式跑完策略再睡回去。这里有个细节要注意MP2642GR-Z 在待机时也要配置成低功耗模式否则它内部的比较器和采集电路会持续耗电。通过 I2C 写配置寄存器可以把不需要的功能关掉实测待机电流能从 200μA 降到 30μA 左右。3. 电感式主动均衡的硬件设计与参数计算3.1 电感式均衡的拓扑原理电感式主动均衡的核心是一个电感和两个开关管。下管导通时下端电芯给电感充电电感电流线性上升下管关断、上管导通时电感通过上管把能量释放到上端电芯。反过来上管先导通给电感充电再通过下管释放到下端电芯就实现了反向能量转移。控制两个开关管的导通时间比例就能控制能量转移的方向和大小。这个拓扑的效率很高因为能量主要在电感和电芯之间转移开关管的导通损耗和电感的铜损是主要损耗来源。实测下来均衡电流 1A 时效率能到 90% 以上。相比被动均衡的 0% 效率能量全变热优势非常明显。3.2 电感取值与开关频率的权衡电感取值直接决定均衡电流的大小和纹波。我用的公式是均衡电流 I (V_cell × D × (1-D)) / (2 × f_sw × L)其中 V_cell 是电芯电压D 是占空比f_sw 是开关频率L 是电感值。实际设计时我先定均衡电流目标为 1A开关频率选 100kHz电芯电压按 3.7V 算占空比取 0.5 时电流最大。反推电感值L (3.7 × 0.5 × 0.5) / (2 × 100000 × 1) 4.6μH实际选的是 4.7μH 的标准值饱和电流要大于 2A直流电阻要小于 30mΩ否则铜损太大。我试过用 10μH 的电感均衡电流掉到 0.5A 左右速度慢了一半。也试过 2.2μH电流上去了但纹波很大电芯电压采集会受到干扰。4.7μH 是实测下来最平衡的点。开关频率的选择也有讲究。频率高电感和电容可以选小一点但开关损耗增加频率低开关损耗小但电感体积大。100kHz 是一个折中点MOS 管的开关损耗可以接受电感用 4.7μH 的贴片电感体积也不大。3.3 MOS 管选型与驱动细节MOS 管选的是 N 沟道逻辑电平管Vds 耐压 30VRds(on) 在 4.5V 栅压下小于 20mΩ。为什么强调逻辑电平因为 MP2642GR-Z 的栅极驱动电压是 5V 左右不是 10V标准 MOS 管在 5V 栅压下 Rds(on) 会大很多导通损耗上去了。下管的源极接系统地驱动简单。上管的源极接两颗电芯的中点电位在 3V 到 4.2V 之间浮动所以上管的驱动必须参考中点电位。MP2642GR-Z 的 CB2 引脚内部有自举电路外部只需要接一个自举电容。自举电容我用的 100nF耐压 16V实测驱动波形很干净。这里有个坑我踩过自举电容的容值不能太小否则上管导通期间电荷不够栅极电压会掉MOS 管进入线性区发热。我一开始用 10nF上管烫得厉害换成 100nF 之后温度降了 20 多度。另外自举二极管要用快恢复的普通整流管反向恢复时间长会影响效率。3.4 采样电阻与电流检测电流检测用的是 10mΩ 的采样电阻放在电池组负极和系统地之间。为什么选 10mΩ因为均衡电流 1A 时压降是 10mVMP2642GR-Z 的电流检测分辨率是 1mV 左右10mV 的信号足够被准确采集。如果选 1mΩ压降只有 1mV噪声一上来就淹没了信号。采样电阻的封装要用 2512 或者更大功率要算够。1A 电流在 10mΩ 上产生的功率是 10mW看起来很小但考虑到瞬态电流可能到 2A功率就是 40mW2512 封装的额定功率是 1W余量充足。电阻要用低温漂的最好 50ppm/℃ 以内否则温度变化会引起电流检测误差。4. 均衡策略的软件实现与状态机设计4.1 电压采集与滤波处理均衡策略的第一步是准确采集两颗电芯的电压。MP2642GR-Z 通过 I2C 提供电压数据但原始数据有噪声不能直接用。我的做法是连续采 16 次去掉最大和最小值剩下的取平均。这样处理之后电压波动能控制在 ±2mV 以内。采集周期是 100ms也就是每 100ms 更新一次电压值。为什么不更快因为均衡动作本身会改变电芯电压如果采集太快会把均衡引起的电压变化误判为电芯真实电压变化导致策略震荡。100ms 是实测下来比较稳的周期。滤波之后还要做电压有效性判断。如果采集到的电压超出 2.0V 到 4.5V 的范围说明采集通道有问题这时候要停止均衡并报错而不是继续用错误数据做决策。4.2 均衡启动与停止的阈值设计均衡什么时候启动、什么时候停止这个阈值设计直接决定均衡效果和系统稳定性。我用的策略是启动条件两颗电芯电压差大于 30mV且最低电芯电压高于 3.0V避免过放时均衡停止条件电压差小于 10mV或者最高电芯电压高于 4.15V避免过充时均衡均衡电流默认 500mA如果电压差大于 100mV 则切到 1A 快充模式为什么启动阈值是 30mV 而不是更小因为电压采集本身有 ±5mV 的误差如果阈值设成 10mV可能因为采集误差导致均衡频繁启停反而增加损耗。30mV 是一个有实际意义的压差低于这个值对电池组容量的影响很小不值得均衡。停止阈值 10mV 比启动阈值 30mV 小这是故意做的迟滞。如果没有迟滞电压差在 30mV 附近波动时均衡会反复启停MOS 管和电感会发热。迟滞窗口 20mV 是实测下来比较合适的值。4.3 状态机与异常处理软件的核心是一个状态机我定义了五个状态IDLE空闲、SAMPLING采样、BALANCING均衡中、FAULT故障、SLEEP休眠。IDLE 状态下 MCU 处于低功耗等待定时器唤醒。唤醒后进入 SAMPLING采集电压并滤波。如果电压差满足启动条件进入 BALANCING否则回到 IDLE。BALANCING 状态下持续采集电压如果满足停止条件或者出现异常回到 IDLE 或进入 FAULT。FAULT 状态处理的是过压、欠压、过温、I2C 通信失败这些异常。进入 FAULT 后首先关断所有均衡开关然后通过 USART 上报故障码最后根据故障类型决定是等待恢复还是永久锁定。过温是可恢复的温度降下来之后可以自动回到 IDLEI2C 通信失败如果连续 3 次就锁定并等待上位机复位。这里有个经验状态切换的时候一定要先关均衡开关再改状态变量顺序反了会导致状态变量显示已停止但开关还开着下次进 BALANCING 时可能出现两个开关同时导通的风险。我在代码里把关开关的操作封装成一个函数任何状态切换前都先调这个函数确保安全。4.4 低功耗调度与唤醒源配置备用电源系统的 MCU 不能一直跑否则待机功耗受不了。我的调度策略是均衡不工作时MCU 进 Stop 模式RTC 每 10 秒唤醒一次做电压采样如果连续 6 次采样也就是 1 分钟电压差都小于启动阈值就把采样周期拉长到 60 秒进一步省电。唤醒源有三个RTC 定时唤醒、I2C 地址匹配唤醒、外部按键唤醒。RTC 是主要唤醒源I2C 唤醒用于上位机主动查询按键唤醒用于现场调试。三个唤醒源都配置成中断进 Stop 模式前使能醒来后根据中断标志判断是谁唤醒的再决定下一步动作。实测下来这套调度策略下待机电流在 15μA 左右对于容量 2000mAh 的备用电池来说理论待机时间超过 10 年实际受电池自放电限制也能做到 5 年以上。5. 调试过程中踩过的坑与排查链路5.1 上管发热严重从波形反推驱动问题第一版板子焊好之后跑均衡测试发现上管温度异常红外测温枪打上去有 80 多度下管只有 40 度。两颗管子型号一样、电流一样温度差这么多肯定有问题。我先用示波器看栅极波形。下管栅极波形很干净上升沿 100ns 左右平台电压 5V。上管栅极波形就不对了平台电压只有 3.5V而且导通期间电压还在往下掉。这说明自举电容的电荷不够上管没有完全导通工作在线性区压降大、损耗大。回到原理图检查自举电容用的是 10nF确实偏小。上管导通时栅极电荷需求大概是 20nC10nF 电容在 5V 下储存的电荷是 50nC看起来够但自举二极管的反向漏电和栅极驱动电路本身的静态电流会消耗电荷实际可用电荷不到 30nC余量太小。换成 100nF 之后栅极波形平台电压稳定在 5V上管温度降到 45 度问题解决。这个坑的教训是自举电容的容值要按栅极电荷的 10 倍以上选不能只算理论值。另外自举二极管要用漏电流小的我后来换成了一颗低漏电流的肖特基效果更好。5.2 电压采集跳变地线布局的隐蔽问题均衡跑起来之后发现电压采集数据偶尔会跳变幅度有 50mV 左右导致均衡策略误判。一开始怀疑是 I2C 通信误码加了 CRC 校验之后还是有跳变。后来用示波器看 MP2642GR-Z 的 VC1 引脚波形发现均衡开关动作时VC1 上会有尖峰干扰。问题出在地线布局上。采样电阻的地和电芯中点采样线共用了一段地线均衡电流流过这段地线时产生压降叠加到了电压采样上。解决办法是把电压采样的地和功率地分开走单点接地采样线用差分走线尽量靠近芯片。改板之后跳变降到 5mV 以内满足要求。这个坑很典型模拟采样和功率回路共用返回路径是很多电池管理板子的通病。布局的时候一定要把功率地和信号地分开最后在电池负极单点汇合。5.3 均衡震荡阈值和周期的匹配问题第三版软件跑的时候发现均衡会在启动和停止之间反复切换周期大概 2 秒一次。看日志电压差在 30mV 附近来回跳。原因是采样周期 100ms但均衡电流 1A 时100ms 内电芯电压变化就有 10mV 左右采集到的电压差在阈值附近波动导致状态机震荡。解决办法有两个一是加迟滞启动阈值 30mV、停止阈值 10mV这个前面说了二是加均衡最小持续时间一旦进入 BALANCING至少持续 5 秒再判断是否停止。两个措施加上之后震荡消失均衡过程很平稳。这里的心得是均衡策略的参数不能只按静态电压算要考虑均衡电流引起的动态电压变化。最小持续时间这个参数很关键它给电压一个稳定的时间窗口避免被瞬态干扰误导。5.4 I2C 通信偶发失败上拉电阻和总线电容调试后期遇到 I2C 偶发通信失败概率大概千分之一跑一天会出现几次。用逻辑分析仪抓波形发现失败时 SDA 上升沿很缓像是被电容拖慢了。查了一下总线电容PCB 走线加上芯片引脚电容大概 80pF上拉电阻用的是 10kΩ上升时间算下来是 0.8μs接近 I2C 快速模式的极限。把上拉电阻换成 4.7kΩ上升时间降到 0.4μs通信失败率降到万分之一以下。后来又把 I2C 速率从 400kHz 降到 100kHz彻底稳定了。对于电池管理这种对实时性要求不高的场景100kHz 完全够用没必要追求高速。这个坑的教训是I2C 上拉电阻不是随便选个 10kΩ 就行要根据总线电容和速率算上升时间。总线电容大、速率高上拉电阻就要小。但也不能太小否则灌电流超过芯片规格。4.7kΩ 在 3.3V 系统里是万金油值大部分场景都能用。6. 实测数据与均衡效果验证6.1 均衡速度测试我用两颗容量偏差 5% 的电芯做测试初始电压差 200mV。开启均衡后电压差从 200mV 降到 30mV 用了 18 分钟平均均衡电流 800mA 左右。如果换成被动均衡同样条件下降 200mV 需要 6 个小时以上差距非常明显。均衡速度跟电压差有关。电压差大时占空比可以调大均衡电流大电压差小时占空比要调小避免过冲。我的策略是电压差大于 100mV 时用 1A 快充模式小于 100mV 时用 500mA 慢充模式这样既快又稳。6.2 效率与温升均衡电流 1A 时输入功率高压电芯输出是 3.7V × 1A 3.7W输出功率低压电芯接收是 3.6V × 1A 3.6W效率 97% 左右。损耗主要来自 MOS 管导通损耗、电感铜损和开关损耗。实测 MOS 管温升 15℃电感温升 20℃都在安全范围内。效率跟均衡电流有关。500mA 时效率最高能到 98%1A 时降到 97%如果强行上到 2A效率掉到 94%而且温升明显。所以我把最大均衡电流限制在 1A兼顾速度和效率。6.3 长期运行稳定性板子连续跑了 30 天每天做一次充放电循环均衡功能全程开启。30 天下来两颗电芯的电压差始终保持在 20mV 以内没有出现均衡失效或者误动作。MCU 没有死机I2C 通信没有累积错误MOS 管和电感温度稳定。唯一需要注意的是电感的磁芯。我用的贴片电感在高温下电感量会下降实测 60℃ 时电感量比 25℃ 时低了 8% 左右均衡电流相应下降。如果应用环境温度高要选温度特性好的电感或者做温度补偿。7. 关键参数速查与选型建议7.1 核心元件参数表元件型号/参数关键指标备注模拟前端MP2642GR-Z两串电压采集、硬件保护I2C 接口地址 0x0BMCUSTM32L081CBCortex-M048MHzStop 模式 0.8μA均衡电感4.7μH饱和电流 2ADCR 30mΩ贴片温漂要小下管 MOSN 沟道逻辑电平Vds 30VRds(on) 20mΩ4.5V 栅压上管 MOS同上同上自举驱动自举电容100nF耐压 16V低漏电采样电阻10mΩ251250ppm/℃低温漂I2C 上拉4.7kΩ3.3V 系统100kHz 速率7.2 均衡策略参数表参数值说明采样周期100ms均衡时待机采样周期10s无均衡时启动阈值30mV电压差停止阈值10mV迟滞 20mV最小均衡时间5s防震荡快充电流1A压差 100mV慢充电流500mA压差 100mV过压保护4.25V硬件触发欠压保护2.5V硬件触发7.3 选型时的几个硬指标MP2642GR-Z 的替代型号不多选它主要是看中集成度高。如果要做三串以上这颗就不够了得换支持更多串数的前端。STM32L081CB 的替代选择比较多L0 系列里 L081 的 Flash 和 RAM 够用如果成本敏感可以选 L051但 RAM 小一半跑状态机要精简一些。电感选型要注意饱和电流。均衡电流 1A 时电感峰值电流大概 1.5A饱和电流要留 30% 余量选 2A 以上。DCR 要小否则铜损大、发热。我试过 DCR 50mΩ 的电感温升比 30mΩ 的高 10℃。MOS 管选型要注意栅极电荷。栅极电荷小开关速度快、驱动损耗小。但栅极电荷太小抗干扰能力差容易误触发。我选的管子栅极电荷在 10nC 左右是一个平衡点。8. 这套方案适合什么场景不适合什么场景两串主动均衡方案最适合的是中小型储能系统和备用电源。比如通信基站的备用电池、家庭光伏储能的两串模组、便携式储能电源这些场景对均衡速度有要求但又不需要管理太多串数。MP2642GR-Z 加 STM32L081CB 的组合BOM 成本在合理范围内性能足够。不适合的场景也很明确。如果是 16 串以上的大型储能系统这套方案就不合适了需要专用的大规模电池管理芯片。如果对成本极度敏感比如一次性电池或者低价值产品被动均衡可能更划算。如果均衡电流需求超过 2A这颗电感和 MOS 管要重新选型PCB 布局也要改。我在实际项目里还遇到过一个场景电池组工作在低温环境-20℃ 以下。这时候电芯内阻增大均衡电流会下降而且电感特性也会变化。低温场景要选宽温器件均衡策略也要做温度补偿否则均衡效果会打折扣。最后分享一个实操小技巧调试均衡板的时候先用电子负载模拟两颗电芯这样可以精确控制电压差观察均衡电流和波形。等波形调好了再上真实电芯能省很多时间。真实电芯的电压会随均衡动作变化调试起来干扰因素多不如电子负载来得干净。