Arduino UNO测试MH-Z16二氧化碳CO2传感器

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); // RX, TX
unsigned char hexdata[9] = {
    
    0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79}; //Read the gas density command /Don't change the order
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;    //High concentration
      }
      if (i == 3) {
    
    
        lo = ch;    //Low concentration
      }
      if (i == 8) {
    
    
        CO2 = hi * 256 + lo; //CO2 concentration
        Serial.print("CO2 concentration: ");
        Serial.print(CO2);
        Serial.println("ppm");
      }
    }
  }
}

打开串口助手,对着传感器哈气,可以干到传感器的测试的CO2数值会发生变化。
在这里插入图片描述

总结表

本实验通过串口指令的方式读取传感器的数值,还可以通过PWM的脉宽来计算出传感器测得的数值。

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/122885216