2020年全国大学生电子设计竞赛B题:基于STM32F334与LT4320的UPS电源系统设计与省一作品解析
2020年全国大学生电子设计竞赛B题基于STM32F334与LT4320的UPS电源系统设计与省一作品解析最近有不少同学在准备电赛后台收到很多关于电源类题目的咨询特别是UPS不间断电源系统。正好我复盘一下2020年参加全国大学生电子设计竞赛B题并获得省一等奖的作品。这个项目从220V市电输入到最终输出稳定的30V交流电完整地走了一遍AC-DC、DC-DC、DC-AC的变换链路。今天我就以一位“过来人”的身份把这个项目的核心设计思路、硬件选型、控制策略以及我们踩过的“坑”都掰开揉碎了讲给大家听希望能给正在备赛的你一些实实在在的启发。1. 题目解读与整体方案设计拿到电赛题目第一步永远是仔细读题理解系统框架和性能指标。2020年的B题核心是设计一个UPS电源系统。1.1 系统框架分析题目给出了清晰的系统框图咱们一起来看两个输入一路是220V的交流市电另一路是储能元件通常是蓄电池提供的24V直流电。一个输出要求输出30V的交流电。核心任务系统需要能在市电正常时由市电供电市电异常或断电时能无缝切换到电池供电保证输出不间断。同时需要对输出电压进行反馈控制确保其稳定在30V。简单来说这就是一个“交-直-交”变换系统中间还夹着电池管理和无缝切换。1.2 我们的“交-直-交”五级方案基于题目要求我们设计了一套五级变换方案思路非常清晰就像一条流水线交流输入与变压220V市电先经过自耦变压器粗调再经过隔离变压器进行电气隔离和安全降压得到29V-43V的交流电。隔离变压器是关键它能保护后级低压电路和人身安全。有源整流 (AC-DC)将降压后的交流电变成直流电。我们没有用传统的二极管桥式整流而是用了LT4320这款理想二极管桥控制器搭配MOSFET组成“有源整流桥”。它的优点是导通压降极低发热小效率高特别适合这种对效率有要求的场合。Buck降压稳压 (DC-DC)整流后得到40-60V的直流电电压偏高且不稳定。我们用了一级TL494芯片搭建的Buck电路将它稳稳地降到25V。这里没让单片机参与TL494自己产生PWM波是一个独立的硬件闭环稳定可靠。电源无缝切换与Boost升压这是系统的“智能心脏”。切换电路用两个NMOS管搭建了切换电路。当来自前级的25V直流正常时自动断开电池供电当25V消失模拟市电断电瞬间切换到24V电池供电。我们实现了“无感切换”输出几乎不受影响。Boost升压无论来自前级还是电池电压都低于30V峰值。因此需要用Boost电路将直流母线电压升高。我们在这里加入了电压和电流检测为后面的闭环控制提供“眼睛”。H桥逆变 (DC-AC)最后一步把升压后的稳定直流电通过全桥逆变电路变回我们需要的30V交流电。这部分由单片机控制。控制核心我们选用STM32F334作为主控。这颗芯片的亮点是内置了高分辨率定时器HRTIM特别适合产生精准的SPWM波。它的任务很重控制Boost电路的输出电压PID调节。产生驱动H桥的SPWM波。处理来自Boost级的电流、电压反馈实现整个系统的闭环控制。人机交互我们搭配了一块4.3寸的串口屏用来实时显示输入输出电压电流、系统状态并且能在线调整PID参数、电流补偿值等调试起来非常方便。整个方案的结构我画个简图帮你理解220V AC → (自耦隔离变压器) → ~35V AC → [LT4320有源整流] → 40-60V DC ↓ 24V 电池 → [电源切换电路] ← [TL494 Buck] ← 40-60V DC ↓ 25V DC (公共直流母线) ↓ [Boost升压 采样] → 高压DC母线 ↓ [STM32F334控制] ←→ [电压/电流反馈] ↓ [H全桥逆变电路] ↓ 30V AC 输出2. 核心硬件电路设计与选型方案定了接下来就是硬件实现。每一级电路的设计都直接影响最终性能和得分。2.1 前级处理LT4320有源整流桥为什么不用便宜的二极管桥堆因为损耗大在低压大电流场合二极管上1V多的压降会产生可观的发热和功率损失。LT4320搭配四个N沟道MOS管可以构建一个近乎“理想”的整流桥。MOS管的导通电阻Rds_on可以做到毫欧级别因此导通压降非常小电流*电阻效率提升显著。注意使用LT4320时驱动MOS管的栅极电荷需要由芯片提供要确保其Vcc供电电压足够通常需高于输入电压峰值并且要仔细计算栅极驱动电流必要时可以增加栅极驱动增强电路。2.2 中间级TL494 Buck稳压与电源切换TL494 Buck电路 TL494是一款经典的PWM控制芯片稳定性好。我们用它搭建一个电压模式控制的Buck电路。通过调节TL494反馈引脚的电阻分压比将输出电压设定在25V。它的振荡频率由外部电阻电容设定我们选择了一个合适的频率比如50kHz以平衡效率和电感、电容的体积。NMOS电源切换电路 这是实现“无感切换”的关键。思路是利用MOS管的体二极管和开关特性。我们使用两个NMOS管背对背串联源极相连连接点接负载后级Boost。MOS1的漏极接前级25VMOS2的漏极接电池24V。控制逻辑检测前级25V是否正常。如果正常则打开MOS1关闭MOS2由前级供电。此时MOS2的体二极管反偏电池通路完全关断。一旦检测到25V掉电立即关闭MOS1打开MOS2切换至电池供电。由于切换速度在微秒级后级的大电容足以维持电压不跌落从而实现“无感”。2.3 后级核心Boost升压与H桥逆变Boost升压电路 为了给逆变级提供足够的电压裕量逆变输出30V交流峰值约42.4V考虑损耗直流母线需更高如45-50VBoost电路必不可少。我们在Boost的输出端放置了分压电阻进行电压采样同时串入一个小阻值采样电阻进行电流采样。这两个信号经过运放调理后送入STM32的ADC。H全桥逆变电路 由四个MOS管组成经典的全桥结构。对角线上的一对管子如Q1/Q4同时导通电流正向流过负载另一对Q2/Q3导通时电流反向。通过STM32产生SPWM波交替驱动这两对管子就能在负载上得到正弦波交流电。提示H桥的驱动是关键必须保证同一桥臂的上下管不能同时导通直通短路。一定要用带“死区时间”控制的驱动芯片如IR2104、IR2110等或者利用STM32高级定时器的互补输出带死区功能。3. 软件控制策略与STM32F334实现硬件是躯体软件是灵魂。STM32F334在这里扮演了“大脑”和“指挥家”的角色。3.1 双闭环控制电压外环电流内环对于Boost电路我们采用经典的电压外环电流内环的双环PID控制。电流内环快速响应。采集Boost电感的电流或下管电流与电流给定值由电压环输出比较通过PI调节器快速改变PWM占空比控制电流跟随。这保证了系统的动态响应速度和稳定性。电压外环精准稳压。采集Boost输出电压与我们的目标电压值例如48V比较通过PI调节器输出一个值这个值作为电流内环的给定值。这样当负载变化引起电压波动时电压环调整电流给定电流环迅速动作最终使电压快速回归稳定。在STM32中我们需要为这两个环分别设置合适的PID参数Kp Ki Kd这是一个调试的重点和难点。3.2 SPWM波的生成与“单极性调制”逆变部分的核心是生成正弦脉宽调制SPWM波。STM32F334的高分辨率定时器HRTIM天生就是干这个的。原理简述我们需要一个正弦波作为调制波频率50Hz一个三角波作为载波频率比如20kHz。用正弦波和三角波比较在正弦波大于三角波的时间段输出高电平否则低电平。这样产生的PWM波其占空比按照正弦规律变化经过H桥和LC滤波后就能还原出正弦交流电。我们采用单极性调制方式。这种方式下每个桥臂的驱动信号在正弦波的正半周和负半周是对称的可以有效降低输出谐波滤波更容易。STM32F334 HRTIM配置关键步骤// 1. 初始化HRTIM定时器主时钟和计数模式 HRTIM_TimeBaseInitTypeDef TimeBaseInit; TimeBaseInit.Prescaler 0; // 根据系统时钟和载波频率计算 TimeBaseInit.CounterMode HRTIM_COUNTERMODE_UP; TimeBaseInit.Period hrtim_period; // 载波周期值 HRTIM_TimeBaseInit(HRTIM1, HRTIM_TIMERINDEX_TIMER_A, TimeBaseInit); // 2. 配置比较单元用于生成调制波正弦表 HRTIM_CompareInitTypeDef CompareInit; CompareInit.CompareValue sine_table_value; // 从正弦表读取的比较值需在中断中更新 HRTIM_CompareInit(HRTIM1, HRTIM_COMPAREUNIT_1, CompareInit); // 3. 配置输出通道设置死区时间 HRTIM_OutputInitTypeDef OutputInit; OutputInit.Polarity HRTIM_OUTPUTPOLARITY_HIGH; OutputInit.SetSource HRTIM_OUTPUTSET_TIMPER; // 设定条件 OutputInit.ResetSource HRTIM_OUTPUTRESET_TIMCMP1; // 复位条件与比较单元1比较 OutputInit.IdleState HRTIM_OUTPUTIDLESTATE_INACTIVE; HRTIM_OutputInit(HRTIM1, HRTIM_OUTPUT_TA1, OutputInit); // 配置死区时间防止上下管直通 HRTIM_DeadTimeInitTypeDef DeadTimeInit; DeadTimeInit.DeadTimePrescaler HRTIM_DEADTIMEPRESCALER_DIV1; DeadTimeInit.RisingValue deadtime_rising; // 上升沿死区 DeadTimeInit.FallingValue deadtime_falling; // 下降沿死区 HRTIM_DeadTimeInit(HRTIM1, HRTIM_OUTPUT_TA1, DeadTimeInit);在定时器溢出中断或DMA中不断更新比较单元的值从预先计算好的50Hz正弦表读取就能产生SPWM波。3.3 基于电流反馈的输出电压闭环题目要求对30V交流输出进行闭环。直接采样交流电压进行有效值计算再反馈响应慢。我们采用了一种巧妙的电流间接反馈法。思路在逆变器直流输入侧Boost输出端采样直流电流。对于一个理想的H桥逆变器如果输入电压固定其输出的交流电压有效值与输入直流电流在一定负载范围内存在近似线性关系。同时输出电压与单片机产生的SPWM波的调制度即正弦波幅值与三角波幅值之比成正比。因此我们的控制策略是采样Boost输出端的直流电流I_dc。由于逆变器工作I_dc是含有100Hz纹波50Hz全桥整流效应的脉动直流。我们对一个工频周期20ms的电流进行平均或低通滤波得到其平均值I_dc_avg。建立I_dc_avg与输出电压V_ac的对应关系表通过实验标定。例如当目标输出30V时对应的I_dc_avg应该是X安培。在控制中我们将I_dc_avg作为反馈量与目标电流值X进行比较通过一个PI调节器动态调整SPWM波的调制度即改变正弦表的最大幅值从而让I_dc_avg稳定在X间接使得输出电压稳定在30V。这种方法避开了交流采样和有效值计算的延迟响应速度快在实际测试中效果很好。4. 调试心得与常见“坑点”回顾整个项目有几个地方特别容易出问题分享给大家电源切换的“毛刺”NMOS切换电路逻辑看似简单但MOS管的开关延时和驱动电路响应速度如果不匹配会在切换瞬间产生电压跌落或尖峰。一定要用示波器仔细捕捉切换瞬间的波形确保驱动信号干净利落必要时在控制逻辑中加入短暂的“全关”死区时间。Boost电路的环路震荡双环PID参数调不好Boost输出就会震荡。我的经验是先调电流内环断开电压环让电流能快速、无超调地跟随阶跃给定。然后再接入电压环从较小的比例系数开始慢慢加大直到动态响应又快又稳。SPWM死区时间设置死区时间太短桥臂直通炸管死区时间太长输出波形畸变效率降低。需要根据你所用的MOS管开关速度和驱动能力通过实验确定一个最佳值。用示波器同时观察上下管的栅极驱动波形确保有重叠。电流采样噪声采样电阻上的信号很小极易受开关噪声干扰。必须在采样电阻两端并联小电容滤波并且采样走线要尽量短最好用差分走线连接到运放。运放电路建议使用“低通滤波 放大”一体化电路。STM32 HRTIM的时钟配置F334的HRTIM时钟树比较复杂一定要算清楚定时器的实际计数频率这直接关系到你的SPWM载波频率是否准确。载波频率一般选择在10kHz-20kHz太高了开关损耗大太低了滤波电感电容体积大且音频噪声明显。这个项目从分析题目到硬件焊接、软件调试、整机联调历时四天三夜充满了挑战也收获了巨大的成长。最大的体会是电源系统设计必须“软硬结合”对每一个环节的原理都要吃透调试时耐心细致用数据波形说话。希望这篇详细的解析能帮你理清思路祝你在未来的电赛或项目中所向披靡