MH-Z16二氧化碳传感器简介
利用非色散红外(NDIR技术)原理对空气中存在的CO2 进行探测,具有很好的选择性,无氧气依赖性。并且内置温度补偿,使用串口,就可读取当前CO2气体浓度,使用非常简单,兼容各类单片机。该红外传感器是将成熟的红外吸收气体检测技术制作出的高性能传感器。具有抗水汽干扰,不中毒,寿命长等特点,可以长时间放在空气中使用,避免了中毒后长时间的加热。可广泛应用于智能农业,暖通制冷与室内空气质量监控,工业过程及安全防护监控,农业及畜牧业生产过程监控等。
传感器引脚定义
串口读取数据指令格式
Arduino UNO与传感器接线
Arduino UNO | MH-Z16 |
---|
D11 | RX | D10 | TX | 5V | Vin | GND | GND |
测试程序
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
unsigned char hexdata[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
void setup() {
Serial.begin(9600);
while (!Serial) {
}
mySerial.begin(9600);
}
void loop() {
mySerial.write(hexdata, 9);
delay(500);
for (int i = 0, j = 0; i < 9; i++)
{
if (mySerial.available() > 0)
{
long hi, lo, CO2;
int ch = mySerial.read();
if (i == 2) {
hi = ch;
}
if (i == 3) {
lo = ch;
}
if (i == 8) {
CO2 = hi * 256 + lo;
Serial.print("CO2 concentration: ");
Serial.print(CO2);
Serial.println("ppm");
}
}
}
}
打开串口助手,对着传感器哈气,可以干到传感器的测试的CO2数值会发生变化。
总结表
本实验通过串口指令的方式读取传感器的数值,还可以通过PWM的脉宽来计算出传感器测得的数值。
|