接线方式如下

测试代码

#define PinA 2 //外部中断0
#define PinZ 3 //外部中断1
#define PinB 9 //编码器的OUT_B信号连接到数字端口8
#define T 30    //定义采集时间周期单位ms
unsigned long time1 = 0; // 时间标记
volatile long PulSum_CW = 0;   //定义长整型不可修改脉冲数
volatile long PulSum_CCW = 0;   long PulSum_CW_t0 = 0;         //定义记录顺时针方向 t0 时刻脉冲数变量
long PulSum_CW_t0_T = 0;       //定义记录顺时针方向 t0+T 时刻脉冲数变量float Rad_CW_Speed = 0.000;    //定义顺时针角速度
float Rad_CCW_Speed = 0.000;    //定义逆时针角速度long PulSum_CCW_t0 = 0;        //定义记录逆时针方向 t0 时刻脉冲数变量
long PulSum_CCW_t0_T = 0;      //定义记录逆时针方向 t0+T 时刻脉冲数变量// 记录角度
int Rad = 180;void setup(){pinMode(PinA, INPUT_PULLUP);//因为编码器信号为欧姆龙E6B2-CWZ6C,为开漏输出,因此需要上拉电阻,此处采用arduino的内部上拉输入模式,置高pinMode(PinB, INPUT_PULLUP);//同上attachInterrupt(0, Encode, FALLING);//脉冲中断函数:捕捉A相信号,并判断A、B相先后顺序Serial.begin (9600);
}void loop()
{// 角度计算程序Rad = int((PulSum_CW - PulSum_CCW)/6.944) % 360; if (Rad>=180) {Rad = Rad - 360;}PulSum_CW_t0   = PulSum_CW;  PulSum_CCW_t0   = PulSum_CCW;    //采集t0时刻的脉冲数delay(T);                                                     //等待一个T时间PulSum_CW_t0_T = PulSum_CW;  PulSum_CCW_t0_T = PulSum_CCW;    //采集t0+T时刻的脉冲数delay(T);                                                     //等待一个T时间// 如果检测到正向角速度,那么就打印角速度,以及累计的角度if (PulSum_CW_t0_T - PulSum_CW_t0 != 0){Rad_CW_Speed = (PulSum_CW_t0_T - PulSum_CW_t0);   //// 显示正向(CW)角速度 Rad_CW_Speed--->              //打印出来速度//Serial.print("AS:");                            //打印出来速度wSerial.print(Rad_CW_Speed);Serial.print(":");            //Serial.print("/A:");Serial.print(Rad);Serial.print("\n");}  // 如果检测到反向角速度,那么就打印角速度,以及累计的角度if (PulSum_CCW_t0_T - PulSum_CCW_t0 != 0){Rad_CCW_Speed = (PulSum_CCW_t0 - PulSum_CCW_t0_T);//Serial.print("AS:");Serial.print(Rad_CCW_Speed);Serial.print(":");            //Serial.print("/A:");Serial.print(Rad);Serial.print("\n");}}
void Encode()
{//当编码器码盘的OUTA脉冲信号下跳沿每中断一次,//if ((millis() - time1) > 5)//{if ((digitalRead(PinA) == LOW) && (digitalRead(PinB) == HIGH)){PulSum_CW ++;}else{PulSum_CCW ++;}//}//time1 == millis();
}

更多代码参考github,fly~~~

Ref
增量式编码器工作原理超详细图解

【Arduino】编码器OMRON E6B2-CWZ6C相关推荐

  1. arduino编码器计数_基于Arduino开发环境的光电编码器检测仪设计方案 - 全文

    0 引言 Arduino是一款基于单片机系统的电子产品开发平台,它的软硬件系统都具有高度的模块化,而且软件系统是完全开源的.其硬件系统也是高度模块化的,在核心控制板的外围有开关量输入/输出模块.各种模 ...

  2. arduino编码器计数_旋转编码器的工作原理以及如何在Arduino中使用

    在本篇文章中,我们将学习旋转编码器的工作原理以及如何将其与Arduino开发板一起使用.旋转编码器是一种位置传感器,用于确定旋转轴的角度位置.它根据旋转运动产生模拟或数字电信号. Rotary-Enc ...

  3. arduino——编码器示例(中断控制)

    使用中断控制 语法 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); 参数 pin: 中断引脚号 ISR: 中断服务程序名 mode:中断 ...

  4. arduino编码器计数_ARDUINO旋转编码器

    旋转编码器 旋转编码器可通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位计,这种 转动计数是没有限制的.配合旋转编码器上的按键,可以复位到初始状态,即从 0 开始计数. 工作原 ...

  5. arduino编码器计数_关于电机中断计数问题 - Arduino - 极客工坊 - Powered by Discuz!...

    如果您不介意的话,可以看下我个程序,delay只用在EEPROM读写这里 #include #include union data                                   ...

  6. arduino编码器计数_几根线做的Arduino液晶屏旋转编码器带你进入数字化编程之旅...

    #define ENCODER_A_PIN 2 #define ENCODER_B_PIN 3 #define SWITCH_PIN    4 long position;// int latchPi ...

  7. S7-1200PLC 通过高速计数器测量AB相编码器转速

    AB相编码器转速的测量 编码器Omron E6B2-CWZ5B 500脉冲/圈 测量编码器转速的两种方式: 方法一:在博图软件高速计数器的组态中,已经提供了捕捉编码器频率的组态选项. 频率的单位为:脉 ...

  8. Arduino实现增量式旋转编码器(欧姆龙e6b2-cwz6c)程序编写

    最近由于项目需求,须采用编码器进行小车的速度和里程测量.由于考虑到Arduino的编程简便性,因此采用Arduino作为控制器.搜索了相关资料,发现STM32或者51单片机的编码器程序比较多.其中ST ...

  9. Arduino、AB相增量式光电编码器测位移和速度方向

    利用Arduino.增量式光电编码器测量速度.方向.位移. 学校的一个项目作业,实测有效,若有改进的地方还需大佬们指点. 材料: Arduino mega 2560 2个2k电阻(红白之间2k,红绿之 ...

最新文章

  1. FPGA多功能应用处理器
  2. 如何衡量机器与人类的智能关系,AI智商评测标准专家研讨会邀请
  3. Docker Hub 官方仓库发布编程语言包
  4. as3文本框的动态拖拽和编辑
  5. input和button放在同一行_黑龙江作家协会冯殿波散文集《足音》84情系东保卫,魅力采风行...
  6. python map 函数使用
  7. linux下简单time machine实现,可选择快速备份恢复脚本
  8. 【C#】WM 消息大全
  9. Maximum Submatrix Largest Rectangle
  10. ECSHOP首页调用指定分类下的商品
  11. php调试利器之phpdbg
  12. 并发编程游玩---ExecutorService的isShutdown()和isTerminated(),以及一些方法的区别
  13. Windows 10 安装 IIS 管理器
  14. pdf怎么删除页码 页码删除介绍
  15. 程序员培训班一般要多少钱?
  16. 华为P7安装Linux,华为P7插卡步骤图解 华为P7电信/移动/联通版手机sim卡安装使用教程...
  17. mongodb 5.文章评论
  18. 三行九个点,用4条线段连接(扩展,用3条,用1条)
  19. java sftp命令_linux下如何使用sftp命令
  20. VRP介绍以及AC初始化配置介绍

热门文章

  1. mysql5.7.16 表空间加密,MySQL :: MySQL 5.7参考手册:: A.16 MySQL 5.7 FAQ:InnoDB表空间加密...
  2. 笔记整理5----Java语言高级(五--完结)21 字符流与字节流+22 多线程+23 网络编程
  3. 试装memcachedb,整理了下安装过程【转】
  4. python文件操作方法有哪些_Python的文件操作方法汇总
  5. Openstreetmap技术
  6. java微信支付v3系列——3.订单创建准备操作
  7. 快速搭建一个简易的KMS 服务
  8. 怎么将 Excel 中的第一个工作表或者其它指定的工作表批量替换成新的内容?
  9. excel批量修改文件名方法
  10. 多旋翼集群的分散时空轨迹规划