最近买了一个EC11的旋转编码器做项目,发现编码器的波形有杂波,请问有什么办法解决吗?
正常的波形应该是这样的:
实际的正转波形是这样的:

实际的反转波形是这样的:

消抖的核心思路:
A脚设置为上升下降沿均会进中断,下降上升一个变换周期,判断这个周期的A脚,B脚的始末状态,来判断正反转一次。
优点:只需要一个管脚的外部触发,另一脚单纯获取电平状态即可。
还是要建议给AB脚各加上1颗103电容最好,避免频繁进入中断消耗资源。
增加判断正、反转的条件,读取一个周期内的电平变化再进行判断。首先将最小系统板的PB0引脚与A相连接,触发方式选择上升/下降沿触发,用A相的输出信号来触发中断,然后在A相下降沿触发第一次中断后读取B相电平,紧接着A相上升沿触发第二次中断后读取B相电平,结合两次读取到的电平来判断是正转还是反转,这种检测方法和第二种方法的原理相同,即从A相的下降沿触发到上升沿触发期间,若B相电平发生了变化,则判定编码器转动,反之未转动,波形抖动时B相的电平保持不变,能够实现消抖。
当检测到到脉冲发生跳变的时候,几毫秒之内不检测脉冲就可以了,通过使用一个外部中断+定时器实现正交脉冲的滤波。用外部中断检测脉冲的下降沿,检测到下降沿后,关闭外部中断,判断当前旋转方向,打开定时器中断定时1ms,定时时间到了之后,关闭定时器中断,打开外部中断,开始接受下一个脉冲。