2、SVPWM基础:空间矢量调制原理、扇区判断与作用时间计算、七段式与五段式SVPWM对比
聊到SVPWM,很多刚入行的朋友容易把它当成一个黑盒子。其实说白了,它就是一套让电机转得又稳又高效的电压调制方法。我刚开始接触那会儿,也觉得公式多、扇区绕,后来亲手调过几台伺服,才真正摸到门道。
2.1 空间矢量调制原理
先问个问题:为什么不用传统的SPWM,非要搞SVPWM?
SPWM是让三相电压各自正弦变化,但电机需要的是旋转磁场。SVPWM的思路更直接——我不管单相电压长什么样,我直接合成一个旋转的空间电压矢量。你想想看,这样母线电压利用率能提高15%左右,谐波也更小。
逆变器有六个开关管,上下桥臂不能直通。所以一共就8种开关状态:6个非零矢量和2个零矢量。这8个矢量在复平面上画出来,就是一个正六边形,把平面分成6个扇区。
核心思想:任意目标电压矢量,都可以用相邻的两个非零矢量和零矢量,通过时间加权合成。这就是“伏秒平衡”原则。
我在项目里见过有人直接拿SPWM的算法去驱动永磁同步电机,结果电流波形毛刺特别多。换成SVPWM之后,波形干净多了,噪音也降了几个分贝。
2.2 扇区判断与作用时间计算
扇区判断是SVPWM的第一步。怎么判断?看目标电压矢量在αβ坐标系下的分量。
我习惯用三个中间变量来判断:
// 根据 Uα、Uβ 计算三个参考值
B1 = Uβ
B2 = (√3/2)*Uα - 0.5*Uβ
B3 = -(√3/2)*Uα - 0.5*Uβ
// 扇区号 N = 4*sign(B3) + 2*sign(B2) + sign(B1)
// 其中 sign(x) = 1 当 x > 0,否则为 0
这个公式我建议你直接背下来,调参时经常要用到。扇区判断完,就该算两个相邻矢量的作用时间了。
以扇区I为例,目标矢量在U₄(100)和U₆(110)之间:
T1 = (√3 * Ts / Udc) * ( (√3/2)*Uα - 0.5*Uβ )
T2 = (√3 * Ts / Udc) * Uβ
T0 = Ts - T1 - T2
其中Ts是开关周期,Udc是母线电压。T1和T2分别是两个非零矢量的作用时间,T0是零矢量时间。
我的经验:实际代码里,T1和T2算出来之后,一定要做限幅处理。如果T1+T2 > Ts,就按比例缩小。否则过调制时电流会畸变,电机嗡嗡响。
我曾经在一个高速主轴项目上吃过这个亏。没做限幅,结果电机转速一上去,电流波形直接变形,驱动器还报了过流故障。后来加上限幅,问题就解决了。
2.3 七段式与五段式SVPWM对比
算完作用时间,接下来就是怎么安排开关序列。常见的有两种:七段式和五段式。
七段式SVPWM:每个开关周期内,从零矢量开始,经过两个非零矢量,再回到零矢量。对称排列,共七段。
五段式SVPWM:只插入一个零矢量,每个周期只有五段。说白了就是少了一段零矢量。
我画了一张对比图,你看一眼就明白了:
从图上能看出来,七段式更“对称”,谐波特性好。五段式少了一次开关动作,损耗自然就低了。
注意:五段式虽然开关损耗低,但电流纹波会大一些。如果你做的是高精度位置控制,我建议用七段式。如果是大功率、对发热敏感的场景,五段式更合适。
我做过一个对比测试:同样的电机、同样的负载,七段式SVPWM的电流THD大概在3%左右,五段式会到5%上下。但五段式的逆变器温升低了将近8度。所以选哪个,得看你的优先级。
嗯,这里还要提一句:五段式的零矢量插入方式也有讲究。你可以固定用U₀(000)或者U₇(111),也可以交替使用。交替用的谐波特性会好一些,但代码量也大一点。
最后给个实用建议:刚开始调SVPWM时,先用七段式把功能跑通。等电流环稳定了,再根据温升和噪音情况,决定要不要切到五段式。别一上来就追求极致效率,先把基础打牢。