本文是通过软件编程实现SVPWM算法,并将各扇区有效矢量T1,T2,和T0+T7无效矢量作用时间通过DAC转换输出马鞍波,可以更加深刻理解SVPWM算法的实现过程(基于GD32E508芯片)。
1.实现步骤
SVPWM波基波频率设定f为1Hz,旋转实时角度为23.141*t 时间t的步长为0.001,即每隔1ms更新一次旋转角度,1s为一个周期,一个周期1000个采样点
1、移植arm自带DSP库,使能FPU运算;
2、通过给定旋转坐标系直流电压Vd、Vq通过park逆变换得到正交的两相交流正弦电压Ua、Ub;
3、判断Ua、Ub大小判断扇区1/2/3/4/5/6,计算各扇区有效矢量T1,T2 ,无效矢量T0,T7作用时间。
4、各扇区有效矢量T1,T2,无效矢量T0,T7(实则为三相逆变电路三对mos管各下管导通时间,T1+T2+T0+T7的和为SVPWM三角波载波的周期T)。
5、将T1,T2,T0+T7通过DAC转换输出SVPWM马鞍波形(基波和三次谐波的叠加)。
2.软件C代码
2.1 .h文件
#ifndef MAIN_H
#define MAIN_H
#include "gd32e50x.h"
#include "arm_math.h"
/*--------转子磁通两相旋转坐标系----------*/
typedef struct{
float Vd;
float Vq;
}voltage_two_phase_rotation;
/*--------定子两相静止坐标系----------*/
typedef struct{
float Va1;
float Vb1;
}voltage_two_static_rotation;
/*--------定子三相静止坐标系----------*/<