]
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个状态的组合:00,01,10,11。读取输出口状态变化就可以判断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种状态,全都有了,肯定也有很高的容错能力。
通过这种方式,把旋转编码器的逻辑判断过程转换成了数学运算(查表),无论速度还是准确度都会很完美。
网友提到的毛刺问题,其实已经通过定时器等时间间隔采样的机制,隐含的解决了。
|