Kami mengukur konsentrasi CO2 di apartemen dengan MH-Z19

Hampir semua stasiun cuaca, termasuk model China murah dengan harga beberapa dolar, dapat mengukur parameter dasar suhu udara dan kelembaban. Karbon dioksida menjadi semakin sulit: praktis tidak ada alat yang tersedia secara komersial yang dapat mengukurnya. Yang memperumit situasinya adalah bahwa CO2 adalah gas tanpa warna dan bau, sehingga hampir mustahil untuk merasakan konsentrasinya dengan "hidung".

Detail dan pengukuran di bawah potongan.

Sensor MH-Z19 sendiri sudah dijelaskan di sini di situs. Artikel " Tinjauan sensor inframerah CO2 " diambil sebagai dasar , dan materi ini merupakan kelanjutan logisnya. Tentang mengukur konsentrasi CO2 di jalan ditulis di sini , tetapi tidak ada data tentang konsentrasi di apartemen. Isi celah ini.

Besi


Hal pertama yang pertama kali memesan komponen berikut di eBay:
- Arduino Micro ATmega32U4 3.3V (harga masalah $ 5). Karena sensor memiliki logika 3-volt, Arduino biasa lebih baik tidak digunakan.
- OLED LCD-display I2C 0,91 "128x32 (harga masalah $ 7). Layar terhubung ke pin standar Arduino i2c.
- Sebenarnya sensor MH-Z19 (harga masalah $ 28).
- Satu set kabel dengan konektor untuk kontak pin (harga masalah $ 1-2)
Jadi, total biaya ~ $ 40, atau 2600r. Perangkat bermerek dari perusahaan terkenal harganya sekitar dua kali lipat, meskipun di sini kemungkinan besar bukan masalah penghematan, tetapi kepentingan teknis.

Kode untuk Arduino dipinjam dari artikel di atas ., output data ke layar ditambahkan ke dalamnya, dan untuk analisis data yang lebih nyaman, output dikonversi ke format garis sederhana dengan pemisah. Stempel waktu juga telah ditambahkan, masing-masing sesuai dengan 10 detik.
Kode sumber
#include <SoftwareSerial.h>
#include <Wire.h>

// I2C OLED
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;

// CO2 sensor:
SoftwareSerial mySerial(8,9); // RX,TX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response[9];

void setup() {
  // Serial
  Serial.begin(9600);
  mySerial.begin(9600);

  // OLED
  Wire.begin();         
  oled.begin(&Adafruit128x32, I2C_ADDRESS);
  oled.set400kHz();  
  oled.setFont(ZevvPeep8x16);  

  oled.clear();  
  oled.println("setup::init()");
}

long t = 0;

void loop() 
{
  mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;

  oled.clear();  
  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
    oled.println("Sensor CRC error");
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.print(String(t)); Serial.print(","); Serial.print(ppm); Serial.println(";");
    if (ppm <= 400 || ppm > 4900) {
      oled.println("CO2: no data");          
    } else {
      oled.println("CO2: " + String(ppm) + " ppm"); 
      if (ppm < 450) {   
        oled.println("Very good");
      }
      else if (ppm < 600) {   
        oled.println("Good");
      }
      else if (ppm < 1000) {   
        oled.println("Acceptable");
      }
      else if (ppm < 2500) {   
        oled.println("Bad");
      }
     else {   
        oled.println("Health risk");
      }
    }
  }
  delay(10000);
  t += 10;
}


Semua ini disatukan, sketsa dituangkan ke Arduino, hasilnya terlihat seperti ini:
gambar

Tentu saja ini bukan bagian atas desain industri (berencana untuk menemukan beberapa jenis perumahan), tetapi untuk tugas perangkat layar yang dapat bekerja secara mandiri dan mentransfer data melalui USB, perangkat cukup berhasil. Untuk menerima data melalui USB, cukup buka monitor port di Arduino IDE, data akan ditampilkan di dalamnya. Teks dari sana dapat disalin dan dibuka di program apa pun, misalnya di Excel.

