问:机械开关和反跳电路中的开关反弹
有时,你可能使用触摸开关或机械开关构建了一个快速响应电路,却不明白为什么该电路不能正常工作。这可能是由于触点回跳(也称为颤动)引起的。
开关触点的工作原理
我们似乎可以直观地认为用于连接的开关是快速、直接且牢固的。但实际情况却略有不同。
图1:开关信号的理想状态
图2:开关信号的实际状态
实际上,导电点之间的开关触点是通过可移动的机械元件来建立或分离的。由于开关触点表面的老化、操作惯性、机械设计和微观条件等因素的影响,一般的开关在打开或关闭连接所需的几十毫秒内会发生多次转换。这种行为通常被称为“开关反弹”,是实际使用中无法避免的。
机械开关有时会在规格书中列出其反弹时间信息,如 Würth Elektronik的WS-TASV系列J-Bend SMT触摸开关4.7x3.5mm所示。
反跳电路的设计
下面我们来分享一个简单的反跳电路,可使用一些常见的分立元件制作低通滤波器,从而消除这种多余的信号。
增加滤波器
简单的RC滤波器是制作低通滤波器最经济、最简单的方法之一。当开关断开时,电容通过R1+R2充电,使电压缓慢上升。当开关闭合时,电容通过R2以可控速率放电。
如果合理、适当地选择滤波器元件,则可在平稳转换的充放电过程中吸收开关反弹。要计算电容和电阻的值,你可以使用以下适用于上述电路的时间常数公式:
τ = (R1 + R2) ⋅ C1
τ:时间常数(以s为单位)
R:电阻值(以Ω为单位)
C:电容值(以F为单位)
时间常数是去开关颤动所需时间和电路响应时间之间的平衡。在一个时间常数内,电压将上升到其最终值的63%或下降到其最终值的37%。在两种情况下,电压会在五个时间常数后达到99%。
例如:
反弹时间:规格指定为10ms
选择R1来限制电流,可以采用1 kΩ的经典值
R2:选择两个标准值来去颤动:10 kΩ和47 kΩ
电源电压为5 VDC
因此,通过计算得出两个电容值:
C1= τ / (R1+R2)
然后得出此电路的两个值范围:
解决方案1:R1 = 1 kΩ,R2 = 10 kΩ,C1 = 1 µF
解决方案2:R1 = 1 kΩ,R2 = 47 kΩ,C1 = 220 nF
添加二极管
在R2的两端分别添加一个D1二极管,可以分别控制充电时间和放电时间。这样一来,使用R1和D1可为电容充电提供更快的转换时间,而仅使用R2则可为电容提供不同的放电时间,因为在这种情况下二极管处于阻塞状态。
添加缓冲器
如果应用不能支持未定义的值(例如0.8V和2.5V),则可能需要使用具有滞后作用的施密特触发器缓冲器。下图显示了具有不同导通和关断时间以及附加滞后的电路。电路的响应时间可能需要与单片机的采样时间相协调。
瞬态保护
如果开关位于较远处或较长线路的末端,可能需要对过电压、ESD或其他瞬态进行保护。这与输入电路前端的铁氧体磁珠和TVS二极管一样简单。