SVPWM是FOC的基础,其实现流程大致如下所示:
1. 判断合成矢量所在扇区
2. 计算相邻矢量作用时间
3. 计算各桥臂导通时间
4. 得到各相PWM占空比
5. 更新相应寄存器值
SVPWM目标矢量是根据其所在扇区选择非零矢量与零矢量合成而成,有五段式、七段式、混合式,七段式开关次数较多,但谐波较小;五段式开关次数是七段式的一半,但谐波较大,下面的计算过程以七段式为例
1. 判断合成矢量所在扇区
合成矢量${U_{{\rm{ref}}}}$在二相坐标系$\alpha $轴和$\beta $轴的分量分别为${U_\alpha }$、${U_\beta }$(在FOC中,由反Park变换得到),由合成矢量落在各扇区的充分必要条件分析可知,可按如下方法确定合成矢量所属扇区:
令
${U_1} = {U_\beta }$
${U_2} = \frac{{\sqrt 3 {U_\alpha } - {U_\beta }}}{2}$
${U_3} = \frac{{ - \sqrt 3 {U_\alpha } - {U_\beta }}}{2}$
若${U_1} > 0$,则A = 1,否则A=0;
若${U_2} > 0$,则B = 1,否则B=0;
若${U_3} > 0$,则C = 1,否则C=0;
令 N = 4C +2B+A
N值与扇区关系对应如下:
N |
1 |
2 |
3 |
4 |
5 |
6 |
扇区 |
II |
VI |
I |
IV |
III |
V |
2. 计算各相邻矢量作用时间
令
$\left\{ \begin{array}{l}
X = A{U_\beta }\\
Y = \frac{A}{2}(\sqrt 3 {U_\alpha } + {U_\beta })\\
Z = \frac{A}{2}( - \sqrt 3 {U_\alpha } + {U_\beta })
\end{array} \right.$
$A = \frac{{\sqrt 3 T}}{{{U_{DC}}}}$,${U_{DC}}$为母线电压,$T$为合成矢量${U_{{\rm{out}}}}$作用时间
扇区 |
I |
II |
III |
IV |
V |
VI |
t1 |
-Z |
Z |
-X |
X |
-Y |
Y |
t2 |
X |
Y |
-Y |
Z |
-Z |
-X |
令
$\left\{ \begin{array}{l}
{T_a} = \frac{{T - {t_1} - {t_2}}}{4}\\
{T_b} = {T_a} + \frac{{{t_1}}}{2}\\
{T_c} = {T_b} + \frac{{{t_2}}}{2}
\end{array} \right.$
3. 计算各桥臂导通时间及占空比
扇区 |
I |
II |
III |
IV |
V |
VI |
${T_{CM1}}$ |
Ta |
Tb | Tc | Tc | Tb | Ta |
${T_{CM2}}$ |
Tb |
Ta | Ta | Tb | Tc | Tc |
${T_{CM3}}$ |
Tc | Tc | Tb | Ta | Ta | Tb |
4. 将上面计算出的${T_{CM1}}$, ${T_{CM2}}$, ${T_{CM3}}$送入单片机定时器寄存器即可产生SVPWM