Mircrochip文档AN1017《使用dsPIC30F DSC实现PMSM电机的正弦驱动》的demo程序中,有两个问题不是很明白,请教大家:
1)在SVM.c文件中,有下面这条程序
// This is the maximum value that may be passed to the SVM
// function without overmodulation. This limit is equivalent
// to 0.866, which is sqrt(3)/2.
#define VOLTS_LIMIT 28300
不太明白VOLTS_LIMIT的作用,以及为什么VOLTS_LIMIT的值会是0.866?
我的理解是:
当由6个基本电压空间矢量合成的Uout以近似圆形轨迹旋转时,其圆形轨迹的旋转半径受6个基本电压空间矢量幅值的限制。最大的圆形轨迹是6个基本矢量
幅值所组成的正六边形的内接圆,即输出电压的幅值为6个基本电压空间矢量幅值的sin60,即Sqrt(3)/2=0.866=Q15(28377).
不知道这样理解对不对,麻烦大家指点指点。
2)void SVM(int volts, unsigned int angle)
{
if(angle < VECTOR2)
{
angle2 = angle - VECTOR1;
angle1 = SIXTY_DEG - angle2;
t1 = sinetable[(unsigned char)(angle1 >> 6)]; //sin(60-x)
t2 = sinetable[(unsigned char)(angle2 >> 6)]; //sin(x)
// Scale t1 to by the volts variable.
t1 = ((long)t1*(long)volts) >> 15;
// Scale t1 for the duty cycle range.
t1 = ((long)t1*(long)tpwm) >> 15;
// Scale t2 time
t2 = ((long)t2*(long)volts) >> 15;
t2 = ((long)t2*(long)tpwm) >> 15;
half_t0 = (tpwm - t1 - t2) >> 1;
PDC1 = t1 + t2 + half_t0;
PDC2 = t2 + half_t0;
PDC3 = half_t0;
}
}
小的不是很明白这段程序?
我只知道T1,T2的计算公式为
(原文件名:未命名.JPG)
不明白程序中变量Volts与Uout,Ux.Ux+60的关系。
左移6位代表除以64.
在AN1017 svm.c有建171点的TAB表,这个表对应的一个扇区的SIN的Q15格式。
每个扇区的角度位0X2AAA,所以171*64=0X2AAA.
楼主 请问 1.为什么要取171个数?
2 .为什么这171个点对应一个扇区的SIN,一个扇区只有60度,如果是取90度的点经过翻转可以得到所有角度的值!但是一个扇区怎么取到所有扇区的值?
3.所有扇区的角度位为0X2AAA 意思是把60度分为0x2AAA份吗? 171*64=0x2AC0不是0x2AAA???
一周热门 更多>