DSP2802X开发板六种电源拓扑的电压模式控制实战解析
2026/9/16 7:29:59 网站建设 项目流程

简介:面向电力电子与嵌入式开发者的DSP数字电源开发板资源,基于TI TMS320F28027控制器,覆盖降压、升压、升降压、半桥LLC、全桥LLC及移相全桥电压/电流模式等主流电源拓扑,并配套PID与多零极点环路补偿实现代码,适合电源工程师、研究生及DIY爱好者进行原理验证与算法移植。资源包共2000个文件,其中C源码与H头文件合计超过1600个,构成完整工程框架;另有百余个PDF文档及少量辅助脚本与配置,可兼顾代码阅读与文档查阅;整体约87.62MB。压缩包含大量可编译的示例工程,便于直接导入CCS开发环境进行仿真调试,也可作为二次开发的基础模板,目录结构按功能模块组织,方便对照学习。目前已有117人学习下载,适合需要快速上手F28027数字电源开发,或对比不同拓扑实现细节的进阶学习者。

1. 一块 DSP2802X 开发板为什么值得同时谈六种拓扑

TMS320F28027 是一颗 60MHz 的 C2000 小芯片,数字电源开发板选它,不是因为算力,而是因为 ePWM、ADC、比较器子系统刚好覆盖从 Buck 到 LLC 的全部信号需求。标题里的升压、降压、升降压、半桥 LLC、全桥 LLC、移相全桥电压模式,本质是同一套外设在三种调制方式下的组合:前三个用固定频率下的占空比调制,LLC 用变频率的 PFM,移相全桥把控制量换成两腿之间的相位差。电压模式意味着只有输出电压一个反馈量,没有内环电流环,入门最友好,也会在 LLC 和 PSFB 上暴露带宽与稳定性的真实约束。这块板适合两类人:从 UC3842、TL494 等模拟方案转数字电源的工程师,想在一套硬件上看清六种拓扑的差异;以及需要快速验证拓扑选型和环路策略的预研工程师。

2. TMS320F28027 的外设底牌:ePWM、ADC 与比较器怎么分工

2.1 为什么这颗芯片不靠主频吃饭

F28027 的 CPU 是 60MHz C28x,配 128KB Flash 和 12KB SRAM,这个配置放在今天的 MCU 市场里毫不起眼。但 60MHz 主频对数字电源完全够用,原因在于 60MHz 时基下,200kHz 开关周期有 300 个时钟周期,完成一个带保护逻辑的 2P2Z 补偿器运算只需 30~50 个周期,剩下的时间可以跑软启动状态机、模式切换和通信。真正的瓶颈从来不是算力,而是三个问题:采样时刻是否与开关沿对齐,PWM 更新是否在同一周期生效,故障保护是否不经过 CPU 直接动作。

C2000 的 ePWM 模块把这些问题用硬件解决了。时基、比较、动作限定、死区、事件触发五段逻辑链路上,ADC 转换可以由 ePWM 事件直接启动,比较器输出又可以绕过 CPU 直接拉死区后的 PWM 输出。CPU 每周期只做一件事:算一个新的占空比、频率或相位,写进对应的寄存器。这颗芯片的定位就是“数学运算单元加可配置外设”,而不是通用 MCU。

2.2 ePWM 的五个寄存器组与六种拓扑的映射

F28027 有 4 个 ePWM 模块、8 路输出。每个模块由时基 TB(TBPRD 周期、CTRMODE 计数模式)、计数比较 CC(CMPA/CMPB)、动作限定 AQ(计数到指定值输出拉高或拉低)、死区 DB(上升沿延迟 RED、下降沿延迟 FED)、事件触发 ET(产生中断和 ADC 启动信号)组成,外加一个 Trip Zone 用于故障关断。

拓扑使用模块调制方式每周期更新的量是否变频率死区
降压 / 升压ePWM1占空比CMPA同步整流互补
四开关升降压ePWM1 + ePWM2占空比两个 CMPA两腿分别互补
半桥 LLCePWM1PFMTBPRD + CMPA互补,死区固定
全桥 LLCePWM1 + ePWM2PFM两个 TBPRD + CMPA两腿互补
移相全桥ePWM1 + ePWM2相移TBPHS两腿互补

