是否可以仅使用电容器来使按钮去抖动?


19

我一直在想:为什么您不能仅将电容器连接到按钮上去抖动呢?我一直在想如何减少微处理器的工作量,但是我在设计的PCB上的空间非常有限,所以我不想做一个成熟的去抖动电路,这会使设计复杂化。


原理图

模拟此电路 –使用CircuitLab创建的原理图


这是一个示例电路;抱歉,有任何错误(我不擅长使用电容器设计电路)。这甚至行得通吗?对于定位开关,我找不到与现实生活中的匹配的开关,但是它可以在这种情况下使用。该按钮类似于此处找到的按钮。D10代表Digital Pin 10,但这并不重要;它只是意味着Arduino输入。我也不知道我需要多大的电容器,所以如果该电路正常工作,我需要多少尺寸?


同样,我只是想简化此过程,以使其易于构建,而不必进行软件反跳。从观察电容器的工作原理来看,这似乎可行,但如果电容太大,也可能会使按钮按下时间更长/延迟。它们通常用于“消除”电源中的噪声,所以这不是“消除”弹跳的类似东西吗?任何使其工作的电路修改(如果需要)也将不胜感激。


1
这里就是我们之前已经讨论过:electronics.stackexchange.com/questions/6884/...
安迪又名

5
您是否意识到只需以至少50毫秒的间隔轮询输入即可对信号进行去抖动?为您的aduino做的工作更少:)
Wouter van Ooijen 2013年

1
50毫秒就可以了-O先生很高兴
Andy又名

1
不,我的意思是间隔至少50毫秒进行一次轮询,并根据检测到的级别执行所需的操作。
Wouter van Ooijen

1
@AnnonomusPerson-在单线程环境中的delay()意味着什么都不会发生。虽然这是一个选择,但另一个选择是做其他有用的工作,直到需要再次检查为止。
克里斯·斯特拉顿

Answers:


12

这取决于开关的默认状态。电容器只有在施加正电压时才会充电。通常,在嵌入式环境中,我们使用上拉为引脚提供默认的高电平状态,并将开关接地。在此处添加电容器无济于事,因为它不会“存储”基态。

但是,您也可以使用下拉菜单。这意味着默认情况下该引脚为低电平。按下开关使其变高,将为电容器充电。释放后,电容器会将引脚保持高电平一会儿,因此可以。我不确定1uF是否足够,太小或太多,建议您试一下示波器,然后试一试。


因此,如果我更改了+-它将起作用吗?
匿名企鹅

@AnnonomusPerson取决于。交换机的默认状态是什么?

您的意思是当不按下时是否导电?如果那是您的意思,由于我所使用的开关的性质我可以选择任何一种方式。看着我的问题的链接,当没有按下,从按钮行为top left to the bottom leftthe top right to the bottom right。按下时,它从top left to the bottom right和传导top right to the bottom left
匿名企鹅

好的。这意味着您默认情况下希望该引脚为低电平。开关应与+接触,以便在释放按钮之前电容器获得一些电荷。

3
@AnnonomusPerson没有,开关应使接触+。按下该按钮开关将连接到什么术语。电容器在正确的位置。最好将电阻器从地直接连接到IO引脚。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.