智能车制作

标题: 关于正交解码,求助啊!!都快疯了我 [打印本页]

作者: 一切随缘。。    时间: 2014-6-27 21:23
标题: 关于正交解码,求助啊!!都快疯了我
正交解码纠结了好久了,就是弄不出来。我是电磁的,用的是200线单向编码器,以为要测两路电机,所以用的是正交解码(K60),正交解码两个管脚一个内部上拉一个接信号线,好多大神说这样是可行的,但是问题是我们一直调不出来一直读书为0,电机转的时候偶尔会是-1.现在一直纠结在这个问题上,求各位大神帮帮忙,分析下是什么问题。。。
作者: ???    时间: 2014-6-27 21:26
偶尔出现-1??你是不是输出的浮点型?
作者: allenanswerzq    时间: 2014-6-27 21:31
论坛搜代码。
作者: seakid    时间: 2014-6-27 21:43
单相的如何让正交解码?
作者: andyxu    时间: 2014-6-27 21:47
一个,你先用示波器看看  输出的波形对不对,幅值和相位都对不对;
再者就是,你看看正交解码的代码对不对?引脚有没有跟你的程序对应起来
作者: gsc617    时间: 2014-6-27 21:58
用硬件上拉电阻呀,在要输出的PTM0或者PTM1模块的输入IO口上拉一个4.7k左右的就可以了,

最好先用示波器读一下波形,so easy
作者: gsc617    时间: 2014-6-27 22:00
seakid 发表于 2014-6-27 21:43
单相的如何让正交解码?

单相无法做到,其实正交解码是从两相的波形相位相差90度来判断的方向的

作者: Tri-stone    时间: 2014-6-27 22:06
正交解码用于测单相时,一个引脚要接地或VCC,另一个接脉冲信号。 拿PORTB18和PORTB19说        
   PORTB_PCR18= PORT_PCR_MUX(6); // 设置引脚B18引脚为FTM2_PHA功能  
         PORTB_PCR19= PORT_PCR_MUX(6); // 设置引脚B19引脚为FTM2_PHB功能  
         SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM2时钟  
         FTM2_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
         FTM2_QDCTRL|=FTM_QDCTRL_QUADMODE_MASK;//AB相同时确定方向和计数值  
         FTM2_CNTIN=0;//FTM0计数器初始值为0  
         FTM2_MOD=65535;//结束值  
         FTM2_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM2正交解码模式  
         FTM2_MODE |= FTM_MODE_FTMEN_MASK;//FTM2EN=1   
         FTM2_CNT=0;
还有你读的时间间隔是不是太短了,不会放在while(1)了吧。。。
作者: 一切随缘。。    时间: 2014-6-27 22:07
seakid 发表于 2014-6-27 21:43
单相的如何让正交解码?

一路拉高或者拉低,另外一路给他输入信号。
作者: 一切随缘。。    时间: 2014-6-27 22:09
Tri-stone 发表于 2014-6-27 22:06
正交解码用于测单相时,一个引脚要接地或VCC,另一个接脉冲信号。 拿PORTB18和PORTB19说        
   PO ...

没有我在中断里边读的,20ms读一次,之前用Lptmr可以测出来,但是用正交解码不可以。。。
作者: 一切随缘。。    时间: 2014-6-27 22:11
andyxu 发表于 2014-6-27 21:47
一个,你先用示波器看看  输出的波形对不对,幅值和相位都对不对;
再者就是,你看看正交解码的代码对不对 ...

我用的是单向编码器,没有相位差的。示波器测波形好着呢,但是就是读不出来。。。


作者: Tri-stone    时间: 2014-6-27 22:17
我定时读的
{
  PULSE_READ=(FTM2_CNT);//保存FTM2脉冲计数器计算值
  FTM2_CNT=0;//清空此处计数器计算值
}
就这样子啊,我可以用的,另外,你用于读编码器的FTM(我的是FTM2)就只用于读脉冲了,其他的功能别用了。
作者: andyxu    时间: 2014-6-27 22:32
只有有AB两相的编码器才能正交解码
作者: seakid    时间: 2014-6-28 01:03
gsc617 发表于 2014-6-27 22:00
单相无法做到,其实正交解码是从两相的波形相位相差90度来判断的方向的

就是啊,这样正交解码有意思吗?FTM自带了external clock输入,干嘛不用那个。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

作者: gsc617    时间: 2014-6-28 09:15
seakid 发表于 2014-6-28 01:03
就是啊,这样正交解码有意思吗?FTM自带了external clock输入,干嘛不用那个。。。。。。。。。。。。。。 ...

这个是外部时钟。

默认情况下每个FTM的时钟由内部总线时钟( FTM的是指它作为系统时钟),总线时钟可以通过锁相环改变呀。
每个模块包含一个寄存器设置,允许模块从主频外部时钟代替。


作者: 一切随缘。。    时间: 2014-6-28 11:22
Tri-stone 发表于 2014-6-27 22:17
我定时读的
{
  PULSE_READ=(FTM2_CNT);//保存FTM2脉冲计数器计算值

我用的是FTM1 和FTM2 别的功能也没有用。刚用500线编码器测了下正交解码好着呢。但是为啥就是200 线的不能用呢
作者: 一切随缘。。    时间: 2014-6-28 11:23
andyxu 发表于 2014-6-27 22:32
只有有AB两相的编码器才能正交解码

论坛上貌似有人用单向做出来过。。。
作者: 一切随缘。。    时间: 2014-6-28 11:24
andyxu 发表于 2014-6-27 22:32
只有有AB两相的编码器才能正交解码

论坛上貌似有人用单向做出来过。。。
作者: andyxu    时间: 2014-6-28 11:59
一切随缘。。 发表于 2014-6-28 11:24
论坛上貌似有人用单向做出来过。。。

正交解码里面有个同时AB相计数的,你试试,我没试过

作者: 周盛    时间: 2015-10-14 13:50
请问下  我也出现这种问题 计数只出现-1  如果开关重开一次则变为-2  到现在还没解决






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