尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32G474打造3kW通讯电源:从PFC到LLC全数字控制

STM32G474打造3kW通讯电源:从PFC到LLC全数字控制 做通讯电源这一行的人应该都有同感整流模块的控制器过去十几年几乎被DSP垄断了学校里教的电源控制方案、老工程师手里的成熟电路清一色都是TI C2000系列的天下。但最近两年明显能感觉到风向在变用STM32G4做数字电源的项目越来越多尤其是中小功率的通信整流模块。我这边刚完成的一台3kW通讯电源设备控制核心就换成了STM32G474整套方案从前级PFC到后级LLC全部数字化控制本文把选型思路、硬件架构、环路实现和调试验证的完整过程都梳理一遍正在评估数字电源方案的同行可以参考。1. 立项背景3kW通讯电源对控制器的选型逻辑1.1 通讯电源的基本形态与硬性指标通讯电源行业内通常叫通信整流模块或者开关电源模块在机房、基站里的角色是把市电交流转换成设备可用的直流电。以最常见的48V系统为例额定输出电压是53.5V浮充电压3kW的功率等级对应输出电流大约56A。这类模块不是随便一个开关电源就能干的硬指标列出来一看就明白输入电压范围宽一般要求176V-264Vac好一点的要做到85V-264Vac全范围。功率因数PF值要大于0.99谐波电流要满足标准要求这决定了必须上PFC。整机效率是硬考核项3kW级别通常要求93%以上好的方案能到95%、96%。效率每差一个点发热就差30W对散热和电费都是实打实的压力。模块支持热插拔、并联均流、远程监控输出要能恒压恒流切换。动态响应有要求负载突变时电压跌落/过冲要在规定范围内比如±5%以内且恢复时间在毫秒级。这些指标叠加在一起控制器的压力就上来了要同时跑两套功率级控制还要做通信、保护、监控采样计算周期都是微秒级的。1.2 为什么这次没有继续用传统DSP说实话一开始评估方案的时候团队里也分了两派。老一派坚持用C2000系列理由很充分资料多、参考设计多、电源工程师都熟有什么问题抄一抄改一改就出来了。但这次我们仔细盘了一下有几个现实问题让DSP方案没那么香了。首先是成本一颗主流电源级DSP的价格和一颗STM32G474比起来没有优势尤其是在当前供应链环境下交期和价格波动都让人头疼。其次是开发效率C2000的生态相对封闭虽然专门的电源外设很强但整个工具链、中间件、社区资源跟STM32的体量完全不是一个量级。再者就是功能冗余度C2000的高端型号很多资源我们用不满而STM32G4的定位恰好卡在电源控制这个区间主频170MHz、数学加速器、高分辨率定时器、多ADC同步采样该有的都有不该有的也不堆料。1.3 STM32G474的资源盘点与结论这颗芯片我们仔细捋过一遍资源这里直接列对电源设计最有用的几项资源参数在电源里的用途CPUCortex-M4F170MHz带FPU跑控制环路、通信协议栈HRTIM高分辨率定时器184ps分辨率6通道LLC全桥PWM、死区管理、ADC同步触发ADC5个独立12位ADC最高4Msps左右多通道同步采样电压电流运放6个内部运算放大器电流采样调理、差分放大比较器7个内部比较器硬件过流/过压快速保护DAC4个12位DAC比较器阈值设定CORDIC硬件三角函数/双曲函数加速PFC锁相、坐标变换、功率计算FMAC滤波器数学加速器数字滤波器FIR/IIR加速接口CAN、UART、SPI、I2CRS485通信、PMBus、并联均流结论很明确这颗芯片的定位就是“为数字电源和电机控制而生”。它没有DSP那种让人又爱又恨的专属外设复杂性但每个关键外设都做到了电源控制需要的深度。我们用STM32G474RCT6作为主控既跑PFC控制又跑LLC控制资源还有富余这个选型在整个项目交付过程中证明是划算的。2. 系统架构PFC加LLC的双级功率链路2.1 主电路拓扑与主控的接口关系3kW通信电源的功率链路基本是固定套路第一级PFC把交流整成稳定的高压直流母线第二级DC-DC把母线上千伏左右的电压降成53.5V输出。我们选的是经典两级结构输入EMI滤波 → 整流桥 → Boost PFC升压到400V母线 → 全桥LLC谐振变换器 → 同步整流 → 输出滤波 → 53.5V/56A控制板和功率级的接口关系不复杂捋清楚也就几组信号PFC和LLC的MOSFET驱动PWM、各路电压电流采样、温度采样、输出控制信号风扇、继电器。这些都是STM32G474的强项尤其是驱动PWM这一块HRTIM的通道数刚好覆盖全桥LLC的四路驱动和PFC的驱动。2.2 前级PFC的数字化控制PFC级我们用的是Boost拓扑工作在CCM模式连续导通模式。控制目标是两件事把输出电压稳定在400V左右同时让输入电流跟随输入电压波形使功率因数接近1。数字控制的PFC环路结构如下外环输出电压采样 → 电压环PI补偿器 → 产生电流幅值指令。内环输入电流采样 → 电流环PI补偿器 → 输出占空比指令。相位同步输入电压采样经锁相计算得到正弦基准sin(ωt)电流幅值指令乘以该正弦即得到电流基准。这一套在STM32G4上跑得非常顺。关键点是CORDIC硬件加速器锁相环里需要的三角函数、功率计算里的平方根和除法以前在DSP里靠查表或者软件库现在直接用硬件单元算一个周期的三角函数运算只要几个时钟周期大幅节省CPU时间。电流环的控制周期我们做到25微秒40kHz电压环做到100微秒10kHz响应速度完全够用。2.3 后级LLC谐振变换器与调频控制DC-DC级选了全桥LLC谐振变换器这是3kW级别48V输出最主流的拓扑。LLC的好处是可以在全负载范围内实现原边开关管的ZVS零电压开通开关损耗小效率高而且对变压器的漏感和励磁电感没那么敏感整体设计容差好。LLC的控制方式是PFM脉冲频率调制通过改变开关频率来调节输出电压。谐振频率我们设计在150kHz左右满载时工作频率接近谐振点轻载时频率升高输出电压靠频率偏差来调节。数字控制的LLC环路结构电压外环输出电压采样 → 数字PID补偿器 → 频率指令。频率指令映射到HRTIM的周期寄存器实时改变开关频率。死区时间随频率调整确保ZVS条件。LLC环路在轻载和空载时有几个麻烦点增益曲线很平环路增益低突然加载时输出跌落比较大。这也是后面调试章节要重点讲的部分。控制周期我们做到50微秒20kHz已经能保证不错的动态响应。2.4 控制环路的分层设计与带宽分配两级功率级共用一个控制器环路之间的配合必须提前规划好不然就会出“环路打架”的问题。PFC的电压环带宽一般做到10-20Hz这个环不追求快追求稳因为输出母线电容大响应慢是正常的PFC电流环带宽做到几千赫兹。LLC电压环带宽大概2-5kHz就够了再高容易受谐振影响。带宽分配的原则是外环慢、内环快PFC环路慢于LLC环路保证母线上电压波动能被LLC环平滑吸收不形成正反馈。我在项目评审时一直跟团队强调一句话数字电源的环路设计本质上是把模拟控制的“经验”翻译成“参数”但翻译之前一定先把带宽和相位裕量想清楚。3. 关键外设实战HRTIM与ADC的配合是数字电源的地基3.1 HRTIM的时钟架构与分辨率数字电源和普通MCU方案最大的分水岭就在PWM产生这一块。STM32G4的HRTIM高分辨率定时器不是普通PWM定时器加几个高级特性它是一个独立的定时器子系统内部有主定时器和5个子定时器Timer A到Timer E每个子定时器有两路输出支持互补输出和死区插入。HRTIM的高分辨率来自内部的PLL倍频外部晶振比如25MHz内部倍频后可以达到4.26GHz左右的等效时钟再通过内插技术实现184ps的PWM边沿分辨率。这是什么概念在150kHz开关频率下一个开关周期约6.67微秒184ps相当于周期的十万分之三调频调相都可以做到非常精细。对LLC这种调频控制来说频率分辨率不够会导致输出电压抖动HRTIM完全不存在这个问题。3.2 全桥LLC的PWM配置与死区管理全桥LLC通常用两路带死区的互补PWM驱动两个半桥HRTIM的Timer A和Timer B分别负责一个半桥配置起来非常直观。以下是一个简化的初始化示意// HRTIM Timer A 配置为LLC全桥其中一路半桥 // 使用连续模式周期由寄存器控制实现PFM调频 HRTIM_TIMA-PER current_period; // 周期决定开关频率 HRTIM_TIMA-CMP1R high_side_cmp; // 高边占空比比较值 HRTIM_TIMA-CMP2R low_side_cmp; // 低边占空比比较值 HRTIM_TIMA-DTR 0x100; // 死区上升沿延迟 HRTIM_TIMA-DTF 0x100; // 死区下降沿延迟实际配置中要注意几点死区时间是要根据功率管和驱动IC的延迟实测标定的。我们用的MOSFET在LLC原边关断延迟和开通延迟不一样死区不能只靠理论值必须用示波器看实际波形调整。死了区太小会直通炸管太大影响ZVS和效率这个度要靠实测。HRTIM的死区支持运行时可调这在轻载优化时很好用。轻载时开关频率升高死区可以适当调整来维持ZVS这个动态调节在模拟方案里很难做数字方案的灵活性在此时体现得很明显。全桥LLC还有一个重要点是上下桥臂的相位关系Timer A和Timer B之间要靠交叉配置实现这个在LLC里通常是同相驱动两个半桥靠谐振网络自然移相。3.3 用HRTIM同步触发ADC采样数字电源最容易踩的坑就是采样噪声。PWM开关瞬间功率级的di/dt和dv/dt都很大如果ADC采样正好撞上开关边沿采回来的电流电压值全是毛刺环路再稳也白搭。解决办法是让采样时刻避开开关边沿STM32G4的HRTIM可以直接产生ADC触发事件。我们把ADC触发点设在PWM周期的中点——这是开关噪声最小的窗口因为此时原边电流处于谐振电流的中间位置开关管都已可靠导通或关断dv/dt噪声基本平息。具体的配置思路HRTIM的子定时器产生一个ADC触发事件用比较匹配ADC1、ADC2、ADC3全部配置为外部触发启动同一个触发信号同时启动多路采样。这样采回来的母线电压、输出电流等数据在时间上是对齐的环路计算用的数据不会有相位差这对多环控制非常关键。4. 控制算法落地从PID到CORDIC和FMAC4.1 数字PID的实现与抗饱和处理控制环路的计算核心就是数字PID。STM32G4有FPU浮点PID一个周期轻松跑完但工程上真正决定控制质量的是PID的细节处理算法本身大家都懂坑都在工程实现里。我们的核心PID实现包含几个关键点积分分离误差较大时比如启动阶段积分项不参与或者限幅防止积分饱和导致超调。积分限幅积分输出单独限幅防止PID输出被积分项顶到饱和值后回不来。微分先行微分项只对反馈量做微分不对设定值做微分这样设定值突变时输出不会猛跳对电源输出电压给定切换非常有用。输出限幅最终输出要限制在合理范围内PFC占空比限幅在0-95%LLC频率限幅在谐振频率上下各留余量。一个典型的数字PI实现控制周期50微秒typedef struct { float Kp; float Ki; float integral; float i_limit; float out_limit; float ts; } PI_Controller_T; float PI_Update(PI_Controller_T *pi, float err) { pi-integral err * pi-Ki * pi-ts; // 积分限幅 if (pi-integral pi-i_limit) pi-integral pi-i_limit; if (pi-integral -pi-i_limit) pi-integral -pi-i_limit; float out err * pi-Kp pi-integral; // 输出限幅 if (out pi-out_limit) out pi-out_limit; if (out -pi-out_limit) out -pi-out_limit; return out; }4.2 CORDIC在锁相环和功率计算里的加速效果STM32G4的CORDIC是一个独立的硬件数学加速器圆坐标系下可以算sin、cos、atan2双曲坐标系下可以算exp、ln、sqrt。以前这些函数得调用软件库一个浮点sin要几百个时钟周期现在CORDIC一条指令配合寄存器操作就能出结果。我们项目里CORDIC用了两个场景第一个是PFC的输入电压锁相环。需要实时获取输入电压的相位角从而生成同相的正弦电流基准。用CORDIC做atan2和sin计算整个锁相环的计算量变得微不足道CPU时间省下来给环路和通信。第二个是有效值计算。通信电源要上报输入电压/电流有效值实时计算需要开平方。CORDIC的sqrt是硬件加速的一次开方十几个周期搞定比软件库快一个数量级。在做输入电压跌落检测掉电保持时这个快速计算帮了大忙。4.3 FMAC滤波加速与环路数据的平滑FMAC滤波器数学加速器是这颗芯片上另一个容易被忽略的外设。它可以硬件执行FIR和IIR滤波器不需要CPU干预。我们在电流采样后加了一级二阶IIR低通滤波用来抑制采样点之外的开关噪声同时还给电压环的反馈信号加了一个滑动平均滤波这两个滤波器如果靠CPU做每个控制周期要占几十微秒但用FMAC的话几乎零开销。有一点必须提醒滤波器会引入相位延迟这在控制环路里是要算进相位裕量里的。数字滤波器的截止频率不能设太低不然环路会变得迟钝甚至震荡。我们实际把电流采样的IIR截止频率设在开关频率的十分之一左右对控制环路的相位影响可接受噪声抑制效果也够。5. 固件架构与保护逻辑数字电源不止是算得快5.1 控制循环与任务调度数字电源的实时性要求非常高但也不至于复杂到要上RTOS。我们的方案是前后台加中断分级整个软件架构清晰简单最高优先级中断25微秒周期PFC电流环控制由ADC完成中断触发。第二优先级中断50微秒周期LLC电压环控制同样由ADC触发。1毫秒定时中断慢速监控包括电压电流遥测、过温检测、风扇控制、状态刷新。主循环通信协议处理、参数存储、人机交互。关键点是控制中断里不要做任何阻塞操作不能调用printf不能等Flash所有数据直接读写寄存器完成。通信和显示这些慢操作全部扔到主循环用标志位通信。这样即使在通信繁忙时控制环路的稳定性也不会受影响。5.2 三级保护机制硬件比较器、快速中断、慢速监控电源产品的安全底线是保护。我们设计了三级保护机制第一级是硬件比较器。STM32G4内部有7个比较器我们把输出过流、母线过压、原边过流这几项关键保护直接用比较器实现比较器输出直接触发HRTIM的紧急刹车在硬件层面关闭PWM输出不需要CPU参与。这个响应时间在纳秒级比任何软件保护都快。比较器阈值由内部DAC设定可以通过软件标定非常方便。第二级是ADC采样后的快速软件保护在控制中断里检查关键参数如果超标就在几十微秒内关闭PWM并锁存故障。这一级主要覆盖那些不适合用比较器的保护项比如输入欠压、输出欠压、温度阈值等。第三级是慢速监控1毫秒任务里做平均值判断处理风扇故障、通信超时、参数异常等不那么紧急的问题。故障发生后系统进入故障状态机记录故障码等待指令或者故障消除条件满足后自动恢复。整个保护体系实测下来非常可靠模拟电源时代那种“炸管前一瞬间靠运气”的情况在这里被彻底避免了。5.3 RS485与CAN通信并机均流和远程监控通信是通讯电源的必修课。我们用两路通信一路RS485走Modbus RTU协议用于模块和上位机之间的监控上报电压、电流、温度、效率等遥测数据接收输出电压设定、开关机指令另一路CAN用于并联模块之间的均流通信均流策略是主从模式主模块广播均流基准从模块跟随调整输出电压微调量。通信对控制环路的影响必须严格隔离。Modbus解析和应答都在主循环里处理绝对不能进中断。因为一帧Modbus报文最长上百字节如果放到中断里处理控制周期直接就被打乱了。我们用双缓冲加标志位的方式接收完成中断只做数据搬运解析和响应全在主循环完成这样即使在通信满载的情况下PFC和LLC的环路周期也不会抖。6. 调试实录从开环点亮到满载烤机的完整链路6.1 开环调试先看波形再谈闭环上电调试的顺序至关重要。我们没有一上来就闭环跑而是按下面的步骤一步步来第一步先用开发板点灯级别的代码验证HRTIM的输出波形。不接功率级只接示波器检查PWM频率、占空比、死区时间是否和配置一致。LLC的驱动波形是最先要确认的四个管子都要看上下管的死区一定不能有交叠这个用示波器的余辉模式看非常直观。第二步用一个直流源给控制板单独供电跑保护逻辑人为触发过压和过流保护确认HRTIM的紧急刹车能可靠关断PWM。第三步在轻载比如100W条件下开环测试LLC的增益特性。手动设置一个开关频率观察输出电压随频率变化是否符合LLC的增益曲线确认谐振频率点的位置和理论设计一致。这一步能发现变压器参数设计是否有偏差如果增益曲线和预期差太多先解决硬件问题再继续。6.2 闭环整定从LLC电压环到PFC电流环的先后顺序闭环调试的顺序要从“对系统稳定性影响最小的环”开始。我们推荐先调LLC电压环再调PFC电流环最后调PFC电压环原因很简单LLC是给负载供电的最后一个环节它的环路稳了后续调试PFC时输出电压有保证。LLC电压环的整定方法先只加比例项从小到大慢慢加观察输出在加载时的响应。P项太小响应慢P项太大会出现振荡直到找到一个临界值然后再往里加积分项消除静差。整定过程中用电子负载做10%-100%的阶跃用示波器看输出电压的跌落和恢复时间。PFC电流环的整定要配合输入电压波形观察。把示波器夹在输入电流的采样电阻上看电流波形是否和电压波形同相、是否正弦。如果电流波形有畸变、在过零附近有毛刺多半是电流环PI参数不合适或者采样点没对准。这一步最花时间因为输入电压波形每半个周期都在变化电流环必须在整个周期范围内都保持稳定。调完之后做一次满载效率测试我们最后实测整机效率96.1%PF值0.992这个结果在同功率等级里算是很不错的水平。6.3 热设计和EMC整改的几点经验3kW电源的散热是绕不开的话题。96%效率意味着120W左右的损耗要散出去全靠散热片和风扇。我们把电感、变压器、功率管的热阻都实测了一遍风扇用了温控策略PWM调速根据IGBT/MOS管温度和变压器温度做闭环控制保证在40℃环境温度下满载运行时的结温不超过125℃的降额要求。EMC整改是这个项目里最费时间的环节。数字电源的开关频率高、di/dt大比模拟方案更容易出辐射问题。几个实际管用的经验驱动信号的走线要短而且和功率回路隔开否则PWM驱动线会变成天线。采样线要用差分走线必要时加共模电感采样地和功率地单点连接避免地环路噪声。HRTIM的PWM开关频率不要和采样ADC的时钟频率产生整数倍关系否则采样会固定踩在噪声最恶劣的点上这个可以在配置阶段就规避掉。母线电容的位置和布局直接影响辐射叠层母线设计比飞线强得多。传导发射我们在输入加了二级EMI滤波整改后余量6dB以上顺利过检。6.4 量产一致性标定、校验与生产测试从样机到量产还有最后一公里的工作。STM32G4内部有Flash和OTP我们做了几件事每台设备的电压采样增益、电流采样增益在出厂时做一次软件标定标定值存到内部Flash特定的数据扇区这样即使采样电阻有1%的误差系统精度也能控制在0.1%以内。HRTIM的死区时间因为驱动IC的离散性在产线上用一个专门的测试模式检查死区超差的设备在测试阶段就拦截下来而不是等到用户现场出问题。生产测试项包括输入过压/欠压保护测试、输出过流保护测试、过温保护测试、通信功能测试、满载老化。这些测试在产线上全部自动化执行一台设备的测试时间控制在3分钟左右。量产这块我的体会是数字电源的灵活性在产线标定上体现得淋漓尽致。模拟电源的精度靠硬件电阻的精度堆出来成本高且一致性难保证数字方案直接软件标定又准又省事。踩过几次坑之后我对STM32G4做电源这件事有了更完整的判断。这颗芯片的外设设计确实是奔着数字电源和电机控制去的HRTIM的精度、ADC的同步能力、CORDIC和FMAC的硬件加速每一项都切中了电源控制的要害。但芯片只是基础真正决定项目成败的是环路设计和工程的细节采样点对准PWM中点、PID的抗饱和处理、三级保护的分工、生产标定的逻辑每个环节都值得认真打磨。最后再分享一个调试中的小技巧STM32G4的ADC可以配置为在不影响控制环的情况下通过DMA周期性额外采集一组数据用于监控和自检。我们在控制中断之外用DMA把母线电压、输入电流等关键信号每100微秒记录一组到内存环形缓冲区调试时通过调试器直接导出配合上位机画曲线能清楚看到启动过程、负载突变瞬间和环路整定过程中的每个细节。这个习惯帮我省了大量反复搬示波器的时间排查问题效率提升不少。
返回列表