两节锂电池串联使用跑几个月后电压就开始分道扬镳这是储能与备用电源项目里绕不开的坎。我搭过一套主动均衡系统核心就是标题里这两颗芯片MP2642GR-Z 负责能量的搬移PIC18LF45K22 负责采样和决策。整套方案在一块小板子上就能把两节串联电芯的动态压差从 200mV 以上收回到 20mV 以内。如果你正在做 2S 电池包、自动应急灯、UPS 或小型储能装置这套思路可以直接参考就算你只是想知道“主动均衡到底怎么落地”这篇文章也值得读完。全文围绕两节串联电池的均衡场景展开从器件选型、硬件电路、均衡策略到排障经验都是我实际调过的路径。1. 为什么两节电池也要专门做均衡串联电池的失配基本上是“必然事件”。先说生产工艺同一批次的电芯容量也会有 1% 到 3% 的离散。然后是工作条件在储能柜或备用电源里靠近热源的那节电池温度偏高内阻和自放电率都会不一样。更麻烦的是自放电差异一节每天自放电 1%另一节每天自放电 3%放置一个月就多出接近 0.6% 的荷电状态差折算成电压差就是几十毫伏。压差一旦形成充放电循环会不断把它放大。充电时电压高的那节先到达充电截止电压保护板只能切断充电另一节往往只能充到九成放电时电压低的那节先到放电截止电压整组直接断电另一节还剩不少能量。在储能和备用电源系统中电池组通常用串联方式堆电压一节的短板就是整个组的短板。容量衰减、可用时间缩短、保护电路误触发根源都是这个“测不准、配不平”的问题。所以均衡不是可有可无的功能而是保证 2S 电池包寿命和可用容量的基础电路。市场上常见的方案分两种。被动均衡是给每节电池并一个大电阻哪节电压高就用电阻把多余电能烧成热简单便宜但能量白白浪费均衡电流也做不大。主动均衡则是把能量从高电压电池搬到低电压电池核心是一个功率变换器效率高、电流大这才是标题这套方案在做的事。用两节电池做主动均衡还有一个独特优势拓扑简单。两节串联时中间节点是天然的参考点我们可以用一个升压器在两节电池之间来回倒腾能量。相比 4S、6S 电池包的均衡模块2S 方案可以把难度控制在“一块小板、一颗功率级、一颗 MCU”的量级非常适合作成产品。2. 核心器件选型解析MP2642GR-Z 与 PIC18LF45K22 的分工2.1 MP2642GR-Z均衡系统的能量心脏主动均衡的本质是“把 A 电池的能量借给 B 电池”中间必须有一次电压变换。如果不做变换直接把两节电池正负极对接那就是短路。MP2642GR-Z 在系统里的任务就是完成从取电电池到受电电池的升压变换。我习惯把它称为功率级核心。这颗芯片本身就是一颗 DC-DC 升压方案内部集成了功率开关管和同步整流配合外围的储能电感和电阻网络就能把较低的输入电压提升到需要的目标输出电压。在均衡场景下目标输出电压通常设定为“受电电池当前电压 一定裕量”比如比目标电池高 0.2V 到 0.3V这样才能保证充电电流真的灌得进去。这么选型有三个原因。第一均衡器需要宽输入范围。电池会工作在 3.0V 到 4.2V 这个区间低温下电压更低功率级必须在较低输入电压时还能正常输出能量。第二它外围元件少。均衡板要尽量小、尽量薄尤其备用电源内部空间紧张的时候电感加芯片加两个电容就能搭出主回路比用分立 MOS 加驱动加变压器省事得多。第三低静态功耗。备用电源有大量时间处于待机状态功率级自身的待机电流如果太大就成了电池的额外负担。这里插一句经验像 MP2642GR-Z 这种把开关管集成进芯片的功率级调试时最友好的地方就是不用处理浮栅驱动。浮地驱动是分立方案里最容易出问题的点驱动电压不够或者共模电压乱飘MOS 就会半导通然后烧掉。集成方案把这些麻烦收拢到芯片内部了。当然也要提醒一句具体的输入范围、开关频率、输出能力这些硬指标不同批次、不同后缀可能都不一样做项目之前务必以手上的数据手册为准。我这里讲的是它在均衡器里承担的角色和外围设计思路这部分是通用的。2.2 PIC18LF45K22负责采样、决策与保护的控制器力量有了还得有人指挥。均衡器不能一味地把能量往低电压电池那边灌什么时候均衡、均衡多大电流、什么时候停止、异常怎么办这些问题需要一颗控制器来解决。我选用的是 PIC18LF45K22。选它主要是因为几个特性刚好贴合均衡场景。第一LF 后缀代表低功耗版本在满速运行时能保持较低的功耗空闲和休眠模式下的电流更是低对备用电源这种长期待机的系统很友好。第二它集成了 12 位 ADC一共 13 个输入通道用来采样两节电池电压、母线电压和板温绰绰有余。12 位精度在 3.3V 参考下理论上能分辨到 0.8mV 左右的电压变化对于 10mV 级别的均衡阈值判断来说分辨率够用。第三内部有比较器、运放、PWM 模块和多个定时器实现一套均衡状态机不需要太多外部器件。在均衡系统里PIC18LF45K22 的典型任务是周期性地打开 ADC 采样通道读取两节电池电压对采样值做数字滤波按照预设策略控制 MOS 开关的导通方向并调整功率级的使能。它不亲自搬能量而是做一个智能调度器。这样划分的好处是职责清晰功率级负责“能不能搬过去”控制器负责“要不要搬、往哪儿搬、搬多少”。2.3 为什么不用模拟方案或其他 MCU有人会问两节电池的均衡直接用比较器加逻辑门不行吗理论可以但阈值固定、没有滞回、不能根据温度修正实际使用就是噩梦。电池电压会随负载波动瞬时掉几十毫伏就会让均衡器反复启动停止MOS 开关受不了保护策略也没法做。用 MCU 之后可以加“连续 5 秒超过阈值才触发”这种消抖逻辑也可以做滞回这些在模拟电路上实现很别扭在固件里就是几行代码。至于为什么在众多 MCU 里选 PIC18LF45K22除了前面说的外设资源还有一点很关键成熟的设计资料和工具链。对工程量产来说这比“纸面指标更强的小众 MCU”更重要。芯片的长期供货、稳定的编译环境、网上能搜到的参考设计这些都是隐形成本试过就知道。3. 硬件电路设计主回路、采样与开关矩阵3.1 总体架构与能量路径整套均衡系统围绕一个原则设计任何时刻功率级只从“高压电池”取电只往“低压电池”送电。两节串联电池的正极、中点、负极是三个关键节点中点既是电池 1 的负极也是电池 2 的正极。为了把功率级灵活接到任意一节电池上我在电池两端各布置了一组开关。以电池 1 电压高于电池 2 为例一次均衡循环是这样的闭合 S1、S3断开 S2、S4MP2642GR-Z 的输入连接到电池 1 两端输出通过 S3 连接到电池 2 正极电池 2 的负极天然连接功率级地功率级使能并软启动把电池 1 的电压升压到设定母线电压通过输出通路给电池 2 充电控制器持续检测两节电压当压差收窄到停止阈值断开所有开关系统回到待机。反过来当电池 2 电压偏高时闭合 S2、S4断开 S1、S3功率级就从电池 2 取电升压后给电池 1 充电。这样一套开关矩阵加一颗升压器就完成了双向能量搬移。开关矩阵里我用的是背靠背 N-MOS具体取决于耐压需求。开关控制逻辑要特别注意由于电池 2 和功率级地之间隔着开关驱动部分必须用高边方案直接用 GPIO 推 3.3V 是推不动高边 MOS 的。我的办法是加一颗带电荷泵的高边驱动芯片或者直接选用带电荷泵的负载开关。驱动逻辑的使能极性别接反否则会出现“开关停不下来”的故障我第一次打样就吃过这个亏。3.2 升压电感与输出电容参数计算MP2642GR-Z 外围最关键的元件是升压电感。升压拓扑的电感电流直接决定均衡电流。设开关频率为 f输入电压为 Vin占空比为 D电感量为 L则电感纹波电流 ΔI_L 满足ΔI_L Vin × D / (f × L)举个例子设计一组参数。假设电池电压 3.6V目标输出电压 4.2V开关频率 500kHz。升压拓扑占空比 D (Vout - Vin) / Vout 0.143。如果希望纹波电流控制在电感平均电流的 30% 左右均衡电流目标为 0.5A则峰值电流约为 0.575A纹波 ΔI_L 取 0.3A。代入公式L Vin × D / (f × ΔI_L) 3.6 × 0.143 / (500000 × 0.3) ≈ 3.4μH取标准值 4.7μH 即可此时纹波更小饱和电流按峰值电流两倍留余量选 1.2A 以上的功率电感比较稳妥。输出电容主要承担输出电压纹波吸收。均衡电流不大10μF 到 22μF 的 X5R/X7R 陶瓷电容足够耐压按系统最高电压的两倍留两节串联的 7.4V 系统用 16V 耐压很常见。注意陶瓷电容的直流偏压特性小封装在标称 16V 下实际容量会打折所以容量要取大一点。这个坑我踩过第一次样机用 0805 封装的 10μF 做输出滤波纹波反而比预期大了一倍换成 1206 封装 22μF 才解决。3.3 电压采样通道分压、滤波与参考地两节电池的电压采样是均衡精度的基础。我采用电阻分压后进 MCU 的 ADC每个通道的分压比按“最高电压对应满量程的 80% 左右”来取。以磷酸铁锂为例最高电压 3.65V分压比选 1/3 左右那么 ADC 引脚最高输入约 1.2V距离 3.3V 的 ADC 参考还有余量既能充分利用量程又不会因为超出参考而损坏引脚。分压电阻的精度直接影响均衡阈值的准确性。我建议用 1% 精度的金属膜电阻并在 ADC 引脚到地之间加一颗 0.1μF 电容滤波再串联一颗 1kΩ 电阻作引脚保护。这里有个小细节分压电阻的等效阻抗会决定电容的充电时间RC 时间常数太大时ADC 采样还没等电容充满就读数测出来的值会偏低。所以我在固件里每次采样前先打开通道等 10μs 再做转换实测稳定性提升明显。采样顺序也有讲究。两节串联电池组电池 1 是“下节”电池 2 是“上节”。直接测电池 2 的电压是测它自己两端没有参考地问题而电池 1 的电压需要通过“总电压减去电池 2 电压”来间接得到。如果你直接测中点对地电压在中点悬空或开关切换瞬间读数会不可信。所以我代码里固定了采样顺序先采总电压再采电池 2 电压然后做减法得到电池 1 电压。这样做的额外好处是如果总电压通道异常至少还能靠电池 2 的单节电压做故障判断。3.4 保护电路设计均衡器也是电池系统的一部分不能只谈功能不谈保护。我在主回路里串了一颗电流采样电阻用运放放大后送给 MCU 的 ADC做过流判断。一旦电流超过设定值并持续 5 秒强制关闭功率级。这个 5 秒延迟是为了躲开功率级启动瞬间的浪涌电流。TVS 管也是必须的它吸收开关瞬间的电压尖峰防止毛刺击穿 MCU 和功率级。温度保护我用一颗 NTC 贴在电感旁边因为电感是均衡板上最热的器件。当板温超过 85 度时控制器把均衡电流降半超过 95 度则完全停止。温度保护写进固件比加可恢复保险丝更灵活因为它能区分“暂时过热”和“长期故障”。注意均衡板不是保护板它不能替代过充、过放、短路保护。真正的产品里均衡电路必须配合独立的 BMS 或电池保护板一起工作。4. 软件状态机与均衡策略设计4.1 电压的可靠测量防抖滤波与校准均衡策略建立在可靠的电压测量基础上。我的软件流程是每 100ms 唤醒一次完成一轮采样包括总电压、电池 2 电压和板温。每个通道连续采 8 次去掉一个最大值和一个最小值后取平均这样一个窗口内等效测量稳定度能控制在 ±3mV 以内。这里有几个容易忽略的点采样期间不要切换 MOS 开关。开关动作瞬间会让电压产生几十毫伏的跌落或抬升混进采样会造成误判。我的做法是把开关动作和采样放在不同的时间槽。滤波窗口越长越稳但响应也越慢。均衡本来就是慢变系统100ms 窗口完全够用如果拉到 500ms遇到脉冲性负载时电压判断会明显滞后。出厂前做一次两点校准。用可调电源给电池端施加 3.2V 和 4.0V 两个电压点记录 ADC 读数算出每块板子的斜率和偏置写入 EEPROM。这样批量生产时不需要依赖高精度分压电阻也能把测量误差压到 5mV 以内。校准数据的存储要注意写磨损我是一年最多写一次用双备份区写到一半断电也能从另一区恢复。4.2 均衡启动与停止阈值的设计均衡阈值的设定直接决定系统是“勤快”还是“躺平”。阈值太小稍微有点负载波动就频繁启停MOS 开关和功率级都受不了阈值太大压差都 0.1V 了还不均衡等真触发过压保护就晚了。我最终选用的参数是启动阈值 25mV持续 5 秒生效停止阈值 5mV持续 10 秒生效。为什么启动要 5 秒而停止要 10 秒启动时希望保守避免瞬时干扰误触发停止时希望更保守避免均衡到阈值附近急忙退出然后因为微小的反弹又重启形成振荡。10 秒的停止确认时间提供了足够的滞回空间。实际运行下来均衡过程平滑压差收敛后稳定退出不会出现“启动-停止-再启动”的抖动。另一个策略是均衡电流分段。压差超过 100mV 时功率级满负荷均衡电流设定 0.5A压差在 25mV 到 100mV 之间时电流降为 0.25A低于 25mV 不均衡。这样既保证了大压差时快速恢复又避免小压差时过度均衡。电流的调节方式很简单我通过 MCU 的 PWM 控制 MP2642GR-Z 的反馈引脚电压等效调整输出电压设定点从而限制充电电流。这个方案比外接模拟基准便宜而且灵活。4.3 状态机设计均衡系统不能只写一个“if 电压差大于阈值就启动”的简单逻辑真实产品需要一套状态机管理各种边界。我的状态机分 4 个状态用 C 语言伪代码表示大概是这样的typedef enum { IDLE, PRECHARGE, ACTIVE, FAULT } bal_state_t; switch (state) { case IDLE: if (voltage_diff START_THRESHOLD diff_duration 5) { select_source(HIGH_BAT); power_stage_enable(); state PRECHARGE; } break; case PRECHARGE: if (vbus 0.9 * target_vout) { state ACTIVE; } else if (precharge_timeout 2) { set_fault(FAULT_CONN_ERR); } break; case ACTIVE: if (voltage_diff STOP_THRESHOLD stop_duration 10) { power_stage_disable(); state IDLE; } else if (fault_triggered) { state FAULT; } break; case FAULT: // 关闭所有开关记录故障码等待复位 break; }在 IDLE 状态系统待机但保持周期性采样一旦满足启动条件就进入 PRECHARGE。在 PRECHARGE 状态功率级刚接入受电电池输出电容电压为零需要以限流方式缓慢建立输出防止浪涌母线电压稳定后进入 ACTIVE。在 ACTIVE 状态功率级正常工作持续监测压差、电流和温度满足停止条件回到 IDLE满足故障条件进入 FAULT。FAULT 状态关闭所有开关记录故障代码等待人工复位或故障消失后延时重试。状态机里最容易写错的是 PRECHARGE 的超时和退出机制。如果受电电池内阻异常高或连接断开母线电压永远达不到设定值系统就会卡在预充电。所以我在 PRECHARGE 里加了 2 秒超时超时后母线电压还低于设定值的 90%判定为连接异常进入 FAULT。这套逻辑救了我好几次因为测试时经常有人忘记拧紧电池端子。4.4 充电与放电阶段的策略差异均衡不是任何时候都该工作。我实践后的结论是充电阶段是均衡的黄金窗口。因为充电时电压整体被抬高高压单体的过充风险最大均衡的目的就是防止任何一节超过安全上限。此时策略很简单把高压电池的能量搬到低压电池直到压差消失。放电阶段我默认不启动均衡原因有二一是放电电流很大单节电压主要由内阻压降决定测出来的压差不能真实反映荷电状态差异二是放电末端均衡会额外消耗能量反而让整组提前触底。如果应用确实需要在放电时均衡务必要用 SOC 估算而不是端电压做判断但这会引入更多误差源普通 2S 系统不值得这么做。5. 实操过程与最终效果5.1 样机调试的完整流程拿到第一版 PCB 后我没有急着上电池而是先做了一个“假电池”测试台用两台可调电源模拟两节电池分别控制压差和充放电方向。这一阶段主要验证采样链路和状态机逻辑。我把电源 1 设成 3.5V 稳压输出电源 2 设成 3.2V然后观察状态机是否能在 5 秒后进入预充电再进入主动均衡。整个过程用串口打印状态边跑边看。测试台中有一个值得注意的细节可调电源的灌电流能力。普通直流电源只能输出电流不能吸收电流当成“受电电池”时均衡器往里灌电流会导致电源输出电压被拉高必须把电源设置成“充满截止”或者干脆用电子负载并联大电容来模拟电池特性。我第一次测试就遇到了“输出电压越拉越高、均衡器以为还在均衡”的怪现象排查了半天才发现是电源不带灌电流功能。换用电子负载并联大电容后逻辑验证就顺了。逻辑验证完成后进入实电池测试。我用两节二手锂电池初始压差约 210mV。把电池包接到样机上开启均衡记录电压变化。实测数据如下环境温度约 25 度时间点电池1电压电池2电压压差均衡状态0min3.42V3.21V210mV待机1min3.41V3.23V180mV预充电5min3.40V3.27V130mV主动均衡20min3.38V3.32V60mV主动均衡45min3.37V3.36V10mV主动均衡50min3.36V3.36V2mV停止实际跑完约 80 分钟压差稳定在 5mV 以内表中截取到第 50 分钟。可以看到高压电池并没有被过度拉低说明能量确实搬到了低压电池而不是被消耗掉这和被动均衡有本质区别。5.2 效率与功耗数据我实测了主动均衡时的能量效率输入能量约 8.2Wh输出到受电电池的能量约 6.7Wh中间损耗约 1.5Wh主要来自开关损耗、电感铜损和 MOS 导通损耗整体效率约 82%。考虑到均衡电流只有 0.5A 量级这个效率相当可以。如果希望更高可以降低均衡电流或增大电感减小纹波但对 2S 系统来说均衡一次消耗的总能量通常不足电池容量的 3%效率的优先级反而不如可靠性高。待机功耗我也专门测过进入 IDLE 状态后MCU 休眠功率级关闭整板待机电流约 35μA包含稳压器的静态功耗。对这个系统来说一年待机只消耗约 0.3Ah 容量多数 5Ah 以上的电池包都能接受。如果你需要更低可以把板载 LDO 换成带使能开关的方案待机能做到 5μA 以下但成本和复杂度都会上升一般备用电源没必要。5.3 硬件布局与布线经验这块均衡板上最需要注意的是功率回路和采样回路的分离。功率回路的电流走粗短路径输入电容、电感、输出电容、MOS 开关的地用大面积覆铜连接采样信号线贴着地走远离电感和开关节点。我第一版布局为了整齐把采样分压电阻放在了功率电感正下方结果 ADC 读数在均衡时波动了 20mV。后来把采样线绕开电感到板边波动立刻降到 2mV 以内这是电感产生的交变磁场在分压电阻附近感应出了噪声电压。板子背面我给功率级的开关节点和电感区域留了网格铺铜既帮助散热又缩小了回路面积。最后一点均衡板的地和电池组负极要用一根短粗导线单点连接避免地环路形成共模干扰。6. 常见问题与排查技巧实录6.1 问题速查表我把近半年踩过的坑和排查过程整理成一张速查表希望能帮你少走弯路。现象可能原因排查与解决均衡启动后受电电池电压不升反降受电电池内阻过大或已经报废用电子负载测单节充放电能力内阻超过 100mΩ 直接淘汰ADC 电压在均衡时跳动超过 10mV采样线靠近功率电感或滤波电容不足采样线远离电感加 0.1μF 电容增加软件平均次数电感啸叫能听到高频声反馈环路不稳定或输出电容容量不够检查反馈分压增大输出电容必要时调整补偿网络均衡 15 分钟后 MOS 发烫开关切换频率太高或驱动不足降低状态机轮询频率检查高边驱动电压是否足够压差一直停在 30mV 不再收敛均衡电流被电流检测电阻限得过小检查采样电阻阻值调整限流设定或改用开尔文采样连线MCU 频繁复位均衡回路地弹干扰或电源去耦不足功率地和控制地单点连接MCU 电源加 10μF 和 0.1μF 双电容待机电流比预期大 100μA功率级未真正关闭或 GPIO 有浮动引脚确认使能引脚拉到地所有未用 GPIO 设为输出低6.2 一个典型的排除过程电感啸叫电感啸叫这个问题花了我最多时间。现象是均衡启动后电感发出尖锐的高频声均衡电流随之摆动。第一反应是电感饱和于是换了饱和电流更大的电感啸叫依旧。后来用示波器测功率级输出电压发现波形不是稳定开关而是“打嗝”状态一会儿有开关动作一会儿完全停止频率落在 18kHz 附近正好在听觉范围内。根因是反馈环路没有充分补偿轻载时进入了脉冲跳跃模式。解决方式分两步第一增大输出电容到 22μF给环路增加相位裕度第二在补偿引脚上按数据手册建议加了 RC 补偿网络把穿越频率压到开关频率的十分之一以下。修改后啸叫消失均衡电流也稳定了。如果只想着“换个电感”去解问题永远不会好这也是做电源类项目最容易陷入的误区。6.3 校准与生产一致性样机压差判断很准不代表每块板子都准。我给样机校准后把分压电阻统一换成 1% 精度的物料重新做了 20 块板子的一致性测试结果是通道 1 误差在 ±12mV通道 2 误差在 ±9mV。这个误差对 25mV 启动阈值来说有点吃紧。于是我在产线加了一道自动校准用程控电源输出 3.3V 和 4.0V 两个电压点每块板子自动记录实际读数并烧录校准系数。校准后的 20 块板子全部落在 ±4mV 以内。校准时有个细节采集读数要等电压稳定 1 秒再读不要读上电瞬间的值否则校准系数本身就是错的。6.4 安全相关的避坑提醒最后说几个安全层面的细节。第一均衡板不是保护板它不能替代过充、过放、短路保护。在真正产品里均衡电路必须配合 BMS 或电池保护板一起工作建议在系统级做联动当保护板检测到任何一节电压超过安全阈值时直接硬拉低功率级的使能引脚不依赖 MCU 响应。第二均衡电流不宜选太大。2S 电池组的均衡电流 0.3A 到 1A 足够电流越大发热和开关应力急剧上升收益却递减。第三MOS 开关的体二极管方向必须设计正确。体二极管会提供不可控的续流路径方向错了均衡路径就不受控。我建议在开关矩阵中采用背靠背连接把体二极管互相抵消确保关断时真正隔离两侧。7. 一些更进一步的扩展想法这套“升压器 MCU”的均衡方案本质上是一个可扩展的能量搬移框架。把开关矩阵从 2S 扩展到 4S只需要增加对应的开关组和采样通道功率级可以复用软件状态机里增加“当前均衡对象”这个变量逻辑也不会复杂多少。当然4S 以上系统对开关矩阵的耐压、功率级的输入范围、采样的浮地处理都会提出新要求不是简单堆硬件就能完事。反过来如果只是做 2S 且想省成本也可以去掉 MCU用专用的模拟均衡芯片直接实现。但那样阈值、滞回、温度保护都固定在芯片里后期想调整没有任何余地。从产品迭代的角度看MCU 方案的前期成本只是多花几块钱和一部分固件时间换来的却是整个均衡策略的可编程性。我个人在实际项目里更推荐 MCU 加功率级的组合因为“灵活”这件事在电池管理系统这种需求不断演进的产品上价值太大了。最后再分享一个小技巧如果你在调试这类均衡器建议从一开始就把所有状态切换和采样值通过串口打出来。我用的是最简单的一根 UART 转 USB 线上位机开个串口助手任何异常都能追溯到具体状态。等逻辑完全成熟了再把调试输出关掉整机功耗还能再降十几微安。这个习惯让我的排查效率至少翻了一倍。