《硬件架构的艺术》笔记(八):消抖技术
简介
在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。
消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。(就是每次断开闭合只对应一个操作)。
抖动在某些模拟和逻辑电路中可能产生问题,因为这些电路反应太快会将开关脉冲误当作数据流。
时序逻辑数字电路特别容易收到触点抖动的影响。开关抖动产生的电压波形干扰正常逻辑电路的振幅和时序规格要求。结果是亚稳定性、竞争、小脉冲和故障等问题导致电路失效。
开关行为


若开关用于开灯或启动风扇马达,则触点抖动基本没有影响,但是用作数字计数器、个人计算器或微处理器等设备的输入,由于触点抖动就会产生问题。计数器会多次计数而不是一次计数。
原因:触点停止抖动所化时间大约是毫秒级,数字电路能在ms甚至ns内响应。
通常的解决方法:消抖设备或软件可以确保在一个给定时间内(ms级)仅有唯一数字信号记录。
开关种类

上面是常见的一些开关种类。
消抖
8.4.1 RC消抖

和一个一阶RC低通滤波器差不多,通过电容充放电实现了滤掉高频信号的功能。这种电路可以承受某些抖动但不完全消除它们。
通过调节RC可以在开关断开时,使电压在抖动停止前一直低于门电路的逻辑1。潜在的副作用:如果时间常数过大则对快速断开或闭合可能无法反应。合上开关反之同理。

若没有R2,也能很好的消除抖动。但是由于时间常数(RC)变小,充放电更快,会导致抖动。R2使电容器慢速充电,达到更好的滤波效果。电阻同样限制了流经开关触点的电流,防止电容器瞬间大量电涌烧坏触点。
最后,开关的状态信息实际上不是数字的,因此使用它控制类似于开关集成电路的电路不会很有效。为了正确使用开关状态信息,需要基本的AD转换。

逻辑门电压有某个电压阈值,滤波后抖动也有可能超过阈值范围,导致消抖不成功。

使用施密特触发器,电压降至第一个阈值以后触发,但是电压上升要到另外一个阈值才会改变(也就是滞回比较器)。施密特触发器降低了对开关抖动的灵敏度。

电容放电公式:

RC应使得Vcap直到开关停止抖动始终高于使门电路转换的阈值电压。
电容充电公式:

下图在RC消抖电路中加一个二极管,即使出现R1+R2<R2等错误导致之滞回压呈现不同值时也能正确运行。在此情况下,二极管形成一个捷径将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系列接受一个或多个来自机械开关地抖动输入,并且在短暂的预制限制延时后产生一个完全的数字输出。

