YAOTU INSIGHTS

基于TMS280049C的单相PWM整流器双闭环控制与数字电源实现

基于TMS280049C的单相PWM整流器双闭环控制与数字电源实现
简介这是一份基于TMS280049C实现电压电流双闭环PFC单相PWM整流电路的完整工程资源面向电力电子、数字电源及嵌入式控制方向的学习者与开发者覆盖二百二十伏交流输入四百伏直流输出与三十伏交流输入四十三伏直流输出两种典型工况可用于理解PWM整流、功率因数校正以及双闭环控制策略。压缩包共二百六十五个文件、约五点零五兆字节以TI CCS工程文件为主包括一百四十四个头文件、二十个C源文件、五个汇编源文件等源代码以及工程配置、编译链接脚本、静态库和Simulink仿真模型。目前已有二千三百二十人浏览学习适合作为从理论到工程实现的参考范例。其中Simulink模型可进行动态仿真编译输出文件便于对照检查目录结构清晰。资源内含电压环与电流环的PI控制算法实现、PWM驱动与保护逻辑、TMS280049C外设初始化并配合Simulink仿真观察瞬态响应、稳定性与谐波含量帮助读者快速构建和调试同类PFC整流系统。1. 为什么选 TMS280049C这颗芯片就是为数字电源准备的先说结论如果你打算认真做一台单相 PWM 整流器或者一台高性价比的 PFC而不是停留在仿真层面TMS280049C 基本是当前能买到的、最“对味”的实时控制芯片之一。我最早做单相 PFC 的时候用的是 STM32F103后来换过 F28335再往后换到这颗 TMS280049C。过程里最大的感受是用通用 MCU 做电源控制总有一种“隔靴搔痒”的别扭——明明功能都能实现但 ADC 触发、PWM 故障封锁、滤波这些环节都得自己拿定时器去拼凑稍不留神就埋下隐患。而 C2000 系列天生就是围绕“采样—计算—更新 PWM”这条闭环链路设计的TMS280049C 虽然主频只有 100MHz不如很多通用 MCU 跑得快但它在电源控制场景里真正需要的能力一点没缩水。具体到单相 PWM 整流这个项目我实际用到并觉得不可替代的资源有这几项片上集成了 12 位 ADC支持由 PWM 模块直接触发采样不需要靠定时器中断去“碰运气”同步采样点。这一点对电流环性能影响极大。内置比较器子系统 CMPSS可以和 ADC 联动实现硬件级过流保护。一旦电流超过阈值不需要 CPU 介入就能直接封锁 PWM 输出。PWM 模块自带 Trip Zone 功能可以配置成任何异常状态下立刻把输出引脚置于安全电平避免炸管子。浮点运算单元配合 CLA 协处理器可以把一部分控制算法放到 CLA 上跑CPU 只负责主循环和通信调度压力小很多。芯片价格相比 F28335 优势明显而且封装更小做单板电源控制或者嵌入式功率模块都非常合适。所以我的建议是如果你当前还在纠结到底用 DSP 还是普通 MCU 做数字电源可以参考一下 TMS280049C 的资源。它不是一个样样都通的“万金油”但在“数字电源控制”这件事上它的设计目标非常明确很多硬件级机制能帮你绕开低级错误。2. 单相 PWM 整流与 PFC 的双闭环控制结构有些人会把“PFC”和“PWM 整流器”当成两个独立的东西这其实是个误区。单相电压型 PWM 整流器的本质就是一个双向的 Boost 变换器交流侧输入电感直流侧输出母线电容。通过控制桥臂开关管的导通占空比既可以让输入电流跟踪交流电压波形、实现单位功率因数也可以控制直流母线电压稳定在目标值。它的工作模式比普通二极管整流复杂得多。普通整流只有一种能量流动方向功率因数也基本不可控PWM 整流器则通过全控开关管让交流侧电压的基波幅值和相位都能被主动调节。换句话说交流侧看到的等效电压是一个 PWM 调制出来的正弦波通过控制它与电网电压之间的相位差和幅值差就能控制输入电感上流过的电流。双闭环控制是实现这一目标的标准做法也是我这个项目的核心控制架构。整体结构可以概括为电压外环采样直流母线电压与目标电压比较经 PI 调节器后输出电流幅值指令。它负责维持直流侧电压稳定响应速度相对较慢。电流内环采样交流侧电感电流让电流跟踪一个与电网电压同频同相的正弦参考信号。它要足够快才能保证电流波形畸变小、功率因数高。前馈环节为了增强动态响应通常还会把电网电压前馈量加入电流环输出这样电流环不会把电网电压当作纯扰动去硬扛。我在实际代码里用的电流环是 PR 控制。原因很简单电流环的参考量是正弦波如果只用 PI对正弦指令是存在稳态误差的。理论上可以加大比例增益去压低误差但增益太大容易引入噪声和高频振荡。PR比例谐振控制器可以在基波频率处提供很高的增益实现正弦参考的无静差跟踪同时对其他频率分量影响不大非常适合单相 PFC 这种电流正弦化的场景。这里有个很多人容易忽略的点单相系统的瞬时功率是脉动的频率是电网频率的两倍所以直流母线电压天生就带有 100Hz或 120Hz的纹波。电压外环的带宽必须压低一般取 10~20Hz 左右否则电压环会把这种二次纹波误判为误差导致电流参考值出现畸变进而让输入电流波形变差。这是电压环 PI 参数整定时最需要记住的一条原则。3. 主电路参数与 PI 参数这部分必须自己算一遍很多人做双闭环控制时习惯直接把参数往仿真里丢然后一顿乱试。仿真当然可以帮忙但你得先知道自己设计的边界在哪里不然换一台样机、换一套电网条件参数很可能就不成立了。下面是我认为必须自己算清楚的三组东西。3.1 电感取值范围与纹波电流估算输入电感是单相 PWM 整流器的核心储能元件它的取值直接影响电流纹波大小和控制响应速度。电感取小了电流纹波大谐波含量高对采样和 EMI 都是考验电感取大了电流动态响应变慢体积成本也会上去。工程上常用的估算思路是在交流输入电压接近峰值附近的某个工作点上电流纹波最大以这个条件确定电感下限。简化公式可以写为ΔI_L (V_dc - V_in_peak) × D × T_sw / L其中 D 是该时刻的占空比T_sw 是开关周期。举个例子输入 220V RMS整流后峰值约 311V母线电压目标 400V开关频率 100kHz如果允许电流纹波为额定电流的 20%假设额定功率 3kW额定电流峰值约 19.3A则允许纹波峰值约 3.9A。把数值代入L ≈ (400 - 311) × 0.22 × 10μs / 3.9A ≈ 50μH实际设计时我通常会留 20%~30% 裕量取 60~70μH磁芯选择需要同时考虑饱和电流和温升。3.2 母线电容与二次纹波电压母线电容的取值和允许的电压纹波直接相关。单相系统的瞬时功率脉动频率为 100Hz能量波动可以用下式粗略评估C P_out / (2π × 2f_line × V_dc × ΔV_dc)假设输出 3kW母线 400V允许纹波 10V电网频率 50HzC ≈ 3000 / (2π × 100 × 400 × 10) ≈ 1193μF这个数值说明一个很现实的问题想要把单相 PFC 的电压纹波压得很低代价是电容非常大。所以很多设计中会刻意允许 5%~8% 的纹波再用后级 DC-DC 去抑制。如果项目里对母线电压纹波有严格限制你需要在电容体积和成本上做好心理准备。3.3 电流环与电压环带宽及 PI 初值参数整定的顺序一定是先内环后外环电流环带宽通常取开关频率的 1/20 到 1/10。100kHz 开关频率下电流环带宽取 5~10kHz 是比较合理的范围。从控制对象看电流环被控对象可以简化为一个一阶惯性环节电感 L 串联等效电阻 rL时间常数是 L/rL增益是 1/rL。PI 参数可以通过零极点对消的方式得到一个比较合理的初值再在实际调试中微调。电压环带宽则要远低于电流环带宽通常取 10~20Hz。电压环的控制对象是母线电容其特性更接近一个积分环节所以 P 参数不宜过大否则容易出现电压超调和低频振荡。当然这些初值只是给你一个“能运行”的起点真正要调好必须结合示波器观察电流波形和电压环响应。关于这一点我在后面的调试部分会展开讲。4. 基于 TMS280049C 的软件实现细节硬件方案确定之后软件实现是决定控制效果的关键。TMS280049C 的 EPWM、ADC、CMPSS 这些外设是紧密耦合设计的只有把它们的触发关系理清楚才能让整个控制链路运行得既稳定又高效。4.1 PWM 载波频率与模块配置我在这台样机上把开关频率定为 100kHzPWM 采用增减计数模式up-down count。这种模式下 PWM 波形在周期性的中点对齐中心对齐的 PWM 有一个额外的好处开关管在载波峰值和谷值处的动作是对称的利于降低电流纹波和谐波含量。关键配置点如下时基周期由 TBCLK 分频决定100MHz 系统时钟下要得到 100kHz 开关频率时基计数值为 500。死区模块 DB 必须设置对单相全桥来说同一桥臂上下管的互补 PWM 必须插入死区我一般设在 100~200ns。死区太大会增大电流畸变太窄则有直通风险。PWM 的 Action Qualifier 配合增减计数模式设置成高有效——在计数递增匹配时输出低、递减匹配时输出高这样可以得到中心对齐的波形。4.2 用 PWM 触发 ADC而不是用 CPU 定时器这是 TMS280049C 做数字电源和通用 MCU 差别最大的地方。EPWM 模块可以产生 SOCStart of Conversion信号在载波周期内的特定时刻触发 ADC 采样。对于中心对齐 PWM最理想的采样点是在载波的谷值或峰值附近因为此时开关管正好完成了一次切换采样窗口避开了开关噪声最剧烈的时刻。我的做法是在计数增减方向的特定点上设置 SOC 触发让 ADC 在开关管导通的中间时刻采样电感和母线电压这样可以采样到电流纹波的平均值而不是峰值或谷值。配合 ADC 的多个 SOC 通道可以把交流电流、母线电压、电网电压采样都安排在一个 PWM 周期内的不同时刻减少信号间的串扰。4.3 CMPSS 与 Trip Zone 硬件保护软件永远无法取代硬件保护尤其是过流保护。TMS280049C 的比较器子系统 CMPSS 可以直接监测外部模拟量如电流采样信号当超过设定的阈值时无需 CPU 干预就能触发出 Trip 事件把 PWM 输出引脚拉低或置于高阻态。我在设计里设了两级保护第一级CMPSS 阈值电流设为额定电流的 1.2 倍触发后 PWM 输出立即封锁并在中断服务程序里记录故障标志。第二级ADC 实时采样的电流超过软件阈值时由软件触发 Trip Zone作为备份保护。这样即使采样调理电路出现瞬间饱和或者干扰导致软件来不及响应硬件也能在几百纳秒内封波。对这个项目来说这一步是从“实验室能转”走向“长期可靠运行”的分水岭。很多初学者会觉得 CMPSS 配置麻烦但其实 TI 提供了详细的寄存器位说明和例程花两个小时认真看一遍绝对物超所值。5. 硬件上容易忽略的坑采样调理与驱动如果以为主电路和控制板连上就完事那调试过程大概率会相当痛苦。以下三个硬件环节是我反复踩坑之后总结出来的重点。5.1 交流电流采样点与调理电路交流侧电感电流是整个电流环的反馈量采样质量直接决定控制效果。我建议采样点放在交流输入端或电感支路上用电流传感器或采样电阻。用采样电阻便宜但电阻上的损耗和温漂需要评估用霍尔传感器隔离性好、精度高但成本更高。采样后的信号必须经过调理电路再进入 ADC。需要注意的一点是运算放大器调理电路的带宽要足够不然会抑制电流纹波信号导致控制器看到的是“滤波过”的电流动态响应变差。同时要注意输出电压不能超过 ADC 的输入范围TMS280049C 的 ADC 输入范围是 0~3.3V所以双极性电流信号需要加偏置把信号搬移到合适区间。5.2 母线电压采样与输入电压前馈母线电压采样相对简单用电阻分压后经过运放缓冲即可。但输入电压的前馈采样也必须重视。我在调试中发现如果输入电压前馈信号和电流采样之间存在明显相位差或延时会导致电流环在电网电压过零点附近出现畸变。所以建议把电网电压采样也放在 PWM 触发 ADC 的同一个周期里完成保持各个环节同步。5.3 驱动电路与“共地”问题单相全桥四个开关管中上管的源极或发射极电位是悬浮的驱动必须用隔离电源或自举电路。自举电路成本低但占空比接近极端值或者启动阶段电容充电不足时上管驱动电压可能不够导致退饱和。如果条件允许我倾向于用带独立隔离电源的驱动方案尤其是在高功率密度样机上稳定性和抗干扰能力会好很多。另外整个系统里数字地和功率地必须做好单点连接否则高频开关电流会通过地回路干扰控制板表现就是 ADC 采样跳动、PWM 占空比抖动、甚至误触发保护。这个问题在实验室里不一定能立刻看出来但在 EMC 测试或长时间负载变化时就会暴露。6. 调试实录从炸坏管子到稳定运行这一节我按实际调试的时间线来写把我踩过的坑和排查思路直接分享出来希望你能少走一些弯路。6.1 第一次上电就该怀疑软启动PWM 整流器启动瞬间如果直接给定目标母线电压 400V电容充电电流会非常大可能直接触发过流保护甚至损坏开关管。我第一次上电时用的是调压器逐步升压虽然没炸管子但电流冲击还是很大。后来我改成软启动逻辑上电后先封锁 PWM让交流电压通过继电器和限流电阻给母线电容预充电母线电压升到一定值后再切换为 PWM 工作。PWM 启动时电压环指令也从当前母线电压开始按斜坡给定到目标值避免电压环积分饱和造成电流过冲。如果你不想加预充电电路至少也要在软件里做斜坡启动。这类项目的样机测试阶段我强烈建议第一步永远是验证软启动逻辑而不是验证满功率输出。6.2 电流过零畸变的排查思路当电流环参数基本调通之后我发现输入电流波形在过零点附近有明显的削顶或抖动现象。排查过程花了我不少时间这里把可能原因列出来电感在手电电流较小时处于断续导通模式电流环增益不足以驱动电流快速建立导致过零附近死区时间相对变长。可以采用混合控制策略或在过零附近补偿死区。采样偏置电压没有校准到位。双极性电流信号经过偏置电路后如果偏置不够精确零点附近会出现台阶。建议在程序里做一次偏置校准把无电流时的采样值记录并减去。电网电压前馈与电流采样不同步。这个前面提过要保证所有采样在同一个 PWM 周期内、相同时刻完成。6.3 母线电压纹波和噪声干扰的处理样机稳定运行后我用示波器观察母线电压纹波发现 100Hz 纹波符合理论计算但叠加了不少高频尖峰。这些尖峰主要来自开关管的开关动作和母线电容的等效串联电感。简单增加电容值并不能完全解决高频噪声改善布局、减小功率回路面积、给采样信号增加 RC 滤波是更有效的办法。有一点要注意给 ADC 输入增加滤波电容会影响信号带宽必须在抗干扰和控制带宽之间取平衡。我的做法是分两级滤波一级小电容滤高频一级稍微大一点的电容滤中频截止频率设置在几十 kHz 以上保证控制环路的有效信号不受严重影响。6.4 保护功能要真的“触发”一次才算数很多人写完保护代码后不敢真的去触发过流只在仿真里验证。我的建议是在低压小功率状态下人为制造一次过流比如把电流阈值设得很低或者堵转负载观察硬件保护是否能在几个微秒内封锁 PWM。只有亲眼看到过流信号从出现到 PWM 封锁的完整过程你才对这套系统有真正的信心。我在调试中还发现CMPSS 的滤波器和滞环设置也会影响保护响应速度。滤波器设得太深保护会被延迟完全不设又容易被毛刺误触发。通常我会参考实际开关噪声的宽度来配置滤波窗口同时留一点滞环量。7. 从样机到可交付一些收尾建议项目做到这一步其实已经完成了从原理图到稳定运行的大部分工作。但如果你想让这台单相 PWM 整流器真正拿去用还有几件收尾的事值得关注。第一把 PI 参数的整定记录整理成文档注明对应的负载条件、电网电压范围和母线电压等级。换一台样机时这些参数大概率需要微调——只有保留完整的调试记录才能快速完成迁移。第二认真做一遍效率测试。单相 PWM 整流器在轻载和半载效率通常差别不小重点是测清楚开关管损耗、电感损耗和驱动电路的损耗分布这会指导你后续优化方向和散热设计。第三考虑 EMI 滤波器的预留位置。PWM 整流器的高频开关动作会产生传导干扰尤其是共模干扰。样机阶段可能不敏感但到了产品化阶段EMI 滤波器基本是必需品。最好在 PCB 布局时就把滤波器的尺寸和接口预留好避免后期重新改板。最后如果你打算在这个平台上继续扩展可以研究一下 C2000 系列配合 SFRA 工具做环路频率响应测量的方法。它能直接测量实际系统的环路增益和相位裕度比靠经验试 PI 参数高效得多。说实话我第一次用 SFRA 测出电流环的实际截止频率和设计值基本吻合时对整个方案的确定性信心提升了很多。整个项目做下来我最大的体会是单相 PWM 整流器/双闭环 PFC 并不只是一个“抄电路、调参数”的活儿真正拉开差距的地方在于——你是否理解电压环为什么必须慢、电流环为什么必须快、采样为什么必须和 PWM 同步、保护为什么必须走硬件链路。如果你能把这些问题都回答清楚那么无论换什么芯片、改什么拓扑你都能很快上手。这大概就是数字电源工程师最核心的功夫。本文还有配套的精品资源点击获取