嵌入式基础-按键和传感器的硬件电路连接和工作原理
·
1. 按键
- 硬件连接方式:
- 下接按键(常用):
- 方式一: GPIO直接连接按键,按键另一端接地。GPIO必须配置为上拉输入模式。
- 方式二: GPIO连接按键,按键另一端接地,同时GPIO外部连接一个上拉电阻。GPIO可以配置为浮空输入或上拉输入模式。
- 上接按键:
- 方式三: GPIO连接按键,按键另一端接3.3V。GPIO必须配置为下拉输入模式。
- 方式四: GPIO连接按键,按键另一端接3.3V,同时GPIO外部连接一个下拉电阻。GPIO可以配置为浮空输入或下拉输入模式。
- 下接按键(常用):
- 工作原理:
- 下接按键:
- 未按下: GPIO通过内部或外部上拉电阻保持高电平。
- 按下: GPIO被按键直接拉低到地电平。
- 上接按键:
- 未按下: GPIO通过内部或外部下拉电阻保持低电平。
- 按下: GPIO被按键直接拉高到3.3V。
- 下接按键:
- 按键抖动: 由于机械按键的物理特性,在按下和松开的瞬间,会产生短暂的抖动。
- 解决方法:
- 延时消抖: 在检测到按键按下或松开后,延时一段时间(通常为5-10ms),再读取按键状态,以消除抖动的影响。
- 解决方法:
详细讲解
1.1 按键的硬件连接
- 下接按键:
- 方式一(常用):
-
电路图:

-
原理:
- 未按下: PA0通过上拉电阻连接到3.3V,输入高电平。
- 按下: PA0通过按键连接到GND,输入低电平。
-
配置: GPIO (PA0) 必须配置为上拉输入模式。
-
- 方式二:
-
电路图:

-
原理:
- 未按下: PA0通过外部上拉电阻连接到3.3V,输入高电平。
- 按下: PA0通过按键连接到GND,输入低电平。
-
配置: GPIO (PA0) 可以配置为浮空输入或上拉输入模式。
-
- 方式一(常用):
- 上接按键:
- 方式三:
-
电路图:

-
原理:
- 未按下: PA0通过下拉电阻连接到GND,输入低电平。
- 按下: PA0通过按键连接到3.3V,输入高电平。
-
配置: GPIO (PA0) 必须配置为下拉输入模式。
-
- 方式四:
-
电路图:

-
原理:
- 未按下: PA0通过外部下拉电阻连接到GND,输入低电平。
- 按下: PA0通过按键连接到3.3V,输入高电平。
-
配置: GPIO (PA0) 可以配置为浮空输入或下拉输入模式。
-
- 方式三:
1.2 按键抖动
- 现象: 由于机械按键内部的弹簧片结构,在按下和松开的瞬间,会产生一系列的抖动,导致GPIO的电平不稳定。
- 影响: 单片机可能会错误地检测到多次按键操作。
- 解决方法:
- 硬件消抖: 使用电容等元件来过滤掉抖动信号。
- 软件消抖(常用):
- 检测到按键状态变化(按下或松开)。
- 延时一段时间(通常为5-10ms)。
- 再次读取按键状态。
- 如果状态与第一次相同,则确认按键操作有效。
2. 传感器
- 常见传感器模块:
- 光敏电阻传感器
- 热敏电阻传感器
- 对射式红外传感器
- 反射式红外传感器
- 基本电路结构:
- 分压电路: 传感器元件(可变电阻)与一个定值电阻串联,形成分压电路。
- 输出:
- 模拟输出(AO): 分压电路的中间节点输出模拟电压,电压值随传感器元件阻值变化而变化。
- 数字输出(DO): 模拟电压经过电压比较器(如LM393)进行二值化,输出数字信号。
- 工作原理:
- 传感器元件的阻值随外界环境的模拟量(如光线、温度等)变化。
- 分压电路将阻值变化转换为电压变化。
- 模拟电压可以直接输出,也可以通过电压比较器转换为数字信号输出。
详细讲解
2.1 传感器模块的基本电路
-
电路图:

-
原理:
- R1和N1组成一个分压电路。
- AO点的电压由R1和N1的阻值决定。
- 当N1的阻值减小时,AO点的电压降低。
- 当N1的阻值增大时,AO点的电压升高。
-
滤波电容:
- 电路中通常会包含一个滤波电容C2,连接在AO点和GND之间。
- 作用:滤除干扰信号,使AO点的电压更加稳定。
2.2 上拉电阻和下拉电阻的理解
- 上拉电阻: 将GPIO的电平拉高到VCC。
- 下拉电阻: 将GPIO的电平拉低到GND。
- 比喻:
- AO点:一根杆子。
- 上拉电阻:连接到屋顶的弹簧,向上拉杆子。
- 下拉电阻:连接到地面的弹簧,向下拉杆子。
- 电阻阻值:弹簧的拉力大小。
- 分析:
- 只有上拉电阻:杆子被拉到屋顶,AO输出VCC。
- 只有下拉电阻:杆子被拉到地面,AO输出GND。
- 上下拉电阻都有:杆子被拉到中间位置,AO输出的电压取决于两个弹簧的拉力大小。
2.3 数字输出(DO)
-
电路结构:

-
原理:
- LM393是一个电压比较器。
- AO点的模拟电压连接到LM393的同相输入端(+)。
- 电位器连接到LM393的反相输入端(-),用于设置一个阈值电压。
- 当AO点的电压高于阈值电压时,DO输出高电平。
- 当AO点的电压低于阈值电压时,DO输出低电平。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)