4、防拆检测电路设计:上拉/下拉电阻配置、去抖电路、比较器电路

好,咱们接着聊防拆检测。前面讲了物理开关和检测原理,那都是基础。真正让电路稳定工作的,是今天要讲的这三个关键环节:上拉/下拉电阻、去抖电路、还有比较器电路。

说实话,我早年做第一版POS机时,就吃过没处理好这些细节的亏。机器一摔,防拆就误报;手一碰外壳,也误报。客户投诉说你们的机器是不是太敏感了?嗯,那会儿确实尴尬。后来才明白,不是开关不行,是外围电路没伺候好。

4.1 上拉/下拉电阻配置:给信号一个确定的“家”

防拆开关,不管是微动开关还是导电胶触点,本质上就是个机械触点。机械触点有个毛病:断开时,引脚是悬空的。悬空意味着什么?电平不确定。可能被周围电磁干扰拉高,也可能被拉低。这在防拆检测里是致命的。

上拉电阻就是把引脚通过一个电阻接到VCC,让默认状态为高电平。开关闭合时,引脚被拉到GND,变成低电平。这样信号就有了确定的状态。

下拉电阻正好相反,接到GND,默认低电平,开关闭合拉高。

我个人习惯,在防拆检测里多用上拉配置。为什么?因为大多数MCU的GPIO在复位期间是高阻态,上拉能保证复位时也是高电平,不会误触发拆机报警。

电阻值怎么选?

我一般用10kΩ。太小了(比如1kΩ),开关闭合时电流太大,功耗高,电池供电的POS机扛不住。太大了(比如100kΩ),抗干扰能力差,引脚容易受耦合噪声影响。

应用场景 推荐电阻值 说明
普通防拆开关 10kΩ 功耗与抗干扰的平衡点
低功耗设计 47kΩ ~ 100kΩ 但要注意PCB走线远离噪声源
强干扰环境 4.7kΩ 牺牲一点功耗换稳定性

注意:如果MCU内部已经有可编程上拉电阻,我建议还是外部再加一个。内部上拉通常弱一些(50kΩ左右),抗干扰不够。我曾经在量产时发现一批机器在强电磁场下误报,排查到最后就是内部上拉太弱了。

4.2 去抖电路:别让机械抖动骗了你

机械开关按下或释放时,触点不会干净利落地切换。它会弹跳,在几毫秒内反复通断好几次。你想想看,如果MCU在几微秒内采样到好几次电平变化,那防拆逻辑就乱套了。

去抖,就是把这个抖动过滤掉,只认稳定的状态。

硬件去抖有两种常见做法:

  • RC低通滤波 + 施密特触发器:用电阻和电容组成一个低通滤波器,把高频抖动滤掉。后面接施密特触发器,让信号边沿变得陡峭。这是我最喜欢的方式,简单可靠。
  • 单稳触发器:比如用555定时器或专用芯片,检测到边沿后输出一个固定宽度的脉冲。抖动期间不响应新变化。

RC参数怎么算?时间常数τ = R × C。一般取1ms到10ms。比如R=10kΩ,C=0.1μF,τ=1ms。这个时间足够覆盖大多数机械开关的抖动周期。

我的经验:如果PCB空间紧张,可以用软件去抖代替硬件去抖。在MCU里连续采样几次,比如每隔1ms读一次,连续读到3次相同电平才认为状态稳定。但注意,软件去抖会占用CPU时间,而且如果MCU在休眠模式下,可能来不及响应。

我曾经在一个项目里,为了省成本,只做了软件去抖。结果机器在低温环境下,开关的抖动时间变长了,软件去抖参数没跟上,导致偶尔误报。后来还是老老实实加了RC电路。

4.3 比较器电路:精准判断阈值

有些防拆检测不是简单的开关通断,而是需要检测一个模拟量。比如导电胶的接触电阻变化,或者电容式触摸感应。这时候就需要比较器了。

比较器的作用,就是把一个模拟电压和一个参考电压比较,输出高或低电平。说白了,就是给MCU一个干净的数字信号。

典型电路是这样的:

VCC
 │
 └─┬─ R1 ──┬── 同相输入端 (+)
   │       │
   │      ┌┴┐
   │      │ │ 比较器
   │      │ │ (如LM393)
   │      └┬┘
   │       │
   └─ R2 ──┘── 反相输入端 (-)
            │
           GND

参考电压可以用电阻分压得到,也可以用TL431这样的精密基准源。我个人推荐用TL431,温漂小,精度高。POS机工作环境可能从-20℃到60℃,普通分压电阻的温漂会让你阈值飘移。

比较器还有个重要参数:迟滞。没有迟滞的比较器,在输入信号接近阈值时会反复翻转,产生振荡。加上正反馈电阻,引入一点点迟滞,就能避免这个问题。

迟滞怎么加?

在输出端和同相输入端之间加一个反馈电阻。迟滞宽度大约等于 Vout × R1 / (R1 + Rf)。一般设个几十毫伏就够了。

嗯,这里要注意:比较器的输出通常是开集电极(如LM393),需要外部上拉电阻。别漏了,不然输出拉不高。

4.4 完整电路示例

把上面三个部分串起来,一个完整的防拆检测电路就出来了:

防拆开关 → 上拉电阻(10kΩ) → RC去抖(10kΩ+0.1μF) → 比较器(LM393) → MCU GPIO

这个电路我用了好多年,量产过几十万台POS机,没出过防拆误报的问题。当然,PCB布局也很重要:

  • 上拉电阻尽量靠近MCU引脚
  • RC去抖的电容靠近开关侧
  • 比较器的电源引脚加0.1μF去耦电容
  • 走线远离高频信号(比如LCD排线、天线)

避坑指南:我曾经遇到过一个问题——防拆开关的引脚和外壳之间寄生电容太大,导致RC时间常数变了,去抖效果变差。后来在开关引脚周围做了挖空处理,去掉覆铜,问题就解决了。所以,防拆检测的PCB走线,尽量短,尽量干净,别跟其他信号共用参考地平面。

好了,这一节的内容就到这儿。上拉/下拉是基础,去抖是保障,比较器是扩展。三者配合好了,你的POS机防拆检测才算真正可靠。下一节我们聊聊防拆检测的软件实现,包括中断处理和状态机设计。