这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【M5stackS3】使用ADC功能实现MQ2烟雾传感器读取功能

共2条 1/1 1 跳转至

【M5stackS3】使用ADC功能实现MQ2烟雾传感器读取功能

高工
2026-07-20 15:12:27     打赏

一:ADC的基本参数

ADC 的基本参数通常包括以下几个:

通道和引脚: 不是所有的GPIO都可以用于ADC读取,需要查看ESP32S3的引脚图来确定哪些引脚支持ADC功能。

分辨率:指 ADC 的数字输出位数,也称为量化位数。例如,12 位 ADC 具有 4096 个离散的数字输出。

采样速率:指 ADC 可以进行采样的最大速率。对于 ESP32-S3,最大采样速率为 2.5 MS/s。

输入范围:指 ADC 可以测量输入信号的电压范围。对于 ESP32-S3,输入范围为 0-3.3V。

噪声:指 ADC 在采集时分辨率的误差和干扰的影响。噪声越小,ADC 测量结果越精准。

稳定性:指 ADC 输出的稳定性。稳定性好的 ADC 输出变化小,测量结果更加准确。

二:模块资料:

MQ2烟雾检测模块可以检测环境中如烟雾、丙烷、甲烷、乙醇等可燃气体,通过旋转可调节电位器,可以设定检测可燃气体浓度的阈值,当可燃气体浓度达不到设定阈值时,DO端输出高电平,当可燃气体浓度超过设定阈值时,DO端输出低电平,A0端供ADC采集烟雾检测模块的模拟量

三:参数特性:

  气敏材料:二氧化锡(SnO2)

  负载电阻:10K2

  加热电阻:29Q2+32(室温)

  加热功耗:≤950mW

  预热时间:建议不低于5分钟

  工作温度范围:-10°C~十50°C

  供电电压:5V

  输出形式:DO数字量(TTL高低电平);AO模拟量(0~4V以下)值;禁止直接接触或者浸没液体,在非极端环境下A0输出最高电压3.3V左右

  特性说明:此模块适用作定性分析,A0信号可换算300~10000ppm综合浓度范围,供参考,非精确

程序编写流程:

  选定好GPIO脚,该脚与烟雾检测模块DO脚相连

  选定好ADC通道,该脚与烟雾检测模块AO脚相连

  初始化GPIO脚即DO脚,重点配置为浮空输入模式

  初始化ADC通道对应的GPIO脚即AO脚,重点配置为模拟输入模式

  初始化ADC,可以采用查询读取、中断读取或者DMA读取模拟量

  通过读取DO脚的高低电平来判断可燃气体浓度是否超过设定的阈值

四:软件代码

const int adcPin = 1; // 使用支持ADC的GPIO引脚

void setup() {
  Serial.begin(115200);
  // 设置衰减,以测量0-3.3V信号
  analogSetAttenuation(ADC_ATTEN_DB_11); 
}

void loop() {
  int rawValue = analogRead(adcPin);
  Serial.print("Raw ADC Value: ");
  Serial.println(rawValue);
  
  // 简单换算为电压 (假设参考电压3.3V)
  float voltage = (rawValue / 4095.0) * 3.3;
  Serial.print("Voltage: ");
  Serial.print(voltage, 3);
  Serial.println(" V");
  
  delay(1000);
}
五:实物验证:

串口接收数据如下所示:



关键词: stack     烟雾     传感器    

院士
2026-07-21 22:34:58     打赏
2楼

还真没有注意过ESP32-S3的ADC,看上去性能还是蛮不错的。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]