智能车制作

标题: 【求助】K60正交解码求解 [打印本页]

作者: I'm_trumpet    时间: 2014-5-4 00:18
标题: 【求助】K60正交解码求解
为什么我的K60正交解码使用计数和方向编码模式获取的值比实际的值要大许多,是不是直接读CNT寄存器得出的就是脉冲的计数值??

作者: dennytang    时间: 2014-5-4 00:32
是不是大了四倍呢

作者: I'm_trumpet    时间: 2014-5-4 01:07
dennytang 发表于 2014-5-4 00:32
是不是大了四倍呢

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

补充内容 (2014-5-4 09:47):
是指左右电机之间的差有两倍
作者: I'm_trumpet    时间: 2014-5-4 01:08
这是我的初始化程序,究竟哪里出了问题啊
  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. }
复制代码

作者: allenanswerzq    时间: 2014-5-4 01:29
要除以四的。。。
作者: I'm_trumpet    时间: 2014-5-4 01:48
allenanswerzq 发表于 2014-5-4 01:29
要除以四的。。。

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

作者: allenanswerzq    时间: 2014-5-4 09:47
I'm_trumpet 发表于 2014-5-4 01:48
这个是计数和方向编码模式啊,A相每一个上升沿就加一,而AB相编码模式才要除以4吧?即使是除以4了但是我左 ...

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

作者: I'm_trumpet    时间: 2014-5-4 09:48
allenanswerzq 发表于 2014-5-4 09:47
其实不管它是几倍。只要它在变化不就行了吗。速度闭环用的是偏差。应该不影响吧。个人理解。

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

作者: allenanswerzq    时间: 2014-5-4 09:49
  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. }
复制代码

作者: allenanswerzq    时间: 2014-5-4 09:50
我的代码。参考参考。已试过没有问题。再说哥们晚上这是几点的节奏啊。
作者: I'm_trumpet    时间: 2014-5-4 09:51
allenanswerzq 发表于 2014-5-4 09:49

谢了

作者: 盲眼看世界    时间: 2014-5-4 10:18
allenanswerzq 发表于 2014-5-4 09:50
我的代码。参考参考。已试过没有问题。再说哥们晚上这是几点的节奏啊。

你的速度闭环调好了吗

作者: allenanswerzq    时间: 2014-5-4 10:44
I'm_trumpet 发表于 2014-5-4 09:51
谢了

你可以再看看编码器输出的AB相的波形。是不是一个超前另一个90度。波形不对的话。读出的值肯定不对。

作者: I'm_trumpet    时间: 2014-5-4 11:16
allenanswerzq 发表于 2014-5-4 10:44
你可以再看看编码器输出的AB相的波形。是不是一个超前另一个90度。波形不对的话。读出的值肯定不对。

恩恩
作者: stafan    时间: 2014-5-21 13:41
allenanswerzq 发表于 2014-5-4 09:50
我的代码。参考参考。已试过没有问题。再说哥们晚上这是几点的节奏啊。

FTM1这和舵机用的那个冲突吗,应该是电机用一个FTM0,舵机用一个FTM1,你这个程序会不会冲突啊,小哥,感谢

作者: allenanswerzq    时间: 2014-5-21 21:27
stafan 发表于 2014-5-21 13:41
FTM1这和舵机用的那个冲突吗,应该是电机用一个FTM0,舵机用一个FTM1,你这个程序会不会冲突啊,小哥,感 ...

不是很了解啊。我做直立的。可以试试。不好意思了
作者: simonking人造卫    时间: 2015-6-17 18:41
allenanswerzq 发表于 2014-5-4 09:49

FTM1_CNTIN = 0;
    FTM2_CNTIN = 0;

           FTM1_CNT = 0;
        FTM2_CNT = 0;


这几个是什么??





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2