动手做:检测烟雾浓度
本实验通过 MQ-2 烟雾/可燃性气体传感器 测量室内的可燃性气体浓度,并在串口监视器中显示传感器的模拟值。
实验简介
1. ESP32 的模拟输入功能
- ESP32 的模拟输入支持 0-3.6V 的电压范围。
- 模拟输入解析度为 12 位元(默认设置),量化值范围为 0-4095。
- 使用以下函数可以调整输入电压范围和解析度:
analogSetAttenuation()
:调整输入电压上限。ADC_0db
:1.00VADC_2_5db
:1.34VADC_6db
:2.00VADC_11db
:3.60V
analogSetWidth()
:设置 ADC 的解析度,范围为 9-12 位元(对应范围 0-511 到 0-4095)。
2. MQ-2 烟雾/可燃性气体传感器
- MQ-2 可检测烟雾、瓦斯等气体浓度,输出电压随气体浓度上升而增加。
- 主要参数:
- 检测范围:300-10000 ppm。
- 模拟输出:0.1-4V,浓度越高输出电压越高。
- 加热电压:5.0 ± 0.2V。
- 预热时间:大于 24 小时(建议)。
- 响应时间:小于 10 秒。
- 恢复时间:小于 30 秒。
MQ-2 模块包括模拟输出(AO
)和数字输出(DO
)。模拟输出提供连续的气体浓度值,而数字输出可用于设置阈值检测。
实验说明
目标:在串口监视器中显示室内的可燃性气体浓度。
实验步骤
- 连接 MQ-2 模块:
VCC
接 5V 电源。GND
接地。AO
(模拟输出)接 ESP32 的A0
引脚。
- 使用以下代码上传到 ESP32,并打开串口监视器观察输出。
实验代码
#define BITS 10 // 10位解析度
void setup() {
Serial.begin(115200);
analogSetAttenuation(ADC_11db); // 设置输入电压上限为3.6V
analogSetWidth(BITS); // 设置解析度为10位
}
void loop() {
uint16_t adc = analogRead(A0); // 读取A0引脚的模拟值
Serial.printf("MQ-2传感器值:%u\n", adc);
delay(1000); // 每秒输出一次数据
}