简介:面向参加全国大学生电子设计竞赛及研究开关电源并联供电的师生,这份2011年A题论文围绕基于MSP430单片机和LM2576电源芯片的双模块并联供电系统展开。文档从赛题基本要求与发挥部分入手,比较主从法、平均电流自动均流法、热应力法与最大电流均流法,并说明单片机、电源模块的选型依据,给出反馈电路、键盘控制、过流保护及自动恢复的实现思路与测试结果,可帮助读者理解均流控制、电压精度和效率指标之间的权衡。资源包共1个docx文件,约617KB,内容集中、便于检索关键方案。目前已有804人学习下载,适合备赛队伍复盘A题方案、撰写技术报告,或为电源类课程设计提供参考。
1. 先划清验收线:两路并联供电这道题到底卡在哪
“开关电源模块并联供电系统”听起来像电源课的大作业,真正上手才会发现,难点根本不在“把 8V 做出来”,而在两路并联时的电流分配。两个模块输出电压差几十毫伏、线路内阻稍有不对称,电流就全往一边跑,1:1 很快滑成 1:1.4,误差 5% 这条线一过,前面调得再漂亮也白做。
这套方案把并联供电的自动均流当主线,把输出电压范围、效率、过流保护当约束条件:主控用 MSP430F149,功率级用两片 LM2576-ADJ,电流采样走 INA270 加 ADS1232,反馈用 DAC7811 注入 LM2576 的反馈节点,比例设定由独立键盘输入。适合正在做电源类课设、毕设,或者准备电子设计竞赛电源题的人——你要交的不是一篇原理综述,而是一套能测出数、扛住现场问答的完整系统。
2. 方案论证与选型:四种均流法怎么砍到一种
均流方案的选择决定了后面硬件长什么样,这一步走错了,PCB 画完才发现要改拓扑,血泪经验。所以在画第一根线之前,我一般会把候选方案摆成一张表,用题目指标去卡它们,而不是凭感觉挑一个“看起来高级”的。
2.1 主从法、平均电流法、热应力法、最大电流法的取舍
主从法最容易理解:指定一路当主模块,工作在电压源模式,其余从模块工作在电流源模式,电流值由主模块给定。它的优点是结构清晰、均流精度高;致命缺点是主模块一挂,整个系统直接崩,没有任何冗余。这道题虽然没明写冗余要求,但“两路并联、负载变化下自动均流”本身就隐含了任一路都该能独立撑住半边天的意思,主从法在这种场景下风险偏高。
平均电流自动均流法在模块之间拉一条公共均流母线 CSB,母线上的电压代表各模块输出电流信号的平均值,每个模块拿自己的采样值跟母线比,误差放大后调自己的输出。精度确实好,但它对母线极度敏感:CSB 一旦短路,或者挂在母线上的任一模块不工作,母线电压被拉低,所有模块跟着把输出电压往下调,可能一路掉到下限,整机停摆。用在竞赛现场这种“一次上电就要出结果”的场合,这个失效模式很难接受。
热应力自动均流法监测各模块温度,温度高的少出电流、温度低的多出电流。思路很聪明,但它均的是“热”,不是“流”,题目要的是 1:1、1:2 这种明确的电流比例,热应力法给不了这个确定性,直接排除。
最大电流均流法用一套最大值比较电路,每一时刻输出电流最大的模块自动成为主模块,它的电流信号被送上 CSB,其余模块以这个最大值为基准调整自己。主模块是动态产生的,任何一个模块失效,剩下的模块会自然接管,不存在主从法那种单点崩溃。最终选的就是这一种。
| 均流方法 | 均流精度 | 冗余能力 | 母线故障风险 | 是否适配指定比例 |
|---|---|---|---|---|
| 主从法 | 高 | 无 | 低 | 可以,但主模块失效即崩 |
| 平均电流法 | 高 | 有 | 高,母线短路会拖垮全系统 | 可以 |
| 热应力法 | 中 | 有 | 低 | 不行,均的是温度不是电流 |
| 最大电流法 | 高 | 有 | 低 | 可以,主模块动态切换 |
需要提醒的是,最大电流法在数字实现里要注意“主模块抖动”:两路电流非常接近时,最大值判断会在两路之间反复跳,反馈环跟着抖。通常的做法是给比较加一点回差,或者干脆在软件里做几次滑动平均再比大小,这个小动作后面调试时会救你一命。
2.2 主控与电源芯片:为什么是 MSP430F149 加 LM2576
主控这块对比过两条路。一条是通用性更强的 51 系列,运算和软件自由度都不差,但片内没有高精度 ADC/DAC,要凑够题目要求的采样精度就得外挂 10 位以上的高速 AD 和 DA,器件价格上去了、板子面积也上去了,性价比反而低。另一条是 MSP430F149,片内集成 12 位 ADC,最高时钟 8MHz,一个时钟周期就是一个机器周期,跑这种实时性要求不极端的控制环绰绰有余,而且它低功耗、体积小、易扩展,调试时还能靠软件对测量误差做补偿。
最终板上还是外置了 ADS1232 做电流采样、DAC7811 做反馈,原因是片内 12 位 ADC 在 0.5~2.0A 这个区间做 2% 精度的相对误差判读时余量偏紧,而 ADS1232 是 24 位、带可编程增益,前端小信号放大后有效位数足够;DAC7811 是 12 位串行乘法 DAC,工作电压 2.7~5.5V,正好给 LM2576 的反馈节点提供细调电压。注意 DA 模块在这里不是直接“输出电压”,而是往反馈节点注入电流,去等效改变分压比,这个思路决定了后面校准的方法。
功率级选的是 LM2576-ADJ。它是 3A 输出的降压型开关稳压集成芯片,内部有 52kHz 固定频率振荡器和 1.23V 基准,自带电流限制和热关断,外围器件极少,是线性三端稳压器(比如 78xx 系列)的常见替代。对比过的另一款是 TPS5430,3A 输出、5.5~36V 宽输入、效率最佳能到 95%、输出最低可调到 1.22V、内部带软启动,参数上其实更好看。
选 LM2576 的理由很实际:一是它的反馈脚结构简单,4 脚 Feedback 稳定在 1.23V,通过改 R1、R2 的分压比就能改输出电压,用 DAC 往这个节点注入电流做细调非常顺手,不用重做整个补偿网络;二是它外围只要几个器件,两路模块做成对称结构容易,两路的寄生参数一致性直接决定均流效果;三是 52kHz 开关频率相对低,纹波和 EMI 处理门槛低,四天三夜的调试周期里这是实打实的优势。TPS5430 的高效率留给“发挥部分”再考虑,基本要求先求稳。
提示:选型时别只盯数据手册上的“最佳效率”,那个数通常是在特定输入输出、特定负载点测出来的。系统效率要按自己实际的工作点重新算,否则测试当天很容易翻车。
3. 总体架构设计:两路模块、采样与反馈的闭环
架构这一步要把“谁测谁、谁控谁”定死,定不死后面就会互相打架。这套系统的核心是一条闭环:采样 → 单片机 → DA → 电源反馈节点 → 输出电流变化 → 再采样。均流环和稳压环共用这条通路,只是目标值不同。
3.1 信号流与模块职责划分
整机可以分成五块。第一块是两路独立的 DC/DC 功率模块,各自一片 LM2576-ADJ,输入接同一路直流母线,输出在负载端并联。第二块是电流检测,每路一个 INA270 高侧电流检测放大器,串在小阻值分流电阻上,输出一个正比于该路电流的电压。第三块是 AD 采集,两路电流信号进 ADS1232,转成数字量送单片机。第四块是 DA 反馈,DAC7811 输出经运放缓冲后注入 LM2576 的反馈节点,微调该路输出电压,从而间接调该路电流。第五块是人机与保护,独立键盘设定工作模式和目标比例,单片机通过拉 LM2576 的 ON/OFF 脚实现过流切断。
信号流是单向为主、闭环为辅:键盘设定目标值 → 单片机算出两路电流应分配多少 → 比较实测值与目标值 → 调 DA → 调输出电压 → 电流变化 → 再测。这个环里没有任何一路是“纯开环”的,两路都在被独立调节,最大电流法的作用体现在目标值的分配上:单片机先判断哪一路电流大,把它当基准,另一路按设定比例去追。
这里有个容易忽略的细节:两路输出在负载端并联,输出电压必须一致,否则电流分配无从谈起。所以稳压是外层大环,均流是内层小环,外层保证 UO 落在 8.0±0.4V,内层保证 I1:I2 落在设定比例。软件上先稳外层,再调内层,顺序反了会互相顶。
3.2 电流检测与数模转换链路的参数核对
电流检测用 INA270,它的价值在于共模输入范围宽,能在高共模电压下测小分路压降。分流电阻的取值要卡在 INA270 输入端 1 脚和 8 脚之间 50mV 到 100mV 的压降区间——压降太小,信噪比不够,读数会跳;压降太大,功耗和发热上去,效率指标就保不住。按最大 4A 算,取 25mΩ 的分流电阻,4A 时压降 100mV,正好卡在上限;1.0A 时压降 25mV,落在下限以下,这时就靠 ADS1232 的增益把信号抬起来。
ADS1232 是 24 位、带可编程增益的 ADC,差分输入直接接 INA270 的输出。增益档位的选择要跟满量程匹配:如果按 4A 对应满量程设计,1.5A 工作点只用到不到 40% 的量程,有效位数浪费;实际调试时通常把增益调高一档,让 2A 附近的信号占满更多的 ADC 输入范围,超过量程的部分靠硬件限幅和保护逻辑兜住。
DAC7811 是 12 位串行输入乘法 DAC,工作电压 2.7~5.5V,输出电流型,需要外接运放做 I/V 转换。它在这里的职责不是“输出一个电压给负载”,而是往 LM2576 的反馈节点注电流。反馈脚的电位被芯片内部稳定在 1.23V,注入电流相当于改变了流过 R2 的电流,等效于微调了分压比,所以 DAC 码值与输出电压之间是近似线性但带偏置的关系,必须逐台标定,不能直接套理论公式。
| 环节 | 器件 | 关键参数 | 设计取值 |
|---|---|---|---|
| 电流检测 | INA270 | 输入压降 50~100mV | 分流电阻 25mΩ |
| 模数转换 | ADS1232 | 24 位,可编程增益 | 按 0~4A 满量程配置 |
| 数模转换 | DAC7811 | 12 位,2.7~5.5V | 经运放缓冲注入反馈节点 |
| 功率变换 | LM2576-ADJ | 3A,52kHz,基准 1.23V | 两片对称布局 |
| 辅助电源 | AMS1117、TPS60401 | 正向稳压、极性反转 | 供运放与 DA 用 ±5V |
辅助电源这块单独说一句:运放和 DA 需要正负双电源,AMS1117 出正压,TPS60401 做极性反转出负压,两路都要在靠近芯片管脚的位置放去耦电容。极性接反是新手最容易犯的错,上电前一定用万用表量一遍,别问我怎么知道的。
4. 关键模块实现:反馈网络、控制环与保护逻辑
到这一步才开始动烙铁和写代码。实现阶段的原则是:每一个可调的量都要有明确的物理意义,每一个动作都要能测出来,否则现场出了问题只能靠猜。
4.1 LM2576 反馈网络与输出电压设定
LM2576-ADJ 的输出电压由反馈脚外接的分压电阻决定,反馈脚电压被内部环稳定在 1.23V,流入反馈脚的电流近似为零,所以输出电压满足
Vout = 1.23 × (1 + R2 / R1)
要出 8.0V,R2/R1 的比值应为 5.5 左右。实际取值一般不用整数凑,而是留一个可调电阻做细调:R1 取 1kΩ,R2 用 4.7kΩ 固定电阻串一个 1kΩ 多圈电位器,标定后锁死。这样做的原因是电阻本身有误差、LM2576 的基准也有离散性,纯靠算出来的值上机,输出很可能落在 7.9V 或 8.1V,虽然还在 ±0.4V 容差内,但留不出余量给后面的均流调节。
两路模块的反馈网络必须做成完全对称:同样的阻值、同样的布线长度、同样的器件封装。两路输出电压差 20mV,在 3Ω 负载上就能造成几十毫安的电流偏差,这个偏差靠 DAC 能拉回来,但会吃掉调节余量。布局上,输入电容 C1 要贴近 1 脚(输入端),稳压管贴近 2 脚(输出端),目的都是减小纹波和电容的等效串联电感,这个细节在示波器上看纹波时差别很明显。
DAC 注入点接在反馈脚上,通过一个电阻把 DAC 缓冲后的电压送进去。注入电阻的取值要权衡:太小,DAC 对反馈节点的影响过大,一点点码值波动就让输出电压跳;太大,调节分辨率不够,均流环收敛慢。调试时先固定一个 10kΩ 量级试,看全码值范围能拉动多少毫伏输出,再把量程匹配到“刚好覆盖 ±0.3V”这个区间。
4.2 软件主流程:预设与步进两种调压方式
软件部分的核心功能就三件事:控制 DA 输出,对实际电流取样,判断并执行保护。DA 输出电压的调节采用预设和步进两种方式,预设用于键盘直接输入目标模式(1:1 或 1:2 或指定比例),步进用于现场微调,步进值可任意设置。
主流程大致是:上电初始化 → 读键盘 → 判断工作模式 → 采集两路电流 → 与目标分配值比较 → 调整 DA → 刷新显示 → 循环。保护判断放在循环开头,先看电流有没有超阈值,超了就立刻切 ON/OFF,不等均流环算完。
/* 简化的均流控制主循环,跑在 MSP430F149 上 */ #define I_LIMIT 450 /* 保护阈值 4.5A,单位 0.01A */ #define I_TARGET_SUM 100 /* 默认总电流 1.0A */ #define STEP_MAX 20 /* 单次调节最大步进,防超调 */ void current_share_loop(void) { int i1 = adc_read(CH1); /* 第一路电流,单位 0.01A */ int i2 = adc_read(CH2); /* 第二路电流,单位 0.01A */ int target1, target2, err, step; /* 保护优先,先于任何调节动作 */ if ((i1 + i2) > I_LIMIT) { power_off_both(); /* 拉低两片 LM2576 的 ON/OFF */ return; } /* 按键盘设定的比例算两路目标值,ratio 由键盘写入 */ target1 = I_TARGET_SUM * ratio_num / (ratio_num + ratio_den); target2 = I_TARGET_SUM - target1; /* 先调电流偏小的一路,避免两路同时动造成振荡 */ if (i1 - target1 < i2 - target2) { err = target1 - i1; } else { err = target2 - i2; } /* 步进限幅,单次最多调 STEP_MAX 个码值 */ step = err * KP; if (step > STEP_MAX) step = STEP_MAX; if (step < -STEP_MAX) step = -STEP_MAX; dac_write(dac_code + step); /* 注入反馈节点,微调输出电压 */ }这段代码有几个关键点。保护判断放在最前面,是因为过流是毫秒级的事,等均流环算完再处理,负载可能已经烧了。比例分配用整数分子分母算,避免浮点,MSP430 上跑浮点代价太高。步进限幅是必须的——没有这个限幅,误差大的时候一次调过头,下一轮反向再调过头,系统就在目标值两边来回震荡,示波器上看就是电流波形持续抖动。“先调偏小的一路”这个策略是为了让两路的调节动作错开,同时动容易互相顶,这是实际调试里试出来的。
参数 KP 需要现场整定。取值太大收敛快但容易震荡,太小收敛慢、负载突变时跟不上。经验值从 0.3 左右开始试,观察阶跃负载下的超调和稳定时间,再往上加。
4.3 短路保护与自动恢复:用 ON/OFF 脚做软开关
题目要求保护阈值电流 4.5A,调试时允许 ±0.2A 偏差,还要求保护后能自动恢复。硬件上没有做独立的比较器保护电路,而是用单片机控制 LM2576 的 5 脚 ON/OFF,靠软件阈值判断来实现,这样阈值可以随时改,也能做恢复逻辑。
实现上分两个状态:正常态和锁定态。正常态下持续判断总电流,一旦超过阈值,立刻把两路 ON/OFF 拉低,同时记录故障标志,进入锁定态。锁定态下不立刻恢复,而是等一个延时(通常几百毫秒),然后尝试重新使能,重新使能后采样若干次,如果电流仍然超阈值,说明短路还在,重新锁定;如果电流恢复正常,就清除故障标志,回到正常态。
这个“延时 + 重试”的逻辑就是自动恢复的核心。如果不做延时直接反复重试,短路点上会一直有冲击电流,LM2576 的电流限制和热关断会频繁动作,时间长了芯片发热严重。延时的时间不能太短,太短重试时负载还没脱离短路状态;也不能太长,太长的话负载恢复正常后系统迟迟不恢复,验收时会被扣分。几百毫秒是个比较稳妥的起点,具体值现场按实际负载特性调。
注意:LM2576 的 ON/OFF 脚是逻辑电平控制,不同批次的使能阈值有差异,做软开关时不要用悬空或者弱上拉,一定要给确定电平,否则可能出现“关不断”的情况。
5. 调试避坑:均流比例跑偏、采样跳动与效率不达标
调试阶段遇到的问题,八成不是原理错,而是细节没收敛。下面几条是这套系统里最容易翻车的地方,按“现象 → 原因 → 解决”整理,照着排查能省不少时间。
5.1 现象:1:1 能调,切到 1:2 就怎么都稳不住
现象很典型:键盘切到 1:2 模式后,两路电流在 1:1.6 到 1:2.4 之间来回摆,长时间收敛不到 5% 误差以内。
原因有两层。一层是目标值分配算错了,整数除法把余数截断,总电流 1.5A 按 1:2 分,理论上应该是 0.5A 和 1.0A,但代码里用整数算 150×1/3=50、150-50=100,这个是对的;问题出在比例改变后两路的目标差值变大,而 DA 的调节量程没跟着变,一路已经调到码值边界,另一路还没到目标,环就饱和了。另一层原因是两路模块本身的增益不一致,同样一个 DA 码值变化,两路输出电流的变化量不同,环的等效增益不对称,容易在目标点附近来回摆。
解决方法是先做单路标定:固定另一路不动,扫描 DA 全码值,记录每路“码值—电流”的对应曲线,存成表。均流环不再直接算步进,而是查表加插值,这样两路的增益差异被标定吃掉了。同时把 DA 的可用码值范围限制在标定过的区间内,超出就钳位并报警,避免饱和后还在傻调。
5.2 现象:电流采样读数跳动,跟万用表对不上
现象是显示值一直在最后两位跳,静态时能跳 ±30mA,两路加起来偏差几十毫安,1:1 模式下看着像没均上。
原因通常是采样时序和滤波没做好。ADS1232 是串行输出,读的时候如果跟 DA 写、键盘扫描抢时序,读到的可能是上一次转换的残留值;另外开关电源本身的开关纹波会耦合进采样通道,分流电阻的走线如果跟功率回路平行走,感应过来的噪声直接进放大器。
解决办法分三步。第一步,采样时刻避开开关管动作瞬间,在 LM2576 的开关周期内固定一个相位点采样,或者在软件里连续采多次取中值。第二步,分流电阻到 INA270 的走线做成紧耦合差分对,远离功率回路,地线单点汇到采样电阻的焊盘上。第三步,软件做滑动平均,窗口取 8 到 16 次,窗口太长响应慢,太短压不住跳动。做完这三步,静态跳动一般能压到 10mA 以内。
5.3 现象:单模块效率能到 85%,两路并联后掉到 60% 以下
现象是单独测每一路效率都还行,两路一并联、带上额定负载,输入功率上去了,输出功率没怎么涨,效率指标直接不达标。
原因大概率是两路输出电压不一致造成的环流。两路输出并联,如果一路 8.1V、一路 7.9V,高压那一路会往低压那一路灌电流,这部分电流在负载上不产生有用功率,全变成两片芯片内部的热,输入功率白白多出来一块。另一种可能是分流电阻取值偏大,4A 时 100mV 压降听起来不大,但那是实打实的 0.4W 损耗,两路加起来 0.8W,在几十瓦的系统里占比不小。
解决方法是并联合流前先把两路空载输出电压调到一致,误差控制在 10mV 以内,再进均流环;分流电阻在满足 INA270 最小压降要求的前提下尽量取小,或者换更低阻值、更高精度的合金电阻。测试时用两块万用表同时监两路输出电流,看到一路为负或者明显偏小,就是环流,先解决电压一致性再谈效率。
5.4 现象:短路保护动作后不恢复,得断电重启
现象是模拟短路后两路都关了,撤掉短路、负载恢复正常,输出却一直是 0,必须断电重上电才行。
原因是恢复逻辑写成了单向锁死:检测到过流就置故障标志并关闭输出,但重试的定时器没启动,或者重试条件写成了“故障标志清零才重试”,而故障标志只有上电初始化时才清,逻辑上就自锁了。另一种情况是重试时没有重新初始化 DA 输出,DA 还停在保护前的码值上,一使能又立刻过流,反复几次后程序卡在保护分支里。
解决办法是把保护做成状态机,明确三个状态和转移条件:正常态检测到过流进锁定态,锁定态等延时到期进重试态,重试态使能后采样判断,正常回正常态,异常回锁定态。每次进重试态前把 DA 码值复位到安全值,使能后延时一小段时间再采样,避开启动瞬间的浪涌。状态机的每个转移都打一个标志位到显示上,现场调试时一眼就能看出卡在哪一步。
6. 验收与答辩:用一页测试记录表说话
验收现场最忌讳的是“我觉得它能到”。评委不会听你描述系统多稳定,只会看你的表。所以测试记录表要提前设计好,按题目指标逐条对应,一条指标一行,写清测试条件、实测值、判定结论。
单模块测试的记录方式可以是这样:输入电压固定,负载电阻按 10Ω、5Ω、3Ω 三档变化,每档记录输入电压电流、输出电压电流,算出效率和输出功率。从记录看,10Ω 档输入 23.7V/0.32A、输出 8.2V/0.82A,效率约 88%;5Ω 档输入 23.7V/0.63A、输出 8.03V/1.6A,效率约 86%;3Ω 档输入 23.7V/0.96A、输出 7.99V/2.4A,效率约 84%。三个点都高于 60% 的底线,且输出电压力稳定在 8.0V 附近,这张表就是效率指标的证据。
| 负载 | 输入电压/电流 | 输出电压/电流 | 输出功率 | 效率 |
|---|---|---|---|---|
| 10Ω | 23.7V / 0.32A | 8.20V / 0.82A | 6.72W | 约 88% |
| 5Ω | 23.7V / 0.63A | 8.03V / 1.60A | 12.85W | 约 86% |
| 3Ω | 23.7V / 0.96A | 7.99V / 2.40A | 19.18W | 约 84% |
答辩演示按三步走。第一步演示稳态:设定 1:1、总电流 1.0A,让评委看两路显示的电流值和万用表读数,重点说相对误差怎么算——|实测-目标|/目标,两路都要算,不是只看总电流。第二步演示动态:在不停机的情况下改负载电阻,让总电流从 1.5A 变到 3.5A,同时保持比例不变,展示均流环的跟随能力,这一步最能体现“自动”两个字。第三步演示保护:直接短接输出,让评委看到电流冲过 4.5A 后输出被切断,撤掉短路后几百毫秒内自动恢复,这一下把保护阈值和自动恢复两个指标一次演完。
有个技巧值得说:答辩时把所有中间变量都放到显示上,包括两路实测电流、目标电流、DA 当前码值、保护状态标志。评委问“你怎么保证 2% 精度”的时候,你不是空口说,而是指着屏幕上的实测值和目标值让他自己算。这比背参数有说服力得多。
从那以后我每次做带闭环的项目,都会在编码阶段就把“可观测”当成硬需求写进去——每个环路的输入、输出、误差、限幅标志都必须能在某个界面上看到,不然调试期就是在盲人摸象。这套习惯救过我很多次,也希望帮到你。
本文还有配套的精品资源,点击获取