Arduino UNO测试MH-Z16二氧化碳CO2传感器
时间:2022-11-01 12:00:00
原文链接:https://www.yourcee.com/newsinfo/2928917.html
MH-Z16二氧化碳传感器简介
利用非色散红外(NDIR技术)空气中存在的原理CO2 探测具有良好的选择性和无氧依赖性。并且内置温度补偿,使用串口可以读取当前的温度CO气体浓度,使用非常简单,与各种单片机兼容。红外传感器是由成熟的红外吸收气体检测技术制成的高性能传感器。它具有抗水蒸气干扰、无中毒、使用寿命长特点,可在空气中长期使用,避免中毒后长期加热。可广泛应用于智能农业、暖通空调制冷及室内空气质量监测、工业工艺及安全防护监测、农畜生产工艺监测等领域。
 
 
传感器引脚定义
 
串口读取数据指令格式
 
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的脉宽来计算出传感器测得的数值。

