SVPWM控制的应用领域

2023-10-09  

SVPWM控制是一种控制三相交流电机的方法,它可以实现高效、精确的控制。由于它具有快速响应、低噪声、高精度等特点,在工业控制、船舶、风力发电、太阳能发电、新能源汽车等领域得到了广泛的应用。以下是一些应用领域:


**1. ** 变频空调 : SVPWM控制可以降低功率因数,提高空气质量,节约能源。


2. 电动船和潜水 器: SVPWM控制可以通过改变电机转速来改变船或潜水器的速度和方向。


3. 风力发电系统: SVPWM控制可以将变频器输出的直流电转换为交流电,以控制发电机的转速和输出功率。


4. 太阳能发电系统: SVPWM控制可以优化光伏逆变器的输出,最大限度地提高太阳能电池板的能量利用效率。


5. 汽车电动驱动系统: SVPWM控制可以提高电驱动车辆的性能和节能效果,使其具有更好的加速性能和更长的续航里程。


总之,SVPWM控制在许多工业领域和新兴领域都具有广泛的应用前景,其高效、精确的控制特性使其成为一种技术上先进的控制方法。


下面是一份基于MATLAB的SVPWM程序代码:


function [v1, v2, v3] = svpwm(theta, va, vb, vc)

% theta:当前时刻的角度值

% va, vb, vc:三相电压值


% 转换输入电压为ab、bc、ca轴正向电压值

va_b = -0.5 * va + 0.5 * sqrt(3) * vb;

va_c = -0.5 * va - 0.5 * sqrt(3) * vb;

vb_c = sqrt(3) * vc;


% 计算电压矢量的幅值和角度

Vmax = max([va_b va_c vb_c]); % 电压矢量的最大幅值

theta_tilda = pi/3; % 电压/电流星型转换因子

tau = theta_tilda - mod(theta, theta_tilda); % 计算角度离竖直线顶点的偏差

Vm_alpha = Vmax * sin(tau/2); % 电压矢量在alpha轴上的投影

Vm_beta = Vmax * cos(tau/2); % 电压矢量在beta轴上的投影

phi = acos(Vm_alpha / Vmax); % 电压矢量与alpha轴的夹角


% 根据所处的扇区计算PWM信号

if (phi < pi/6)

    T1 = Vm_alpha / sin(phi);

    T2 = Vm_beta / sin(pi/3 - phi);

    v1 = 0.5 * (T1 + T2);

    v2 = 0.5 * (T1 - T2);

    v3 = -v1 - v2;

elseif (phi < pi/3)

    T1 = Vm_beta / sin(phi);

    T2 = Vm_alpha / sin(pi/3 - phi);

    v1 = 0.5 * (T2 - T1);

    v2 = 0.5 * (T2 + T1);

    v3 = -v1 - v2;

else

    v1 = Vmax / sqrt(3);

    v2 = Vmax / sqrt(3);

    v3 = Vmax / sqrt(3);

end

这段代码中,theta是当前时刻的角度值,va、vb、vc是三相电压值。首先通过对输入电压的正向投影获得各轴正向电压值,然后计算电压矢量的幅值和角度,根据所处的扇区计算PWM信号,并最终得到输出的电压值v1、v2和v3。需要注意的是,在扇区一和二中,存在一个机电转动角度(受跨越VRT变化的影响),需要在程序中进行补偿。


以下是一份基于TMS320F28035的SVPWM程序代码:


//--------------------------------- Include Files ---------------------------------

#include "DSP28x_Project.h"      // Device Headerfile and Examples Include File

#include 



//--------------------------------- Definitions ---------------------------------

#define  Fsw              10000          // SVPWM Switching Frequency (Hz)

#define  Vdc              24.0           // DC Bus Voltage (V)

#define  PI               3.141592       // Pi Value



//--------------------------------- Global Variables ------------------------------

float Va_REF = 0.0;

float Vb_REF = 0.0;

float Vc_REF = 0.0;

float theta_elec = 0.0;

Uint16 SVPWM_Trip = 0;



//-------------------------------- Function Prototypes -----------------------------

void SVPWM(void);

interrupt void epwm1_isr(void);



//----------------------------------- Main Routine --------------------------------

void main(void)

{

    // Initialize system variables

    InitSysCtrl();

    InitPieCtrl();



    //Enable CPU interrupts

    DINT;

    InitPieVectTable();

    EALLOW;

    PieVectTable.EPWM1_INT = &epwm1_isr; //Assign ISR address to vector

    EDIS;


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。