这张表说明了一件事:六种拓扑没有一种需要外挂 PWM 芯片,差别只在“每周期更新哪个寄存器”。LLC 改 TBPRD,PSFB 改 TBPHS,Buck 改 CMPA,其余配置在初始化时一次性写好。这也是这类开发板能把这么多拓扑放进同一块 PCB 的根本原因——功率级是独立子板,控制板只需要保留 PWM 输出、ADC 反馈和故障输入三类信号。

2.3 ADC 采样点由 ePWM 决定,不是想起就起

电压模式的反馈只有 Vout 一个量,采样质量直接决定环路能跑多高带宽。F28027 的 12 位 ADC 最高 4.6MSPS,放在开关电源里真正的约束不是转换速率,而是采样时刻与开关噪声的相位关系。同步 Buck 的开关沿上有 dv/dt 高达几十 V/µs 的 SW 节点,噪声会通过地弹和寄生电容灌进采样保持电路,采到沿上的电压值可能偏差几个 LSB。

正确做法是把 ADC 启动事件(SOC)绑定到 ePWM 的周期匹配或比较匹配上。周期匹配靠近开关周期末尾,比较匹配可以用 CMPB 自由摆放在远离两个开关沿的窗口内。推荐用 CMPB 做 SOC 源,把 CMPB 值设在死区结束后、关断沿之前的位置,这样采样点既避开了开通振铃,又避开了关断尖峰。ISR 建议由 ADC 转换完成中断(ADCINT)触发,而不是 ePWM 中断里读旧结果——差一个周期在电压模式里就是一次可见的过冲。

2.4 最小可运行的 ePWM 初始化代码

// ePWM1:同步降压,400kHz,60MHz SYSCLK 不分频 EPwm1Regs.TBSTS.bit.SYNCIEN = 0; // 不用同步输入 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 周期影子加载,零事件生效 EPwm1Regs.TBPRD = 150; // 60MHz / 400kHz = 150 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 升计数,占空比调制 EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // TBCLK = 60MHz EPwm1Regs.CMPA.bit.CMPA = 75; // 初始 50% 占空比 EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 升计数到 CMPA 拉高 EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 到周期拉低 // 死区:互补输出,上升沿和下降沿各延迟约 416ns EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // EPWM1B 与 A 互补 EPwm1Regs.DBRED = 25; EPwm1Regs.DBFED = 25; // ADC 触发:周期事件启动 SOCA,每个周期一次 EPwm1Regs.ETSEL.bit.SOCAEN = 1; EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD; EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST;

这里每个参数都有实际含义:TBPRD 决定开关频率,CMPA 决定占空比,PRDLD 用影子加载保证占空比不会在一个周期内跳变,DBRED/DBFED 共同决定死区时间,SOCASEL 选周期事件是为了让 ADC 转换与开关周期严格同步。把这段代码改几个寄存器,就能变成 LLC 或移相全桥的 PWM 初始化:LLC 把 CTRMODE 保持升计数但每周期改 TBPRD,PSFB 把 CTRMODE 改成 up-down 并增加一个从模块。

2.5 比较器子系统:不需要 CPU 的逐周期保护

F28027 内部有 3 个模拟比较器,每个带一个 10 位内部 DAC 做参考电压。比较器输出直接接到 Trip Zone 输入,可配置成逐周期限流(cycle-by-cycle)或锁存关断(one-shot)。对电压模式来说,这是比任何软件保护都可靠的兜底:LLC 启动瞬间的谐振电容充电电流、PSFB 的变压器偏磁电流、Buck 的电感饱和,全部可以在 100ns 内让 PWM 输出强制为安全电平。ISR 只做控制运算,保护路径完全由硬件完成,这是数字电源和“单片机做电源”最本质的区别。

3. 降压、升压、升降压:电压模式闭环的最小软件框架

3.1 电压模式的 2P2Z 补偿器

