空间电压矢量脉宽调制技术_SVPWM_在DSP中的实现步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空间电压矢量脉宽调制技术(SVPWM)在DSP中的实现步骤
总体空间电压矢量脉宽调制技术(SVPWM)在DSP中的实现步骤:
(1)获得SVPWM的输入信号UALFA,UBETA, UD,UQ经过IPARK变换得到输入信号UALFA,UBETA;
(2)利用输入信号UALFA,UBETA确定扇区变量P,再通过扇区变量P确定扇区Sector;
(3)利用输入信号UALFA,UBETA计算中间变量X,Y,Z,再根据不同扇区利用中间变量X,Y,Z计算t1,t2;
(4)利用t1,t2计算中间变量Taon,Tbon,Tcon,再根据不同扇区利用中间变量Taon,Tbon,Tcon,计算Ta,Tb,Tc;
(5)利用Ta,Tb,Tc计算占空比MfuncC1,MfuncC2,MfuncC3,之后再计算全比较器参数赋值CMPR1,CMPR2,CMPR3.
详细空间电压矢量脉宽调制技术(SVPWM)在DSP中的实现步骤:
(1)获得SVPWM的输入信号UALFA,UBETA;
图1 PMSM矢量控制总体框图
各位初学者应该首先明白空间电压矢量脉宽调制技术(SVPWM)的输入是电压量Ualfa,Ubeta。Ualfa,Ubeta是通过IPARK变换得到的。记住原理是原理,实践是实践,两者不同!多看看TI的例程和PDF说明文档,很有帮助!
图2 SVPWM 模块框图
(2)利用输入信号UALFA,UBETA 确定扇区变量P,再通过扇区变量P 确定扇区Sector ; 计算三个中间变量B 0,B 1,B 2:
0011221sin 60sin 3022sin 60sin 30122
B U B U B U U B U U B U U B U U β
βαβα
βαβαβ⎧⎪=⎧=⎪
⎪⎪=−⇒=−⎨⎨⎪⎪
=−−⎩⎪=−
−⎪⎩o o
o o o 在使用符号函数1
()0
x sign x x >⎧=⎨
<⎩计算扇区中间变量P 值: 2104si ()2()()P gn B sign B sign B =++
P 值与扇区号之间的对应关系为:
P 1 2 3 4 5 6 扇区号 2 6 1 4 3 5
图3 扇区变量P 与扇区SECTOR 之间关系
(3)利用输入信号UALFA,UBETA计算中间变量X,Y,Z,再根据不同扇区利用中间变量X,Y,Z 计算t1,t2;
计算三个中间变量X,Y,Z:
1
22
1
22
X U
Y U U
Z U U
β
αβ
αβ
⎧
⎪=
⎪
⎪
=+
⎨
⎪
⎪
=−+
⎪
⎩
o
根据电压矢量所在扇区确定切换时间t1,t2:
扇区号 1 2 3 4 5 6 t1 -Z Z X -X -Y Y t2 X Y -Y Z -Z -X
图4 T1,T2的波形
(4)利用t1,t2计算中间变量Taon,Tbon,Tcon,再根据不同扇区利用中间变量Taon,Tbon,Tcon,
计算Ta,Tb,Tc;
12
1
2
(1)/2
(0~1)
aon
bon a
con b
T t t
T T t
T T t
=−−
⎧
⎪
=+
⎨
⎪=+
⎩
,
图5 Taon ,Tbon 的波形
(5)利用Ta,Tb,Tc 计算占空比MfuncC1,MfuncC2,MfuncC3,之后再计算全比较器参数赋值CMPR1,CMPR2,CMPR3.
则不同扇区内切换点T a ,T b ,T c 可有下表得到:
(0.5)*2(0.5)*2(1~1)(0.5)*2
a a
b b c
c T T T T T T =−⎧⎪
=−−⎨⎪=−⎩ 范围改变
EvaRegs.CMPR1 = (Uint16)(MfuncC1*Modulation*T1Period/2+T1Period/2);//A 相占空比计算,
调制比Modulation =0.95
EvaRegs.CMPR2 = (Uint16)(MfuncC2*Modulation*T1Period/2+T1Period/2);//B 相占空比计算 EvaRegs.CMPR3 = (Uint16)(MfuncC2*Modulation*T1Period/2+T1Period/2);//B 相占空比计算
图6 Ta,Tb的波形
本文主要基于TI公司C2000系列F2812例程中的说明文件svgen_dq.pdf编写而成,主要是帮助SVPWM初学者。如有错误或者修改的地方,或者疑问,请联系QQ:546847771
主要讲解技术,非诚勿扰!
具体程序如下:
//=============================================================================== //计算Sine,Cosine,用于IPARK变换
//=============================================================================== i++;
i=0;
if(i>256)
Sine = sin(6.2831853*i/256);
Cosine = cos(6.2831853*i/256);
//=============================================================================== //IPARK变换:UD,UQ==>UALFA,UBETA
//=============================================================================== UALFA=Cosine*UD-Sine*UQ;
UBETA=Sine*UD+Cosine*UQ;
//=============================================================================== //SVPWM算法实现,首先通过UALFA,UBETA确定扇区变量P
//=============================================================================== B0=UBETA;
B1=0.8660254*UALFA-0.5*UBETA;
B2=-0.8660254*UALFA-0.5*UBETA;