4. 三相逆变器与PWM调制原理

三相逆变器的本质,是用六个功率开关把直流母线电压“切”成三路相位互差120°的交流电压。无论采用SPWM还是SVPWM,最终都要落到ePWM模块的比较寄存器、死区子模块和动作限定器上。理解这条从“调制算法”到“寄存器波形”的链路,是C2000电机控制开发的核心基本功。

一、从正弦调制到空间矢量:两种看待同一件事的方式

SPWM的思路直观:把三相正弦调制波分别与三角载波比较,得到三路占空比按正弦规律变化的PWM。设调制比 m = Vref/(Vdc/2),线电压基波幅值最大为 0.866·Vdc(m=1时),直流电压利用率偏低。

SVPWM换了一个视角:把三相桥臂的8种开关状态(000~111)映射到α-β平面,得到6个有效矢量(V1~V6,幅值 2Vdc/3)和2个零矢量(V0、V7)。任意参考电压矢量 Vref 由相邻两个有效矢量和零矢量在一个PWM周期 Ts 内合成,即伏秒平衡:

T1 = √3·Ts·|Vref|/Vdc · sin(60° − θ)
T2 = √3·Ts·|Vref|/Vdc · sin(θ)
T0 = Ts − T1 − T2

其中θ为 Vref 在当前扇区内相对起始矢量的角度。SVPWM的线性调制区可达内切圆半径 Vdc/√3,线电压基波幅值最大为 Vdc,比SPWM高出约15.5%。这正是电机驱动普遍采用SVPWM的原因。

SVPWM 扇区 I 矢量合成与七段式对称波形 α-β 平面矢量合成 Vref θ V1(100) V2(110) V6 V5 V4 V3 V0/V7 T1·V1 + T2·V2 + T0·(V0/V7) = Ts·Vref 七段式对称 PWM(中心对齐) t 0 T0/4 T1/2 Ts/2 T2/2 T0/4 Ts V0 V1 V2 V2 V1 V7 A B C 对称轴

二、死区插入:防止直通,但会带来电压畸变

同一桥臂上下管绝不能同时导通,否则直流母线经两管短路,瞬间烧毁器件。因此必须在关断信号与开通信号之间插入死区时间 Tdb。以C2000的ePWM为例,死区由DB子模块产生:DBCTL[OUT_MODE]选择A/B两路是否都加死区,DBCTL[POLSEL]选择极性,DBRED/DBFED分别设置上升沿与下降沿延时,计数单位为 TBCLK。

死区带来的副作用是输出电压偏差。以A相电流流出桥臂为正方向,当电流为正时,下管续流期间输出被钳到负母线,实际占空比被“吃掉”一段;电流为负时则相反。平均误差电压近似为:

ΔV ≈ −sign(i_A) · (Tdb / Ts) · Vdc

在低速小占空比时,这个误差占比很大,会造成电流波形过零畸变和转矩脉动。工程上常用死区补偿:根据相电流方向,在调制波上叠加一个与 Tdb/Ts·Vdc 对应的补偿量。补偿时要注意电流过零点的抖动,通常加一个滞环或对补偿量做低通平滑,避免在零点附近来回切换。

三、最小脉宽限制:窄脉冲既发不出也采不到

当调制波接近峰值或谷值时,计算出的脉宽可能只有几十纳秒。这样的窄脉冲会遇到两个问题:一是驱动芯片和功率管根本来不及响应,实际输出与理论不符;二是ePWM的比较事件可能被后续事件覆盖,导致脉冲丢失。因此需要设置最小脉宽 Tmin,典型取值与驱动电路传输延时和开关时间有关,例如 0.5~1 μs。

处理方式通常有两种:一是脉宽小于 Tmin 时直接删除该脉冲(窄脉冲消除);二是把脉宽强制拉宽到 Tmin,同时把多出的时间从同周期其他矢量中扣除,保持伏秒平衡。C2000的ePWM没有硬件最小脉宽单元,需要在软件中通过比较值限幅实现,例如:

// 以TBPRD为周期,CMPA为比较值
if (cmpA < MIN_CMP) cmpA = MIN_CMP;
if (cmpA > TBPRD - MIN_CMP) cmpA = TBPRD - MIN_CMP;

四、ePWM模块配置要点

把上述算法落到寄存器,关键是理清各子模块的分工。时基TB设定载波周期与计数模式,电机驱动一般用增减计数(中心对齐),这样PWM谐波更优、电流采样点可放在计数器过零处。计数频率与周期关系为:

TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
Ts = 2 × TBPRD / TBCLK   (增减计数模式)

例如SYSCLKOUT=100 MHz,HSPCLKDIV=1,CLKDIV=1,要得到10 kHz载波,则 TBPRD = 100e6/(2×10e3) = 5000。

比较子模块CC设置CMPA/CMPB,动作限定器AQ根据ZRO、PRD、CAU、CAD事件决定EPWMxA/EPWMxB的置位与清零。七段式SVPWM通常让EPWMxA在CAU置高、CAD清零,EPWMxB在CAU清零、CAD置高,形成互补。死区DB再对这对互补信号插入 Tdb。事件触发ET可选择在计数器过零或周期处产生ADC启动信号,保证采样时刻与PWM同步。中断则用于在每个PWM周期更新下一周期的比较值。

配置顺序建议:先设TB确定周期与计数模式,再设CC初值,然后配AQ动作,接着配DB死区,最后开ET与中断。调试时先用固定CMPA观察EPWMxA/B波形与死区,确认无误后再接入SVPWM算法输出。

五、一个可对照的配置示例

以三相逆变、载波10 kHz、死区1 μs、最小脉宽0.6 μs为例,关键参数如下表。表中数值为教学示例,实际项目需按器件手册和驱动电路调整。

参数取值说明
SYSCLKOUT100 MHz系统时钟
TBPRD5000对应10 kHz中心对齐载波
计数模式增减计数中心对齐,谐波更优
DBRED/DBFED100 / 100TBCLK=100 MHz时对应1 μs
最小比较值60对应0.6 μs最小脉宽
ADC触发ZRO事件计数器过零启动采样

验证时,用示波器同时观察EPWMxA与EPWMxB:两者应为互补关系,且上升沿与下降沿之间有明显死区;改变CMPA,占空比应线性变化;把CMPA设到接近0或TBPRD,应能看到最小脉宽限幅生效,脉冲不会消失。若发现死区不足或互补关系异常,优先检查DBCTL的OUT_MODE与POLSEL配置,以及AQ的动作事件是否与计数方向匹配。

SPWM与SVPWM在ePWM层面的差别,主要在于比较值的计算方式:SPWM直接由三相正弦查表或计算得到CMPA,SVPWM则先判断扇区、算T1/T2/T0,再折算成三路比较值。两者共用同一套TB、AQ、DB配置,因此掌握一套ePWM配置流程,就可以在两种调制方式之间切换验证。