电压模式的受控对象是“占空比到输出电压”的传递函数。Buck 是二阶 LC 滤波,Boost 和 Buck-Boost 在二阶基础上多一个右半平面零点(RHPZ),这是三种拓扑必须用不同补偿参数的核心原因。数字实现最常见的是 2P2Z 补偿器,它是模拟 Type-III 的离散化形式:两个零点补偿 LC 谐振峰,一个积分消除稳态误差,一个高频极点压制开关纹波。

// 2P2Z 补偿器:输出 u(n) = b0*e(n)+b1*e(n-1)+b2*e(n-2)-a1*u(n-1)-a2*u(n-2) static float x1=0, x2=0, y1=0, y2=0; // 以下系数为 400kHz 采样率、穿越频率 25kHz、相位裕量 50° 的示例值 const float b0 = 0.42f, b1 = -0.31f, b2 = 0.08f; const float a1 = -1.42f, a2 = 0.49f; float compensator(float err) { float out = b0*err + b1*x1 + b2*x2 - a1*y1 - a2*y2; x2 = x1; x1 = err; // 更新误差历史 y2 = y1; y1 = out; // 更新输出历史 return out; }

注意差分方程里 a1、a2 前面是负号,这是控制理论的约定写法,很多刚转数字电源的工程师在这里少写一个负号导致环路正反馈。系数来源是连续域补偿器的双线性变换,实际调试不要照抄示例值,应该先在用 Mathcad 或 Python 画出的开环 Bode 图上验证穿越频率和相位裕量,再进板子做阶跃测试。Buck 的穿越频率可以取 1/10 开关频率,Boost 和 Buck-Boost 受 RHPZ 限制只能取 1/20 到 1/30。

3.2 ISR 里的完整闭环:采样、补偿、限幅、更新

