电子说
过去通常使用 SR 锁存器对 SPDT 开关进行去抖动,但这在纳秒时域中实际上是如何工作的?
读者可能还记得,前段时间,我写过一篇关于开关弹跳(“ Switch Bouncing Around ”)的文章,比较了各种开关的弹跳程度。这是由我们尊敬的(好吧,由某些人)编辑Max Maxfield 促成的,他一直试图找出他应该在防弹跳软件中使用多长时间的等待状态才能可靠地对平均(甚至是最坏的)开关进行去抖。
不幸的是,这需要我购买一台新的示波器,因为我现有的示波器都没有单次功能,这是捕捉开关反弹所必需的,特别是如果你想保存它或在相机上捕捉它(我在我的“关于升级示波器”列)。虽然我的新示波器只有两个 60 MHz 的通道,但它已经证明了它能够胜任我购买它以来的所有任务。
当然,Max 很少快乐(这可能是件好事,因为他的快乐舞是你真的不想看到的)。他打算写一个关于硬件和软件去抖技术的迷你系列,作为其中的一部分,他让我使用我的新示波器来研究以下硬件去抖电路:
74×00 去抖电路(来源:Clive Maxfield/David Ashton)
很简单。在上图所示的状态下,A1 将被上拉至逻辑 1(5 V),B2 将接地(即逻辑 0)。因此 QB 必须为 1,因此 A2 为 1。因此 QA 将为 0,B1 也是如此。切换开关时,常闭触点从接地断开的瞬间,B2 变为 1;但是,B2 为 0,因此 QB 将保持为 1。此后不久,常开 (NO) 触点接地的瞬间,A1 将变为 0,这意味着 QA 将变为 1,B1 也将变为 1。此时,B2 被拉高至 1,因此双稳态将改变状态。QB 将变为 0,因此 A2 将为 0。在 A1 处的任何弹跳都不会影响输出 QA,因此事情将一直保持到下一次开关操作 - 简洁明了。我选择了一个有很多弹跳的开关来展示电路的最大优势。
读者会观察到双稳态有两个输入和两个输出。这是要监控的四个点——如果可能的话,同时进行——以验证去抖动确实发生了,并且 QA 和 QB 输出显示出单一、干净的转换。但我只有一个两通道示波器。该怎么办?
我在工作中检查过,我们那里也只有一个双通道示波器。我想买一个四通道的单元,周围有几个(有点)合理的价格。Hantek 是我新的两通道示波器的制造商,它以大约 200 美元的价格制造了一个四通道、70-MHz 仅限 PC 的示波器(即,没有像我现有的那样内置屏幕)。Picoscope 是一家以 PC 专用示波器而闻名的制造商,它制造的装置价格略高,但只有 10 MHz。当您达到 100 MHz 时,您的价格约为 1,000 美元。任何带有屏幕的东西,价格都会上涨更多。
当然,理想情况下,您需要具有大量内存的东西,以便您可以放大或缩小单个捕获(我可以,但仅限于非常有限的程度)。目前,Max 和我都没有资金进行此类投资。Max 试图为我的评论争取一个免费的单位,但他找不到任何感兴趣的人。甚至不要让我开始介绍“真正的”示波器制造商,比如泰克、是德科技等。尽管我很喜欢一个,但在我中彩票之前,它们远远超出了我的预算。
所以我开始尽我所能只使用两个频道。当然,同时显示 NO 开关极点和其中一个 Q 输出很容易(当 NO 输入变低时,QA 将变高,QB 将变低)。然而,一时兴起,我将我的探头连接到 QA 和 QB 并使扫描速度非常高,以便我可以看到输出的转换。这就是我得到的:
QA 和 QB 输出叠加(来源:David Ashton)
我使用的是 74HCT00 IC,转换之间的轻微延迟 - 以及从 1 到 0 的转换时间,反之亦然 - 与数据表中这些参数的值相当吻合。这确实引发了 Max 和我之间关于传播延迟性质的一些讨论,但我离题了,无论如何,这导致了足够的材料来写另一篇文章,所以请屏住呼吸,亲爱的读者!
然后我想到,因为这些转换在几纳秒 (n) 内紧密对齐,并且开关转换时间和反弹持续时间以毫秒 (ms) 为单位测量 - 几乎长了一百万倍 - 我可以触发任何一个Q 转换并根据这些转换操作和反弹的相对时间。我可以查看一个输入和一个输出,然后查看另一个输入和另一个输出,然后将显示拼接在一起。
通过在同一点触发,正确显示了开关打开和关闭的相对时间。当然,不会显示相同的事件,但是使用开关弹跳,无论如何没有两个操作是相同的。我抓取了一些显示器,保存了具有“最佳”开关弹跳效果的显示器,并使用 MS Paint 将它们彼此相邻呈现(这对于这类事情来说非常通用)。我得到的结果如下图所示:
去抖电路的相对时序。第一个 NO 使双稳态切换。(来源:大卫·阿什顿)
我认为这是一个相当不错的结果。虽然它由来自两个独立开关操作的两个独立屏幕抓取组成,但我认为真正的四通道示波器显示与我得到的并没有太大不同。
读者怎么看?我在这里作弊吗?鉴于我的触发点在整体方案中是相同的,这是一种有效的技术吗?还是我应该使用合适的四通道示波器?
可以肯定的是,我抓拍了一张照片,查看了两个开关触点,但保留了相同的示波器设置,如下图所示,这证实了我的多个显示器中显示的相对时序是正确的:
打开和关闭开关弹跳(来源:David Ashton)
屏幕上的位置稍有不同,但从中断(底部,在这种情况下几乎没有反弹)和上点(顶部,有很多反弹)之间的时间与上面相同——大约 5.5 格,或 3.75小姐。
最后,我截取了一系列屏幕截图,显示 NO 接触和 QA 输出在 200 微秒/格之间切换,显示开关触点的完整(几乎 2 毫秒)弹跳,步长为之前的 1/10扫描宽度,低至 20 ns/格,显示转换瞬间和相对时序(这是门的传播延迟变得明显的地方)。
NO 和 QA 转换的渐进式屏幕截图(来源:David Ashton)
请记住,在大多数情况下,相邻的镜头具有不同的开关操作,但这只有在仔细检查时才会注意到。
所有这些测试都是使用 74HC00 IC 进行的,开关触点上有 10K 电阻(这是一个常见的上拉值)。我还将示波器探头更改为 10 倍(其他镜头使用 1 倍),这极大地改善了转换的显示,并在开关触点上显示了一些振铃,可能是由于 1 倍示波器探头的电容被移除。我从 Max(他是一个严格的工头)那里得到的部分简介是尝试不同的电阻和 IC 类型。
这实际上是一个非常漂亮的小去抖电路。转换开关很常见,为了测试目的,将其中的几个构建到面包板中会很有用。
为按钮开关做这样的事情也很方便(它们通常只是单极)。也许我们可以用可重新触发的单稳态电路做点什么
但是 Max 正在努力写他关于开关弹跳和去抖技术的系列文章,他要求在上面讨论的测试电路中使用不同的电阻值和不同的 IC 类型(LS、CMOS)相关的结果,所以我想我最好先把它们搞定。同时,我欢迎任何意见和问题。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !