C2.22.4mechanical bounce debounce设计研究

物理按键的机械回弹同样会产生连击,需要软件消抖

别名: 机械回弹 · 按键消抖 · 硬件连击

概念解释

金属触点或锅仔片在闭合和断开时会在毫秒级里多次通断,示波器上是一串毛刺,固件若对每次边沿都计数,一次按压会变成多次键码。这是机械回弹(switch bounce),和指腹在玻璃上的二次贴合同属“一次意图、多次电事件”,但物理源是开关而不是皮肤。音量键、电源键、电容屏旁边的实体确认键,以及外接键盘,都要把消抖做成软件或固件步骤,不能指望机械结构一次就干净。

机制

触点表面微观上不平整,闭合时弹跳、微动、再闭合,时间尺度通常比皮肤回弹更短,也更密。硬件可以加 RC 滤波,多数消费设备仍把干净边沿的责任留给 MCU:读到第一次闭合后,在窗口内忽略后续跳变,窗口结束时再采样一次确认。窗口太短,毛刺穿过滤波变成双字符、双拍照、飞行模式被连拨;窗口太长,用户感到键“粘”。电源键还涉及长按关机,消抖窗口必须短于长按阈值,否则短按会被拖成一次可疑的长按候选。触摸按钮的防抖和机械消抖不要共用一个计时器:两种毛刺的时间尺度和误杀对象都不同。

怎么研究

用示波器看键的通断毛刺宽度和次数,再在固件里打键码时间戳,对比消抖开/关。自变量是按压力、按键老化(新键 vs 磨损)、温度、以及消抖窗口。因变量是一次按压产生的键码数、短按被升成长按的比例、连按两个不同键时是否被同一窗口误伤。把触摸连击实验和机械消抖实验分开写方法:前者要高速摄影皮肤,后者要电信号。老化键的毛刺会变宽,用新样机定的窗口在寿命末期可能不够。

边界

霍尔、光学和电容式电源键没有金属触点回弹,毛刺来自阈值抖动,窗口策略不同。机械键盘的 NKRO 和全键无冲讨论的是同时键数,不是回弹。车规按键有自己的 EMI 和温度谱,消费电子的 5–20 ms 窗口不能直接搬。触摸屏上画出来的“按键”没有机械回弹,套用开关消抖只会让虚拟键变钝。

怎么落地

  • 为音量、电源、快门等实体键在固件里单独设消抖窗口,并用示波器加键码日志验收“一次按一下码”。
  • 消抖窗口上限低于长按阈值,短按不得被拖进长按状态机。
  • 老化样机和高温样机各测一轮;窗口只在新室温键上合格不算通过。

延伸

  • 同组C2.22.1 连击指同一目标短时间内被多次触发,可能来自手指弹跳而非用户意图 · C2.22.2 系统需要在响应速度与防抖之间设置最小重复触发间隔 · C2.22.3 防抖间隔过长会让用户故意的快速多次点击(如游戏)失效
  • 相邻C10.08 键程、触底与确认 · C6.02 键程与触觉确认
  • 站内检索switch bounce · debouncing · mechanical key

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C2.22.4