__interrupt void ADCINT1_ISR(void) { // 1. 读取 ADC 结果并换算回实际电压(分压比 10.5) float vout = (float)AdcResult.ADCRESULT0 * 3.3f / 4096.0f * 10.5f; // 2. 误差与补偿 float err = vref - vout; float duty = compensator(err); // 3. 限幅,防止占空比越界和积分饱和冲击 if (duty > 0.92f) duty = 0.92f; if (duty < 0.05f) duty = 0.05f; // 4. 换算成 CMPA,影子寄存器会在下一周期零事件统一生效 EPwm1Regs.CMPA.bit.CMPA = (uint16_t)(duty * (float)EPwm1Regs.TBPRD); PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 响应 PIE 组 1 }

整个 ISR 的核心在于“采样—计算—写寄存器”的顺序不能乱。vref 是目标电压对应的数字量,duty 限幅的上下限不是随便给的:下限 0.05 是为同步整流死区留余量,防止占空比太小导致电感电流断续时负电流失控;上限 0.92 是保护续流二极管反向恢复和电感斜率。CMPA 影子寄存器保证了同一个周期内占空比不会跳变两次,所以 ISR 里直接赋值即可,不需要额外的同步代码。ISR 由 ADCINT1 触发,说明 ADC 转换已经完成,读到的 ADCRESULT0 是本次开关周期的真实反馈,而不是上一个周期的旧值。

提示:调试时先用固定占空比开环跑,验证 Vout 与 Vin×D 的理论关系,再启用补偿器。直接上闭环,一旦补偿器符号反了就是一次炸管。

3.3 从 buck 到 boost:受控对象变了,系数就得换

Boost 的占空比到输出电压的小信号传函里有一个右半平面零点,频率约等于 (1-D)²·R/(2πL)。以 12V 输入、24V 输出、L=10µH、负载 4Ω 为例,D=0.5 时 RHPZ 频率只有 1.6kHz。RHPZ 的物理意义是:占空比增大时,电感储能时间变长,输出在头几百纳秒反而会被“抽走”能量,电压先跌后升。环路带宽高于 RHPZ 频率,负载突变时就表现为持续振荡。所以 Boost 的电压环带宽只能取 2~5kHz,补偿器用“一个零点加一个超前环节”而不是 Buck 的双零点。

代码框架完全不用动,只换 b0~a2 系数。F28027 的 Flash 足够放 3~4 组系数表,用模式枚举索引即可。切换拓扑时最重要的不是改 PWM,而是复位补偿器状态变量(x1=x2=y1=y2=0),否则上一模式的积分项会带着新模式跑,启动瞬间直接顶到限幅值。

3.4 四开关升降压:模式切换的滞环与相位关系

四开关 Buck-Boost 是标题里“升降压”最常见的实现:Q1/Q2 构成降压腿,Q3/Q4 构成升压腿。电压模式下的工作区域按输入输出电压关系划分:

区域判定条件开关动作
Buck 区Vin > Vout + 1VQ1/Q2 斩波,Q3 常通,Q4 常断
过渡区|Vin - Vout| ≤ 1V两腿同时斩波,占空比保持 50% 附近
Boost 区Vin < Vout - 1VQ3/Q4 斩波,Q1 常通,Q2 常断
typedef enum { MODE_BUCK, MODE_TRANS, MODE_BOOST } Mode; Mode mode_select(float vin, float vout) { if (vin > vout + 1.0f) return MODE_BUCK; if (vin < vout - 1.0f) return MODE_BOOST; return MODE_TRANS; }

1V 的滞环是为了防止输入电压缓慢变化时模式在两个边界来回抖。模式切换瞬间占空比可能从 0.8 跳到 0.2,所以检测到模式变化后要先复位补偿器状态,再做寄存器切换。过渡区有另一个坑:两腿同时斩波时,如果 ePWM1 和 ePWM2 相位相同,电感纹波电流叠加;把 ePWM2 通过 TBPHS 配置成与 ePWM1 反相 180°,纹波频率翻倍、幅值减半,这是 F28027 同步链上只需要写一行相位寄存器就能解决的硬件问题。

4. 半桥 LLC 与全桥 LLC:把占空比调制换成 PFM

4.1 LLC 谐振变换器工作原理:频率就是控制量

LLC 拓扑结构里的关键元件是三个:谐振电容 Cr、谐振电感 Lr、励磁电感 Lm。Cr 和 Lr 串联后接入变压器原边,Lm 与变压器并联,由此形成两个谐振频率:Lr 与 Cr 的串联谐振频率 fr,以及 Lr+Lm 与 Cr 的串联谐振频率 fm,且 fm < fr。开关频率在 fr 附近时增益接近 1,效率最高;频率高于 fr 时增益小于 1,适合降压;频率落在 fm 与 fr 之间时增益大于 1,原边实现 ZVS、副边实现 ZCS。LLC 电路的输出调节不靠占空比,而是靠频率移动增益曲线上的工作点——轻载升频降压、重载降频升压,这就是“PFM”的本质。

LLC 和反激、普通 DC-DC 的选型分界其实很清晰:300W 以下反激的成本优势明显,但软开关和窄频率变化范围让 LLC 在 300W 到 3kW 区间同时拿到了效率和 EMI 两个优势。很多数字电源板卡的完整方案是前级 PFC 后级 LLC,但这块板的定位是后级变换器验证平台,PFC 母线稳定之后,LLC 输入电压基本恒定,环路设计会简单很多。半桥 LLC 适合 100~500W,全桥 LLC 适合 500W~3kW,两者在控制代码上的差别远比功率级小。

4.2 半桥与全桥的 PWM 配置差异

半桥 LLC 只需要一个 ePWM 模块的两路互补输出,固定 50% 占空比加固定死区,Q1/Q2 交替导通,变压器原边电压在 0 和 Vin 之间摆动。全桥 LLC 需要两个 ePWM 模块四路输出,ePWM2 作为 ePWM1 的同步从模块且相位差为 0,Q1/Q4 同时导通、Q2/Q3 同时导通,原边电压在 ±Vin 之间摆动,因此同样输入下全桥输出的能量翻倍。

对比项半桥 LLC全桥 LLC
开关管数量24
原边电压摆幅0 ~ Vin±Vin
变压器利用率半波励磁全波励磁
适用功率100~500W500W~3kW
PWM 资源ePWM1A/BePWM1 + ePWM2 同步
// 全桥 LLC:ePWM1 与 ePWM2 同相同频,四路输出互补 50% EPwm1Regs.TBPRD = 600; // 100kHz EPwm1Regs.CMPA.bit.CMPA = 300; // 固定 50% // ePWM1 A/B 的动作限定与死区配置与 2.4 节相同 EPwm2Regs.TBSTS.bit.SYNCIEN = 1; // 使能同步输入 EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // 同步脉冲继续向后转发 EPwm2Regs.TBCTL.bit.PHSEN = 1; // 使能相位加载 EPwm2Regs.TBPHS.bit.TBPHS = 0; // 与 ePWM1 同相

PHSEN 置 1 后,ePWM2 每次收到 ePWM1 的同步脉冲就把 TBPHS 装入自己的时基计数器,TBPHS=0 表示完全同相。SYNCOSEL 设为 TB_SYNC_IN 表示同步脉冲直接透传,板上如果还有第三个电源模块就要靠这一位。全桥的对角导通关系由 PCB 网表决定,常见接法是 Q1、Q4 分别由 ePWM1A 和 ePWM2B 驱动,Q2、Q3 由 ePWM1B 和 ePWM2A 驱动。移植代码后第一件事是核对网表,全桥 LLC 烧管多半不是因为控制逻辑错,而是对角管被接成了同臂管。

4.3 PFM 频率更新的精度与软启动

LLC 的频率调制在 F28027 上就是改 TBPRD。60MHz 时基下,100kHz 对应 TBPRD=600,每个 LSB 对应约 166Hz;1MHz 时对应 TBPRD=60,每个 LSB 对应约 16.7kHz,频率分辨率急剧恶化。所以 LLC 板卡的开关频率一般控制在 100~300kHz,不往上冲。改 TBPRD 时必须同步改 CMPA,把 CMPA 设为 TBPRD/2 才能维持 50% 占空比,漏改这一行,变压器原边就会出现直流偏置。

// LLC 软启动:从 1.8 倍谐振频率逐周期降到谐振频率 #define LLC_FR 100000.0f // 谐振频率 100kHz #define LLC_FSTART 180000.0f // 启动频率 180kHz static float f_cur = LLC_FSTART; void llc_softstart(void) { f_cur -= 500.0f; // 每周期降 500Hz if (f_cur < LLC_FR) f_cur = LLC_FR; // 到达谐振频率即完成 uint16_t prd = (uint16_t)(60.0e6f / f_cur); EPwm1Regs.TBPRD = prd; EPwm1Regs.CMPA.bit.CMPA = prd / 2; // 保持 50% 占空比 EPwm2Regs.TBPRD = prd; // 从模块周期跟随 EPwm2Regs.CMPA.bit.CMPA = prd / 2; }

每周期 500Hz 的步进在 100kHz 下约 160 个周期完成软启动,实际使用会把这个步长改成“每 8 个周期降一次”,把启动过程拉长到 10~50ms,配合输出电容的充电斜率。ePWM2 的 TBPRD 必须和 ePWM1 一起更新,否则全桥变成两腿不同频,变压器立即偏磁。轻载时 LLC 需要 burst 模式,F28027 上不必改硬件:利用动作限定器的软件强制位 AQSFRC 把两路输出拉低 N 个周期再恢复,burst 进入阈值一般设在输出电压纹波的 1~3% 以内。

4.4 LLC 电压模式闭环:注意符号与带宽

LLC 电压环的输出是频率,调节方向与 Buck 相反:输出电压偏高时升频、增益下降、电压回落,所以补偿器输出直接加在频率上,符号是正的。带宽只能取 1~3kHz,因为 LLC 谐振网络本身是一个二阶系统,在 fr 附近增益曲线陡、相频特性变化剧烈,带宽推高很容易让相位裕量掉到 30° 以下。PI 就够用,比例项增益别超过 5,积分项负责消除稳态误差。启动阶段必须加“软启动完成”标志位,完成前闭环输出不写 TBPRD,否则软启动和电压环同时抢频率指令,输出电压会出现一个先冲高再回落的台阶。

5. 移相全桥电压模式:TBPHS 相位调制与偏磁防护

5.1 相位差就是等效占空比

移相全桥的四个开关都工作在固定频率、50% 占空比,控制量是两腿之间的相位差 θ。设 ePWM1 的腿为参考腿,ePWM2 的腿延迟 θ,变压器原边电压在 θ 对应的区间内为正脉冲、在半周期后为负脉冲,正脉冲宽度恰好等于 θ。因此有效占空比 D_eff = θ/180°,θ 从 0 到 180° 变化,输出从 0 到满载。电压模式在这里的含义非常直接:Vout 环路算出一个相位角,写进从模块的 TBPHS。

PSFB 有一个原生缺陷叫占空比丢失。原边漏感 Lk 的电流换向需要时间,这个时间内副边整流管虽然导通但变压器原边没有能量传递,所以副边实际占空比小于 θ/180°。估算公式是 ΔD ≈ 4·Lk·f_s·I_o/(n·V_in),负载越重、频率越高、输入越低,丢失越严重。设计时最大相位不要推到 170°,留出 5~10° 的裕量给占空比丢失,否则重载时输出电压会提前进入平台区。

5.2 ePWM 主从同步与 TBPHS 的换算

PSFB 在 F28027 上的标准做法:ePWM1 为主模块输出参考腿,ePWM2 为从模块输出移相腿,两个模块都配置成 up-down 计数模式。ePWM1 每到零发同步脉冲,ePWM2 收到后把 TBPHS 装入时基计数器并从该值开始计数,等效于移相腿的零点相对参考腿延迟了 TBPHS 个时基周期。up-down 模式下完整开关周期是 2×TBPRD,所以相位角 θ = TBPHS / TBPRD × 180°。

// 移相全桥:ePWM1 参考腿,ePWM2 移相腿,up-down 模式 EPwm1Regs.TBPRD = 300; // 100kHz,60MHz TBCLK EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // 回零拉高 EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 到周期拉低,即 50% 占空比 // ePWM1 的死区配置同 2.4 节 EPwm2Regs.TBPRD = 300; EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm2Regs.TBSTS.bit.SYNCIEN = 1; EPwm2Regs.TBCTL.bit.PHSEN = 1; EPwm2Regs.TBPHS.bit.TBPHS = 0; // 初始零相位 EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR; // ePWM2 的死区配置不能省,滞后腿同样需要互补死区

闭环更新在 ISR 里做,核心是 TBPHS 的换算和限幅:

float theta_deg = psfb_pi(vout); // 电压环输出:相位角 // 相位下限 5° 保证超前腿有足够 ZVS 换流时间,上限 170° 给占空比丢失留裕量 if (theta_deg < 5.0f) theta_deg = 5.0f; if (theta_deg > 170.0f) theta_deg = 170.0f; uint16_t phase = (uint16_t)(theta_deg * (float)EPwm1Regs.TBPRD / 180.0f); EPwm2Regs.TBPHS.bit.TBPHS = phase;

TBPHS 的值在下一个同步事件到来时才会被装入计数器,所以 ISR 里随时随地写都是安全的,不存在写一半导致的毛刺。真正要算清楚的是相位分辨率:100kHz 时 TBPRD=300,相位 LSB 为 0.6°,轻载稳压完全够用;300kHz 时 TBPRD=100,相位 LSB 变成 1.8°,输出电压步进会明显变粗。这是选开关频率之前就要做的算术题,不是调不出来才回来改频率。

注意:移相腿的死区时间和参考腿必须一致,并且 TBPHS 的最小值要大于死区时间对应的角度,否则两腿相位差小于死区时,次级会出现直通窗口。

5.3 两腿 ZVS 难度不同

PSFB 的两条腿换向条件完全不对等。参考腿换向时变压器原边电流正值负载电流,能量足够把开关管结电容充放电完成,ZVS 容易实现。移相腿换向时变压器处于续流状态,原边电流只剩下环流分量,轻载时这个电流很小,结电容来不及放完电管子就开通了,ZVS 丢失。F28027 层面能做的调整很有限:一是把死区时间按 2·Coss·Vin/Ipk 估算后适当放宽,二是用副边同步整流减小反射电流的畸变,三是接受轻载硬开关、用 burst 模式绕过最恶劣的工作点。占空比丢失和 ZVS 之间本身就是一对矛盾,调参时不要试图同时优化两个指标。

5.4 偏磁问题与电压模式的数字防护

变压器偏磁是移相全桥电压模式的头号可靠性问题。相位不对称、开关管导通压降不一致、驱动延迟差异都会造成原边正负伏秒不等,励磁电流的直流偏置逐周期累积,最终变压器饱和。硬件上最有效的兜底是原边串联隔直电容,软件上可以做三层:第一层把原边电流接入 F28027 比较器,正负阈值各设一个,超限立即 trip;第二层用 ADC 周期性采原边电流,计算直流分量,超过额定值 0.5% 就向反方向修正相位;第三层是把相位更新的低通滤波时间常数调大,防止环路抖动被直接映射成偏磁。前两层是必须的,第三层只是锦上添花。

6. 上电前的验证顺序与三个容易翻车的参数

6.1 先算三个分辨率,再写环路

写任何控制代码之前,先把三个数算出来:占空比分辨率、频率分辨率、相位分辨率。它们都由 60MHz 时基和开关频率决定:

开关频率TBPRD(升计数)TBPRD(up-down)占空比 LSB相位 LSB
100kHz6003000.17%0.6°
200kHz3001500.33%1.2°
400kHz150750.67%2.4°

相位 LSB 到 2.4° 时,轻载输出电压步进可能超过规格要求,此时要么降频,要么换带 HRPWM 的 C2000 型号。这个决定要在画 PCB 之前做,因为 LC 参数和变压器匝比都依赖开关频率。

6.2 开环到闭环的五步验证

  1. 用示波器看开关节点波形,确认频率、死区、上升沿位置与配置一致;对 LLC 和 PSFB 要同时看两腿波形,确认同步关系。
  2. 用 GPIO 翻转法验证 ISR 执行时刻:在 ISR 开头翻转一个 GPIO,示波器确认该翻转沿落在开关沿之后至少一个死区时间,否则 ADC 采样点需要调整。
  3. 开环固定控制量跑起来,手动给占空比、频率或相位,看 Vout 是否符合理论关系,例如 Buck 的 Vout=Vin×D,PSFB 的 Vout=Vin×θ/180°×n。
  4. 闭环先给一半设计带宽的系数,用电子负载做 25% 和 50% 阶跃,看恢复时间和阻尼,不应出现持续振荡。
  5. 保护测试:短路输出,确认 Trip Zone 响应后开关管电流被限制在设定值,比较器阈值先用 120% 额定电流,再逐步收紧。

6.3 三个翻车参数

死区时间。LLC 和 PSFB 的死区不是越小越好,按 2·Coss·Vin/Ipk 估算起步,Buck 同步整流的死区过大会让电感电流反向、出现过大的负电流,过小则直通。F28027 的 DBRED/DBFED 以 TBCLK 周期为单位,改频率时必须同步检查死区对应的度数是否变化。

ADC 采样点距离开关沿太近。开关噪声能在几个纳秒内灌进采样保持电容,F28027 的 ADC 没有片内抗混叠滤波器,唯一防线就是采样时刻。用 CMPB 做 SOC 源,把采样点摆到死区结束后 500ns 开外。

积分饱和。电压模式在启动瞬间误差很大,2P2Z 或 PI 输出会顶到限幅值,限幅后若不处理,误差继续累积,恢复稳态时会产生几十毫秒的过冲。抗饱和的标准做法是:输出达到限幅时停止积分项更新,即把误差清零再进补偿器,而不是简单截断输出。

最后给一个所有拓扑通用的验证技巧:用两路 GPIO 引出 ePWM 波形,不接功率级直接在 5V 逻辑下用示波器测两腿相位,θ = Δt·f·360° 换算后与 TBPHS 设置核对,这一条确认无误后再上万伏级母线,能省掉半小时的炸管排查时间。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询