硬件架构的艺术(八)消抖技术

抖动:在电子设备内两个金属触点随着触点的断开闭合便产生了多个信号,当触点撞击在一起,惯性和弹性形成抖动,导致产生一个快速的脉冲电流而不是从0电流到全电流的转换。这个影响在交流电源线路不明显,由于抖动太快不至于影响大多数设备。但在某些模拟和逻辑电路中可能产生问题(如数字计时器、个人计算机或微处理器等设备的输入)
消抖:确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件
在这里插入图片描述
在这里插入图片描述
解决触点抖动问题:
(1)RC消抖
在这里插入图片描述
开关未使用的默认状态的高电平,当开关闭合后,输出电压通过电容缓慢减低至0;当开关打开后,输出电压通过电容缓慢上升至0;以此减小抖动的影响(即使电压不会瞬变)。R2使电容器缓慢充放电,同样限制了流过开关触点,防止电容器由于瞬间大量电涌烧坏触点。但是如果时间常数过大则开关对快速”断开“或”闭合“可能无法反应。

逻辑门电路有电压阈值,在此阈值要改变输出状态,但是某些开关抖动可能会漏网(使用施密特触发器)

(2)硬件消抖电路
由一对与非门电路制作的交叉耦合闩(还可以SR双稳态触发器设计)提供一种完全的消抖而不用考虑延时限制,而且响应速度和触点一样块。
在这里插入图片描述
当开关处于位置”a“时,门电路”1“的输出就是逻辑高,而门电路拉至逻辑低;如果开关在触点间移动并不在这两点间的区域短暂停止,由于电路2将逻辑0送回门电路1 使其保持状态,保证锁存器的输出为非抖动。

(3)软件消抖电路
1、在足以让抖动停止后的时间读出开关
即每400-500毫秒读出开关,并设置状态标志指示开关状态。但是响应时间慢,如果开关操作时间小于500毫秒就会失败(上述的方法不提供EMI保护,通过为开关提供足够的时间来停止抖动可以减小绝大多数随机噪声脉冲,但取开关状态单一短脉冲干扰可能被当作触点转换,修改软件在每500毫秒循环多次读取输入)
2、开关启动时中断CPU并在中断服务程序(ISR)中消抖
通常,在激活触点时,会产生中断,调用一个子程序(中断服务程序)
在这里插入图片描述
在程序中,DR调用一个子程序DELAY,其作用就是消耗足够长的时间使得触点停止抖动,此时DR检查触点是否在激活状态(即用户按下开关,但是开关还没有松开)。如果处于激活状态,DR等待触点清零。
3、使用计数器消除噪声并验证开关状态
制作一个计数器,在信号为逻辑低时计数,在逻辑为高时重置计数器。如果计数器到达某个固定值,该值应当比噪声脉冲大一至两倍,意味着电流脉冲为有效脉冲。
在这里插入图片描述
在这里插入图片描述

  • 与消抖相关的CPU开销应当最小化
  • 非消抖开关必须连接已编程序的I/O引脚,绝不能连接CPU的中断,否则抖动会引起多重中断,同样会增加CPU的负担,每次中断CPU都会执行中断服务程序(ISR)
  • 与开关状态相关的中断不应当用作时钟或触发器的数据信号
  • 开关输入取样的频率不应当与外界事件同步,否则产生周期性的EMI。(以常用50/60HZ频率取样应当避免)
  • 系统应当对开关输入立即响应(LED或显示屏,以避免显示器或LED出现混乱的情况)
  • 使用定时器有规律地中断CPU,而不是用延时来等待输入稳定
发布了54 篇原创文章 · 获赞 4 · 访问量 1022

猜你喜欢

转载自blog.csdn.net/buzhiquxiang/article/details/103732834