其中100pF的电容为去抖动的作用,但是软件处理的时候最好还是加上软件去抖动,以防止误判。软件去抖动最常用的就是延时和连续采样多次,在此不再详述。
A和B输出波形为
通过输出波形图可知每个运动周期的时序为
顺时针运动 | 逆时针运动 |
A B 1 1 0 1 0 0 1 0 | A B 1 1 1 0 0 0 0 1 |
静止状态为11
或00,
A异或B的结果为0(注1)
单片机可利用定时器中断来检测A和B的状态,中断时间在5~20ms之间均可。
当检测到A^B
= 0时,表示为静止状态,记下A和B的状态。
当检测到A^B
=
1时,表示有转动,读取AB的状态,如果AB是从11到01或者是从00到10则为正转,反之如果AB是从11到10或者是从00到01则为反转。
此方法比较简单可靠,可以检测转动一格又可以检测快速转动。
注1:
异或运算
异或的运算方法是一个二进制运算,C语言中用A^B表示A异或B:
1^1=0
0^0=0
1^0=1
0^1=1
两者相等为0,不等为1.
原创,转载请注明出处。
用户1565631 2016-4-13 14:55
用户377235 2014-7-4 15:57
用户377235 2014-4-23 23:00
为什么静止状态是A^B = 0?
用户1095637 2012-11-23 16:08