青海建设工程信息网站,大连网站制作培训,wordpress登录页面打不开,wordpress搭建500错误简介
在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号#xff0c;这就是抖动。
消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。#xff08;就是每次断开闭合只对应一个操作#xff09;。
抖动在某些模拟和逻辑电路中可能产生问…简介
在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号这就是抖动。
消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。就是每次断开闭合只对应一个操作。
抖动在某些模拟和逻辑电路中可能产生问题因为这些电路反应太快会将开关脉冲误当作数据流。
时序逻辑数字电路特别容易收到触点抖动的影响。开关抖动产生的电压波形干扰正常逻辑电路的振幅和时序规格要求。结果是亚稳定性、竞争、小脉冲和故障等问题导致电路失效。
开关行为 若开关用于开灯或启动风扇马达则触点抖动基本没有影响但是用作数字计数器、个人计算器或微处理器等设备的输入由于触点抖动就会产生问题。计数器会多次计数而不是一次计数。
原因触点停止抖动所化时间大约是毫秒级数字电路能在ms甚至ns内响应。
通常的解决方法消抖设备或软件可以确保在一个给定时间内ms级仅有唯一数字信号记录。 开关种类 上面是常见的一些开关种类。
消抖
8.4.1 RC消抖 和一个一阶RC低通滤波器差不多通过电容充放电实现了滤掉高频信号的功能。这种电路可以承受某些抖动但不完全消除它们。
通过调节RC可以在开关断开时使电压在抖动停止前一直低于门电路的逻辑1。潜在的副作用如果时间常数过大则对快速断开或闭合可能无法反应。合上开关反之同理。 若没有R2也能很好的消除抖动。但是由于时间常数RC变小充放电更快会导致抖动。R2使电容器慢速充电达到更好的滤波效果。电阻同样限制了流经开关触点的电流防止电容器瞬间大量电涌烧坏触点。
最后开关的状态信息实际上不是数字的因此使用它控制类似于开关集成电路的电路不会很有效。为了正确使用开关状态信息需要基本的AD转换。 逻辑门电压有某个电压阈值滤波后抖动也有可能超过阈值范围导致消抖不成功。 使用施密特触发器电压降至第一个阈值以后触发但是电压上升要到另外一个阈值才会改变也就是滞回比较器。施密特触发器降低了对开关抖动的灵敏度。 电容放电公式 RC应使得Vcap直到开关停止抖动始终高于使门电路转换的阈值电压。
电容充电公式 下图在RC消抖电路中加一个二极管即使出现R1R2R2等错误导致之滞回压呈现不同值时也能正确运行。在此情况下二极管形成一个捷径将R2短路所有电流从R1流过。 该电路断开和闭合时的状态 断开时通过R1和C充电。开关闭合通过R2放电。
没有R2开关闭合时电容器会短路。断开时如果没有二极管R1和R2将增加电容的充电时间降低电路的速度。另一个选择是将R1变小但是在开关闭合时R1接在电源线两端会导致不必要的电流浪费。
硬件消抖电路 图中使用了一对与非门制作了一个交叉耦合闩该电路完全消抖而不用考虑延时限制。
开关处于a门电路1为高开关处于b门电路2为高。当开关在触点间移动并不在两点间区域短暂停止由于门电路2将逻辑0回送到门1使其保持稳定。保证了锁存器输出非抖动。
把两个触点上拉至CPU的输入引脚同样可以通过将这种电路通过软件实现。
软件消抖电路
方案A在足以让抖动停止的时间后读出开关
每400~500ms读出开关任何好的开关都会在这个时间内消除抖动每500ms输出一次采样的结果。缺点响应时间慢。
该方法不提供EMI电磁干扰保护。可以通过软件在500ms内多次读取输入寻找一个稳定的信号拒绝大多数EMI。
方案B开关启动时中断CPU并在中断服务程序ISR中消抖
激活触点时通常计算机会产生中断调用一个子程序中断服务程序。汇编消抖程序 消抖程序必须于硬件相匹配开关和继电器随着年限增长将会失去弹性使得触点停止都懂的时间增长。在键盘崭新时运行良好的消抖代码一两年后可能就失灵了。
方案C使用计数器消除噪声并验证开关状态
C代码 思路到达某个逻辑开始计数等计数超过某个值再判定电流脉冲为有效脉冲。
消抖指南
消抖只能占用计算机一小部分资源应该选择使CPU开销最小的方法。消抖应当遵循的指南
1、与消抖相关的CPU开销应当最小化。
2、未消抖开关必须连接已编程序的IO引脚绝不能连接至CPU的中断。可能导致多重中断
3、ISR中断服务程序延时不能容忍。与开关状态有关的中断不应作为时钟或触发器的数据信号因为可能违反最小时钟宽度或SH要求。
4、开关输入采样频率不应与外界时间同步否则会产生周期性的EMI。
5、系统对开关输入立即响应。
6、使用定期器有规律间隔地中断CPU而不是用延时来等待输入稳定否则每次时钟频率改变都需要改变等待状态。
在多重输入下消抖
所以开关可以一起处理且占用CPU很少。 程序目的确保输入稳定50ms而没有触点抖动。 输入switches_inputs为0则输出保持为1输入为1则立马输出为0.
推荐通过时钟中断触发Debounces-switches而不是固定的50ms使设计具有可移植性。
现有的解决方法
采用外部消抖集成电路。 MAX681x系列接受一个或多个来自机械开关地抖动输入并且在短暂的预制限制延时后产生一个完全的数字输出。 芯片内部只有当输入在整个限定周期内稳定时才会使能计数器计时更新输出。
欠电压锁定电路当加压时输出正确电压低于低电压阈值时消抖电路保持通透输出就等于没有延时的原始输入。