3. SVPWM 调制原理回顾:从矢量到波形
各位同学,咱们今天聊的这部分,是后面所有过流保护技巧的基础。说白了,你要是连 SVPWM 怎么工作的都不清楚,那过流保护也就只能瞎调参数了。我个人习惯,每次带新人做电机驱动,第一件事就是让他们把 SVPWM 的矢量图默画一遍。别笑,这招真管用。
3.1 电压空间矢量:从三相到旋转
三相逆变器有六个开关管,上下桥臂互补导通。一共就 8 种开关状态——6 个非零矢量,2 个零矢量。这 8 个状态在 α-β 坐标系里一画,就是个正六边形。
我当年刚入行时,总觉得这图就是个数学游戏。直到有一次调试大功率伺服,发现电机在低速时抖得厉害。回头一查,原来是矢量合成时角度算错了。嗯,从那以后我再也不敢小看这张图了。
核心要点: 任意目标电压矢量,都可以由相邻的两个非零矢量 + 零矢量,通过时间加权合成。这就是 SVPWM 的物理本质。
3.2 扇区判断:别在这翻车
扇区判断,说白了就是看目标矢量落在六边形的哪个 60° 区间里。常用的方法是算三个中间变量:Uα、Uβ 和它们的组合值。
我见过太多人在这里出错了。有一次一个同事调试了三天,电机就是转不起来。我过去一看,扇区判断的边界条件写成了 >= 和 <= 混用,导致矢量刚好落在扇区边界时来回跳。你想想看,扇区一跳,作用时间就跟着跳,电流能不抖吗?
我的经验: 扇区判断用查表法最稳。先把 Uα、Uβ 的符号和大小关系算好,然后直接查一个 3-bit 的索引表。代码跑起来比 if-else 快,还不会漏边界。
3.3 作用时间计算:T1、T2 的来龙去脉
确定了扇区之后,就该算两个相邻矢量的作用时间了。公式其实不复杂,就是解一个二元一次方程组:
// 以扇区Ⅰ为例(U1=100, U2=110)
T1 = sqrt(3) * Ts * (U_alpha * 0.5 - U_beta * sqrt(3)/2) / Udc
T2 = sqrt(3) * Ts * U_beta / Udc
// 别忘了过调制处理
if (T1 + T2 > Ts) {
// 比例缩小
T1 = T1 * Ts / (T1 + T2);
T2 = T2 * Ts / (T1 + T2);
T0 = 0;
} else {
T0 = Ts - T1 - T2;
}
注意: 过调制处理是过流保护的第一道防线。如果 T1+T2 超过 Ts 时不处理,实际输出的电压就会畸变,电流波形直接崩掉。我在一个 7.5kW 的异步电机项目上吃过这个亏,当时电流峰值直接飙到了额定值的 2.3 倍。
3.4 七段式 vs 五段式 SVPWM
这两种方式的区别,说白了就是零矢量的插入方式不同。
| 对比项 | 七段式 | 五段式 |
|---|---|---|
| 零矢量分布 | U₀(000) 和 U₇(111) 各占一半 | 只用一个零矢量 |
| 开关次数 | 每个周期 6 次开关动作 | 每个周期 4 次开关动作 |
| 谐波特性 | 谐波集中在开关频率附近 | 谐波分布更宽,但幅值略高 |
| 开关损耗 | 较高 | 降低约 33% |
| 适用场景 | 对谐波敏感的低压小功率 | 大功率、高效率要求 |
我个人习惯,做 2kW 以下的伺服驱动用七段式,波形干净。做 10kW 以上的变频器,我倾向于五段式,散热压力小很多。有一次给客户做 30kW 的压缩机驱动,用了七段式,散热器温度飙到 85°C,换成五段式直接降到 62°C。你想想看,这差距有多大。
3.5 死区时间影响:看不见的杀手
死区时间,就是上下桥臂同时关断的那一小段时间。为了防止直通,必须加。但死区会带来两个问题:
- 电压误差: 死区期间电流通过续流二极管续流,实际输出电压偏离理想值
- 电流畸变: 尤其在电流过零点附近,死区效应最明显,会造成零电流钳位现象
我曾经在一个项目上,死区设了 3μs,IGBT 开关频率 10kHz。你算算,死区占整个周期的比例是 3%。这 3% 的误差在低速时直接导致电流波形出现了明显的「台阶」。后来我加了死区补偿,波形才恢复正常。
死区补偿的简单思路: 根据电流方向,在占空比上叠加一个修正量。电流流出桥臂时加一个正补偿,流入时加负补偿。补偿值 = 死区时间 / 开关周期 × 母线电压。
嗯,到这里 SVPWM 的基础就回顾完了。这些内容看着简单,但每一个点都跟过流保护直接相关。后面咱们讲保护策略时,你会反复用到这些概念。