微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +SVPWM在DSP上的程序实现步骤

+SVPWM在DSP上的程序实现步骤

时间:10-02 整理:3721RD 点击:

       前面的帖子已经介绍了关于SPWM,SVPWM的理论部分,其实还想说一说关于克拉克变换和逆变换、帕克变换和逆变换的,无奈时间有限,最近忙着开题,更晴天霹雳的是,研究课题方向也有电机控制转换为太阳能光伏并网发电了,不过依然会尽量抽出时间把6748的试用完结。接下来就说下SVPWM如何实现程序的方法,大致就是如下几个步骤。

  1.电压向量当前的旋转角度计算:首先设置一个开关频率(例如10kHz),当前频率(6748主频最高是456MHz)除以开关频率等于当前角度的标幺值,当前标幺值乘以2PI,既是选装角度。

  1. //旋转角度
  2. theta+=2*PI*456/10000;
  3. if(theta>2*PI)
  4.         theta_=2*PI;
  5. else if(thta 0)sector=1;
  6. if(B>0)sector=2;
  7. if(C>0)sector=4;

复制代码

      5.扇区内T值:首先对X,Y,Z值计算(和Ualfa,Ubeta的值直接相关联,可直接计算得到),然后对各个扇区进行计算:

  1. //扇区内T值计算
  2. X=Ubeta;
  3. Y=0.5*Ubeta+0.866*Ualfa;
  4. Z=0.5-0.866*Ualfa;

  5. if(sector==1)
  6.         {
  7.                 t1=Z;
  8.                 t2=Y;
  9.                 Tb=0.5*(1-t1-t2);
  10.                 Ta=Tb+t1;
  11.                 Tc=Ta+t2;
  12.         }
  13. else if(sector==2)
  14.         {
  15.                 t1=Y;
  16.                 t2=-X;
  17.                 V->Tb=0.5*(1-t1-t2);
  18.                 V->Ta=V->Tb+t1;
  19.                 V->Tc=V->Ta+t2;
  20.         }
  21. else if(sector==3)
  22.         {
  23.                 t1=-Z;
  24.                 t2=X;
  25.                 V->Tb=0.5*(1-t1-t2);
  26.                 V->Ta=V->Tb+t1;
  27.                 V->Tc=V->Ta+t2;
  28.         }
  29. else if(sector==4)
  30.         {
  31.                 t1=-X;
  32.                 t2=Z;
  33.                 V->Tb=0.5*(1-t1-t2);
  34.                 V->Ta=V->Tb+t1;
  35.                 V->Tc=V->Ta+t2;
  36.         }
  37. else if(sector==5)
  38.         {
  39.                 t1=X;
  40.                 t2=-Y;
  41.                 V->Tb=0.5*(1-t1-t2);
  42.                 V->Ta=V->Tb+t1;
  43.                 V->Tc=V->Ta+t2;
  44.         }
  45. else if(sector==6)
  46.         {
  47.                 t1=-Y;
  48.                 t2=-Z;
  49.                 V->Tb=0.5*(1-t1-t2);
  50.                 V->Ta=V->Tb+t1;
  51.                 V->Tc=V->Ta+t2;
  52.         }

复制代码

         得出以上结果后,将Ta,Tb,Tc乘以PWM波形的计时周期,再对PWM比较器赋值(其中,计时周期=系统频率(456MHz)/2/斩波频率),程序如下:

  1. EPwm1Regs.CMPA.half.CMPA=2500*Ta;
  2. EPwm2Regs.CMPA.half.CMPA=2500*Tb;
  3. EPwm3Regs.CMPA.half.CMPA=2500*Tc;
  4. EPwm1Regs.CMPB=2500*Ta;
  5. EPwm2Regs.CMPB=2500*Tb;
  6. EPwm3Regs.CMPB=2500*Tc;

复制代码

        以上就是SVPWM理论部分用程序在DSP6748上用程序实现的步骤,具体的还要有很多其他配置,这个还需要继续努力学习。如有错误,请大家不吝赐教,谢谢!


源码 有没有,可以参考学习一下吗?,我邮箱1769161284@qq.com,十分感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top