原创 【TI博客大赛】基于TMS320CF2812 生成空间向量PWM(SVPWM)无刷直流马达应用程序-软件工程师入门宝典

2012-10-1 20:15 2690 15 20 分类: 处理器与DSP

    Ø 空间向量PWM(SVPWM)是指一个三相功率变换器中六个功率三极管的一种功率开关电路,是变频技术的关键核心技术之一,应用非常广泛。三相交流电动机绕组产生的电流的谐波失真最小。它还提供了比正弦波调制方式更有效的供电电压的使用。目前SVPWM量控制方法是交流伺服电机和UPS电源应用最广泛的控制方法。本应用程序实例将为网友提供一个无刷直流马达SVPWM程序实例,希望起到抛砖引玉效应,可以充分了解如何使用事件管理器来实现SVPWM的应用方法。实际量产产品应用对于SVPWM算法的推导、开关向量的选择也是是非常至关重要的关键。
   Ø无刷直流马达三相功率反相换流器原理结果图:
图中A1、B1、和C1是提供给电动机绕组的电压。六个功率三极管由DTPHx和我DTPHx_(x﹦a、b和c)控制。当上部的三极管导通时(DTPHx﹦1),下部的三极管关断(DTPHx﹦0)。这样通过上部三极管的开关状态(Q1和Q5)或者等效地说,DTPHx(x﹦a、b和c)的状态,就可以算出提供给电动机的电压Uout。

20120921083742343.jpg

20120925163503772.jpg

20120921091101754.jpg
  
//文件名: DSP281xSVPwm.c
//
//DSP281x SVPWM波形产生程序,使用事件管理器A
//
//        该程序设置EVA定时器(TIMER1,TIMER2,TIMER13 and TIMER4)
//        实现了SVPWM波形输出
#include 〝DSP281x_Device.h 〞            //DSP281x_Headerfile include file
#include 〝DSP281x_examples.h 〞          //DSP281x_examples include file
#include 〝stdio.h 〞
#include 〝math.h 〞
#include 〝float.h 〞
#define NX 404
#define PI 3.1415925


//全局变量
float M﹦0.8;
int k0﹦0,h1﹦0;
unsigned int n﹦0;
float q,l,j;

//在本例程中使用函数类型陈述
void zkb();
void int_eva(vold);
interrupt void eva_T1UFINT_ISR(void);

