请教(Microchip)AN1017关于电机正弦控制的问题

2020-02-07 09:37发布

请教(Microchip)AN1017关于电机正弦控制的问题,小的有几个问题不明白,请教大家:
在AN1017 demo程序中
1)
// These Phase values represent the base Phase value of the sinewave for each
// one of the sectors (each sector is a translation of the hall effect sensors
// reading
#define PHASE_ZERO         57344
#define PHASE_ONE        ((PHASE_ZERO + 65536/6) % 65536)     //2730
#define PHASE_TWO        ((PHASE_ONE + 65536/6) % 65536)      //13652  
#define PHASE_THREE        ((PHASE_TWO + 65536/6) % 65536)      //24574
#define PHASE_FOUR        ((PHASE_THREE + 65536/6) % 65536)    //35496
#define PHASE_FIVE        ((PHASE_FOUR + 65536/6) % 65536)     //46418
请教Phase_zero为什么定义为-45度?
2)
if (Required_Direction == CW)       
{
    Phase = PhaseValues[Sector];
}
else
{
// For CCW an offset must be added to compensate difference in
// symmetry of the sine table used for CW and CCW
    Phase = PhaseValues[(Sector + 3) % 6] + PhaseOffset;
}
请教大家,电机反转时,Phase = PhaseValues[(Sector + 3) % 6] + PhaseOffset;
看不明白。
注: int PhaseOffset = 4100;
麻烦大家多多指教,谢谢!!

(原文件名:sector.JPG)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
xkdwangcs
2020-02-07 18:59
经过我今天的思考和总结,我发现了这个偏置角度的由来了。偏执角度=60度-2*15度。计算公式就是上面的。这里的15度呢,是定义的六个基本矢量已经默认的超前角度为15度。为什么是两倍的呢,因为正转的时候,你已经超前5度了。那么反转的时候,需要减掉30度,才可以使反转超前15度。而为什么要加上60度呢。我这里给你细细分析啊。

其实例子中定义的6个基本矢量#define PHASE_ZERO         57344
#define PHASE_ONE        ((PHASE_ZERO + 65536/6) % 65536)     //2730
#define PHASE_TWO        ((PHASE_ONE + 65536/6) % 65536)      //13652   
#define PHASE_THREE        ((PHASE_TWO + 65536/6) % 65536)      //24574
#define PHASE_FOUR        ((PHASE_THREE + 65536/6) % 65536)    //35496
#define PHASE_FIVE        ((PHASE_FOUR + 65536/6) % 65536)     //46418
是每个扇区的起点了。
假设按照例子定义的这些起点是电机CW转的时候,定义的起点。那么该扇区按照该起点开始每个PWM周期加个角度θ
如果电机要求往零位一个方向转时候,就希望该扇区的终点是作为反转的扇区的起点。
每个扇区起点和终点之间相差了60度,所以这个就是60度的由来啊。

一周热门 更多>