chapter8——消抖技术

1.简介

  • 在电子设备内两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。“消抖”是用以确保在每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。
  • 机械开关和继电器触点·通常由弹性金属制造,由传动装置强制接触。当触点撞击在一起时,它们的惯性和弹性共同作用形成抖动,导致产生一个快速的脉冲电流而不是从零电流到全电流的平稳转换。开关和线路中的寄生电感与电容进一步引起波形改变,形成一系列衰减正弦振荡。这个影响在交流电路中不明显,因为抖动太快不至于影响大多数设备。但在某些模拟和逻辑电路中可能产生问题,因为这些电路反应太快会将开关脉冲误当作数据流。
  • 时序逻辑数字电路特别容易受到触点抖动的影响。开关抖动产生的电压波形干扰正常逻辑电路的振幅和时序规格要求。结果就是亚稳定性、竞争、小脉冲和故障等问题导致电路失效。

2.开关行为

下图是一个带有上拉电阻的简单按键开关,以及当按键压下和释放时相应的输出。

在这里插入图片描述
在这里插入图片描述
如果开关是用于开灯或启动风扇马达,则触点抖动不是什么问题。如果开关或继电器用作数字计时器、个人计算机或微处理器等设备的输入,由于触点抖动则会产生问题。计数器将会出现多次计数而不是一次计数,在开关释放的时候也会出现同样的问题。

3.开关种类

最简单的开关类型是将两个电导体通过传动机构的运动联系在一起。其他的开关更复杂,包括靠物理信号实现开关的电子线路(如光或磁场)。无论如何,任何开关的最终输出将是(至少是)一对接线端子,它们或通过开关内部触点装置连接在一起(闭合)或不连接(断开)。
一些常见的开关如下:
在这里插入图片描述

  • 拨动开关是通过一个控制杆转到两个或多个位置中的一个位置来操纵的。家用电路常用的灯开关是拨动开关的一个例子。
  • 按钮开关是双位设备,通过按钮的按下和释放来操纵。大多数按钮开关内部有一个弹簧机构,通过瞬间操作使按钮回到“出来”或“不按下”位置。
  • 温度开关包含两个紧挨的金属薄片,每个金属片有不同的热膨胀率。当金属片加热或冷却时,两片金属间的不同热膨胀率使它们产生弯曲。这样,薄片的弯曲就可以用于操纵开关触点位置。
  • 压力开关使用气体压力或液体压力,压力通过活塞、薄膜或波纹管变为机械力来驱动开关。
  • 液位开关也可设计用来探测固体材料的水平,如木材、粮食和煤炭等。
  • 选择开关是由旋钮或某种控制杆来操纵到两个或多个位置中的一个位置。类似于拨动开关,选择开关可能保持在任意的通断位置或内置弹簧装置回位。

4.消抖

以下是一些用于解决触点抖动问题(输入信号“消抖”)的方法。

  • RC消抖

在这里插入图片描述
如上图所示,一个电阻—电容(RC)网路可能是最常见且最容易的消抖电路,就是把一个电阻和电容连接在一起,开关连接至中间。电容经过电阻充电,开关未使用的默认状态是高电平。当开关闭合时,它慢慢将电容消耗至地电位,以此减弱所有小抖动的影响。这种电路能承受某些抖动但不完全消除它们。

  • 硬件消抖电路

在这里插入图片描述
上图展示了另一种硬件方法。它使用了由一对与非门电路制作的交叉耦合闩。它还可以用SR双稳态触发器设计。使用交叉耦合闩的好处是它提供一种完全的消抖而不用考虑延时限制,而且它的响应速度和触点断开/闭合一样快。电路要求触点正常断开或闭合。在开关中,这种安排称为“双掷”,在继电器中,这称为“形状C”。

当开关处于位置“a”时,门电路“1”的输出就是逻辑高,不考虑其他输入值。这使得门电路“2”拉到逻辑低。如果开关在触点间移动并不在这两点间的区域短暂停止,由于门电路“2”将逻辑“0”回送到门“1”使其保持状态。这样保证了锁存器输出为非抖动。

接近以上思想的软件方法之一是将两个触点上拉输入至CPU的输入引脚,CPU当然会注意到许多抖动,但通过编写探测两个触点之一行为的简单代码,抖动同样可消除。

  • 软件消抖电路

软件开关消抖可以很简单,尽管算法的选择会依赖于应用及开关的操作。

检查开关的动态特征和评估环境的影响很重要。随着开关的断开或闭合,所有开关显示开关触点抖动。在触点完全到达最后位置前,开关触点实际上要多次相互反弹。环境干扰包括振动及最重要的电磁干扰(EMI)。电磁干扰是一种有害的干扰,是由于外部来源发射的电磁辐射而影响电路。这种干扰会引起开关内噪声导致抖动。电磁干扰可通过适当的消抖程序来处理。

