简介:这是一套2016年TI杯电赛A题降压型直流开关稳压电源的完整设计资料,面向电子设计竞赛参赛者、开关电源设计入门者及需要参考完整工程文件的工程师。方案以TI的LM5117降压控制器和CSD18532KCS MOSFET为核心,实现16V输入、5V/3A输出,涵盖原理图、PCB源文件与程序源码,并配套赛题PDF与设计说明。资源共64个文件,包括6个原理图文件、5个PCB文件、5个工程文件、相应C/H程序源码及hex固件、PDF文档等,压缩包大小22.51MB,目录按主电路、电流检测、程序等模块划分。目前已有104人学习下载。通过这套资料可了解降压开关电源的器件选型、反馈环路设计、PCB布局要点,以及基于LM5117的控制程序框架,便于直接参考或在此基础上修改优化。
1. 电赛资料降压型直流开关稳压电源:从参数计算到调试验证的一次性打通
电赛电源题年年有,降压型直流开关稳压电源是其中出现频率最高的一类。很多队伍拿到题目后第一反应是翻资料包,但真正把原理图、PCB源文件、程序源码三样东西用起来,往往卡在同一个地方:原理图能看懂,PCB 能打开,程序能编译,却不知道这几个环节之间的参数是怎么互相约束的。比如原理图里选了 47μH 电感,代码里 PID 的积分上限该设多少,PCB 上采样电阻的走线位置不对会导致输出电压在带载瞬间掉多少——这些硬关联才是资料包真正值钱的部分。这篇文章按我实际做电赛电源题的顺序来写:先算参数,再画板,写程序,最后上示波器验收,适合准备电赛电源题的队伍,也适合想把手头 Buck 电路从“能跑”调到“能评高分”的工程师。
2. 降压型直流开关稳压电源的拓扑选型与关键参数计算:从电赛评分细则倒推设计
2.1 为什么电赛电源题首选 Buck:效率、体积和热预算的三个理由
电赛题目给出的输入通常是一路 9V 到 15V 的直流源,输出需要稳定的 5V 或 3.3V,电流 1A 到 3A 不等。在这种电压跨度下,线性稳压器的效率只有 Vout/Vin,12V 转 5V 时理论效率不到 42%,满载 2A 意味着功耗接近 14W,封装和散热都不可接受。Boost 拓扑方向反了,反激变换器在 30W 以下又存在磁芯利用率低的问题。Buck 拓扑的占空比恰好覆盖电赛题目常用的电压变换范围,开关管导通损耗、电感铜损和续流二极管导通压降这三项可以通过选型压住,整体效率做到 85% 以上不需要太复杂的热管理。
电赛评分通常看三个指标:额定输出下的电压稳定度、负载阶跃时的恢复时间、整机效率。这三个指标的核心矛盾集中在电感量和环路带宽上——电感太大,纹波电流小但动态响应慢;电感太小,负载突变时电压跌落深但恢复快。所以设计的第一步不是画原理图,而是先把电感、电容、开关频率这几个闭环参数定下来,后续所有环节都围绕它们展开。
2.2 电感、输出电容与续流二极管的工程计算:从负载瞬态倒推
以一个典型的电赛题目参数为例:输入 Vin=12V,输出 Vout=5V,额定电流 Iout=2A,开关频率 f_sw=100kHz,输出纹波目标小于 30mV。先算占空比:
D = Vout / Vin = 5 / 12 ≈ 0.417
电感纹波电流通常取输出电流的 20% 到 40%,这里取 30%,即 ΔI_L=0.6A。在连续导通模式(CCM)下,电感值按公式计算:
L = (Vin - Vout) × D / (ΔI_L × f_sw) = (12-5) × 0.417 / (0.6 × 100000) ≈ 48.7μH
取标称值 47μH。这个值比很多资料包默认的 33μH 要大,原因是 33μH 下纹波电流会到 0.88A,接近输出电流的一半,输出电容上的纹波电压和开关管的峰值电流都会明显上升。
2.2.1 电感饱和电流的余量是满载掉电压的隐形杀手
计算电感值时,很多人忽略饱和电流余量。电感的饱和电流必须大于最大峰值电流,峰值电流等于输出电流加上一半纹波电流:
I_peak = Iout + ΔI_L / 2 = 2 + 0.3 = 2.3A
工程上至少留 20% 余量,所以选饱和电流不小于 2.8A 的电感,对应的磁芯选铁硅铝材质。铁硅铝磁芯的优点是直流偏置下电感量下降平缓,不像铁粉芯那样在 2A 附近就掉到标称值的 60% 以下。一体成型电感是另一个常见选择,屏蔽性好,辐射噪声低,但价格略高,在大电流场合散热不如工字电感。
2.2.2 输出电容的纹波约束和 ESR 约束要同时满足
输出电容要满足两个约束。第一个是纹波电压约束:
C ≥ ΔI_L / (8 × f_sw × ΔV) = 0.6 / (8 × 100000 × 0.03) = 25μF
第二个是 ESR 约束。陶瓷电容的 ESR 很低,通常几毫欧到十几毫欧,但在直流偏压下容值会衰减,X7R 材质在 10V 偏压时有效容值约剩标称值的 60% 到 70%。所以实际选型用三颗 22μF/10V X7R 陶瓷电容并联,等效容值约 45μF,ESR 小于 10mΩ,纹波电压由 ESR 主导的部分约 6mV,满足 30mV 的目标。
2.3 控制环路的两种方案:模拟电流模式与数字电压模式怎么选
电赛电源题的控制环路设计有两条成熟路线。第一条是模拟控制芯片方案,典型如 UC3842/UC3843,内置电流模式控制、斜坡补偿和逐周期限流,硬件搭好之后不需要写控制代码,但改电压设定值要换电阻分压网络,评测现场调参数不方便。第二条是单片机直接产生 PWM 的数字电压模式,ADC 采集输出电压,程序跑 PID 算占空比,改设定电压只需改一个变量。
我一般选数字方案,理由有三个:电赛题目经常要求输出电压在一定范围内可调,数字方案免去拧电位器;评测现场突发状况多,程序里加保护逻辑比改硬件快;数字示波器在调 PID 时可以直接观察阶跃响应,配合串口打印内部变量,调试效率高很多。数字方案的代价是环路带宽受 ADC 采样率和程序执行时间限制,100kHz 开关频率下,控制周期压到 10μs 以内才能获得接近模拟方案的动态性能。
3. 原理图与 PCB 源文件的细节把控:从防反接到地线分离
3.1 原理图里必须有的三个兜底电路:防反接、软启动和过流保护
拿到别人画的原理图,先别急着看主控芯片和功率管,先找三个兜底电路。第一个是防反接。输入端一但接反,电解电容会炸、芯片会烧,最简单的做法是用一颗 PMOS 做极性保护:源极接输入正端,漏极接负载正端,体二极管方向指向负载。极性正确时体二极管先导通,随后 Vgs 被拉负,PMOS 完全开通,正常工作压降只有 I×Rds(on);极性接反时体二极管不导通,系统不工作但也不损坏。
第二个是软启动。数字方案里最容易实现的是在 PID 输出端做斜坡限幅,程序里的目标电压值从 0 逐步加到设定值,每 1ms 加 50mV,避免上电瞬间占空比直接冲到最大值导致输出过冲。模拟方案则在参考电压引脚并联一个大电容,用 RC 充电时间控制参考电压上升斜率。
第三个是过流保护。单片机没有比较器外设的情况下,用采样电阻配合运放把电流信号送进 ADC,在每个 PWM 周期内检测电流峰值,超过阈值就立刻把占空比归零。这里的采样电阻位置很关键,放在输出端和放在电感前端的含义不同,前者反映负载电流,后者反映开关管电流。输出端采样在短路时响应慢半拍,但不会引入电感纹波电流的干扰。
3.2 PCB 布局的 3 条地线原则:从源头降低 di/dt 干扰
降压型开关电源的 PCB 布局质量直接决定纹波测量结果,布局差的地线会在采样点引入 mV 级的噪声,让原本合格的环路看起来像失控一样。三条原则:
第一,功率回路走线要短。输入电容正极、高边开关管漏极、电感、续流管、输出电容负极这一条主电流回路包围的面积越小,寄生电感越低,开关节点振铃越轻。我习惯把输入电容放在高边 MOS 管旁边,两者间距不超过 5mm。
第二,功率地和模拟地单点连接。控制芯片的 GND 引脚、采样电阻的参考地、输出电容的返回地,这三者不能在 PCB 上随意连通。做法是把功率地的星点放在输出电容负极,模拟地单独走一小段线到这个星点,形成单点接地。
第三,反馈采样线要从输出电容两端单独拉走线,线宽 0.3mm 足够,但必须远离电感和开关管。采样线若靠近电感,磁场耦合会引入开关频率的噪声;若靠近高边 MOS 的驱动走线,开关瞬态的 dv/dt 会通过寄生电容耦合到采样线上,导致输出电压稳定度变差。
3.2.1 打开 PCB 源文件后的三个检查动作
资料包里可能是 Altium Designer 或嘉立创 EDA 格式。打开后不要急着改板,先做三个检查。第一,跑 DRC 设计规则检查,看有没有未连接的网络、间距违规和孤铜;第二,检查原理图多页结构的页码设置,不同页面如果 page number 都设成 1,在导出 PDF 时会提示页码重复,生成的原理图按页码翻页顺序混乱,这在评审看设计报告时很吃亏;第三,对比原理图和 PCB 的器件位号,C1、R3 这些位号必须在两套图里一一对应,漏一个位号就去查对应网络。
3.3 元器件选型 BOM 参考
以一个 12V 输入、5V/2A 输出的 Buck 电路为例,完整 BOM 如下:
| 位号 | 器件 | 关键参数 | 选型要点 |
|---|---|---|---|
| L1 | 功率电感 | 47μH, 饱和电流≥2.8A | 铁硅铝或一体成型,直流偏置下电感量衰减小 |
| Q1 | 高边 N-MOS | 30V/5A, Rds(on)≤50mΩ | 栅极电荷 Qg 尽量小,降低驱动损耗 |
| D1 | 续流二极管 | 30V/3A, Vf≤0.5V | 肖特基二极管,SS34 或 SS54 |
| C1/C2 | 输入电容 | 22μF/25V X7R ×2 | 靠近 MOS 管放置,滤除输入纹波 |
| C3/C4/C5 | 输出电容 | 22μF/10V X7R ×3 | 并联降低 ESR,从输出端取采样点 |
| R1/R2 | 反馈分压电阻 | 1% 精度,阻值比决定输出电压 | 分压点必须接高阻抗运放或 ADC |
MOS 管驱动电路常被忽略。单片机 GPIO 直接驱动大 Qg 的 MOS 管,开关边沿会变缓,导致开关损耗上升。资料包里如果有半桥驱动芯片,优先用驱动芯片;没有的话,主控和 MOS 栅极之间串一个 10Ω 电阻限制 dv/dt,同时给下拉电阻保证上电期间栅极不会悬空导通。
4. 程序源码的修改思路:STM32 定时器输出 PWM 频率与 PID 参数整定
4.1 从源码中定位 PWM 频率和 ADC 采样时机,哪些参数必须改
资料包里最常见的程序框架是 STM32F103 配合定时器输出 PWM,ADC 采集输出电压形成闭环。电赛题目对电源的动态响应有要求,所以 PWM 频率不是随便定的,需要和功率级的电感电容匹配。上面算出来的 47μH 电感配 100kHz 开关频率,对应的定时器配置如下:
// 定时器 TIM3 输出 PWM,100kHz,72MHz 主频 TIM_TimeBaseInitTypeDef tim_base; tim_base.TIM_Prescaler = 0; // 预分频为 0,直接用 72MHz tim_base.TIM_CounterMode = TIM_CounterMode_Up; tim_base.TIM_Period = 719; // 重载值 719,频率 = 72MHz / (719+1) = 100kHz tim_base.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3, &tim_base); TIM_OCInitTypeDef tim_oc; tim_oc.TIM_OCMode = TIM_OCMode_PWM1; // PWM 模式 1,计数小于比较值时输出高电平 tim_oc.TIM_Pulse = 300; // 比较值 300,初始占空比约 41.7% tim_oc.TIM_OutputState = TIM_OutputState_Enable; TIM_OC1Init(TIM3, &tim_oc);这段配置里,TIM_Period 决定开关频率,TIM_Pulse 决定初始占空比。注意这里初始占空比 41.7% 正好对应 12V 转 5V 的稳态占空比,上电瞬间从接近目标值的占空比开始,比从 0% 开始跳变要平缓得多。ADC 采样时机单独说:不要在定时器更新事件触发采样,那样采到的点是开关管关断瞬间,dv/dt 噪声最大。用同一个定时器的另一个通道产生延迟触发,把 ADC 采样点放在 PWM 周期的中间位置,采样到的输出电压纹波分量最小。
4.2 数字 PID 的离散化写法,积分限幅和输出限幅是电赛保命项
数字电压环的核心是 PID 控制器。增量式 PID 在电源控制里的好处是输出量本身就是占空比增量,天然积累上一次的控制量,不容易出现积分饱和导致的大超调。核心代码:
typedef struct { float kp; // 比例系数 float ki; // 积分系数 float kd; // 微分系数 float target; // 目标电压,单位 mV float last_error; // 上次误差 float integral; // 积分累加值 float out_max; // 输出上限,对应最大占空比 float out_min; // 输出下限,对应最小占空比 } PID_TypeDef; // PID 更新函数,返回值为占空比,范围 0.0~1.0 float pid_update(PID_TypeDef* pid, float measured_mv) { float error = pid->target - measured_mv; // 积分分离:误差大于 100mV 时停止积分,防止饱和 if (error < 100.0f && error > -100.0f) { pid->integral += error; } // 积分限幅,限制在输出范围的 30% 以内 float i_max = (pid->out_max - pid->out_min) * 0.3f; if (pid->integral > i_max) pid->integral = i_max; if (pid->integral < -i_max) pid->integral = -i_max; float derivative = error - pid->last_error; pid->last_error = error; float out = pid->kp * error + pid->ki * pid->integral + pid->kd * derivative; // 输出限幅 if (out > pid->out_max) out = pid->out_max; if (out < pid->out_min) out = pid->out_min; return out; }积分分离这段逻辑在电赛里很重要。负载从空载突然切到满载时,误差瞬间变大,如果积分项还继续累加,输出会冲到上限,恢复时就会出现很深的电压跌落和长时间振荡。加了积分分离后,大误差期间只有比例项工作,电压快速拉回,进入小误差范围后再让积分项消除稳态误差。
4.3 参数整定顺序从比例到微分,先稳定再求快
PID 参数在硬件上整定的顺序和方法比公式更重要。第一步,Ki 和 Kd 设为 0,Kp 从 0.2 开始往上加,观察输出电压在小负载扰动下的响应。输出电压出现等幅振荡时,说明此时 Kp 达到临界值,取临界值的 50% 作为初始 Kp。第二步,加入 Ki,从 Kp 的 1/100 开始,逐步增大,观察带载后输出电压能否回到设定值,稳态误差消除的速度就是 Ki 的效果。第三步,如果阶跃响应的过冲超过 10%,加 Kd,从 Kp 的 1/8 开始,观察过冲幅度和振荡次数。
一个常见的误区是追求 PID 响应速度而忽略 ADC 采样噪声。STM32F103 的 ADC 在 12 位分辨率下,末位 1 到 2 个 LSB 的抖动本身就对应 1mV 到 2mV 的电压误差,微分项会被放大成高频抖动。解决方法是采样值做滑动平均滤波,取 8 次采样的均值再进 PID,控制周期在 10ms 时完全来得及。
5. 调试验证的具体技巧:示波器带宽限制和负载阶跃测试
电源板的验收测量最容易出问题的地方是示波器探头。用常规的接地夹子测量输出电压纹波,夹子线形成一个大环路,相当于给探头串了一个天线,在开关节点附近能耦合到 50mV 以上的假噪声。正确做法是在探头前端套一个弹簧接地器,直接接触输出电容的两端,示波器带宽限制在 20MHz,垂直档位先用 100mV/div 粗调,再缩小到 20mV/div 观察纹波形状。
负载调整率的现场测量步骤很固定:空载状态下记录输出电压 V1,电子负载设到 2A 满载,等 20 秒让电容温度稳定后记录 V2,负载调整率 = (V2 - V1) / V1 × 100%。电赛题目通常要求这个值小于 1%,如果超了,先查采样线的接地点是否在输出电容两端,而不是在 PCB 上绕了很远,其次查 PID 的积分限幅是否太小导致带载时占空比被钳位。
效率测量的读数时机同样讲究,输入电流要用串联电流表而不是万用表的电流档直接并联,输出电流用电子负载的恒流模式设定,两者同时读取才能算准。效率 η = Vout × Iout / (Vin × Iin) × 100%,85% 效率对应的损耗分配大概是电感铜损 40%、二极管损耗 35%、开关损耗 15%、其他 10%,哪一项偏高就在对应位置加粗走线或换低 Vf 二极管。
最后一个实战技巧:负载阶跃响应测试不要用电子负载的瞬态模式,那个模式的上升沿不够陡,测出来的恢复时间偏乐观。用一个大功率 MOS 管并联在输出端,栅极接信号发生器输出方波,这样能把负载从 0A 到 2A 的切换时间控制在微秒级。此时示波器观察输出电压跌落的谷值和恢复时间,如果跌落超过 100mV,把 PID 的 Kp 调大一档再看;如果出现连续振荡,把 Kd 加上去。调完这一轮,整个降压型直流开关稳压电源的动态性能和稳态精度就都在评分表的优秀区间内了。
本文还有配套的精品资源,点击获取