EC11 编码器

简介

EC11 编码器 是一种常用的旋转式机械编码器,广泛用于嵌入式系统、电子产品中的人机交互(如音量调节、菜单选择等)。

  • 类型:增量式旋转编码器
  • 输出:双路脉冲信号(A 相和 B 相),带按键(开关)功能
  • 常见型号:EC11E15244G1、EC11E18244A8 等

工作原理

EC11 是一种机械式增量编码器,主要通过内部触点的通断组合来产生 A 相与 B 相信号:

顺时针旋转:A 相先于 B 相变化

逆时针旋转:B 相先于 A 相变化

相位波形

1
2
3
4
5
6
7
顺时针 (CW):
A: ──▁▁────▁▁────
B: ─▁▁────▁▁─────

逆时针 (CCW):
A: ─▁▁────▁▁─────
B: ──▁▁────▁▁────

每一次完整的点击(”咔哒”声)通常包含多个跳变(例如 2 个或 4 个脉冲),取决于内部结构。

引脚说明

标准 EC11 编码器共有 5 个引脚,分布如下:

引脚编号 功能 说明
1 SW(按键) 下压后闭合
2 GND(地) 通常与 MCU 的 GND 相接
3 DT(B 相) 编码器信号输出
4 CLK(A 相) 编码器信号输出
5 + 按键公共端 通常接上拉电阻或 VCC

注意:有的模块使用 SW、CLK、DT 标记,有的用 A、B 表示信号输出线。

接线示例(以 Arduino 为例)

1
2
3
4
5
6
EC11 编码器引脚  -> Arduino
CLK(A 相) -> D2
DT(B 相) -> D3
SW(按键) -> D4
GND -> GND
+ -> 5V(或通过上拉)

代码示例(Arduino)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#define CLK 2
#define DT 3
#define SW 4

int lastStateCLK;
int counter = 0;

void setup() {
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT_PULLUP);

lastStateCLK = digitalRead(CLK);
Serial.begin(9600);
}

void loop() {
int currentStateCLK = digitalRead(CLK);

if (currentStateCLK != lastStateCLK) {
if (digitalRead(DT) != currentStateCLK) {
counter++;
} else {
counter--;
}
Serial.println(counter);
}

if (digitalRead(SW) == LOW) {
Serial.println("Button Pressed");
delay(200); // 防抖
}

lastStateCLK = currentStateCLK;
}

应用场景

音量旋钮

菜单滚动与选择

数值调节器(如电源电压设定)

机械设备输入控制器

注意事项

防抖动:EC11 是机械接触式,需软硬件防抖处理

解析精度:依据脉冲数可提升旋转解析度

按键寿命:机械按键部分磨损较快,一般寿命约 3 万次

旋转寿命:通常 EC11 的旋转寿命为 3~10 万圈

附加资料

esp32-ec11-encoder

可搭配 Encoder 库(Arduino)或直接读取 GPIO 实现


EC11 编码器
https://bubao.github.io/posts/97e1f1a5.html
作者
一念
发布于
2025年5月11日
许可协议