
1. 项目背景与均衡方案选型思路1.1 为什么两节串联电池也需要认真做均衡很多人看到“两串电池”会下意识觉得很简单甚至有人觉得用一块保护板带两个被动均衡电阻就够了。但真正做过储能备电项目的人都清楚2S 电池虽然单体数量少却恰恰是故障率最高的组合之一。原因很直接在 12V 或 24V 电池柜里电池组往往是多并多串而串数越少每一串的电压偏差越容易被放大。充电时一串先到上限电压另一串还差得很远管理系统一旦限制整组充电就永远充不满放电时一串先到下限另一串还有不少余量系统却只能停机白白浪费容量。我这个项目面对的是储能电站内部的辅助电源系统和备用电源系统电池使用的是磷酸铁锂电芯两节串联构成 2S1P 的电池包再由多个电池包汇流组成更大规模的系统。磷酸铁锂的特点是平台电压很平开路电压和 SOC 的关系在小电流区间不那么线性所以单纯看电压很难判断真实状态。而两串电池之间因为自放电率不同、电芯内阻差异、温度梯度甚至生产批次不同SOC 会逐渐拉开。实测中一组静置两周的电池两串电压差可以从 8mV 慢慢涨到 40mV 左右如果继续放下去差异还会持续扩大。如果不做均衡最典型的后果就是充电时高电压串先触发过压保护充电提前结束低电压串长期处于欠充状态放电时低电压串先触发欠压保护高电压串剩余电量放不出来。备用电源系统最怕的就是“关键时刻只有一半电量”这在备电场景里是绝对不可接受的。所以哪怕是两串电池也必须有一套真正能工作的均衡机制而不是贴两个电阻就完事。1.2 主动均衡与被动均衡的取舍做均衡方案时第一道选择题就是主动均衡还是被动均衡。被动均衡的原理是给每节电池并联一个放电电阻当电压偏高时通过电阻把多余能量以热量形式放掉。优点自然是电路简单、成本低、控制逻辑直接。但它有个致命的缺点能量被浪费掉而且均衡电流不能太大否则发热会很难处理。在 2S 小系统里被动均衡虽然能应付日常压差但如果电池从生产环节就存在明显容量差异或者长期处于频繁充放电状态被动均衡的电流往往追不上偏差扩大的速度最后只在临近满电时才有作用效果比较勉强。主动均衡的思路则完全不同。核心是“能量搬移”把高能量电池的一部分能量通过 DC-DC 变换器转移到低能量电池中而不是直接放掉。这样做的好处首先是效率高能量不会凭空损失其次是均衡电流可以做得更大均衡速度更快对两串电池而言拓扑也足够简单不需要复杂的矩阵开关控制逻辑反而清晰。我最终选择主动均衡还有一个很实际的原因备用电源系统长期处于浮充或待机状态柜内散热条件并不好。被动均衡的发热在这种封闭环境下会累积影响电芯寿命也会带来安全隐患。而主动均衡的发热量小得多大部分热量集中在效率和开关损耗上整体温升可控。虽然电路成本高了一些但从系统可靠性和长期运行的角度看这笔投入非常值得。1.3 系统总体架构与设计目标系统架构在我脑中的成型过程其实反复改了好几版。最初考虑过用单独的模拟前端芯片来做电压采样后来权衡了一下成本和必要功能决定用 STM32F767BI 直接承担采集、控制和通信任务。整体架构可以分成三层最底层是功率变换层由 MP2642GR-Z 及相关外围构成能量转移通道中间层是采样与驱动层负责电芯电压、回路电流和温度信号的调理以及 PWM 驱动信号的生成最上层是策略层运行在 STM32F767BI 内部负责采样时序、均衡判定、闭环控制和故障上报。设计目标定得很具体两节串联电芯的电压测量误差控制在 ±5mV 以内这是均衡判断的前提否则策略就是空中楼阁。均衡电流设计在 0.3A 到 1A 之间兼顾速度和发热实际目标设定为 0.5A。均衡判定不能只依赖瞬时电压必须结合静置状态和充放电状态防止误均衡。整套电路必须能在 -20℃ 到 60℃ 环境下稳定工作因为储能柜往往在户外或半户外环境布置。架构确定之后最重要的就是选型。主控选了 STM32F767BI因为它在接口数量、处理性能和功耗之间比较均衡功率变换部分选择了 MP2642GR-Z这块芯片在整个方案里承担的能量转移角色非常关键后面我会详细讲。2. 硬件核心设计与电路细节2.1 STM32F767BI 在系统中的角色与选型理由STM32F767BI 是 M7 内核的单片机主频最高能跑到 216MHz在这个应用里性能超出实际需求一大截。那为什么还要选它最核心的原因有三个一是内置资源够全ADC、DAC、高级定时器、通信接口都齐不需要再外挂一堆周边芯片二是处理能力足够跑基于电压和电流的双闭环算法甚至留出了跑简单 Soc 估算模型的空间三是片内 Flash 和 RAM 容量大可以存储较长时间的运行记录这个对故障分析特别有用。在这套系统里STM32F767BI 主要干了四件事。第一件事是电压采样控制通过三路采样通道分别采集电芯1电压、电芯2电压和总压采样时序由定时器触发配合 DMA 搬运数据保证三路数据的采集时刻基本一致。第二件事是 PWM 驱动均衡变换器需要两路带死区的互补 PWM高级定时器可以直接输出带死区插入的互补波形省掉了外部逻辑电路。第三件事是状态判断和均衡策略根据电压差、温度、充放电状态决定是否启动均衡以及均衡电流的方向和大小。第四件事是故障保护当过压、欠压、过温、均衡回路过流时立即关断 PWM同时通过通信接口上报上位机。实际画板时还有一个细节F767 的 ADC 是 12 位的理论上在 3.3V 参考下分辨率有 0.8mV听起来够用。但真实情况下内部参考电压的温漂和噪声很容易让测量误差跑到 10mV 甚至更多。所以在设计时我给采样前端单独加了一颗外部基准源同时软件里做了过采样处理。这个问题如果不提前处理后面均衡策略做得再漂亮也会因为“眼睛看不清”而白搭。2.2 MP2642GR-Z 在均衡回路中的定位与电路实现MP2642GR-Z 在这套系统中的角色是把电池A的能量通过 DC-DC 变换转移到电池B。它不是传统意义上用来给整机供电的电源芯片而是被用作可控的功率变换核心。具体拓扑采用了同步 Buck-Boost 结构只在两串电池之间工作。简单说一下原理当电芯1电压高于电芯2时让变换器工作在 Buck 模式将电芯1的高电压降到电芯2的充电电压能量从电芯1流向电芯2反过来当电芯2电压高于电芯1时需要把电芯2的能量搬到电芯1此时让变换器工作在 Boost 模式把电芯2的电压升高后给电芯1充电。说白了整个过程就是一个带方向控制的开关电源。MP2642GR-Z 在这个拓扑里承担了同步开关控制器的功能它内置了功率管和相关驱动逻辑只需外部搭配电感和少量阻容就能完成功率变换。好处是布板面积小、开关参数一致性好、不需要自己搭栅极驱动电路。选它还有一点很重要它的开关频率可以设置得比较高这样外部电感体积可以做得比较小整个均衡模块能塞进很小的 PCB 空间这对备用电源系统里的紧凑型 BMS 板卡非常友好。方向切换由 STM32F767BI 的 GPIO 控制两支低 Rds(on) 的 MOSFET 实现把变换器的输入输出端口对调。这里必须加互锁逻辑绝对不允许两支方向切换管同时导通否则电池直接短路。这个互锁不仅靠硬件逻辑门软件侧也在每一帧 PWM 更新前重复检查状态标志双保险才能让我放心。2.3 电压采样电路与精度设计细节电压采样是整个系统的眼睛设计上花的功夫最多。两节串联电池的采样难点在于电芯1的负极是系统地电芯2的负极却悬在电芯1的正极之上属于共模电压比较高的浮动测量。如果直接用电阻分压到 ADC共模抑制比会非常难看测量噪声也大。我的做法是使用差分采样放大器把电芯2的电压转换成以地为参考的单端信号再接一级低通滤波后送入 STM32F767BI 的 ADC 通道。差分结构可以很好地抑制共模干扰而低通滤波能滤掉 DC-DC 开关产生的纹波。滤波器的截止频率定为 1kHz 左右采样窗口放在 PWM 关断瞬间这样测到的电压更加接近电芯的真实开路电压。采样精度上做了三点针对性设计。一是外部基准源ADR 系列的低温漂基准把 ADC 的参考电压稳定在 2.5V而不是直接用单片机的 VREF这样温漂问题基本解决。二是软件过采样用 16 次平均加 4 位数字累加等效分辨率提高了不少代价是采样时间变长但均衡控制本来就不需要太高的采样率。三是采样前校准出厂时用高精度万用表逐板校准两点存入 Flash之后每次上电自动读取。这里有一个大家容易忽略的细节采集电芯2电压时流经采样网络的电流会从电芯1正极流到系统地如果分压电阻阻值太小会在电芯1上造成额外的漏电流长期下来又会成为新的不均衡来源。所以采样网络的阻抗尽量取大同时加缓冲级确保采样电路本身不给电芯“添乱”。3. 均衡控制算法与参数设计3.1 采样时序与极化电压处理均衡控制最怕的事情之一是把“极化电压”当成真实的 SOC 差异。锂电池在充电或者放电刚刚停止的时候电芯端电压会有一个明显的回弹过程这个回弹和电流方向、电流大小、持续时间都有关系。如果在回弹过程中测量电压并据此启动均衡很可能出现误判前一分钟电芯1电压高下一分钟就反过来了均衡器来回折腾电池没均衡好自己先把能量耗光了。所以我在系统中设计了一套采样时序状态机。简单说把运行过程分为充电态、放电态、静置态和均衡态。只有在静置态并且静置时间超过规定阈值后才允许读取电压并执行均衡判定。静置阈值的选取和电池化学体系有关磷酸铁锂的极化恢复相对慢一些我最终设定为 10 分钟。当然10 分钟在备用电源场景是可接受的因为均衡本来就不是秒级响应的事情。均衡过程中要切换方向时也不能直接反转 PWM 极性。正确做法是先停 PWM让电感电流降到零等待一小段安全时间再切换方向管最后重新启动 PWM。这个“零电流切换”的顺序很重要如果电荷还储存在电感里就切换方向会产生很大的电压尖峰容易击穿开关管。我在实验室里就亲眼看过因为切换时序没处理干净烧掉了一颗 MOS后来在代码里加了严格的时序标志位才把这个隐患杜绝。3.2 PWM 频率、占空比与死区参数选择均衡变换器的 PWM 参数不是随便写的它们直接影响效率、纹波和电磁干扰。我用的开关频率是 400kHz这个频率是 MP2642GR-Z 支持范围内的一个折中选择。频率高电感可以小但开关损耗会增加频率低效率能好一点但外部电感体积大纹波也大。400kHz 在体积和效率之间平衡得不错经过效率测试满载均衡时变换效率在 85% 到 90% 之间对于小功率能量转移来说完全够用。占空比则由硬件拓扑和当前压差决定。两串电池电压通常都在 2.5V 到 3.65V 之间所以变换器的输入输出电压比非常接近 1。在这种情况下Buck-Boost 拓扑工作在两相交界点附近控制特别需要注意不能频率固定地只调占空比否则在输入输出很接近的时候容易进入不稳定区域。我的做法是把环路设计成电流模式控制以电流环内环、电压环外环的结构让 PWM 占空比由环路自动调节。实测下来即使两节电池电压差只有 30mV变换器也能稳定工作没有出现振荡。死区时间同样关键。死区太大同步管不能完全互补导通会丢失部分能量传递效率死区太小上下管可能出现瞬间直通轻则效率下降重则烧管。我最初按经验设置了 100ns 死区结果效率明显偏低后来通过示波器观察开关波形逐步把死区调到 60ns并且在不同温度和输入电压下做压力测试确认没有直通风险才最终锁定。这个调整过程很能说明问题参数不能只看数据手册得结合自己的布线和功率管实际特性来定。3.3 均衡策略讨论电压差优先还是 SOC 差优先关于均衡判据行业内有两种常见做法一是直接比较两节电池的电压差超过阈值就开均衡二是先估计 SOC再用 SOC 差来指导均衡。我这个项目最后选择了“电压差为主、SOC 差为辅”的折中策略原因在于纯 SOC 策略对算法的置信度要求很高而磷酸铁锂的 SOC 估计本身就误差较大做不好反而误事。具体策略如下静置状态下如果两节电池电压差大于 20mV就认为存在不均衡开启主动均衡当压差缩小到 5mV 以下关闭均衡避免进入“死区”来回振荡。这里加入迟滞区间的原因很实际如果没有迟滞均衡器会在阈值附近反复启停继电器和功率管寿命受影响而且电压采样噪声也可能触发抖动。同时软件里记录了一组“浮充末期电压”作为参考。在备用电源系统的浮充模式下充电电流很小电池端电压非常接近真实开路电压这时候采到的电压差数据可信度更高。利用这种低干扰窗口进行均衡比在随机时刻盲目比较电压要有效得多。实测下来对一组初始压差 45mV 的电池持续均衡 3 小时可以把压差稳定压到 5mV 以内。4. 调试过程与实测数据4.1 硬件上电前的安全措施与检查流程这套系统虽然功率不大但毕竟直接连电池调试时最怕的就是短路、反接和电压采样错乱。我每次上电前都会固定走一遍检查流程虽然琐碎但救了很多次板子。第一步是目视检查焊接。重点看 MP2642GR-Z 周围的电感、电容有没有虚焊方向切换 MOSFET 的源漏有没有装反还有采样电阻的阻值是否正确。第二步是万用表静态测量在电池没有接入的情况下测量系统电源的对地阻抗确保没有低阻短路然后接入低压直流源代替电池以 2V 起步缓慢提升电压观察各采样通道的电压读数和实际输入是否一致。第三步才允许接入真实电池但第一次接入要在电池回路中串一个限流电阻防止意外大电流烧板。限流电阻这一步特别重要。主动均衡的变换器在启动瞬间如果电容器上没有预充电会形成较大的冲击电流可能损伤电池连接器和采样保险丝。我在实验室调试时用了一个 5Ω 的功率电阻串联在正极回路等系统完成软启动后再用继电器短接这样就避免了上电冲击问题。还有一个容易忽视的点方向切换 MOS 的驱动供电。F767 的 GPIO 是 3.3V 电平驱动高边 MOS 需要自举或专用驱动芯片。如果驱动供电设计不合理高边管会出现欠压导通不完全的问题管子在线性区发热严重。我第一次调试时没注意这个细节方向管温度几分钟就飙升到 80℃排查了很久才发现是驱动电压不足。4.2 典型问题排查与解决记录调试过程中遇到最头疼的问题是均衡电流异常波动。刚开始做闭环控制时设置目标均衡电流 0.5A但用示波器抓电流波形发现均衡电流以大约 1kHz 的频率在 0.2A 到 0.8A 之间来回大幅振荡整个电路发出轻微啸叫。这个现象本质上属于环路带宽和数字控制延时之间的匹配问题。ADC 采样、滤波、控制运算、PWM 更新这个过程有固定的时间延迟如果环路增益太高延时会让控制系统进入不稳定状态。解决办法是把电流环带宽从原先设计的 20kHz 降到了 5kHz 左右同时在电流采样输出上加了一阶低通数字滤波。调整之后电流波形非常平稳波动不超过 ±50mA。另一个高频问题出在电池电压采样上。刚焊好板子准备做精度校准时发现电芯2的电压读数比电芯1高 30mV但用万用表测量实际电压两者其实只差 3mV。反复检查后确认是 PCB 布局问题采样信号走线经过了电感下方开关电源的磁场耦合了干扰信号进入采样回路。重新调整布线让采样线的走线避开功率电感同时加宽了采样地线干扰问题就消失了。这类问题在开关电源设计中非常典型布局的重要性怎么强调都不为过。4.3 实测均衡过程数据分析下面这组数据来自一组标称容量 10Ah 的磷酸铁锂 2S 电池包在室温环境下完成的一次完整均衡测试。测试前电池包已经静置 24 小时初始电压分别是 3.312V 和 3.282V压差 30mV。系统启动均衡后前 30 分钟均衡电流稳定在 0.5A电压差从 30mV 下降到 18mV降速比较快。之后电压差开始收敛速度变慢这是因为随着压差减小变换器的功率传递效率略有下降同时电池内部的化学扩散也在影响端电压。又经过 50 分钟压差降到 8mV 附近。当压差低于 5mV 时控制策略关闭均衡最终电压稳定在 3.303V 和 3.299V压差 4mV。整个过程耗时约 1.5 小时转移能量约 0.75Wh。放在备电场景下这种均衡速度足够应对正常状态下的电压漂移。如果遇到电池已经严重不均衡压差超过 100mV 的情况需要的时间会明显变长所以在设计时我从策略上做了“充电末期强制均衡 静置期补均衡”的组合方案确保问题不会积累到无法收拾的程度。时间节点电芯1电压电芯2电压压差均衡电流初始静置后3.312V3.282V30mV0A均衡 30 分钟3.307V3.289V18mV0.5A均衡 80 分钟3.303V3.295V8mV0.4A均衡 90 分钟3.303V3.299V4mV0A关闭5. 项目经验与扩展方向5.1 从这套系统里沉淀下来的几条经验项目做完后复盘有些经验非常值得写下来给后来的人做参考。第一主动均衡的硬件设计要比被动均衡复杂得多但可靠性收益也高得多。如果你做的是长期免维护的备电系统花在主动均衡上的成本会在电池寿命和系统可用率上拿回来。被动均衡不是不能用前提是你对电池一致性和使用工况有足够的信心。第二电压采样精度是均衡系统的天花板。不管算法写得多复杂只要采样误差超过 10mV你就不可能把电池均衡到 5mV 以内。这是一个很简单的逻辑闭环但很多人在项目初期为了省成本忽视了最后发现均衡效果不理想回头返工成本反而更高。第三控制策略里面的“静置”和“迟滞”不是锦上添花而是必需品。我自己在开发过程中经历过不设置迟滞导致的均衡反复切换那种情况下不仅 MOS 管寿命受影响连系统的通信日志都会被刷屏严重干扰上位机的故障判断。明确的状态划分和迟滞区间是对系统最基本的保护。第四MP2642GR-Z 这类集成了功率级的 DC-DC 芯片在均衡小功率场景下确实很好用。它让电源设计的门槛降低了不少不用再自己计算栅极驱动电流、死区电路这些麻烦的细节可以把精力集中在更高层的控制策略上。但要注意芯片内部的功率管规格是固定的必须仔细核算最大电流和散热能力不要超出规格使用。5.2 后续功能扩展的可能方向这套均衡系统虽然面向的是两串电池但它的设计思路可以很方便地扩展。如果后续要做三串、四串电池均衡只需要把变换器结构扩展成“多绕组反激”或者“相邻电池间主动均衡”的拓扑F767 的性能完全够继续作为控制核心。MP2642GR-Z 也可以在此基础上组成多通道均衡模块每两串一组再用高层的均衡调度算法协调整个电池组的一致性。另外我觉得目前这版系统还有两个值得完善的地方。一是增加基于电化学模型的 SOC 估算现在虽然暂未完全依赖 SOC 判据但如果我们能把磷酸铁锂的 OCV-SOC 曲线模型做准加上温度修正均衡策略的精度还能再上一个台阶。二是增加通信接口的冗余目前常用的通信方式在异常工况下偶尔会误报将来可以考虑加一路独立的低速通信作为备份通道。如果条件允许我还想把这套系统接入整个储能系统的协调控制器让均衡动作和充电策略联动。比如在充电末期暂停均衡避免均衡电流和充电电流叠加导致过冲在放电时则禁止均衡保证满载输出能力。这种系统层面的联动比单独追求某一节电池的电压一致更加有效。我在设计这版均衡器的初始阶段就特意预留了与上位机通信的接口后续扩展时不需要大改硬件只需要调整策略层的代码。做电芯均衡这件事看起来简单但真正把一个 2S 电池包的均衡做到稳定可靠、长期不折腾涉及的细节其实非常多。从芯片选型、PCB 布局、采样电路到控制策略每一环都有坑。这篇文章里记录的这些调试过程和心得希望能给做类似储能 BMS 的朋友一些参考少走几步弯路。