当前位置: 首页 > news >正文

欧姆龙E6B2-CWZ6C旋转编码器参数说明+示例代码

参考链接:欧姆龙E6B2旋转编码器技术参数详解手册

一.参数说明

在这里插入图片描述
在这里插入图片描述
欧姆龙E6B2-CWZ6C旋转编码器的分辨率通常以“脉冲/旋转”(Pulses Per Revolution,PPR)来表示,即编码器完成一次完整的360度旋转时,它会输出多少个脉冲信号。
在这里插入图片描述
以最高响应频率为100kHz、分辨率1000旋转/脉冲计算
电的最高应答频率转速为6000r/min,即100r/s

在这里插入图片描述
在这里插入图片描述

二.示例代码

Arduino(参考链接)

#define PinA 2 //外部中断0
#define PinZ 3 //外部中断1
#define PinB 8 //编码器的OUT_B信号连接到数字端口8//变量初始化
unsigned long time1 = 0; // 时间标记
float time_cw;
float time_ccw;
long count = 0;
const float d = 75.7/1000; //轮子的直径
const float pi = 3.141592654;//圆周率
int num = 0;//圈数
double t;//一圈的运动时间
float velocity;
double time3;//外部中断1产生时的时间,即捕捉到Z相的置零信号时,用于在loop循环内进行一圈时间长短的计算void setup(){pinMode(PinA, INPUT_PULLUP);//因为编码器信号为欧姆龙E6B2-CWZ6C,为开漏输出,因此需要上拉电阻,此处采用arduino的内部上拉输入模式,置高pinMode(PinB, INPUT_PULLUP);//同上pinMode(PinZ, INPUT_PULLUP);//同上attachInterrupt(0, Encode, FALLING);//脉冲中断函数:捕捉A相信号,并判断A、B相先后顺序attachInterrupt(1, Set_state , FALLING);//用于在捕捉到Z的零信号时,进行状态置零Serial.begin (9600);}void loop(){double distance;//正转if (count == 2500){
//      Serial.println("ok");//调试用num = num + 1;time_cw = millis();t = time_cw - time3;t = t / 1000;distance = num * d * pi; velocity = d * pi / t;Serial.print("The wheel has run ");Serial.print(distance); Serial.println("m.");Serial.print("The cw_speed is ");Serial.print(velocity); Serial.println("m/s.");Serial.print("The time is ");Serial.print(t); Serial.println("s.");}//反转if (count == -2500){
//      Serial.println("ok");//调试用num = num + 1;time_ccw = millis();t = time_ccw - time3;t = t / 1000;distance = num * d * pi; velocity = d * pi / t;Serial.print("The wheel has run ");Serial.print(distance); Serial.println("m.");Serial.print("The ccw_speed is ");Serial.print(velocity); Serial.println("m/s.");Serial.print("The time is ");Serial.print(t); Serial.println("s.");}
}// 编码器计数中断子程序void Encode(){//为了不计入噪音干扰脉冲,//当2次中断之间的时间大于5ms时,计一次有效计数if ((millis() - time1) > 5){//当编码器码盘的OUTA脉冲信号下跳沿每中断一次,if ((digitalRead(PinA) == LOW) && (digitalRead(PinB) == HIGH)){count--;}else{count++;}}time1 == millis();}
void Set_state(){count = 0;time3 = millis();//发生中断时的时间
http://www.lryc.cn/news/619415.html

相关文章:

  • SQL详细语法教程(二)--DML(数据操作语言)和DQL(数据查询语言)
  • PostgreSQL——索引
  • 【Unity3D】Spine黑线(预乘问题)、贴图边缘裁剪问题
  • django request.data.get 的值修改
  • 基于Tensorflow2.15的图像分类系统
  • C++中的`auto`与`std::any`:功能、区别与选择建议
  • Android 在 2020-2025 都做哪些更新?
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.13
  • 数据治理之元数据管理
  • TensorFlow实现回归分析详解
  • PyTorch基础(使用TensorFlow架构)
  • CSS counter-reset 与 counter-increment:用 CSS 实现自动编号的黑科技
  • 【贪心算法】加油站
  • TensorFlow深度学习实战(31)——强化学习仿真库Gymnasium
  • 【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依赖
  • 七大排序算法全解析:从入门到精通
  • 各种排序算法(一)
  • Java开发环境搭建(WIN+IDEA+Maven)
  • STM32的UART奇偶校验注意
  • C# xml UI格式化字符串
  • IDEA创建一个VUE项目
  • 基于人工智能和物联网融合跌倒监控系统(LW+源码+讲解+部署)
  • CW32L011电机开发板控制教程
  • 分布式与微服务宝典
  • js:13KB或者xxxkb、xxxMB\xxxtb\xxb等多种情况怎么获取后面的单位
  • FluxSelectMultiple 技术设计文档
  • 飞算JavaAI的中间件风暴:Redis + Kafka 全链路实战
  • docker network 与host的区别
  • 数据科学与爬虫技术学习笔记
  • 玩转Docker | 使用Docker部署WordPress网站服务