打印
[STM32F1]

还是SVPWM,来段Clarke变换算法,

[复制链接]
1527|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
奇立电源|  楼主 | 2016-3-8 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**********************Park变换************通过90度二相alpha=id.beta=iq求出D,Q直流矢量***********/
void Park(int alpha,int beta,int *d,int *q)
{
        *d=(iSineTable[iCosAngle]*alpha+iSineTable[iAngle]*beta)>>15;//ID=alpha*cos(angle)+beta*sin(angle)
        *q=(iSineTable[iCosAngle]*beta-iSineTable[iAngle]*alpha)>>15;//IQ=-alpha*sin(angle)+bata*cos(angle)
}
/**********************反Park变换**********通过直流ID,IQ求出二相alpha=id.beta=iq***********/
void UnPark(int d,int q,int *alpha,int *beta)
{
        *alpha=(iSineTable[iCosAngle]*d-iSineTable[iAngle]*q)>>15;//alpha=ID*cos(angle)-IQ*sin(angle)
        *beta=(iSineTable[iAngle]*d+iSineTable[iCosAngle]*q)>>15;        //beta=ID*sin(angle)+IQ*cos(angle)
}

/*********幅值不变Clarke变换************/

//unsigned int SvpwmSec[6]={1,5,0,3,2,4};        //svpwm section table//这一句是扇区的也屏蔽了,
/********************Clarke变换**********************/
void Clarke(int A,int B,int C,int *alpha,int *beta)
{
        *alpha=A-0.5*B-0.5*C ;
           //这几个公式是怎么推出来的
        *beta =(sqrt(3)/2)*B+ (-sqrt(3)/2)*C;          //        这个跟号3怎么来的                                                               
}
/**********反Clarke变换******************************/
void UnClarke(int alpha,int beta,int *A,int *B,int *C)
{
        *A=alpha;
        *B=((-0.5*alpha)>>15)+((sqrt(3)/2*beta)>>15);       //这个公式头痛
        *C=(( -0.5*alpha)>>15)+((-sqrt(3)/2)*beta)>>15);        //
}
看得头都大了,代码可以产生Svpwm,而且没有扇区判断的代码,感觉算法好很精,精得我看不懂,能帮讲解一下吗
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

100

帖子

7

粉丝