数码之家

 找回密码
 立即注册
搜索
查看: 225|回复: 20

我玩EC11编码器的解码思路

[复制链接]
发表于 昨天 08:47 | 显示全部楼层 |阅读模式
]
EC11编码器是一种旋转编码器,主要用于亮度、温度、频率、音量调节等参数控制。它通过旋转产生脉冲信号,从而实现对设备的控制。
以下是EC11编码器的工作原理:
结构组成:EC11编码器通常由一个中心有轴的光电码盘组成,码盘上有环形通和暗的刻线。此外,编码器还有A、B、C三个引脚,其中A和B是信号端,C是公共端,通常接地。有些EC11编码器还带有独立的按键功能。
脉冲信号生成:当编码器轴旋转时,码盘上的刻线会使光电发射和接收器件产生变化,从而获得四组正弦波信号,这四组信号组合成A、B、C、D四个相位,每个正弦波相差90度相位差。将C、D信号反向,叠加在A、B两相上,可以增强稳定信号。每转输出一个Z相脉冲以代表零位参考位。
旋转方向判断:由于A、B两相相差90度,可以通过比较A相在前还是B相在前,借此来判别编码器的正转与反转。具体来说,当A相电平由高变低,而B相电平仍为高时,表示编码器正转;反之,当B相电平由高变低,而A相电平仍为高时,表示编码器反转。
按键功能:EC11编码器的独立按键功能允许用户通过按键选择模式,然后旋转编码器来确定大小。这种设计在实际应用中非常广泛,例如热风机调温、电子手表等。
电路连接:在使用EC11编码器时,通常需要将A、B引脚接入逻辑分析仪或单片机的输入端,C引脚接地。此外,如果编码器带有按键功能,还需要将D、E引脚连接到相应的电路中。

软件消抖:在实际使用中,EC11编码器可能会存在抖动问题,导致旋转一格时进入多次中断。为了解决这个问题,通常需要进行软件消抖,即使用延时的方法避开机械抖动,从而确保每次旋转一格只进入一次外部中断。

  无图无真相,来张图,一会方便看图说话:
暂时不理会紫色的波形,单看蓝色和绿色的线条;
试想中间黑线向右移动,我们会得到一串高低电平的数串:
0     1    1    0    0    1    1    0   
1     1    0    0    1    1    0    0   
试想中间黑线想左移动,我们会得到另一串高低电平的数串:
0     1    1    0    0    1    1    0   
0     0    1    1    0    0    1    1   
其实,移动的黑线是时间,如果向右移动对应的正向旋转的话,向左移动就是时间倒放,对应着反向旋转。
先不想如何解码这些复杂的数串,咱就看看某一个时间点,也就是黑线移动过程中,停下来的那一刻,都发生了什么?
其实,就这一刻来说,能称得上有信息价值的就是当前两个通道电平的数值,而且不是0 , 就是 1

下一刻也一样,无非是0 , 或者 1
编码器拿到手里,拧一下,可以感觉到很舒适的顿挫感,伴随着清脆的哒哒声;每一次的“哒”,就意味着到达了一个稳态的点,在两个稳态点的中间又能感觉到一个似乎可以暂时稳住的最高点。编码器就是在稳态和暂稳态之间不停地变化,大概可以类比正弦波,在两个稳态中间有一个暂稳态。
稳态的时候,EC11两个输出脚电平一致,可以是高电平,也可以是低电平;在不稳态,两个引脚电平必然相反;没有为什么。非要问个为什么,答案也很简单,就是这么设计的;或者说,设计的目的就是为了达到这个效果。
EC11的一根线输出只有0 或者1两种情况;两根线也只能有4个状态的组合:00011011。读取输出口状态变化就可以判断EC11的旋转方向,这就很有趣了。因为我们有了一个毫无争议的结论,读两次EC11管脚状态,如果读到的数据发生的变化,我们可以通过这个变化知道旋转方向。再来看看前面的数据:
正向旋转的一串高低电平的数串:
0     1    1    0    0    1    1    0   
1     1    0    0    1    1    0    0   
反向旋转的另一串高低电平的数串:
0     1    1    0    0    1    1    0   
0     0    1    1    0    0    1    1   
仔细观察,第五组数据就已经开始重复了。简化一下:
正向0  ->1  ->1 ->0  ->0    反向0  ->1 ->1  ->0  ->0  
1      1     0     0     1             0     0     1      1      0  
这两次状态一共有多少种组合呢;从数学上来讲,4*4,16种 ;参照简化后的数值变化,我们用PA PB 记录当前两个管脚的电平;用PA^ PB^ 记录当前两个管脚的电平,就形成下表

这张表
1-4记录了上面描述的正转的状态变化;
5-8记录了上面描述的反转的状态变化;
9-12记录的是如果手柄旋转到稳态和暂稳态停留时的情况,两次读到的电平是相同的;

13-16是数学上成立,而编码器上不可能出现的状态变化,也可称之为“故障”状态。


如果不好理解,现在把整个过程反向解释一下,可能会容易理解:

记录等时间间隔相邻两次对两根管脚电平状态进行记录,
上一次的状态记为 :PA^    PB^
这一次的状态记为 :PA    PB
把这两次的状态组合为一个4bit状态:PA^PB^PAPB;他只可能存在16种可能。
把这16种状态里,                                                       
符合正转的状态挑出来,对应编码表里,填上 U                                                       
符合反转的状态挑出来,对应编码表里,填上 D                                                       
把稳态的状态挑出来   ,对应编码表里,填上 S                                                       
把不稳态的状态挑出来,对应编码表里,填上 M                                                       
                                                       
把剩下不可能跳跃的状态打上废弃标记;                                                                                               
                                                       

记得数学老师讲集合,“内无掺杂,外无遗漏”;16种状态,全都有了,肯定也有很高的容错能力。                                                       



通过这种方式,把旋转编码器的逻辑判断过程转换成了数学运算(查表),无论速度还是准确度都会很完美。

网友提到的毛刺问题,其实已经通过定时器等时间间隔采样的机制,隐含的解决了。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +32 收起 理由
慕名而来 + 18 原創內容
phoric + 14

查看全部打赏

发表于 昨天 11:00 | 显示全部楼层
描述的很详细,已收藏
回复 支持 反对

使用道具 举报

发表于 昨天 11:03 | 显示全部楼层
EC11应该是机械旋转编码器
回复 支持 反对

使用道具 举报

发表于 昨天 11:34 | 显示全部楼层
原本以为ec11就是个旋转的轻触开关,原来里面还带光耦电路, 前段给一个电磁炉换了一个带开关的,规格还有正向反向两种
回复 支持 反对

使用道具 举报

发表于 昨天 11:42 | 显示全部楼层
我直接在定时器里面扫根本不存在丢步乱跳问题。稳的很
回复 支持 反对

使用道具 举报

发表于 昨天 12:06 来自手机浏览器 | 显示全部楼层
wlhcq 发表于 2025-5-17 11:03
EC11应该是机械旋转编码器

lz图示的这种应该都是机械式编码器。
回复 支持 反对

使用道具 举报

发表于 昨天 12:10 | 显示全部楼层
vip2128 发表于 2025-5-17 11:34
原本以为ec11就是个旋转的轻触开关,原来里面还带光耦电路, 前段给一个电磁炉换了一个带开关的,规格还有 ...

ec11没有光栅的
回复 支持 1 反对 0

使用道具 举报

发表于 昨天 12:34 | 显示全部楼层
楼主写这篇是来误导的 ???



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 昨天 13:13 | 显示全部楼层
试想中间黑线向右移动,我们会得到一串高低电平的数串:
0     1    1    0    0    1    1    0   
1     1    0    0    1    1    0    0
这个怎么产生的
回复 支持 反对

使用道具 举报

发表于 昨天 13:28 | 显示全部楼层
我想到了鼠标机械编码器...


二○二五年五月十七日
回复 支持 反对

使用道具 举报

发表于 昨天 16:30 | 显示全部楼层
本帖最后由 慕名而来 于 2025-5-17 16:32 编辑

学习了!没用过这东西但搜索后发现百度AI、百度知乎给出的结果EC11内部构成真的都是有光栅的,而且要外围要配合一个滤波电路来使用。
电路如下图:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 昨天 17:22 | 显示全部楼层

纯机械结构,莫非我们用的是假的EC11

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 昨天 17:28 | 显示全部楼层
慕名而来 发表于 2025-5-17 16:30
学习了!没用过这东西但搜索后发现百度AI、百度知乎给出的结果EC11内部构成真的都是有光栅的,而且要外围要 ...

其实,真的拆一个编码器,里面就是一片铍青铜的弹片和一片镶嵌在转子塑料里的铜皮而已,
没啥特殊的东西,
其主要工作原理就是:

用两个管脚电平状态(变化)来描述运动方向。


制造这个旋转编码器就是这个思路;
网上很多编程方法是用的上升沿或者下降沿中断方式,
在中断服务程序里判断另一管脚的电平,从而得出方向信号。
这个方法(表象)很准确,从而很多朋友就不再思考其工作原理了。


中断的方法有个弊端,就是需要外加电容防抖。
虽然不是什么大事,
但是如果需要得到转速信号,
就还是需要引入定时器,
对单片机的硬件资源、RAM和时间都有占用。




查表的法,可以仅仅使用1个定时器就可以得出速度信号:
比如 M M M U  S S S U M M M,
就比 M M M U S U M U S U M 慢。

回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 17:32 | 显示全部楼层
nvy 发表于 2025-5-17 13:13
试想中间黑线向右移动,我们会得到一串高低电平的数串:
0     1    1    0    0    1    1    0   
1      ...

这一串数是管脚的电平值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 17:33 | 显示全部楼层
yielsing 发表于 2025-5-17 17:22
纯机械结构,莫非我们用的是假的EC11

感谢回复,这个图很好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 17:42 | 显示全部楼层
vip2128 发表于 2025-5-17 12:34
楼主写这篇是来误导的 ???

不明原因,文章的前一行字丢掉了,
原本写的是:
这是我从网上抄来的。

但是,不管是光栅还是机械结构,其原理没有任何差别;
所以也就没有必要分的很清楚了。

至于正反转的两种规格,
其实就是当你顺时针旋转手柄的时候,数据流是:
00 -> 01 -> 11 -> 10 -> 00
还是
00 -> 10 -> 11 -> 01 -> 00

当把一种数据流模式定义位正的,那么另一种就是反的。


最后,如果误导了您, 很抱歉,不是故意的。
回复 支持 反对

使用道具 举报

发表于 昨天 19:34 | 显示全部楼层
EC11原理看这个图比较好理解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 22:41 | 显示全部楼层
doob 发表于 2025-5-17 19:34
EC11原理看这个图比较好理解

这个好,看图就行了,啥都不用说。
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层
yielsing 发表于 2025-5-17 17:22
纯机械结构,莫非我们用的是假的EC11

不错,有图有真相,看来这货存在两种构成方式的,我最近有些萌动弄T12焊台的想法正好要用到这东西。
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层
pla155 发表于 2025-5-17 17:28
其实,真的拆一个编码器,里面就是一片铍青铜的弹片和一片镶嵌在转子塑料里的铜皮而已,
没啥特殊的东西 ...

明白了,我要用到的话也就是做变量给定的旋钮用应该可以简单实现的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-18 11:57 , Processed in 0.234001 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表