串联的多个施密特触发器能否完全消除开关的抖动?


8

处理了一段时间的软件反跳后,我发现这对系统造成了巨大的损失,因此我想到了最初要制造一个带有一个施密特触发器(74HC14),一个电容器,按钮和电阻器的硬件反跳器,如下talkingelectronics.com所示。 :

谈话电子电路

但是我读到,施密特触发器在确定何时输出高电平或低电平时的效率是普通反相器的一半,因为它会以33%和66%的标记切换状态,而普通反相器会切换到接近50%的标记。 (但使用HC版本,可能会更高,达到55%)。

我想知道,因为施密特触发器是一个封装中的六个反相器,如果我在右侧用相同的元件值制作六个电路,并且将所有电路都连接在一起,那么将采用我选择的任何按钮应用于第一个输入,抖动抖动会大大改善。他们串联?(示例:第一个电路的输出到第二个电路的输入,电容器和电阻器汇合。)


3
“因为它在33%和66%的标记处切换状态”,这不是使用施密特触发器的全部意义吗?...以便在中间有一个不切换的窗口,从而消除抖动吗?
BORT

5
防弹跳如何对系统造成巨大损失?软件分界可以很简单,只要在读取按钮之间保持50毫秒的间隔即可。
Wouter van Ooijen

2
@Mike也许您对施密特触发器有误解?您是否知道它们具有滞后性,并且非对称开关点“重叠”:没有未定义信号的中频带。
管道

4
您的问题与这个根本无关,您的问题是您不知道如何编写软件来进行反跳操作,而这种方式并不是非常低效的。我强烈建议在代码审查论坛上发布另一个问题,以询问您在软件中做错了什么,因为即使是最便宜的8位处理器也可以消除大量输入信号,而不会汗流sweat背。
格雷厄姆

2
@Mike除非每秒必须处理数千个事件,否则您必须进行反跳操作,否则我看不到这如何消耗对运行时的任何可衡量的影响。
德米特里·格里戈里耶夫

Answers:


12

串联使用施密特触发器不会进一步减少反弹。

考虑过滤器:

施密特触发波形比较

输入为(U)。红线是50%阈值,其输出被视为信号(A)。每次输入交叉时都会反弹。

如前所述,绿线分别为33%和66%。但是,只有当输入(U)从一个绿色阈值跨越到另一个绿色阈值时,输出(B)才会切换。

最重要的是,输出完全是HIGH或LOW(数字)。因此,如果将施密特触发器的输出馈入另一个触发器的输入,则基本上没有区别。

从上面的(B)中获取经过滤波的输出,并考虑另一个施密特触发器如何看待它:

施密特触发器与另一个串联

同样,第一个输出将为HIGH或LOW。因此,它将同时超过阈值,从而产生与输入相同的输出。没有什么可以反跳的!如果有的话,我希望它会产生更多的噪音,因为您要引入更多的组件,从而有更多的出错空间。

听起来您可能正在寻找具有可调阈值的施密特触发器。有些是对称的(例如:33%和66%,或10%和90%)。其他是非对称的(例如:33%和80%)。您可以使用运算放大器创建自己的放大器。

尝试玩一下我放在一起的模拟游戏: 施密特触发器模拟-非反相非对称

施密特触发器仿真-非反相非对称


考虑到我要制作一个PCB,有时将两个反相器串联在一起将使PCB的创建更加容易。如果将两个逆变器串联在一起,我会期望得到多少噪声?
迈克

对于该设置,“噪音”可能会忽略不计。可能会有一微秒的时间传播。电压“噪声”不会太大,因为每个触发器毕竟是一个滤波器。除非应用程序严重依赖于时序,否则我不会担心它,但是我猜测不是因为它只是一个按钮。
BORT

15
串联的多个施密特触发器能否完全消除开关的抖动?

单个Schmitt触发器前面带有一个模拟滤波器,可用于去抖动。但是,在施密特触发器触发之后,信号将变为全数字。任何其他施密特触发器都不会改变它。理想情况下,它们将保留信号。

在另一个主题上,固件中的反跳不会带来太大的负担。通常的方法是在已经有的周期性中断中采样开关状态。当您看到N个连续采样处于该状态的开关时,可以将去抖动状态声明为当前开关值。我通常要求开关在50个连续的1 ms中断中处于相同状态,以使新状态有效。这通常只占整个处理器周期的很小一部分。

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.