选干簧传感器,先看回跳还是先看去抖窗口
很多项目看到一串细碎边沿后,第一反应是拉长程序去抖时间,可周期一提高,到位信号又被自己滤没。干簧传感器在数字接口里最难拿捏的,不是有没有回跳,而是回跳分布与去抖窗口是否对应同一类运动过程。
回跳来自簧片接触后的机械弹性恢复,它不是永远固定的几个微秒,而会随着磁场爬升速度、目标件速度和接触表面状态变化。磁铁快速掠过时,簧片受力建立得陡,第一次闭合后更容易出现短而密的弹跳;缓慢靠近时,边界附近磁力增长迟缓,反而可能产生较长的犹豫区。若软件只按一个典型值设窗,快慢两端就可能一头漏计、一头增计。
去抖真正要过滤的,不只是金属触点的回弹,还包括边界运动带来的重复跨阈值。比如门体在关到位后有回弹,液位浮子在波动中来回穿过释放边界,程序看到的同样是一串边沿,但根因并不是触点质量差,而是机械系统还没稳定。把这两类现象混为一谈,常会让软件窗口既压不住假信号,又无端增加响应迟滞。
因此窗口设计必须回到系统时序。若信号只用来确认到位且允许几十毫秒延迟,完全可以让前端边沿先进入状态机,再在稳定时间后确认有效;若信号用于高速计数或节拍同步,去抖就不能粗暴地用固定封锁时间,否则真实脉冲间隔一缩短,后续边沿会被整批吞掉。此时更合理的做法,往往是结合运动方向、最小脉宽和边界位置做条件判定,而不是一刀切封窗。
对节拍型设备,还要把去抖延迟折算成位置误差,否则电气过滤会被误当成机构本身的滞后。
硬件整形与软件窗口也要配合。上拉电阻过大、线束电容又高时,边沿本身会变缓,比较器或 MCU 输入在门限附近停留更久,原本一次弹跳可能被采成多次跳变。若前端加施密特触发或适度 RC,程序负担会小很多;但 RC 太重又会把有效脉冲钝化。这个平衡必须按目标最短脉冲宽度来算,而不能只凭“波形看顺了”就定值。
若主控支持输入捕获,最好把真实边沿间隔记录成直方图,再反推窗口上限和下限,这比靠肉眼挑一张示波截图更能避免误判。
调试时最好记录回跳持续时间的分布,而不是只看一两个截图。把不同磁铁速度、不同温度和不同样件下的弹跳长度统计出来,再选能覆盖大部分工况的窗口,通常比拍脑袋设一个保守值更可靠。若发现分布尾巴特别长,就该回头查机械回弹或边沿整形,而不是继续无限加大软件延迟。
还有一个常见误区,是把回跳完全交给程序处理,却忽略了上层逻辑的使用方式。若控制器把每个边沿都直接触发中断,再在中断里去抖,系统负担和时间抖动会被白白放大;先在输入层做粗整形,再把信号交给状态机,往往更稳。信号链的职责分层清楚后,回跳问题才不会蔓延成整机时序问题。
所以,判断边沿是否可信,不能只盯簧片有没有弹几下,而要看窗口是否贴合真实运动边界。让回跳分布和判定逻辑匹配起来,干簧传感器的输出才会不乱报也不迟报。





