
施密特触发器 & RC 按键消抖测试
简介
使用 RC 滤波电路和施密特触发器(反相器)实现的硬件按钮消抖电路,用于精简软件侧的逻辑。
简介:使用 RC 滤波电路和施密特触发器(反相器)实现的硬件按钮消抖电路,用于精简软件侧的逻辑。开源协议
:CC BY-NC-SA 4.0
描述
前言
事实上消抖这个老生常谈的问题,软件方法已经比较成熟了,而且也不难写。但是后面有个很烦的项目,我还是想着让软件侧尽量精简一点,于是设计了一个硬件消抖的方案。如果有成本上的限制,或者不想因此多焊几个元件,还是建议先考虑软件方法。
设计
参考了 深度解析嵌入式开发中的按键去抖技术 – 吴川斌的博客 这篇文章,分析地挺深刻的,我参数选择用的方法论就是这里学的。
首先是触发器,选的是 TI 的 SN74LVC2G14DBVR,是双通道施密特反相器。
看一下 datasheet,重点是正负两个 Vt(触发阈值)。
我们需要知道的是:
- 当前 Vcc 下,Vt+ 的 min;
- 当前 Vcc 下,Vt- 的 max
就是按照最坏情况考虑。
然后发现没有 3.3V 这个值:

原文中的方法是选择更坏方向的电压的数据,也就是取 3V 的 Vt+ min,以及 4.5V 的 Vt- max。但是感觉我算出的结果有点奇怪,一看原文是 5V,4.5 和 5.5 都很近,但是 3.3 到 4.5 差的其实有点多。想着又不是造火箭能用就行,就毛估估拟合出一组:

然后就是对这个 RC 电路作计算(原文插图):


这里 C 使用 1μF 电容,t 取 20ms。Vinit 和 Vfinal 都是 3.3V。计算得到 R1 = 13.544k,R2 = 24.361k,取 R1 = 12k,R2 = 24k。
测试
意外地效果不错?示波器观察按钮消抖前后,在按下/弹起时的波形(黄色为消抖前,绿色为消抖后):


设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