void main(void)
{
//系统初始化
 initsysctrl();

//初始化GPAMUX
  EALLOW;
  // 使能PWM引脚
  gpiomuxregs.GPAMUX.all ﹦0x00FF;    // EVA PWM 1-6 引脚
  EDIS;

//禁止全局CPU中断
DINT;

//初始化PIE控制寄存器
initpiectrl();

//初始化PIE控制向量表
initpievecttable();

eallow;                                             //使能定时器1下益中断
pievecttable.T1UFINF﹦&eva_T1UFINT_ISR;
EDIS

IER|﹦M_INT2;                                       //开中断2
pievctr1regs.PIEIER2.bit.INTx6﹦1;                  //开下益中断
while  (n<﹦NX)
  {
    q﹦(n:+0.75)          //为消除偶次谐波,减少谐波角度出发,选择从A相3/4周期进行采样
    q﹦q*2*PI;
    q/﹦405;
    j﹦sin(q);
    1﹦1875*(1+M*j);     //M为调制比
   if(1>﹦375&1<﹦3375   //计算占空比表达式
      a[n]﹦1;
     else
     {
     if(1>﹦3375);
     a[n]﹦375;
     }

 n﹦n+1;
}

//初始化外设EVA
init_eva();
//用户代码
Evaregs.T1CON.all﹦evaregs.T1CON.all|0x0040; //启动定时器1

for(;;)
}
vold init_eva()
{

///初始化EVA
evaregs.ACTRA.all﹦0x0666;
evaregs.DBTCONA.all﹦0x0000;  //禁止死区
evaregs.COMCONA.all﹦0xa600; //使能比较操作

//EVAIMRA(EVA的中断屏蔽寄存器A).T1UIINT(通用定时器1的下溢中断使能)
evaregs.EVAIFRA.all﹦0x0200;
evaregs.EVAIFRA.all﹦0x0000;
evaregs.EVAIFRA.all﹦0x0000;


//EVAIMRA(EVA的中断屏蔽寄存器.T1UIINT(通用定时器1的下溢中断使能)
evaregs.EVAIFRA.all﹦0xffff;
evaregs.EVAIFRB.all﹦0xffff;
evaregs.EVAIFRC.all﹦0xffff;
evaregs.CMPR1﹦0;
evaregs.CMPR2﹦0;
evaregs.CMPR3﹦0;
 evaregs.GPTCONA.all﹦0x0041;
//周期必须大于最大的正弦表格值
evaregs.T1PR﹦3750;          //timer1 period PWM 载波周期为65536个定标的定时器时钟周期
evaregs.T1CNT﹦937;          //timer1计数器
evaregs.T1CON.all﹦0x0b4e;   //选择模式产生PWM波10
EINT;
return;
}

interrupt void eva_T1UFINT_ISR(void)          //EVA下溢中断
{

  int h2;
  int flag;
  flag﹦(evaregs.EVAIFRA.all)&0x0200;     //T1UFINT中断标志位置1
    if(flag!﹦0x0200)
       {
        EINT;
        return;
        }
       else
        {
         if(k0<﹦NK)
        {
         h1﹦k0+135;                      //B相标表达式
         if(h1>﹦404)h1﹦h1-404;
         h2﹦k0+270;                      //C相标表达式
         if(h2>﹦404)h2﹦h2-404;
         evaregs.CMPR1﹦a[k0];
         evaregs.CMPR2﹦a[k1];          //更新比较寄存器2的值
         evaregs.CMPR3﹦a[k2];          //更新比较寄存器3的值
         k0﹦k0+1;
         }
        else
         {
        }
        evaregs.EVAIMRA.bit,T1UFINT﹦1     //清除中断屏蔽标志
        evaregs.EVAIMRA.bit,T1UFINT﹦1     //清除中断使能标志
        piectrlregs.PIEACK.all﹦0x0002;    //响应同组中断
        EINI;                               //开全局中断
}
//﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦
//end
//﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦﹦

 
 
 
33.jpg
 
更多精彩请点击下载附件【PWM波形空间向量图表】。。。
PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户1724555 2014-12-16 13:28

ok

用户1687253 2013-9-27 09:41

哥们 你的程序中哪段是关于SVPWM算法的呢?搞不明白,解释下呗?

用户413797 2012-10-16 12:07

不错啊!

用户377235 2012-9-22 11:34

找了很久直流马达源程序。

用户593939 2012-9-21 22:53

参考和学习了

用户593939 2012-9-21 22:47

参考了
相关推荐阅读
Alwin 2015-11-16 13:24
新能源动力电池均衡原理保护板
                   新能源动力锂电池的电动动力,无论是生产工艺还是材料技术改进上,或价格的优势,都有相当大的突破,因此它也为多并多串打下坚实的基础。替代铅酸电池的时代越来越近。无...
Alwin 2015-11-12 10:59
PCB板制作若干问题
      通常从设计原理图导入到PCB到有两个是很重要“机械层”和“钻孔层”,这两个都属于机械加工范畴,同时两个层也有很大的交错关系。下面分别说明: 1,机械层,也叫外形,这个是比较容易弄...
Alwin 2015-10-29 09:32
退休了...
To all my colleagues and friends,     “Don't cry because it's over. Smile because it happened.”   T...
Alwin 2015-10-16 17:07
DIY多用途逻辑测试笔
由于工作需要,本人用手头一块TTL 四2 输入与非门74LS00设计制作 了一个多用逻辑测试笔不但能测试高电平尧低电平,还能显示出高阻态和脉冲状态袁克服了万用表测电平法,不能很好的区分高阻态和低...
Alwin 2015-10-14 09:27
一个更看重实验室的民族---曾广伦
17岁,命运让我开了眼界。这一年,我和轰炸机结缘。维护飞机的日子,有两样东西令我非常羡慕:一是巨大的工具箱;二是一应俱全的专业实验室。几万个零件构成的轰炸机,每一项工作,都离不开工具。机械专业的工...
Alwin 2015-02-14 09:10
锂电池行业Cell电池品牌
收集总结国产锂电池行业Cell电池十大品牌。 看附件!      18650电池是最早、最成熟、最稳定的锂离子电池,广泛应用在电子产品中,每年的出货量大约有几十亿节。多年来,日本厂商在18...
EE直播间
更多
我要评论
5
15
关闭 站长推荐上一条 /3 下一条