[STM32F1] 还是SVPWM,来段Clarke变换算法,

[复制链接]
 楼主| 奇立电源 发表于 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,而且没有扇区判断的代码,感觉算法好很精,精得我看不懂,能帮讲解一下吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

104

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部

29

主题

104

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部