原文链接: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的脉宽来计算出传感器测得的数值。