各位大虾: 现在我手上有一颗旋转编码器,想自己学写程序读取编码器的正转,反转状态,但是,试了3种方法,都无法得到满意的结果,特在此请教用过这种编码器的大虾,程序应该怎么写,才可以让程序的误检测最小
我用的方法有: 编码器A/B接10K上拉和101电容对地,通过1K电阻连到51单片机的IO口,晶振频率11.092M,未使用中断。采用扫描方式读取编码器的输出,每2ms扫描一次。 方法如下: 1.假设静止状态为11(因为有上拉电阻),检测到变为01或者10即判别正转/反转 2。连续读取四次的输出如果是11-01-00-10或者11-10-00-01即可判断正转/反转 3.读取当前输出并与上一次的输出比较,如果符合正转判定为正转,如果符合反转判定为反转。 这3种方法如果在慢速(一格一格旋转)时,可以正确识别正转/反转,但是快速旋转(大约360度/s吧,用手转的,没有实际测过),有时明明是正转,但读出的数据带有反转数据,大约是正转2-4次反转1次。反转时也是这样。 各位有没有用过这种编码器,据我所知,在音响上用得很多,还希望各位指教。 我使用的编码器图片如下:
|