108个传感器之-烟雾传感器(43)

108个传感器之-烟雾传感器(43)

介绍

MQ135是测量空气污染情况常用的一个传感器,具有代表性,价格低,寿命长,敏感度也OK,主要用于测量空气中二氧化碳,氮氧化物,氨气,酒精,苯类等。这几样气体可以说都属于家用空气污染测定中的重要成份,因此用这个传感器刚刚好。

MQ135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。

注意:pm2.5的话要用另外类型的传感器,比如SDS011

接线图

D0:表示存在可燃气体。当气体浓度超过阈值时(可以通过灵敏度调节旋钮控制),输出高电平,否则输出低电平。

A0:产生的模拟输出电压与气体浓度成正比,因此较高的浓度会导致较高的电压和较低的浓度导致较低的电压。

引脚连接

Arduino Sensor
5 V +V
GND GND
Pin A3 Digital Signal
Pin A2 Analog Signal

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <Arduino.h>
#include <MQUnifiedsensor.h>

#define placa "esp32-c3"
#define Voltage_Resolution 5
#define pin A2
#define type "MQ-135"
#define ADC_Bit_Resolution 10 // 10 bits ADC
#define RatioMQ135CleanAir 3.6 // RS / R0 = 3.6 ppm

MQUnifiedsensor MQ135(placa, Voltage_Resolution, ADC_Bit_Resolution, pin, type);

void setup() {
Serial.begin(9600);
/***************************** MQ Init ********************************************/
//Remarks: Configure the pin of arduino as input.
/************************************************************************************/
MQ135.setRegressionMethod(1); // 调用函数设置回归方法
MQ135.init();
Serial.print("Calibrating please wait.");
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ135.update();
calcR0 += MQ135.calibrate(RatioMQ135CleanAir); // 校准测量值
Serial.print(".");
}
MQ135.setR0(calcR0/10);
Serial.println(" done!.");

if(isinf(calcR0)) {Serial.println("Warning: Conection issue, R0 is infinite (Open circuit detected) please check your wiring and supply"); while(1);}
if(calcR0 == 0){Serial.println("Warning: Conection issue found, R0 is zero (Analog pin shorts to ground) please check your wiring and supply"); while(1);}
/***************************** MQ CAlibration ********************************************/
Serial.println("** Values from MQ-135 ****");
Serial.println("| CO | Alcohol | CO2 | Toluen | NH4 | Aceton |");
}

void loop() {
MQ135.update(); // Update data, the arduino will read the voltage from the analog pin

MQ135.setA(605.18);
MQ135.setB(-3.937);
float CO = MQ135.readSensor(); // 一氧化碳

MQ135.setA(77.255);
MQ135.setB(-3.18);
float Alcohol = MQ135.readSensor(); // 酒精

MQ135.setA(110.47);
MQ135.setB(-2.862);
float CO2 = MQ135.readSensor(); // 二氧化碳

MQ135.setA(44.947);
MQ135.setB(-3.445);
float Toluene = MQ135.readSensor(); // 甲苯

MQ135.setA(102.2 );
MQ135.setB(-2.473);
float NH4 = MQ135.readSensor(); // 氨氮

MQ135.setA(34.668);
MQ135.setB(-3.369);
float Acetone = MQ135.readSensor(); // 丙酮

Serial.print("| "); Serial.print(CO);
Serial.print(" | "); Serial.print(Alcohol);
Serial.print(" | "); Serial.print(CO2 + 400);
Serial.print(" | "); Serial.print(Toluene);
Serial.print(" | "); Serial.print(NH4);
Serial.print(" | "); Serial.print(Acetone);
Serial.println(" |");
delay(500);
}

拓展

可以搭配显示屏和蜂鸣器,做一个空气检测系统。当然,如果接入钉钉通知就更好了。

小结

待完善…

108个传感器之-烟雾传感器(43)

http://blog.jzxer.cn/20250101/20250115-smoke-sensor/

作者

dev

发布于

2025-01-01

更新于

2025-01-11

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×