介绍
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 #define RatioMQ135CleanAir 3.6
MQUnifiedsensor MQ135(placa, Voltage_Resolution, ADC_Bit_Resolution, pin, type);
void setup() { Serial.begin(9600); 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);} Serial.println("** Values from MQ-135 ****"); Serial.println("| CO | Alcohol | CO2 | Toluen | NH4 | Aceton |"); }
void loop() { MQ135.update();
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); }
|
拓展
可以搭配显示屏和蜂鸣器,做一个空气检测系统。当然,如果接入钉钉通知就更好了。
小结
待完善…