开关电源模块并联均流:最大电流法与数字PI控制实践
简介:这份资源是2011年全国大学生电子设计竞赛A题「开关电源模块并联供电系统」的完整设计论文,面向备战电子设计竞赛的高校学生与电源方向初学者,可用于理解双模块并联供电、自动均流与过流保护的整套设计流程。压缩包内共1个docx文档,约617KB,以Word论文形式呈现,含题目要求、方案论证与比较、模块选型、硬件电路与软件流程等章节,便于直接阅读、批注和打印。文档从主从法、平均电流法、热应力法与最大电流均流法的对比入手,说明选择最大电流均流法的理由,并记录以MSP430F149单片机为控制器、LM2576-ADJ为电源芯片的实现细节,涵盖独立键盘设定输出电压、12位A/D采样、按1:1与1:2比例自动分配电流,以及4.5A阈值短路保护与自动恢复等指标要求与调试思路,对复现实验和撰写报告都有参考价值。目前已有804人学习下载,适合作为赛题复盘与方案论证写作的参照材料。
1. 两路电源并联,为什么电流不会自动对半分
很多人第一次搭开关电源模块并联供电系统时,都会栽在同一个地方:两路输出都稳稳压在 8.0V,万用表读数一模一样,可一接上负载,电流表上的数字就立刻变得难以控制——一路 1.3A,一路 0.2A。这正是电子设计竞赛那道 A 题真正要考的内容:均流不是把两个电源的输出端连在一起就完事,而是要让两路模块在负载变化、温升、器件离散性都存在的情况下,仍然按指定比例分配电流,误差还得压进 2%。
粗略估一笔账就明白了:两路模块的闭环输出阻抗各按 20mΩ 计算,回路总阻抗 40mΩ,只要两路设定值差 40mV,就会凭空多出 1A 的环流。总电流 1.5A 要按 1:2 分配时,本该是 0.5A 和 1.0A,实际可能变成 1.25A 和 0.25A。均流环要做的事,就是把这几毫伏的差值持续纠正过来。
2. 均流策略:四种方法的失效模式,与最大电流法为什么胜出
均流方法的选择,说到底是在回答一个问题:谁当基准,其他模块跟着谁走。基准选得不好,系统就会在某个模块掉线时整体崩溃;基准选得好,任意一路失效都只是降额,不是停机。这道题的方案论证部分把四种主流方法摆在一起比,比的其实不是精度,而是失效模式。
2.1 主从法、平均电流法、热应力法:各自的失效模式
主从法最直观:指定一路工作于电压源模式,负责稳住 8V 输出,其余模块工作于电流源模式,电流值由主模块下发或者独立设定。它的均流精度可以做得很高,因为比例是“命令”下去的,不依赖测量反馈。问题也在这里——主模块一旦失效,整个系统直接失去电压基准,所有从模块都不知道该输出多少。这道题要求“自动均流”,本质上是想要冗余,主从法天生给不了冗余。
平均电流法往前一步:所有模块之间拉一条公共均流母线 CSB,每个模块把自己的电流转换成电压 Ui 挂到母线上,母线电压 Ub 就是 N 个 Ui 的平均值,代表系统平均电流。每个模块拿自己的 Ui 和 Ub 比较,误差放大后微调输出,最终大家电流一致。精度确实高,但它有一个致命的结构性缺陷:母线是“平均值”,意味着任何一路把母线往下拉,所有模块都会跟着下调输出。母线短路、某路模块掉线、接插件接触不良,都会让 Ub 偏低,系统输出电压一路跌到下限,变成集体失效。平均在数学上很优雅,在电路上却是个单点故障放大器。
热应力法换个思路:测每个模块的温度,温度高的少出力,温度低的多出力,让热应力平均。这个思路在散热条件不一致的机架电源里有价值,但它响应极慢——热时间常数是分钟级的,而负载阶跃是毫秒级的。而且温度高不等于电流能力强,用它做主均流,等于拿一个滞后几十万倍的信号去做闭环。这道题里它最多只能做辅助降额。
2.2 最大电流法:一条只升不降的母线
最大电流法把“基准”从平均值换成了最大值。它用一套最大值比较器,每个时刻输出电流最大的那个模块成为主模块,其 Ui 被送到 CSB 母线上,于是 Ub = max(Ui)。其余从模块拿自己的 Ui 和这个最大值比较,谁低了就把自己的输出往上抬。
这个改动听起来很小,效果却是结构性的:母线电压只会被“更高”的信号顶上去,不会被拉下来。实现上通常靠二极管构成最大值电路——只有电压更高的那一路能把母线抬高,其余二极管反偏。这就直接消掉了平均电流法最怕的那个失效模式:某路掉线,母线不会塌。
代价也有,而且很实在。第一,电流最大的那个模块自己不再调节,它就是基准,它的电流完全由负载决定,一旦它跑偏,整个系统跟着跑偏。第二,母线经过了二极管,有 0.3~0.7V 的压降,需要在比较端做补偿,否则所有从模块都会系统性偏低。第三,母线是模拟小信号,长走线上一丁点噪声都会被当成“最大值”采信,PCB 布局稍微随意些,均流就会抖。这些在方案论证里通常一笔带过,真正上手才知道是血泪经验。
对这道题来说,选最大电流法的理由很直接:两路模块完全对等,谁当主都能独立稳住 8V,天然具备冗余;母线只升不降的特性,避免了平均电流法那种“一路坏、全体崩”的连锁反应。
2.3 把母线搬进固件:数字均流的等价实现
真正落地的系统里,那条模拟 CSB 母线经常被搬进单片机内存。做法是:两路电流各经采样芯片变成数字量,单片机里做一次取最大值,算出误差,再分别通过 DAC 微调两路的反馈节点。硬件上的最大值比较器和二极管被几行比较语句替代,功能等价,但阈值、滤波系数、爬升斜率全都能改。
数据通路是这样的:分路电阻把电流变成毫伏级压降,高侧电流检测放大器把它放大到伏级,24 位 ADC 采进来,单片机算出 I1、I2,取 Itotal = I1 + I2,按题目指定的比例 k1:k2 算出目标值,误差送进 PI 调节器,输出写进 12 位 DAC,DAC 的输出经一个电阻注入 LM2576 的反馈节点,改变反馈分压比,从而微调该路输出电流。
提示:DAC 注入反馈节点时一定要串电阻。直接并联到 FB 脚会把 DAC 的输出阻抗并在分压网络上,环路增益随码值变化,轻载时容易自激。
这套结构还有个隐性好处:题目要求在 1:1 和 1:2 之间切换,发挥部分还要求 0.5~2.0 范围内按任意指定比例分配。硬件母线只能实现“平均”或“最大”这类固定规则,而写进固件的比例是一个变量,改一个常数就切换了。这是数字化最实际的收益,不是为了显得先进。
3. 功率级与采样链路:1.23V 反馈脚决定了整套控制怎么接
控制算法写得再漂亮,最终也要落到 LM2576 那颗反馈脚上。这颗经典降压开关稳压器的输出电压由 FB 脚电压决定:芯片内部把 FB 稳在 1.23V,外部用 R1、R2 分压,于是 Vout = 1.23 × (1 + R2/R1)。要 8V,比值 R2/R1 得是 5.5 左右,取 R1 = 1kΩ、R2 = 5.5kΩ 是常见组合。芯片内部振荡器固定在 52kHz,内含电流限制和热关断,外围只需要电感、续流二极管和输出电容。
3.1 52kHz 开关频率给控制环留了多少带宽
52kHz 这个数字直接决定了数字环能跑多快。开关电源的环路穿越频率一般取开关频率的 1/10 到 1/5,也就是 5~10kHz 量级,再高就会被输出 LC 的双极点把相位拖到 180 度以下。而数字侧还要经过采样、计算、SPI 写入 DAC 这一串延迟,实际能稳定闭环的更新率往往只有 1kHz 上下。
这意味着 ADC 的采样率不必追求高速。ADS1232 这类 ΣΔ 型 ADC 有 10SPS 和 80SPS 两档输出速率,10SPS 时有效位数最高、工频抑制最好,80SPS 时速度快但噪声抬升。均流是一个稳态指标——题目考核的是“保持输出电压 8.0±0.4V、电流按比例分配、误差绝对值不大于 2%”,不是动态阶跃响应。所以选 10SPS 换精度,是完全合理的取舍;如果非要追 80SPS,反而会把噪声引到 PI 的误差项里,让 DAC 码值跳来跳去,均流数字看着更差。
有一个细节容易被忽略:LM2576 的 FB 脚内部是误差放大器的输入端,阻抗很高,外部分压网络的电流只有百微安级。从 DAC 注入的电流只要几十微安,就能让 FB 脚偏移几毫伏,折算到输出就是几十毫伏的调节量。这个“小电流撬动大电压”的特性,是数字微调能成立的前提,也是它脆弱的原因——注入电阻的温漂、DAC 的零点误差,都会被 5.5 倍的分压比放大到输出端。
3.2 INA270:在 8V 共模上测 50mV 的压降
串联在输出回路里的分路电阻,压降只有几十毫伏,但它两端的共模电压是 8V。普通运放做差分放大,要么共模范围不够,要么需要精密匹配的四颗电阻,共模抑制比一差,8V 的共模波动就会淹没 50mV 的差模信号。
高侧电流检测放大器解决的就是这个问题:内部集成了经过修调的电阻网络,共模输入范围可以覆盖到几十伏,直接跨在分路电阻两端取样,不需要断开负载地线。这类器件通常是固定增益(不同后缀对应 20、50、100 等倍率),输出直接就是与电流成正比的电压。
关键在于分路电阻的取值。这类高侧检测器件的推荐输入范围大致在 50mV 到 100mV 之间,低于下限时内部失调和噪声占比迅速上升,高于上限则功耗和温升不可接受。这道题的电流范围是 0.5A 到 4.5A(保护阈值),要覆盖 4.5A,取 0.02Ω 时满量程压降 90mV,正好落在推荐区间的上沿;功耗 4.5² × 0.02 = 0.4W,得用合金电阻或者并联几颗。代价是 1A 时压降只有 20mV,已经掉出推荐区间,小电流段的相对误差会明显变差。这是绕不过去的取舍——要么牺牲小电流精度,要么换量程切换电路,增加成本和复杂度。
注意:分路电阻必须用开尔文接法,电压取样点从电阻焊盘内侧单独引出,不能和功率走线共用一段铜箔。20mΩ 的电阻,一段 10mΩ 的走线就能带来 50% 的误差。
3.3 ADS1232 与 DAC7811:24 位采样怎么落到 12 位输出
ADS1232 是双通道差分输入的 ΣΔ ADC,内置可编程增益放大器,输出走 SPI 兼容的串行时序,正好一路采 I1、一路采 I2,省掉外部多路开关。它的满量程由参考电压和增益共同决定:输入范围约等于 ±0.5 × VREF / PGA。参考取 2.5V、增益取 1 时,满量程约 ±1.25V,90mV 的电流信号只用到量程的 7%。听起来很浪费,但 24 位分辨率下即使只做到 16 位有效,折算到输入端的分辨力也远小于 1µV,对 2% 的均流指标绰绰有余。
DAC7811 是 12 位串行乘法数模转换器,工作电压 2.7V 到 5.5V,输出是电流型,需要外接运放做 I/V 转换。它在这里不直接设定输出电压,而是给反馈节点提供一个微调量。单片机算出 PI 输出后,写进 DAC,DA 电压经注入电阻送进 FB 脚。
下面这段是从 ADC 原始码值到电流值的定点换算,放在 1ms 的定时中断里跑:
/* 电流换算:ADS1232 输出 24 位二进制补码,双极性 */ #define VREF_MV 2500.0f /* 外部基准 2.5V */ #define PGA_GAIN 1.0f /* 增益档位,与硬件跳线一致 */ #define R_SHUNT_MOHM 20.0f /* 分路电阻 0.02Ω = 20mΩ */ #define INA_GAIN 20.0f /* 高侧检测器固定增益 */ /* code: ADS1232 原始 24 位码,范围 ±2^23 */ static float adc_to_current(int32_t code) { /* 1. 码值 -> ADC 输入端的差分电压,单位 mV */ float v_adc = (float)code * (VREF_MV / PGA_GAIN) / 8388608.0f; /* 2. 除以检测器增益,得到分路电阻上的压降 mV */ float v_shunt = v_adc / INA_GAIN; /* 3. 欧姆定律:mV / mΩ = A */ return v_shunt / R_SHUNT_MOHM; }这段换算里有三处必须和硬件严格对齐:VREF_MV要和实际接的基准源一致,PGA_GAIN要和 ADS1232 的增益引脚电平一致,INA_GAIN要和所选检测器后缀一致。任何一处写错,电流读数就是系统性偏差,而且这种偏差看起来很“稳定”,容易被误判成 PI 参数没调好——这是调试阶段最常见的误导来源。另外8388608.0f就是 2²³,24 位补码的正半量程,写死成常数比每次调pow()快得多。
DAC 侧的换算方向相反,是把 PI 输出的调节量翻译成码值:
/* 将 PI 输出的微调电压(mV)转为 DAC7811 码值,限幅在 0~4095 */ static uint16_t mv_to_dac_code(float v_trim_mv) { float full_scale_mv = 2500.0f; /* DAC 参考 2.5V */ float code_f = v_trim_mv * 4096.0f / full_scale_mv; if (code_f < 0.0f) code_f = 0.0f; /* 下限饱和 */ if (code_f > 4095.0f) code_f = 4095.0f; /* 上限饱和 */ return (uint16_t)(code_f + 0.5f); /* 四舍五入 */ }12 位 DAC 的 LSB 对应 2.5V/4096 ≈ 0.61mV,经过 5.5 倍的分压比放大,折算到输出端约 3.4mV。这个调节步长相对于 8V 输出是 0.04%,远小于 2% 的均流指标,所以量化误差不是瓶颈;真正的瓶颈在采样侧的噪声和分路电阻的温漂。把 DAC 精度做高没用,得先把采样链路做干净。
4. 双环与时序:电压环、均流环怎么在一个节拍里排好队
两路并联的系统里其实有两个控制目标同时在跑:整机的输出电压要稳在 8.0±0.4V,两路的电流比例要符合指定值。这两个目标不是独立的——动任何一路的电流,总电流就变,输出电压跟着变。控制结构没设计好,两个环就会互相干扰,表现出来的现象是输出电压围着 8V 上下摆动,电流比例也在两个值之间反复跳。
4.1 谁是外环、谁是内环
题目给的条件是“调整负载电阻,保持输出电压 UO=8.0±0.4V,使两个模块输出电流之和 IO 满足某个值”。注意,总电流不是控制器设定的,是负载电阻决定的。控制器唯一能决定的是怎么分配。
于是控制逻辑可以拆成两层:一路模块承担电压环,负责把输出稳在 8V;另一路承担电流环,跟着第一路的电流按比例走。这就是最大电流法在数字域的对应实现——电流大的那一路自动成为“主”,它维持电压,另一路调电流去匹配比例。
具体到计算,先采样 I1、I2,得到 Itotal,再按比例算目标值:
- 目标 I1* = Itotal × k1 / (k1 + k2)
- 目标 I2* = Itotal × k2 / (k1 + k2)
- 误差 e1 = I1* − I1,e2 = I2* − I2
由于 k1 + k2 归一化后 e1 和 e2 大小相等、符号相反,理论上只需要调节一路。实践中的做法是固定其中一路的 PI 输出,只让另一路去追,避免两个积分器同时动作导致振荡。
注意:单路调节会让总电流发生变化,进而改变比例基准,形成一个小闭环。所以 PI 的积分时间不能太短,否则会追着变化的基准跑,越追越偏。
4.2 增量式 PI 与抗积分饱和
位置式 PI 每拍都要重新计算全部输出,积分项在饱和时会一路累加,退出饱和后要很久才能把积累的量吐回去,表现就是负载突变后输出电压长时间回不来。增量式 PI 只算增量,天然带一点抗饱和能力,再配合输出限幅和积分分离,基本能压住。
typedef struct { float kp; /* 比例系数 */ float ki; /* 积分系数 */ float e_prev; /* 上一拍误差 */ float out; /* 当前输出(mV 微调量) */ float out_min; /* 输出下限,防止把 DAC 压到 0 */ float out_max; /* 输出上限,防止过调 */ } pi_t; /* 增量式 PI:Δu = Kp*(e - e_prev) + Ki*e */ static float pi_update(pi_t *p, float err) { float delta = p->kp * (err - p->e_prev) + p->ki * err; float next = p->out + delta; /* 输出限幅,饱和时不更新积分参考,避免积分饱和 */ if (next > p->out_max) { next = p->out_max; } else if (next < p->out_min) { next = p->out_min; } else { p->e_prev = err; /* 只有未饱和才记录误差,这就是抗饱和的关键 */ } p->out = next; return next; }e_prev只在未饱和分支更新,是这段代码里最要紧的一行。如果无条件更新,一旦输出顶到限幅,误差还在持续累积,kp*(e - e_prev)这一项就会变成负数,把输出往回拽,产生明显的回摆。这个坑几乎所有人在第一次写 PI 时都会踩。
参数上,kp决定响应速度,ki决定稳态误差消除的快慢。均流环的采样周期按 10SPS 的 ADC 输出速率走,约 100ms 一次,那么积分时间常数取秒级比较稳。out_min和out_max不能设成 DAC 的满量程 0~4095,要留 10%~20% 的裕量——一旦某一路的调节量顶到边界,它就失去了继续调节的能力,比例会永久性偏掉。
4.3 过流保护:为什么要动 ON/OFF 而不是只关 DAC
软件保护是有延迟的:ADC 采样要时间,SPI 读要时间,PI 算完再写 DAC 又要时间,加起来毫秒量级。短路这种事件,几毫秒足够把电感电流顶到饱和。所以题目要求的“负载短路保护及自动恢复”,必须有一级硬件级的快速切断。
LM2576 的第 5 脚是 ON/OFF 使能端,逻辑电平控制芯片启停。注意它的极性:低于约 1.23V 时芯片工作,高于这个阈值时关断。这个反逻辑是个经典坑——直接用单片机 IO 推,上电复位期间 IO 是高阻,靠外部上拉会被拉到高电平,芯片反而处于关断状态,现象是“上电没输出”。
保护逻辑做成两级比较稳妥:软件侧在 4.0A 左右做降额预警,把 DAC 微调量往回压;到 4.3A 附近直接拉 ON/OFF 脚关断,同时清 PI 的积分项和e_prev。关断后延时 200ms 左右重试一次,如果电流仍然超限就继续关断,形成打嗝模式,这就是题目要的“自动恢复”。
| 参数 | 取值 | 说明 |
|---|---|---|
| 输出电压 | 8.0V ± 0.4V | 由电压环锁定 |
| 单路电流范围 | 0.5 ~ 2.0A | 发挥部分要求 |
| 总电流范围 | 1.5 ~ 3.5A | 负载电阻决定 |
| 均流相对误差 | ≤ 2%(发挥部分) | 稳态指标 |
| 保护阈值 | 4.5A ± 0.2A | 硬件关断点 |
| 采样速率 | 10SPS | 精度优先 |
| 分路电阻 | 0.02Ω | 满量程 90mV |
| 开关频率 | 52kHz | LM2576 内部固定 |
表格里“保护阈值 4.5A”和“单路最大 2.0A”之间的关系值得琢磨:两路各出 2.0A 时总电流 4.0A,离 4.5A 的保护点只剩 0.5A 裕量。如果 PI 调节时某一路冲过头,很容易误触发保护。所以out_max的裕量、软启动的斜率,都要按这个余量来配。
5. 排查:均流误差从 2% 反弹到 15% 的五个坑
调这套系统时遇到的大部分问题,都能归入以下几类。每一条都是先看到现象,再回头找原因,最后才知道该怎么改。
坑一:小电流段误差突然变大。现象是 1:1 且总电流 1.0A 时两路读数差得不多,一旦切到 1:2、单路掉到 0.5A 以下,误差直接冲到 10% 以上。原因是分路电阻压降掉出了高侧检测器的推荐输入范围,内部失调电压开始占主导,加上 PCB 上开关节点耦合进来的噪声,小信号完全被淹没。解决办法是把分路电阻从 0.02Ω 换到 0.05Ω 提高信噪比,或者在小电流段切换到更高的 PGA 增益档,再配合软件在零电流时做一次零点校准,把失调扣掉。
坑二:1:2 比例怎么调都卡在 1:1.7。现象是 PI 输出已经顶到限幅边界,数字不再变化,但比例就是上不去。原因通常是从路的调节裕量不够——主路稳住 8.0V,从路能调的范围只剩往下几十毫伏,再想降电流已经降不动了。解决办法是让两路的设定值错开一点:主路目标 8.05V,从路目标 7.95V,各留一半调节行程。这个偏移量看起来违背“输出电压 8.0±0.4V”,但两路并联后的实际输出仍落在中心,完全合规。
坑三:一加负载输出电压就往下掉。现象是空载 8.02V,加到 3A 时掉到 7.6V,超出 ±0.4V 的窗口。原因往往在采样延迟上——用 10SPS 的 ADC,一拍 100ms,负载阶跃时 PI 还在拿上一拍的数据算,相当于反馈滞后了一整个数量级。另一个可能是 DAC 注入电阻选得太小,注入电流不足,微调范围覆盖不了负载调整率带来的跌落。前者可以把 ADC 切到 80SPS(牺牲一点精度换响应),后者重新算一遍注入电阻的分压比。
坑四:短路保护动作后不恢复,或者反复打嗝。现象是短路撤掉后输出一直是 0,或者输出刚起来又立刻关断。前者的原因多半是 ON/OFF 脚极性接反了,芯片一直处于关断态;后者的原因是恢复时没有清 PI 的积分项,out还停在关断前的值,一开就冲过阈值,形成死循环。解决办法是在关断分支里把out重置到中位、e_prev清零,重新走一遍软启动。
坑五:两路读数互相串扰。现象是只调一路的电流,另一路的读数也跟着变,而且变化方向和预期相反。原因是两路的采样地和功率地共用了一段铜箔,功率电流在那段铜箔上的压降被当成了采样信号的一部分。解决办法是采样走线单独拉、开尔文接法、数字地和功率地单点汇合,实在压不住就在软件里做交叉解耦补偿。这类问题最玄学的地方在于,万用表量哪儿都正常,只有带载动态时才现形。
6. 设计取舍:为什么把均流交给固件,而不是焊死在硬件上
回头看整套方案,最值得讨论的取舍不是选哪颗芯片,而是把均流环放在模拟域还是数字域。
硬件均流(CSB 母线加最大值比较器)的优点是快,环路带宽可以做到几十 kHz,负载阶跃时几乎无延迟;缺点是规则焊死了,阈值、斜率、比例全是电阻电容定的,要做二次开发只能重新投板。数字均流反过来,速度受限于 ADC 采样率和 SPI 时序,最慢的一环恰好是精度最高的那一环,但它把规则变成了变量——1:1 和 1:2 之间切换只是改两个常数,发挥部分要求的“0.5~2.0 范围内任意比例”更是只能靠固件实现。
这道题最终选择数字域,判定依据其实很朴素:题目考的是稳态指标,不是动态响应。所有指标都是“保持输出电压 8.0±0.4V,使电流按指定比例分配,相对误差绝对值不大于 2%”,没有一条要求阶跃恢复时间。既然考核窗口在稳态,那用 10SPS 换精度就是划算的,用 12 位 DAC 换可编程性也是划算的。
另一个取舍在采样侧。分路电阻取 0.02Ω 覆盖到 4.5A 的保护阈值,代价是小电流段精度掉档。也可以取 0.1Ω 把压降做到 100mV 以上,但 4.5A 时功耗接近 2W,散热和温漂都会成为新问题。工程上很少有两全其美的选择,只有“哪个缺陷更能接受”。这道题里,小电流段的误差被 2% 的相对误差指标放大,所以我更倾向在固件里做分段校准,而不是在硬件上加大电阻。
最后一个是保护策略的取舍。纯软件保护响应慢,纯硬件保护又不具备自动恢复的判断能力。两级配合——软件预警降额、硬件阈值硬关断、固件负责冷却计时和重启——是把两边的好处拼在一起,代价是多了一层状态机,调试时要同时盯电流波形和 GPIO 电平,出问题时定位会稍麻烦一些。
从那以后我每次做并联电源,不管指标多宽松,都强制先走一遍这三步:量两路空载电压的实际差值、量分路电阻的真实阻值(不是标称值)、用示波器看一眼 ON/OFF 脚在上电瞬间的电平。这三步花不了十分钟,能挡掉后面一大半的排查时间。希望帮到你。
本文还有配套的精品资源,点击获取