以下是一些软件(固件)的开关消抖技术:
1)在足以让抖动停止的时间后读出开关。
2)开关启动时中断CPU并在中断服务程序(ISR)中消抖。
3)使用计数器消除噪声并验证开关状态。

5.消抖指南

浪费大量CPU周期来解决消抖问题并不是一个好主意,消抖作为一个小问题,只能占用计算机一小部分资源。所以应当选择将CPU开销最小化的方法,以下是一些应当遵守的指南以在电路中拥有强大的消抖机制:

  • 与消抖相关的CPU开销应当最小化。
  • 非消抖开关必须连接至已编程序的I/O引脚,绝不能连接至CPU的中断。如果连接至CPU中断,抖动会引起多重中断,同样会增加CPU的负担,因为每次中断CPU都会执行中断服务程序(ISR)。
  • ISR延时不能容忍,必须保持ISR的快速。与开关状态相关的中断不应当用作时钟或触发器的数据信号,因为这会违反最小时钟宽度或数据建立及保持时间等原则。
  • 开关输入取样的频率不应当与外界事件同步,否则会产生周期性的EMI。以常用50/60Hz频率的速度取样应当避免。甚至机械振动也会产生周期性干扰。对汽车而言,甚至以发动机振动或驾驶杆振动同步的频率取样都可能引发EMI。
  • 系统应当对开关(用户)输入立即响应。万一开关状态显示在LED或显示器上,用户要系统迅速响应以避免显示器或LED出现混乱情况。
  • 使用定时器有规律间隔地中断CPU,而不是用延时来等待输入稳定。这样可使得消抖代码可移植到新的编译器或CPU中,而不是随着每次时钟频率变化或CPU变化而改变等待状态。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是 Java 异常? Java 异常是指程序执行期间可能发生的错误或异常情况,例如除以零、数组越界、空指针引用等。当这些异常发生时,Java 虚拟机会抛出一个异常对象,并且程序的执行流程将被中断。 2. Java 异常处理机制有哪些关键字和语句? Java 异常处理机制包括以下关键字和语句: - try:用于包含可能会抛出异常的代码块。 - catch:用于捕获指定类型的异常,并在捕获到异常时执行相应的处理代码。 - finally:用于包含无论是否发生异常都需要执行的代码块。 - throw:用于抛出指定的异常对象。 - throws:用于声明可能会抛出指定类型异常的方法。 3. Java 中的异常分为哪几类? Java 中的异常分为两大类:Checked Exception 和 Unchecked Exception。 Checked Exception 是指在编译时就能够检查出来的异常,例如 IOException、ClassNotFoundException 等。程序必须显式地处理这些异常,否则编译不通过。 Unchecked Exception 是指在运行时才能检查出来的异常,例如 NullPointerException、ArrayIndexOutOfBoundsException 等。程序可以选择处理这些异常,但不处理也不会导致编译错误。 4. 请简要说明 try-catch-finally 的执行流程。 当程序执行到 try 块时,Java 会尝试执行其中的代码。如果在 try 块中抛出了异常,则会将异常对象传递给 catch 块进行处理。catch 块会匹配异常类型,如果匹配成功,则执行相应的处理代码。如果 catch 块处理完异常后,程序需要继续执行,则会执行 finally 块中的代码。如果 finally 块中也抛出了异常,则该异常会覆盖 try 或 catch 块中的异常。 如果 try 块中没有抛出异常,则 catch 块不会被执行。如果 finally 块中抛出异常,则该异常会覆盖 try 块中的异常。 5. 什么是异常链? 异常链是指在处理异常时,将一个异常对象作为另一个异常的原因,并将它们组合成一个异常链。这样做的好处是,在抛出异常时可以同时传递多个异常信息,从而更加清晰地表示异常发生的原因。 6. 请简要说明 try-with-resources 的作用和使用方法。 try-with-resources 是 Java 7 中引入的语法,用于自动关闭实现了 AutoCloseable 接口的资源。在 try 块中声明需要使用的资源,Java 会在 try 块执行完毕后自动关闭这些资源,无需手动调用 close 方法。 try-with-resources 的语法如下: ``` try (Resource1 r1 = new Resource1(); Resource2 r2 = new Resource2()) { // 使用资源 } catch (Exception e) { // 处理异常 } ``` 7. 请简要说明 Java 中的文本 IO。 Java 中的文本 IO 主要包括两种类:Reader 和 Writer。Reader 用于读取字符流,而 Writer 用于写入字符流。 Java 中常用的 Reader 类包括 InputStreamReader、FileReader 和 BufferedReader,常用的 Writer 类包括 OutputStreamWriter、FileWriter 和 BufferedWriter。这些类提供了各种方法来读取和写入字符流,并且可以处理多种编码格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值