极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15079|回复: 5

谁用过A89 光电编码器 吗?

[复制链接]
发表于 2016-5-14 14:52:37 | 显示全部楼层 |阅读模式
本帖最后由 pig881 于 2016-5-14 14:54 编辑

谁用过A89 光电编码器 吗? 4根线, 码盘是100线的

从上面看下去,是 红 黑 蓝 黄 的排列顺序的,




我把红线接3.3v, 黑线接地, 蓝线接 D3口




代码这么写:


int OutL=2;
int OutR=3;
volatile long cL=0,cR=0;
unsigned long old_time=0,new_time=0; // 总时间标记
unsigned long time1 = 0, time2 = 0; //左1,右2 轮 时间标记

void setup() {
  attachInterrupt(digitalPinToInterrupt(OutR),COUNTR,FALLING);
  Serial.begin(9600);

}

void COUNTR()
{
   if((millis()-time2)>5)
    cR++;
  time2=millis();  
}

void loop() {

   new_time=millis();
   if(abs(new_time - old_time) >= 1000) // 如果计时时间已达1秒
   {

     Serial.print("RightMotor is ");
     Serial.println(cR,DEC);
     cR=0;   
     old_time=  millis();
  
    }
  

   /// Serial.print("RightMotor is ");
  //   Serial.println(cR,DEC);
  //   delay(1000);

}

代码写法有没有问题?

如果用手转动轮子,是可以测得到数据的,但是如果马达直接上电,速度很快的时候,就测不到了,为什么?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-5-14 21:10:15 | 显示全部楼层
一圈100个脉冲,马达转速太快后。产生的脉冲数=转速*100.估计处理速度来不及
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-14 23:18:00 | 显示全部楼层
林定祥 发表于 2016-5-14 21:10
一圈100个脉冲,马达转速太快后。产生的脉冲数=转速*100.估计处理速度来不及

我刚换成20线的码盘,同样的光电测速居然可以测得出来
回复 支持 反对

使用道具 举报

发表于 2016-5-15 09:02:51 | 显示全部楼层
你这个编码器安装在减速器的输出轴处,100线的没问题的,可以用。还有可以直接用5V的供电、
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-15 09:50:38 | 显示全部楼层
PINKWALKMAN 发表于 2016-5-15 09:02
你这个编码器安装在减速器的输出轴处,100线的没问题的,可以用。还有可以直接用5V的供电、

装在输出轴,是我图上这么装吗?我刚才又试验了一下,还是得不到数据,全是0
回复 支持 反对

使用道具 举报

发表于 2016-5-16 07:51:23 | 显示全部楼层
pig881 发表于 2016-5-15 09:50
装在输出轴,是我图上这么装吗?我刚才又试验了一下,还是得不到数据,全是0

是图上这么安装的。
也许是程序问题,或者接线哪不对吧。这个光电对管的接线是有正负的不能随意接,还有如果身边有示波器最好了,一目了然。如果没有先写一个简易的程序例如以编码器的输出信号电平变化来控制LED的亮灭变化也可以验证。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-20 20:27 , Processed in 0.040165 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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