芯片内部只有当输入在整个限定周期内稳定时才会使能计数器计时,更新输出。
欠电压锁定电路当加压时输出正确,电压低于低电压阈值时,消抖电路保持通透,输出就等于没有延时的原始输入。
相关文章:
《硬件架构的艺术》笔记(八):消抖技术
简介 在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。 消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。(就是每次断开闭合只对应一个操作)。 抖动在某些模拟和逻辑电路中可能产生问…...
Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
一.什么是Spring?它解决了什么问题? 1.1什么是Spring? Spring,一般指代的是Spring Framework 它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码…...
【算法】连通块问题(C/C++)
目录 连通块问题 解决思路 步骤: 初始化: DFS函数: 复杂度分析 代码实现(C) 题目链接:2060. 奶牛选美 - AcWing题库 解题思路: AC代码: 题目链接:687. 扫雷 -…...
如何选择黑白相机和彩色相机
我们在选择成像解决方案时黑白相机很容易被忽略,因为许多新相机提供鲜艳的颜色,鲜明的对比度和改进的弱光性能。然而,有许多应用,选择黑白相机将是更好的选择,因为他们产生更清晰的图像,更好的分辨率&#…...
Rust 力扣 - 740. 删除并获得点数
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 首先对于这题我们如果将所有点数装入一个切片f中,该切片f中的i号下标表示所有点数为i的点数之和 那么这题就转换成了打家劫舍这道题,也就是求选择了切片中某个下标的元素后,该…...
OpenCV从入门到精通实战(七)——探索图像处理:自定义滤波与OpenCV卷积核
本文主要介绍如何使用Python和OpenCV库通过卷积操作来应用不同的图像滤波效果。主要分为几个步骤:图像的读取与处理、自定义卷积函数的实现、不同卷积核的应用,以及结果的展示。 卷积 在图像处理中,卷积是一种重要的操作,它通过…...
Docker核心概念总结
本文只是对 Docker 的概念做了较为详细的介绍,并不涉及一些像 Docker 环境的安装以及 Docker 的一些常见操作和命令。 容器介绍 Docker 是世界领先的软件容器平台,所以想要搞懂 Docker 的概念我们必须先从容器开始说起。 什么是容器? 先来看看容器较为…...
环形缓冲区
什么是环形缓冲区 环形缓冲区,也称为循环缓冲区或环形队列,是一种特殊的FIFO(先进先出)数据结构。它使用一块固定大小的内存空间来缓存数据,并通过两个指针(读指针和写指针)来管理数据的读写。当任意一个指针到达缓冲区末尾时,会自动回绕到缓冲区开头,形成一个"环"。…...
jQuery-Word-Export 使用记录及完整修正文件下载 jquery.wordexport.js
参考资料: jQuery-Word-Export导出word_jquery.wordexport.js下载-CSDN博客 近期又需要自己做个 Html2Doc 的解决方案,因为客户又不想要 Html2pdf 的下载了,当初还给我费尽心思解决Html转pdf时中文输出的问题(html转pdf文件下载之…...
云服务器部署WebSocket项目
WebSocket是一种在单个TCP连接上进行全双工通信的协议,其设计的目的是在Web浏览器和Web服务器之间进行实时通信(实时Web) WebSocket协议的优点包括: 1. 更高效的网络利用率:与HTTP相比,WebSocket的握手只…...
C#+数据库 实现动态权限设置
将权限信息存储在数据库中,支持动态调整。根据用户所属的角色、特定的功能模块,动态加载权限” 1. 数据库设计 根据这种需求,可以通过以下表设计: 用户表 (Users):存储用户信息。角色表 (Roles):存储角色…...
(原创)Android Studio新老界面UI切换及老版本下载地址
前言 这两天下载了一个新版的Android Studio,发现整个界面都发生了很大改动: 新的界面的一些设置可参考一些博客: Android Studio新版UI常用设置 但是对于一些急着开发的小伙伴来说,没有时间去适应,那么怎么办呢&am…...
Ubuntu24虚拟机-gnome-boxes
推荐使用gnome-boxes, virtualbox构建失败,multipass需要开启防火墙 sudo apt install gnome-boxes创建完毕~...
k8s rainbond centos7/win10 -20241124
参考 https://www.rainbond.com/ 国内一站式云原生平台 对centos7环境支持不太行 [lighthouseVM-16-5-centos ~]$ curl -o install.sh https://get.rainbond.com && bash ./install.sh 2024-11-24 09:56:57 ERROR: Ops! Docker daemon is not running. Start docke…...
SpringBoot+Vue滑雪社区网站设计与实现
【1】系统介绍 研究背景 随着互联网技术的快速发展和冰雪运动的普及,滑雪作为一种受欢迎的冬季运动项目,吸引了越来越多的爱好者。与此同时,社交媒体和在线社区平台的兴起为滑雪爱好者提供了一个交流经验、分享心得、获取信息的重要渠道。滑…...
MySql.2
sql查询语句执行过程 SQL 查询语句的执行过程是一个复杂的过程,涉及多个步骤。以下是典型的关系数据库管理系统 (RDBMS) 中 SQL 查询语句的执行过程概述: 1. 客户端发送查询 用户通过 SQL 客户端或应用程序发送 SQL 查询语句给数据库服务器。 2. …...
算法之区间和题目讲解
题干 难度:简单 题目分析 题目要求算出每个指定区间内元素的总和。 然而,区间在输入的最下面,所以按照暴力破解的思路,我们首先要遍历数组,把它的值都存进去。 然后,遍历下面的区间,从索引a…...
价格分类(神经网络)
# 1.导入依赖包 import timeimport torch import torch.nn as nn import torch.optim as optimfrom torch.utils.data import TensorDataset, DataLoader from sklearn.model_selection import train_test_splitimport numpy as np import pandas as pd import matplotlib.pypl…...
对智能电视直播App的恶意监控
首先我们要指出中国广电总局推出的一个政策性文件是恶意监控的始作俑者,这个广电总局的政策性文件禁止智能电视和电视盒子安装直播软件。应该说这个政策性文件是为了保护特殊利益集团,阻挠技术进步和发展的。 有那么一些电视机和电视盒子的厂商和电信运…...
【JavaEE初阶】多线程初阶下部
文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比(面试题) 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
