Skip to main content

动手做:检测烟雾浓度

本实验通过 MQ-2 烟雾/可燃性气体传感器 测量室内的可燃性气体浓度,并在串口监视器中显示传感器的模拟值。


实验简介

1. ESP32 的模拟输入功能

  • ESP32 的模拟输入支持 0-3.6V 的电压范围。
  • 模拟输入解析度为 12 位元(默认设置),量化值范围为 0-4095。
  • 使用以下函数可以调整输入电压范围和解析度:
    • analogSetAttenuation():调整输入电压上限。
      • ADC_0db:1.00V
      • ADC_2_5db:1.34V
      • ADC_6db:2.00V
      • ADC_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)。模拟输出提供连续的气体浓度值,而数字输出可用于设置阈值检测。


实验说明

目标:在串口监视器中显示室内的可燃性气体浓度。

实验步骤

  1. 连接 MQ-2 模块:
    • VCC 接 5V 电源。
    • GND 接地。
    • AO(模拟输出)接 ESP32 的 A0 引脚。
  2. 使用以下代码上传到 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); // 每秒输出一次数据
}