在以下电路上(打开 LED 的去抖动按钮):
我试图理解为什么 LED 不会亮起,因为电容器看起来像是绕过了开关。当电容器充满时,它不传输/导电?
你会注意到我非常初学者,但是在阅读了 20 个小时的各种教程之后,我仍然无法真正弄清楚一些非常简单的东西;完整的电容器与简单的电线有何不同?如果我用电线代替电容器,用电线代替电容器,灯会一直亮着。
编辑:有人指出去抖电路没有意义(电压差等)这是我第二次尝试更有意义。R5 和 R6 可能相同,但我认为将它们分开将有助于为每个组件保留一份工作。
在以下电路上(打开 LED 的去抖动按钮):
我试图理解为什么 LED 不会亮起,因为电容器看起来像是绕过了开关。当电容器充满时,它不传输/导电?
你会注意到我非常初学者,但是在阅读了 20 个小时的各种教程之后,我仍然无法真正弄清楚一些非常简单的东西;完整的电容器与简单的电线有何不同?如果我用电线代替电容器,用电线代替电容器,灯会一直亮着。
编辑:有人指出去抖电路没有意义(电压差等)这是我第二次尝试更有意义。R5 和 R6 可能相同,但我认为将它们分开将有助于为每个组件保留一份工作。
这不是一个好的去抖电路。
一个问题是(至少在理想情况下)开关及其连接线的电阻为零。这意味着当开关闭合时电容器会瞬间放电。(实际上,如果电容器上有足够高的电压并且它具有足够高的容量,这种快速放电甚至可能对开关触点或接线不利。)
电容式开关去抖应该在开关处于一种状态时对电容器缓慢充电,在开关处于另一种状态时缓慢放电。RC 常数不必相同,但它应该是非零值。该电路具有控制电容器充电的电阻器;它只需要开关回路中的一个电阻来优雅地放电。
该电路的另一个问题是,LED 仅在电路开启一段时间后才会关闭,例如,如果电路从一开始就使用相同的电压源就已经存在。但是,如果在时间 \$t = 0\$ 时,电压源一直为 0V 并突然跳到它的电压怎么办?那时,肯定是空的电容器开始充电。充电时,电流会流动,LED 会短暂亮起,然后变暗。(好吧,也许不是,因为你的源只有 1V,但那是另一回事)。
在 CircuitLab 中,您可以在“时域”仿真中区分这两种情况。您可以“跳过初始”或不。求解器可以假装电路一直处于给定状态,直到时间 \$t = 0\$,然后从那里开始求解。或者可以从电路刚刚在\$t = 0\$ 出现,电压源开始工作,电容空等的角度来解决。
这里的最后一个考虑因素是电路只点亮一个 LED,因此开关弹跳基本上没有实际意义,除非 LED 照射在某个光学检测器上,此时开关弹跳变成信号中的毛刺。如果 LED 的工作只是提供漂亮的光线,那么您的眼睛甚至无法快速看到开关弹跳。
这是电路的时域仿真(将 V1 更改为 3V 后)。绘制的是 LED 电流。重要提示:Skip Initial 参数设置为 Yes,因此我们可以看到当电容器最初为空且电压源通电至 3V 时会发生什么。这都是在开关处于打开状态时。
如您所见,电流通过 LED 激增,然后消失。如果您的意图是操作员通过按钮严格控制 LED,那么您的设计不会 100% 实现您的意图。
关于下面的评论,假设目标是实际驱动微控制器引脚(一切都在 5V 下运行)。首先,我们可以在没有任何电容的情况下做到这一点,并通过以相当低的速率对引脚进行采样来处理软件中的去抖动。
当开关打开时,输出被下拉电阻拉至 0V。当我们关闭开关时,电阻顶部的电压上升到 5V。该输出可视为一个信号。我们对信号的低频分量感兴趣:相对较慢的开关按下。我们想要拒绝高频,例如开关弹跳。为此,我们可以添加一个无源单极 RC 低通滤波器:
现在,当开关闭合时,电压会随着电容器充电而逐渐升高。您可以在时域仿真中看到这一点:
当开关打开时,电容器将通过 R1 和 R1 放电,逐渐将电压降至零。电容器基本上跟随R1的电压,但由于必须通过R1充电,并通过R1和R2放电而具有滞后性。(注意放电速度是充电速度的两倍!)
微处理器输入以高阻抗感测电压,因此我们可以忽略其负载效应,甚至在图表上不显示。对于 LED,我们不能这样做,因为它需要我们的电路必须提供的电流。该电流流过我们的电阻器并产生我们必须考虑的电压:换句话说,它具有“负载效应”。
如果我们将输出馈送到施密特触发器,这种类型的电路效果会更好。施密特触发器是一种数字信号缓冲器,其滞后现象类似于温度计。当超过某个高输入阈值时,它的输出变高,当超过另一个低阈值时,它的输出变低。例如,当输入高于 3.5 伏时它可能会变高,而只有当输入低于 1.5 时才会变低。
因此,即使电容器允许通过一些噪声,这些噪声仍可能导致在输入阈值附近出现一些小的来回翻转,施密特触发器也会拒绝这种情况。
假设我们想用一个电容器对 LED 进行去抖动?问题是由于需要为 LED 提供电流,电阻最终会过低。如果我们只是使用相同的电路并使电阻更小(并且电容器以相同的倍数增大),我们最终会得到一些浪费功率的东西。做到这一点的方法是使用一个小信号环路来处理开关,并对其进行去抖动,然后使用电压来控制一个晶体管,该晶体管将电流倾倒到 LED 中。
尽管消除LED 的抖动可能没有用,但如果我们将电阻和/或电容器做得足够大,我们可以获得一个很好的行为:当按钮被按住时 LED 会慢慢淡出,而当它被释放时又会淡出。
这与以前的电路相同:“输出到微控制器”节点现在连接到驱动电流到 LED 的 n 沟道 MOSFET 的基极。MOSFET“缓冲”来自 LED 驱动的去抖逻辑。去抖电路不受 LED 的低阻抗干扰,并且 LED 不会因去抖电路中的高阻抗而缺乏电流。
之所以会出现这种效应,是因为在稳定状态下,电容器有效地阻止了来自直流电压的任何电流。这可以通过理解等式看出
i=C*(dV/dt)
在 DC 时,微分项为 0,因此电流为 0。因此,通过电容器的电流在稳态下为零。
如果你认为这是理所当然的,那么这个电路为什么工作应该是相当明显的。如果您想要比这更多的细节,那么这个视频可能会比我的描述更好地展示电容器的物理特性是如何产生上述结果的。
出于许多目的,电容器可以被视为非常小的可充电电池。它只会在充电或放电时通过电流。
大多数 LED 需要至少 2 伏的电压才能点亮 - 要让您的电路正常工作,电压源应至少为 3 伏。然后,您可能会在打开开关后看到 LED 继续亮起几分之一秒,因为电容器正在充电。
"When the capacitor is full, it doesn't transmit/conduct electricity"
是的。它不是一根电线,它是(就像符号一样)两个平行板靠在一起。