अवरक्त सीओ 2 सेंसर MH-Z19 का अवलोकन

हाल ही में, सीओ 2 के स्तर को दिखाने वाले गैजेट्स लोकप्रिय रहे हैं, साथ ही साथ यह भी बताया गया है कि सीओ 2 मॉनिटर को कंप्यूटर से जुड़े सेंसर में कैसे बदला जा सकता है। मैं दूसरी ओर समस्या का समाधान दिखाना चाहता हूं।

पुराने CO 2 सेंसर के विपरीत , MH-Z19 को विशिष्ट वोल्टेज या उच्च शक्ति की आवश्यकता नहीं होती है और यह UART और PWM के माध्यम से डेटा संचारित कर सकता है।



  • Hd — , Hd 7 LOW. .
  • SR —
  • Tx — — 3.3
  • Rx — 3.3 ( 5, )
  • Vo — 3.3, 10

  • PWM, : 1004, 2 HIGH, — LOW, «» CO2 0 — 5000ppm ( 2000ppm ).
    Cppm = 5000 * (Thigh — 2ms)/(Thigh + Tlow — 4ms)
    , PWM — , 3.3.
  • AOT —
  • Gnd —
  • Vin — 3.6 — 5.5 ( 3.3, )


ऐसा नहीं है कि मैंने PWM पर भरोसा नहीं किया है, लेकिन डिजिटल और चेकसम के साथ डेटा प्राप्त करना बेहतर है। UART आपको CO 2 स्तरों की क्वेरी करने और दो प्रकार के अंशांकन करने की अनुमति देता है । हम गैराज में अंशांकन छोड़ देते हैं और डेटा अनुरोध पर विचार करते हैं। 9600 (8 बिट, स्टॉप - 1, समता - कोई नहीं) की गति से ऐसा करने के लिए, आपको निम्नलिखित नौ बाइट्स भेजने की आवश्यकता है:
• 0xFF - किसी भी कमांड की शुरुआत
• 0x01 - पहला सेंसर (यह केवल एक है
• 0x86 - कमांड
• 0x00, 0x00, 0x00, 0x00, 0x00 - डेटा
• 0x79 - चेकसम।

ऐसा कुछ वापस आएगा:
• 0xFF - किसी भी उत्तर की शुरुआत
• 0x86 - कमांड
• 0x01, 0xC1 - उच्च और निम्न मूल्य (256 * 0x01 + 0xC1 = 449)
• Ix3C, 0x04, 0x3C, 0xC1 - दस्तावेज़ का कहना है कि 0x47, 0x00, 0x00, 0x00 जैसी कोई चीज़ आनी चाहिए, लेकिन वास्तव में यह स्पष्ट नहीं है कि क्या।
• 1x7B - चेकसम।

चेकसम की गणना इस प्रकार की गई है: प्रतिक्रिया के 7 बाइट्स लिए गए हैं (सभी को पहले और अंतिम को छोड़कर), जोड़ा गया, उलटा, 1: 0x86 + 0x01 ... + 0xC1 = 0x85, 0x85 -or 0xFF = 0x7A, 0x7A + 1 = 0x7B द्वारा बढ़ाया गया।

प्रलेखन के अनुसार, ऑपरेटिंग मोड में प्रवेश करने के लिए सेंसर को लगभग तीन मिनट लगते हैं। इसे चालू करने के बाद पहली बार, यह 5000ppm या 400ppm का उत्पादन करेगा। विशेष रूप से मेहनती टांका लगाने के बाद, यह कई घंटों तक आ सकता है।

सीओ 2 की एकाग्रता में परिवर्तन के प्रति संवेदक प्रतिक्रिया करता हैलगभग एक मिनट की देरी से। यदि आप 5000ppm की एकाग्रता से अधिक हो जाते हैं (उदाहरण के लिए, आपने एक मिनट के लिए उस पर जोर से सांस ली), तो यह थोड़ी देर के लिए गलत डेटा देगा, सीओ 2 के स्तर को कम करके आंका - यह है कि मुझे भी 80ppm मिला।

यह दस्तावेज़ीकरण में परिलक्षित नहीं होता है, लेकिन आपको हर 10 सेकंड की तुलना में अधिक बार UART डेटा का अनुरोध नहीं करना चाहिए, अन्यथा सेंसर कुछ अजीब देना शुरू कर देता है।

यह चित्रों का समय है। सेंसर को Arduino Uno से सॉफ्टवेयर सीरियल, TX / RX के माध्यम से A0 / A1, 5V पावर, ग्राउंड में ग्राउंड से कनेक्ट करें:



उधार लिया हुआ स्केच जिसमें चेकसम सत्यापन जोड़ा जाता है
#include <SoftwareSerial.h>;

SoftwareSerial mySerial(A0, A1); // A0 -  TX , A1 -  RX

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response[9];

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

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++;

  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.println(ppm);
  }
  delay(10000);
}


प्रत्येक माप 10 सेकंड के अंतराल पर जाती है। जब मैं सेंसर से दूर चला गया, तो मूल्यों ने कूदना बंद कर दिया।


अब हम सेंसर मोबाइल बनाते हैं। ऐसा करने के लिए, आपको OTG के साथ एक डिवाइस और DroidTerm जैसे एप्लिकेशन की आवश्यकता होती है
एक सूक्ष्मता है: एक कनेक्शन स्थापित करने के लिए, आपको Arduino को पुनरारंभ करने की आवश्यकता है।


यह सुनिश्चित करने के बाद कि सब कुछ काम करता है, हम Arduino को हटा देंगे, इसे FTDI FT232RL के साथ बदल देंगे।


सेंसर को कनेक्शन के बाद संचालित किया जाना चाहिए ताकि कनेक्शन के साथ कोई समस्या न हो।
मैं COM पोर्ट के माध्यम से बाइनरी डेटा भेजने के लिए RealTerm का उपयोग करता हूं :


यह डीटीआर के माध्यम से बिजली प्रबंधन को जोड़ने के लायक हो सकता है ताकि सेंसर को फिर से शुरू किया जा सके।

उपयोगी लिंक:
MH-Z19 सेंसर मैनुअल कनेक्शन
आरेख और PWM के लिए कोड
दूसरे सेंसर के साथ तुलना।
MH-Z19 और ESP8266 के बारे में जीटी पर आलेख।

मेरे पास केवल एक सेंसर है और मुझे वास्तव में यह पसंद नहीं है कि जो मैंने एक बार किया, उसे अलग करना पसंद नहीं है, इसलिए मैं आपको चुनने का सुझाव देता हूं।

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


All Articles