Pengukuran


Pertanyaan selanjutnya: apa yang sebenarnya kita ukur? Perangkat ini menyediakan data dalam ppm (bagian per juta, bagian per juta). 1000 ppm = 0,1% kandungan CO2. Di Internet Anda dapat menemukan tabel konsentrasi yang diizinkan berikut ini:
- 350 - 450 ppm : Level normal di udara terbuka.
- <600 ppm : Level yang dapat diterima. Level. Direkomendasikan untuk kamar tidur, taman kanak-kanak dan sekolah.
- 600 - 1000 ppm : Keluhan udara basi, kemungkinan penurunan konsentrasi.
- 1000 ppm : Standar tertinggi ASHRAE (Perhimpunan Pemanasan, Pendinginan dan Pendingin Udara Amerika) dan standar OSHA (Keselamatan & Kesehatan Administrasi).
- 1000 - 2500 ppm: Kelesuan umum, penurunan konsentrasi, sakit kepala mungkin terjadi.
- 2500 - 5000 ppm : Kemungkinan efek buruk pada kesehatan.

Dan akhirnya, hasilnya. Sensor dipasang di dapur, jendela dari logam-plastik, waktu pengukuran sekitar 8 jam.

Hasilnya cukup menarik. Waktu horizontal dalam detik, 3600 detik sesuai dengan 1 jam.

Kurva pada grafik didekripsi sebagai berikut:
0j: pembacaan sekitar 420ppm (sesuai dengan jalan), tidak ada orang di rumah, saya pulang kerja dan pada saat yang sama menyalakan sensor.
0-2 jam: Saya ada di dapur, dapat dilihat bahwa di hadapan seseorang konsentrasi CO2 perlahan-lahan naik ke suatu tempat menjadi 900 ppm.
2-4 jam: Saya meninggalkan ruangan, Anda bisa melihat bagaimana konsentrasinya perlahan-lahan berkurang.
4-6 jam: Saya kembali, konsentrasi mulai tumbuh lagi.
Jam 6: pot ravioli diletakkan di atas kompor. Sangat menarik untuk melihat bagaimana konsentrasi hampir meningkat secara instan menjadi 1700ppm, kemudian perlahan mulai menurun. Meskipun gas tidak menyala lama (10-15 menit), kadar tinggi> 1000 ppm tahan setidaknya selama satu jam.
Akhir grafik: jendela dibuka dan level co2 turun hampir seketika.

Kesimpulan


Perangkat itu ternyata sangat menarik, dan terutama relevan bagi mereka yang bekerja di rumah di depan komputer. Jadi, misalnya, selama penulisan artikel ini, tingkat CO2 meningkat di dalam ruangan dari 500 menjadi 770ppm. Melihat layar memaksa Anda untuk membuka jendela lebih sering, atau akhirnya berpikir tentang perangkat di rumah dengan ventilasi normal (mungkin mode ventilasi mikro di jendela tidak akan berlebihan, melainkan semacam tudung). Jika saya membeli windows baru sekarang, saya mungkin akan memikirkan model berkualitas tinggi dengan ventilasi normal.

Penting juga untuk mencatat relevansi ventilasi yang baik di dapur: seperti yang ditunjukkan grafik, bahkan dalam 10 menit, satu pembakar gas dapat "membakar" seluruh pasokan oksigen, membawa konsentrasi CO2 ke tingkat yang sangat tinggi. Pengukuran di kamar tidur menunjukkan bahwa dalam hal ventilasi juga, semuanya tidak terlalu baik: pada pagi hari, konsentrasi CO2 lebih dari 1000 ppm, dan untuk pekerjaan mental, tidur yang baik sangat penting.

Secara umum, perangkat sederhana dan murah ini memungkinkan Anda untuk memeriksa kualitas udara di apartemen atau kantor dengan sangat efektif.
Penulis berharap kesehatan dan suasana hati semua orang baik. Yah, tentu saja, udara yang baik juga.

Source: https://habr.com/ru/post/id395755/


All Articles