智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5240|回复: 16
打印 上一主题 下一主题

【求助】K60正交解码求解

[复制链接]

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1057
威望
565
贡献
320
兑换币
345
注册时间
2013-9-29
在线时间
86 小时
毕业学校
华工
跳转到指定楼层
1#
发表于 2014-5-4 00:18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的K60正交解码使用计数和方向编码模式获取的值比实际的值要大许多,是不是直接读CNT寄存器得出的就是脉冲的计数值??
回复

使用道具 举报

3

主题

28

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2394
威望
1024
贡献
620
兑换币
668
注册时间
2013-3-30
在线时间
375 小时
毕业学校
浙江大学城市学院
2#
发表于 2014-5-4 00:32:18 | 只看该作者
是不是大了四倍呢
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1057
威望
565
贡献
320
兑换币
345
注册时间
2013-9-29
在线时间
86 小时
毕业学校
华工
3#
 楼主| 发表于 2014-5-4 01:07:51 | 只看该作者
dennytang 发表于 2014-5-4 00:32
是不是大了四倍呢

我的是大了两倍,你的四倍是什么原因的?

补充内容 (2014-5-4 09:47):
是指左右电机之间的差有两倍
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1057
威望
565
贡献
320
兑换币
345
注册时间
2013-9-29
在线时间
86 小时
毕业学校
华工
4#
 楼主| 发表于 2014-5-4 01:08:52 | 只看该作者
这是我的初始化程序,究竟哪里出了问题啊
  1. void FTM1_QUAD_Iint(void)
  2. {
  3.     PORTA_PCR8= PORT_PCR_MUX(6); // 设置引脚A8引脚为FTM1_PHA功能  
  4.     PORTA_PCR9= PORT_PCR_MUX(6); // 设置引脚A9引脚为FTM1_PHB功能  
  5.     SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;//使能FTM1时钟  
  6.     FTM1_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
  7.     FTM1_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK;//计数和方向编码模式
  8.     FTM1_CNTIN=0;//FTM0计数器初始值为0  
  9.     FTM1_MOD=65535;//结束值  
  10.     FTM1_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM1正交解码模式  
  11.     FTM1_MODE |= FTM_MODE_FTMEN_MASK;//FTM1EN=1   
  12.     FTM1_CNT=0;  
  13. }


  14. void FTM2_QUAD_Iint(void)
  15. {
  16.     PORTA_PCR10= PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能  
  17.     PORTA_PCR11= PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能  
  18.     SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM2时钟  
  19.     FTM2_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
  20.     FTM2_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK;//计数和方向编码模式
  21.     FTM2_CNTIN=0;//FTM0计数器初始值为0  
  22.     FTM2_MOD=65535;//结束值  
  23.     FTM2_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM2正交解码模式  
  24.     FTM2_MODE |= FTM_MODE_FTMEN_MASK;//FTM2EN=1   
  25.     FTM2_CNT=0;  
  26. }
复制代码
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
5#
发表于 2014-5-4 01:29:10 | 只看该作者
要除以四的。。。
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1057
威望
565
贡献
320
兑换币
345
注册时间
2013-9-29
在线时间
86 小时
毕业学校
华工
6#
 楼主| 发表于 2014-5-4 01:48:06 | 只看该作者
allenanswerzq 发表于 2014-5-4 01:29
要除以四的。。。

这个是计数和方向编码模式啊,A相每一个上升沿就加一,而AB相编码模式才要除以4吧?即使是除以4了但是我左右两个电机为什么会相差两倍的?
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
7#
发表于 2014-5-4 09:47:50 | 只看该作者
I'm_trumpet 发表于 2014-5-4 01:48
这个是计数和方向编码模式啊,A相每一个上升沿就加一,而AB相编码模式才要除以4吧?即使是除以4了但是我左 ...

其实不管它是几倍。只要它在变化不就行了吗。速度闭环用的是偏差。应该不影响吧。个人理解。
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
8#
发表于 2014-5-4 09:49:20 | 只看该作者
  1. oid FTM_QUAD_init(void)
  2. {
  3.     /*开启端口时钟*/
  4.     SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
  5.           SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
  6.        
  7.     /*选择管脚复用功能*/
  8.     PORTA_PCR12 = PORT_PCR_MUX(7);
  9.     PORTA_PCR13 = PORT_PCR_MUX(7);
  10.        
  11.     PORTB_PCR18 = PORT_PCR_MUX(6);
  12.     PORTB_PCR19 = PORT_PCR_MUX(6);

  13.     /*使能FTM1、FTM2时钟*/
  14.     SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;
  15.     SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK;

  16.     FTM1_MOD = 65535; //可根据需要设置
  17.     FTM2_MOD = 65535;

  18.     FTM1_CNTIN = 0;
  19.     FTM2_CNTIN = 0;
  20.        
  21.            FTM1_CNT = 0;
  22.         FTM2_CNT = 0;

  23.     FTM1_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
  24.     FTM2_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
  25.     FTM1_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
  26.     FTM2_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能

  27.     FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
  28.     FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
  29. //                FTM1->QDCTRL |= FTM_QDCTRL_PHAFLTREN_MASK;
  30. //                FTM1->QDCTRL |= FTM_QDCTRL_PHBFLTREN_MASK;
  31. //                FTM1->FILTER = 0xff;
  32.     FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
  33.     FTM2_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
  34. //                FTM2->QDCTRL |= FTM_QDCTRL_PHAFLTREN_MASK;
  35. //                FTM2->QDCTRL |= FTM_QDCTRL_PHBFLTREN_MASK;
  36. //                FTM2->FILTER = 0xff;

  37.    
  38.                
  39.     FTM1_SC |= FTM_SC_CLKS(3);  //选择外部时钟
  40. //   FTM1_CONF |=FTM_CONF_BDMMODE(3); //可根据需要选择
  41.     FTM2_SC |= FTM_SC_CLKS(3);
  42. //   FTM2_CONF |=FTM_CONF_BDMMODE(3);

  43. }
复制代码
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1057
威望
565
贡献
320
兑换币
345
注册时间
2013-9-29
在线时间
86 小时
毕业学校
华工
9#
 楼主| 发表于 2014-5-4 09:48:52 | 只看该作者
allenanswerzq 发表于 2014-5-4 09:47
其实不管它是几倍。只要它在变化不就行了吗。速度闭环用的是偏差。应该不影响吧。个人理解。

主要是不仅仅是大了几倍,而是左右电机的采样值之间也是两倍左右的关系,这样子就没有办法令左右电机的速度一样了
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
10#
发表于 2014-5-4 09:50:36 | 只看该作者
我的代码。参考参考。已试过没有问题。再说哥们晚上这是几点的节奏啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 22:52 , Processed in 0.093396 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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