旋转编码器模块计数


项目介绍

在这个套件中,有一个Keyes 旋转编码器模块,也叫开关编码器、旋转编码器。此款编码器有20脉冲20定位点、15脉冲30定位点两种。编码器主要用于汽车电子、多媒体音响、仪器仪表、家用电器、智能家居、计算机周边、医疗器械等领域。主要用于频率调节、亮度调节、温度调节、音量调节的参数控制等。

模块参数

工作电压DC 5V
电流20 mA
最大功率0.1 W
工作温度-10°C ~ +50°C
控制信号数字信号
尺寸32 x 23.8 x 30.6 mm
定位孔大小直径为 4.8 mm
接口间距为2.54 mm 5pin防反接口

模块原理图

旋转编码器模块原理图

增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表明位移的巨细。Keyes 旋转编码器模块采用的是20脉冲旋转编码器元件,它可以通过旋转计数正方向和反方向转动过程中输出脉冲的次数,这种转动计数是没有限制的,复位到初始状态,即从0开始计数。

旋转编码器提供两种交互方式:
按钮 单击旋钮以按下按钮。按下时,按钮将 SW 引脚与 GND 引脚连接,也就是SW引脚的电平为低电平。
旋转 每次旋转旋钮时,会在 DT 和 CLK 引脚上产生一个 LOW 信号。
顺时针旋转会导致 CLK 引脚首先变低,然后 DT 引脚也变低。
逆时针旋转会导致 DT 引脚先变低,然后 CLK 引脚变低。
两个引脚将在几毫秒内返回高电平。如下图所示:

旋转编码器波形图

实验组件

ESP32 Plus主板
ESP32 Plus主板 x1
Keyes 旋转编码器模块
Keyes 旋转编码器模块 x1
XH2.54-5P 转杜邦线母单线
XH2.54-5P 转杜邦线母单线 x1
USB线
USB线 x1

模块接线图

旋转编码器模块接线图

代码

import time
from rotary_irq_rp2 import RotaryIRQ
from machine import Pin

SW=Pin(16,Pin.IN,Pin.PULL_UP)
r = RotaryIRQ(pin_num_clk=14,
pin_num_dt=27,
min_val=0,
reverse=False,
range_mode=RotaryIRQ.RANGE_UNBOUNDED)
val_old = r.value()
while True:
try:
val_new = r.value()
if SW.value()==0 and n==0:
print("Button Pressed")
print("Selected Number is : ",val_new)
n=1
while SW.value()==0:
continue
n=0
if val_old != val_new:
val_old = val_new
print('result =', val_new)
time.sleep_ms(50)
except KeyboardInterrupt:
break

实验结果

按照接线图正确接好模块,用USB线连接到计算机上电,单击 运行按钮 来执行程序代码。代码开始执行,顺时针旋转编码器,“Shell”窗口打印出来的数据减小;逆时针旋转编码器,“Shell”窗口打印出来的数据增大;按下编码器中间按键,“Shell”窗口打印“Button Pressed Selected Number is :(当前值)”。

旋转编码器实验现象1
顺时针旋转,数值减小
旋转编码器实验现象2
逆时针旋转,数值增大
旋转编码器实验现象3
按下按钮,打印当前值

单击 停止按钮 或 Ctrl+C 退出程序

代码说明

代码说明
try:…except…python语言异常捕捉处理语句,try执行代码,except发生异常时执行的代码。
r.value()返回编码器的值。