旋转编码器是一种机电装置,转换的角度运动的轴模拟或数字代码。
在这个项目中,利用Arduino来解释旋转编码器的工作原理。下面介绍旋转编码器的原理、电路和工作原理。
线路图
硬件要求
- 旋转编码器
- Arduino UNO
- 液晶显示器
旋转编码器简介
旋转编码器是一种输入设备,它提供旋钮旋转方向和旋转量的信息。有一个与旋转编码器相关联的选择开关,可以通过推动旋钮来激活。
常用的旋转编码器是增量式旋转编码器。这种类型通过产生两个彼此90度的相位不一致的方波输出来提供关于转轴的瞬时结果。
旋转编码器必须编码引脚A和B产生高或低输出取决于轴的旋转和方向。
旋转编码器的基本功能可以解释为把它看作是一个组合两个开关由于轴的旋转而关闭或打开的。
当轴旋转时,开关按一定的模式关闭和打开。如果输出被视为二进制,那么对于顺时针旋转,A和B处的输出将是00、01、11和10。
逆时针或逆时针旋转,输出将是10,11,01和00。脉冲在两个旋转方向上的波形如下所示。
为了测试序列,旋转编码器的输出引脚连接到两个led,如下面的电路所示。
当旋转编码器的旋钮按顺时针或逆时针方向旋转时,led按上述顺序亮起。
基于Arduino的旋转编码器电路设计
旋转编码器由五个引脚组成:两个编码引脚A和B(或CLK和DT),一个开关引脚和两个电源引脚Vcc和GND。
两个编码引脚和开关引脚提供数字信号。它们分别连接到Arduino的2、3、4引脚。
为了显示菜单的对象,使用了20X4液晶显示器。连接方式与16X2 LCD类似。LCD的RS和E连接Arduino的引脚5和6。
LCD的数据引脚D4 - D7(引脚11 - 14)连接到Arduino的引脚7 - 10。
工作
旋转编码器提供无限旋转在任何方向的选择按钮(推旋钮)。这种独特的功能可用于“菜单”选择应用程序,其中轴向任何方向的旋转将允许我们浏览菜单的内容,按下按钮将允许我们选择突出显示的菜单内容。
在这个项目中,旋转编码器在Arduino和LCD的帮助下作为菜单选择器的工作解释。电路的工作原理如下。
Arduino的代码是按照应用程序编写的,并上传到Arduino。上电时,LCD水平显示数值列表。
通过顺时针方向旋转编码器的轴,菜单项将从左到右变化,每旋转旋钮每个项目都被突出显示。
一旦到达最后一项,进一步的旋转将不会产生任何操作,但最后一项将突出显示。
如果旋钮逆时针旋转,菜单项将反方向突出显示。高亮显示的项目将显示在项目列表的下方。
如果我们想选择任何突出显示的项目,旋转编码器的按钮被按下。这将显示为所选项目,所选项目将保持这种状态,直到选择下一个项目。
代码
请注意
- 旋转编码器的工作是在这个项目中解释的帮助下,正常切换操作和作为菜单选择器使用Arduino。
- 可以实现为在每个子菜单中具有多层层次结构的菜单的选择开关。
- 如果菜单内容的层次层次较多,则必须在Arduino中使用中断的概念。
- 旋转编码器可用于伺服电机和步进电机的精密控制。
6的反应
嘿,
你能把密码发给我吗?
Thnaks
嘿,看看文章末尾,我们添加了代码。谢谢
你好,
你能告诉我在哪里可以找到RotaryEncoder.h库吗?我认为这是一个定制库。
嗨,你能告诉我在哪里可以找到RotaryEncoder.h图书馆吗?谢谢
旋转编码器在ebay上的权利知道
谢谢你帮我剪这个。
我造了它,它工作得很好。我想在我的项目中使用这个菜单,但我需要一些帮助。
我需要在每个菜单项内更改两个或三个值。
例如,如果选中菜单项为1,我需要编辑变量a和b的值,如果选中菜单项为2,我需要更改变量c, d和e,这些变量的值将在0到250之间。
你认为最简单的方法是什么?
我知道这篇文章已经2年了,但是我希望你能帮助我。
附注:在连接图上编码器连接到引脚2,3和4,但在代码中对应的引脚是10,11和12。没什么大不了的,但可能会让人困惑。
所有最好的!