EC11、EC16、ECxx旋转编码器按钮软件滤波程序滤除干扰杂波51单片机C程序

前些日子在网上买了一些旋转编码器按钮,被奸商坑了,输出的正交脉冲,在发生边沿跳变的时候会产生干扰毛刺,毛刺通过硬件RC滤波能改善一些波形,但是还是会有杂波干扰程序。

正常正转波形如下图所示:

EC11、EC16、ECxx旋转编码器按钮软件滤波程序滤除干扰杂波51单片机C程序

             干扰正转波形如下图所示:

EC11、EC16、ECxx旋转编码器按钮软件滤波程序滤除干扰杂波51单片机C程序

   干扰反转波形如下图所示:

EC11、EC16、ECxx旋转编码器按钮软件滤波程序滤除干扰杂波51单片机C程序

旋转编码器的原理,这里不做介绍了,由于之前使用的是1ms轮询查询IO口状态判别旋转方向,正常的正交脉冲式可以的,但是质量差一些的编码器旋转的时候有干扰,轮旋检测的方法会产生误动作,所以这里主要讨论滤波方法,滤出掉干扰。

由上图可知,干扰总是出现在脉冲信号边沿发生跳转时,而脉冲宽度一般都在1ms以上,所以可以认为,当检测到到脉冲发生跳变的时候,1ms之内不检测脉冲就可以了,通过上面的原理分析,程序可以这样设计,通过使用一个外部中断+定时器实现正交脉冲的滤波。用外部中断检测脉冲的下降沿,检测到下降沿后,关闭外部中断,判断当前旋转方向,打开定时器中断定时1ms,定时时间到了之后,关闭定时器中断,打开外部中断,开始接受下一个脉冲。通过测试之前不能用的渣编码器也可以正常使用了,嘎嘎嘎。

下面附上滤波程序仅供参考。

 

 

来源:songisgood

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年4月22日
下一篇 2019年4月22日

相关推荐