2、物理按键基础:按键的电气特性、机械按键 vs 薄膜按键、按键矩阵原理、去抖动电路设计
好,咱们开始聊物理按键。说实话,虽然现在触摸屏满天飞,但物理按键在嵌入式设备里,尤其是PDA这种需要盲操的场景,依然是不可替代的。我最早做PDA项目时,老板扔给我一个按键板,说「你测测看」。结果一按下去,波形乱跳,我才意识到——按键这事儿,远没想的那么简单。
2.1 按键的电气特性
按键本质上就是个开关。按下导通,松开断开。但实际电气特性,比这复杂得多。
关键参数有这几个:
- 接触电阻:理想状态下是0Ω,实际一般在几十毫欧到几欧之间。我遇到过一批劣质按键,接触电阻能到几十欧,直接导致电平判断出错。
- 绝缘电阻:断开时,两个触点之间的电阻。通常要求大于100MΩ。如果受潮或污染,这个值会急剧下降。
- 额定电流/电压:别小看这个。按键的触点是有寿命的,超过额定值拉弧,触点很快烧蚀。我见过有人用5V/10mA的按键去驱动LED,结果几个月就失灵了。
- 动作力与行程:这个跟手感直接相关。轻触按键一般是1.6N左右,行程0.25mm。太轻容易误触,太重按着累。
核心要点:按键的电气特性,决定了你的电路设计能不能稳定工作。别只看「通断」两个字。
2.2 机械按键 vs 薄膜按键
这两种按键,我都在项目里用过。说白了,各有各的命。
| 对比项 | 机械按键 | 薄膜按键 |
|---|---|---|
| 手感 | 段落感清晰,有咔嗒声 | 偏软,回弹一般 |
| 寿命 | 10万~100万次 | 100万~500万次 |
| 防水防尘 | 差,需要额外密封 | 好,可做到IP67 |
| 成本 | 较高 | 较低,适合大批量 |
| 厚度 | 较厚 | 薄,可做柔性 |
| 维修性 | 可单独更换 | 坏了通常换整块 |
我的经验是:如果产品需要频繁操作,比如PDA的键盘区,我倾向于用机械按键。手感反馈好,用户不容易按错。如果是面板上的功能键,一年按不了几次,薄膜按键更划算。
小技巧:薄膜按键的走线很细,容易断裂。设计时尽量让走线避开弯折区域。我曾经吃过这个亏,批量生产后出现大量断路,排查了三天才找到原因。
2.3 按键矩阵原理
单个按键很简单,但PDA上少说十几个按键,多则几十个。每个按键单独接一个GPIO?不现实。这时候就要用按键矩阵。
矩阵的原理,说白了就是「分时复用」。
把按键排成行和列。比如4行×4列,就能接16个按键,只需要8个IO口。怎么做到的?
- 行线设为输出,列线设为输入(带上拉)。
- 逐行拉低,同时读取列线的电平。
- 如果某列被拉低,说明该行该列的按键被按下。
举个例子,一个2×2的矩阵:
// 伪代码示意
行1 = 输出低,行2 = 输出高
读取列1、列2
如果列1为低 → 按键(行1,列1)按下
如果列2为低 → 按键(行1,列2)按下
行1 = 输出高,行2 = 输出低
读取列1、列2
如果列1为低 → 按键(行2,列1)按下
如果列2为低 → 按键(行2,列2)按下
注意:矩阵扫描有个经典问题——鬼键。当三个按键同时按下时,第四个按键会被误判为按下。解决办法是加二极管隔离,或者在软件里做防鬼键处理。我一般两种都做,保险。
2.4 去抖动电路设计
这是新手最容易忽略的地方。你想想看,机械按键按下时,触点不是一下子稳定接触的。它会弹跳几次,持续几毫秒到几十毫秒。如果不处理,一次按下会被识别成好几次。
去抖动的思路有两种:硬件去抖和软件去抖。
硬件去抖
最简单的做法:在按键两端并联一个电容,比如0.1μF。电容的充放电会平滑掉弹跳信号。
更可靠的做法:用施密特触发器,比如74HC14。它能提供滞回特性,信号一旦翻转就不会因为微小波动再翻回来。
// 硬件去抖电路示意
按键一端 → VCC
按键另一端 → 电阻(10kΩ) → GND
按键另一端 → 电容(0.1μF) → GND
按键另一端 → 施密特触发器输入 → 输出到MCU
软件去抖
我个人更推荐软件去抖。成本低,灵活,而且调试方便。
基本思路:检测到按键状态变化后,不立即响应,而是等待一段时间(通常10~20ms),再读取一次确认。
// 软件去抖示例(C语言风格)
uint8_t debounce(uint8_t pin) {
uint8_t state = digitalRead(pin);
delay(10); // 等待10ms
uint8_t new_state = digitalRead(pin);
if (state == new_state) {
return state; // 状态稳定,返回
} else {
return debounce(pin); // 不稳定,重新检测
}
}
避坑指南:我曾经在一个项目里用了20ms的延时去抖,结果用户反映按键反应太慢。后来改成10ms,配合硬件电容,效果刚刚好。记住,去抖时间不是越长越好,要平衡响应速度和稳定性。
嗯,到这里,物理按键的基础就聊完了。你可能会问,为什么我要花这么多篇幅讲这些?因为按键是用户和机器交互的第一道关口。按键按下去的那一刻,用户对产品的印象就形成了。手感好不好、反应快不快、会不会误触——这些细节,决定了产品是「好用」还是「凑合用」。
下一节,咱们聊聊按键的布局和人体工学。那又是另一门学问了。