TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335 QEP 获取转子位置,位置信息跳变。求解答,谢谢了。

Part Number: F28335

28335 QEP 获取电机转子位置,一圈0到360  但是中途到了 7 80°的时候 会跳变会10几或者个位数,程序用的TI例程,换了个同型号的编码器,还是一个问题,可以有人帮忙解答一下吗。

Green Deng:

你好,还请详细描述一下你的问题

用的是什么类型编码器?使用的是TI例程吗,具体是哪个例程?等等

,

Yingsa li:

以前用的是欧姆龙2000线增量式编码器,一直是好用的。现在改用国内一家2500线增量式编码器,但是程序没做改动。  程序一直用的是这  TI例程     

,

Green Deng:

你好,我对比了一下例程,应该是除了从eQEP1换成eQEP2,其他没有对例程做过更改?

有没有咨询过这两款编码器的QEP有没有什么区别?

,

Yingsa li:

只知道  一个是2500线 一个2000线。      那改编码器线程     以后还需要在 程序哪里做些更改吗,     

,

Green Deng:

这个。。。信息有点少。

比如例程中使用的是1000线数的增量式编码器,4倍频,得到的是4000 cnts/revolution。也就是例程注释的:

    // where mech_scaler = 4000 cnts/revolution

,

Yingsa li:

   您说的是在这个结构体里定义的吗,没太明白这结构体怎么定义出  mech_scaler = 4000 cnts/revolution  这个信息的。  

,

Green Deng:

你好,我会尽快查看例程之后回复

,

Yingsa li:

好的,那麻烦您了,那我顺便再问一个点

  

这个划线部分 表示的是   角度等于当前加角度误差,这个误差是怎么定义出来的

,

Green Deng:

先回复一下线数的问题:

mech_scaler的计算方法是(1/(线数*倍频数))*2^26。比如例程中的是(1/(1000*4))*2^26 = 16776。

这个值可以在这里修改:

#if (CPU_FRQ_150MHZ)#define POSSPEED_DEFAULTS {0x0, 0x0,0x0,0x0,0x0,16776,2,0,0x0,\94,0,6000,0,\0,0,0,\(void (*)(long))POSSPEED_Init,\(void (*)(long))POSSPEED_Calc }

上述代码中的16776,就是结构体中的mech_scaler值。

其他参数的宏定义值也可以通过修改例程中附带的Example_posspeed.xls表中的参数获得。

另外可以看一下这个帖子的回复:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/333148/eqep-setup 

,

Yingsa li:

好的,谢谢。这个地方 我之前就知道,不过经过了您的答案我更加确定我改的正确,进而找到了其他细节上的错误了。  这个2  是 编码器极对数吗, 如果  ABZ 这种的  就是3  吗?   因为在我改2  和  3的时候  位置结果没发现什么区别。

,

Green Deng:

不是的,2^26是为了将数值转换为Q26格式,注释中说明了是Q26格式,但是没有说明如何转的,所以我给你说明了一下。

编码器一般就是分频倍数的区别,而且一般都是4倍,也就是AB相的上升沿下降沿各自分频一次。

赞(0)
未经允许不得转载:TI中文支持网 » F28335 QEP 获取转子位置,位置信息跳变。求解答,谢谢了。
分享到: 更多 (0)