「雕爷学编程」Arduino动手做(40)——旋转编码器模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料+代码+图形编程+仿真编程)
实验四十:360度旋转增量编码器模块(KY-040)
EC11旋转编码器
也叫开关编码器、旋转编码器,EC11系列编码器有直插编码器、贴片式编码器、沉板式编码器、侧插式编码器,EC11A为直插式编码器。因广泛用于车载DVD、车载导航、汽车影音上,也经常被人称为汽车编码器。EC11编码器在各类仪器设备中用于频率、音量、速度、温度、电压、菜单选择、光线强弱等参数的控制。此款编码器有做20脉冲20定位点、15脉冲30定位点两种。调节轴有金属柄和塑胶柄,轴长区间9-30mm,调节轴有全柄、半柄、螺纹柄等类型供您选择。EC11系列编码器主要用于汽车电子、多媒体音响、仪器仪表、家用电器、智能家居、计算机周边、医疗器械等领域。主要用于频率调节、亮度调节、温度调节、音量调节的参数控制等。


技术参数
使用温度范围:-30℃ to+80℃
保存温度范围: -40℃ to+85℃
额定电压:DC 5V(最高12V)
全回转角度:360度(无止档点)
回转寿命:30000+200 Cycles
接触电阻:≤100mΩ
绝缘阻抗:100MΩ 以上
振荡:≤10mS 按压(开关SW)
寿命:20,000±200次.(0.5行程)
15,000±200次.(1.5行程)


工作原理
增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表明位移的巨细。编码器是把角位移或直线位移转换成电信号的一种设备。依照读出办法编码器能够分为机械式和非机械式两种:机械式选用电刷输出,一电刷触摸导电区或绝缘区来表明代码的状况是“1”仍是“0”;非机械式的承受灵敏元件是光敏元件或磁敏元件,选用光敏元件时以透光区和不透光区来表明代码的状况是“1”仍是“0”。旋转增量式编码器以转变时输出脉冲,通过计数设备来晓得其方位,当编码器不动或停电时,依托计数设备的内部回忆来记住方位。这样,当停电后,编码器不能有任何的移动,当来电作业时,编码器输出脉冲进程中,也不能有搅扰而丢掉脉冲,否则,计数设备回忆的零点就会偏移,并且这种偏移的量是无从晓得的,只要过错的出产成果呈现后才晓得。
目前常用的增量式编码器全部为机械式编码器,好用且成本低,高端的一般为非机械光电式的。



旋转编码器
可通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位计,这种转动计数是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从 0 开始计数。增量编码器是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。这些脉冲用来控制角位移。在 Eltra 编码器中角位移的转换采用了光电扫描原理。读数系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到接收器表面上。接收器覆盖着一层衍射光栅,它具有和码盘相同的窗口宽度。接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。再使低电平信号上升到较高电平,并产生没有任何干扰的方形脉冲,这就必须用电子电路来处理。读数系统通常采用差分方式,即将两个波形一样但相位差为180°的不同信号进行比较,以便提高输出信号的质量和稳定性。读数是再两个信号的差别基础上形成的,从而消除了干扰。

光电编码器
是一种将位移或角度的模拟信号转换成相应的电脉冲或数字量角度/角速度检测元件,具有精度高、体积小、工作可靠、接口数字化等优点。光电编码器一般由透镜、光栅盘(码盘)、光敏元件和放大整形电路组成。工作时,光栅盘与电机同速旋转,同时一个带有辨向狭缝(或狭缝群)的扇形薄片与圆盘平行放置,当光线通过这两个做相对运动的光栅盘时,光敏元件接受到的光通量也时大时小地连续变化,经放大整形电路处理后变成脉冲信号。通过测量捕捉到的脉冲数目和频率即可测出工作轴的转角和转速。而电机的当前转速通过每秒光电编码器输出脉冲的个数可以计算出来。


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

我手头的旋转编码器模块有5个引脚,分别是VCC, GND, SW, CLK, DT。其中VCC和GND用来接电源和地,按缩写SW应该是Switch(开关)、CLK是Clock(时钟)、DT是Data(数据)。两个引脚那一端为普通的按键,也就是圆柄按下去的那个按键,当做普通按键使用即可。右边三个引脚中间的为GND,两边为两路脉冲信号CLK和DT。旋转编码器的操作是旋转和按压转轴,在按下转轴的时候SW引脚的电平会变化,旋转的时候每转动一步CLK和DT的电平是有规律的变化。


引脚接线
Arduino Uno 旋转传感器模块
D2 CLK(Clock 时钟)
D3 DT (Data 数据)
D4 SW (按钮开关)
5V +VCC
GND GND

