好的!我来帮你详细介绍 ESP32 连接和读取 MQ-3 酒精传感器的原理、引脚功能,以及示例代码。
一、MQ-3 酒精传感器简介
- MQ-3 是常见的酒精气体传感器,灵敏度高,适合检测空气中的酒精浓度。
- 传感器带有 模拟输出(AO) 和 数字输出(DO) 两种信号输出。
- 模拟输出(AO):输出模拟电压,跟酒精浓度成比例,适合 ESP32 的 ADC 读取。
- 数字输出(DO):内置阈值比较器,超过设定浓度输出高/低电平。
二、MQ-3 传感器引脚功能
引脚 | 功能 | 说明 |
---|---|---|
VCC | 电源正极 | 5V 或 3.3V(建议参考模块规格) |
GND | 地 | 接地 |
AO | 模拟输出 | 输出电压,酒精浓度越高,电压越大 |
DO | 数字输出 | 超过阈值时输出高电平(可调节) |
A0 | 模拟输入(部分模块) | 同 AO |
D0 | 数字输入(部分模块) | 同 DO |
注意:某些 MQ-3 模块带有内置电位器调节阈值。
三、ESP32 与 MQ-3 连接示意
MQ-3 引脚 | 连接 ESP32 |
---|---|
VCC | 3.3V 或 5V(通常用 5V) |
GND | GND |
AO | GPIO 34(ADC1_CH6)等 ADC 引脚 |
DO | GPIO 25(数字输入,可选) |
ESP32 ADC 支持 0~3.3V,传感器输出电压一般在这个范围内。
四、ESP32 读取 MQ-3 模拟输出示例代码(Arduino)
const int mq3AnalogPin = 34; // ADC1_CH6
void setup() {
Serial.begin(115200);
analogReadResolution(12); // ESP32 ADC 分辨率为 12 位(0~4095)
}
void loop() {
int analogValue = analogRead(mq3AnalogPin);
// 简单打印原始 ADC 值
Serial.print("MQ-3 Analog Value: ");
Serial.println(analogValue);
// 可根据校准曲线将 ADC 转换成酒精浓度
// float voltage = analogValue * (3.3 / 4095);
// float alcoholConcentration = mapVoltageToConcentration(voltage);
delay(1000);
}
五、数字输出读取示例
const int mq3DigitalPin = 25; // 数字引脚
void setup() {
Serial.begin(115200);
pinMode(mq3DigitalPin, INPUT);
}
void loop() {
int digitalValue = digitalRead(mq3DigitalPin);
if (digitalValue == HIGH) {
Serial.println("Alcohol concentration above threshold!");
} else {
Serial.println("Alcohol concentration below threshold.");
}
delay(1000);
}
六、注意事项
- MQ-3 传感器预热时间较长(约 20-30 分钟),预热期间读数不准确。
- 模拟输出受温度、湿度等环境因素影响,需进行校准。
- 数字输出阈值通过模块上的电位器调节。
- ESP32 ADC 输入电压不要超过 3.3V,传感器输出电压最好在此范围内。
发表回复