今天小编要和大家分享的是嵌入式技术相关信息,接下来我将从机械按键如何去处理按键抖动的问题,sony \这几个方面来介绍。
嵌入式技术相关技术文章机械按键如何去处理按键抖动的问题
说明
我们在嵌入式开发过程中,按键是必不可少的东西。但是如何使用好按键,这也是一个非常难的事情。对于一个嵌入式工程师来说,想要做好用户体验,按键的响应是非常的考验人的。这里涉及到按键的抖动相关知识,关于如何去抖问题,将会在这篇文章中进行深度分析。
一般的机械式按键的构造是两个金属片和一个复位弹簧,按键按下时,两个金属片便被压在了一起。
如图所示,当按键向下按的时候,由于接触的面积和时间问题,并不是立即就会形成一个稳定的信号,大概的波形如下图所示:
随着抖动,那么我们可能会产生多个按键中断,那么我们该如何去处理这个问题呢?
02
硬件消抖
要解决抖动问题,我们可以通过对硬件进行一定的修改,设计一个RC积分电路进行消抖。
由于RC积分电路有延时处理的问题,所以我们可以利用这个特性进行抖动消除。但是,这个方法在实际产品中真的稳定吗?从原理上来说,我们通过调节RC电路延迟,电阻越大,延迟越大。同时也过滤掉了前期可能会引起中断的杂波,但是电路设计必须非常合理,同时也需要软件的配合。所以硬件消抖只能从一定程度上解决问题,并不能根本上解决问题。
03
软件去抖
中断消抖
单片机中,一般消抖处理可以通过这样的方式进行,第一次产生中断后,然后在中断函数中去读取按键的电平,如果判决确实是按键按下时的电平,然后再过10ms再读一次电平。如果两次读到的值都是一样的,那么认为该电平是按键按下的。