Arduino UNO prueba el sensor de dióxido de carbono CO2 MH-Z16

Introducción del sensor de dióxido de carbono MH-Z16

Utilizando el principio de infrarrojo no dispersivo (tecnología NDIR) para detectar CO2 en el aire, tiene buena selectividad y no depende del oxígeno. Y compensación de temperatura incorporada, utilizando el puerto serie, puede leer la concentración actual de gas CO2, el uso es muy simple, compatible con varios microcontroladores. El sensor de infrarrojos es un sensor de alto rendimiento fabricado con tecnología madura de detección de gas de absorción infrarroja. Tiene las características de interferencia anti-vapor de agua, sin envenenamiento, larga vida, etc. Puede usarse en el aire durante mucho tiempo, evitando el calentamiento a largo plazo después del envenenamiento. Puede ser ampliamente utilizado en agricultura inteligente, HVAC y monitoreo de calidad del aire interior, procesos industriales y monitoreo de protección de seguridad, monitoreo de procesos de producción agrícola y ganadera, etc.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Definición de pines del sensor

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Formato de comando de lectura de datos de puerto serie

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Cableado Arduino UNO con sensor

Arduino UNO MH-Z16
D11 RX
D10 Texas
5V Vino
TIERRA TIERRA

inserte la descripción de la imagen aquí

Programa de prueba

#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");
      }
    }
  }
}

Abra el asistente del puerto serie e inhale el sensor, el valor de CO2 que puede probar el sensor cambiará.
inserte la descripción de la imagen aquí

Tabla de resumen

En este experimento, el comando del puerto serie lee el valor del sensor y el ancho de pulso del PWM también puede calcular el valor medido por el sensor.

Supongo que te gusta

Origin blog.csdn.net/qq_42250136/article/details/122885216
Recomendado
Clasificación