/*
【Arduino】168种传感器模块系列实验(资料+代码+图形编程+仿真编程)
实验四十:360度旋转增量编码器模块(KY-040)
*/
int CLK = 2;
int DT = 3;
int SW = 4;
const int interrupt0 = 0;
int count = 0;
int lastCLK = 0;
void setup()
{
pinMode(SW, INPUT);
digitalWrite(SW, HIGH);
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
attachInterrupt(interrupt0, ClockChanged, CHANGE);
Serial.begin(9600);
}
void loop()
{
if (!digitalRead(SW) && count != 0)
{
count = 0;
Serial.print("count:");
Serial.println(count);
}
}
void ClockChanged()
{
int clkValue = digitalRead(CLK);
int dtValue = digitalRead(DT);
if (lastCLK != clkValue)
{
lastCLK = clkValue;
count += (clkValue != dtValue ? 1 : -1);
Serial.print("count:");
Serial.println(count);
}
}




模块电原理图


/*
【Arduino】168种传感器模块系列实验(资料+代码+图形编程+仿真编程)
实验四十:360度旋转增量编码器模块(KY-040)之二
输出数字换屏
*/
const int clkPin = 2;
const int dtPin = 3;
const int swPin = 4 ;
int encoderVal = 0;
void setup()
{
pinMode(clkPin, INPUT);
pinMode(dtPin, INPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH);
Serial.begin(9600);
}
void loop()
{
int change = getEncoderTurn();
encoderVal = encoderVal + change;
if (digitalRead(swPin) == LOW)
{
encoderVal = 0;
}
Serial.println(encoderVal);
}
int getEncoderTurn(void)
{
static int oldA = HIGH;
static int oldB = HIGH;
int result = 0;
int newA = digitalRead(clkPin);
int newB = digitalRead(dtPin);
if (newA != oldA || newB != oldB)
{
if (oldA == HIGH && newA == LOW)
{
result = (oldB * 2 - 1);
}
}
oldA = newA;
oldB = newB;
return result;
delay(500);
}







「雕爷学编程」Arduino动手做(40)——旋转编码器模块的更多相关文章
- 「雕爷学编程」Arduino动手做(15)——手指侦测心跳模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(9)——火焰传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(10)——敲击传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(14)——倾斜角度模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(13)——触摸开关模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(12)——霍尔磁力模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(11)——金属触摸模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(8)——湿度传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(7)——旋转电位器模块
37款传感器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验 ...
随机推荐
- solr管理集合
其实完全版的管理,在web页面上就有. 同时,在官网文档上,也有:https://lucene.apache.org/solr/guide/6_6/coreadmin-api.html#CoreAdm ...
- 团队题目——TD课程通
一.团队介绍 团队名称:精神小伙成双队 团队成员:冯静妃(博客地址:https://www.cnblogs.com/fengjingfei/) 李佳伟(博客地址:https://www.cnblogs ...
- ajax后台返回指定的错误码
js: $.ajax({ type: "POST", url: 'post.php', data: serialNumber + "&getSerialNumbe ...
- java学习(第一篇)
Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...
- Scala教程之:函数式的Scala
文章目录 高阶函数 强制转换方法为函数 方法嵌套 多参数列表 样例类 比较 拷贝 模式匹配 密封类 单例对象 伴生对象 正则表达式模式 For表达式 Scala是一门函数式语言,接下来我们会讲一下几个 ...
- mybatis 批量保存,并且唯一约束
1.主键返回在insert配置中添加两个属性 useGeneratedKeys="true" keyProperty="id" 2.唯一约束冲突可以使用 ON ...
- pomelo安装笔记
npm install -dnpm config set registry https://registry.npm.taobao.orgnpm install pomelo -gpomelo lis ...
- 实现MapReduce
简介 当我们要统计数亿文本的词频,单个机器性能一般,况且是数亿级数据,处理是十分缓慢的,对于这样的任务,希望的是多台电脑共同处理,大幅度减少任务时间.联合多台电脑一起工作的系统就是分布式系统. 最近在 ...
- Pandas切片操作:很容易忽视的SettingWithCopyWarning
Pandas是一个强大的分析结构化数据的工具集,主要用于数据挖掘和数据分析,同时也提供数据清洗功能. 很多初学者在数据的选取,修改和切片时经常面临一些困惑.这是因为Pandas提供了太多方法可以做同样 ...
- G. 神圣的 F2 连接着我们 线段树优化建图+最短路
这个题目和之前写的一个线段树优化建图是一样的. B - Legacy CodeForces - 787D 线段树优化建图+dij最短路 基本套路 之前这个题目可以相当于一个模板,直接套用就可以了. 不 ...