[DSP编程] 飞思卡尔DSP8346官方给的程序中用来确定转子位置的算法

[复制链接]
 楼主| w1120120736 发表于 2017-1-14 22:35 | 显示全部楼层 |阅读模式
/*******************************************************************************
*
* Module: GetActualPositionEl()
*
* Description:
*       The function returns actual electrical position.
*               
* Returns: actual electrical position. -1 <= result <1 correspond to
*                   -PI <= result <= PI
*
* Global Data: None
*
* Arguments: None
*
* Defines:
*   MOTOR_POLE_PAIRS - number of motor pole pairs
*
* Range Issues: None
*
* Special Issues: None
*
*******************************************************************************/
static Word16 GetActualPositionEl(void)
{
        return(mpysu_asm( (ioctl(QTIMER_B1, QT_READ_COUNTER_REG, 0) * PULSES_THETA_COEF_SCALE_W16 * \
                                                MOTOR_POLE_PAIRS), PULSES_THETA_COEF_UF16));
}


#define MOTOR_POLE_PAIRS                                3        /* motor pole pairs */

#define        PULSES_PER_REVOLUTION                        1024/* number of encoder pulses per one revolution */  

#define        PULSES_THETA_COEF_SCALE_W16                (65536 / 4 / PULSES_PER_REVOLUTION)

#define        PULSES_THETA_COEF_UF16                        32768 * (65536.0 / 4.0 / PULSES_PER_REVOLUTION) / PULSES_THETA_COEF_SCALE_W16

这个是飞思卡尔DSP8346官方给的程序中用来确定转子位置的算法,求问这个具体的实现方法有人能受累解释一下么?特别是为什么要乘以32768 * (65536.0 / 4.0 / PULSES_PER_REVOLUTION) 这个数?谢谢大家了,没有多少金币,见谅啊
zhangmangui 发表于 2017-1-18 21:41 | 显示全部楼层
具体不清楚这款的方法  
个人觉得首先确定编码器等反馈回路的线数
也就是转一周来多少个脉冲    然后这样对准参考点开始计数
 楼主| w1120120736 发表于 2017-2-4 21:12 | 显示全部楼层
zhangmangui 发表于 2017-1-18 21:41
具体不清楚这款的方法  
个人觉得首先确定编码器等反馈回路的线数
也就是转一周来多少个脉冲    然后这样对 ...

谢谢你。好人啊
zhangmangui 发表于 2017-2-4 23:56 | 显示全部楼层

还望多多分享  指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

11

帖子

0

粉丝
快速回复 返回顶部 返回列表