MQ135

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем yden, 1 июл 2016.

  1. yden

    yden Гик

    Здравствуйте.
    Подскажите пожалуйста. С али пришел готовый модуль с датчиком MQ135. Нашел на просторах интернета библиотеку под него и скетч считывания показаний с него: http://www.himix.lt/arduino/arduino-and-0-5-inch-oled-ld7032-gas-sensor-mq135/
    Датчик завелся, но выводит какие-то непонятные значения.

    Код (C++):
    // Watch video here: https://www.youtube.com/watch?v=obNeqesglgQ

    /* Connection pins:

    Arduino       MQ-135
      A0            A0
    +5V            VCC
    GND            GND
    */


    #include "MQ135.h"

    int analogPin = 0;

    MQ135 gasSensor = MQ135(analogPin);

    #define RZERO 310 // 76.63

    int i = 0;

    double result;
    double rzero;

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

    void loop() {
    if (i==0) {
       rzero = gasSensor.getRZero(); // float
    }
    if (i>0) {
       result = gasSensor.getRZero();
       rzero = (rzero + result)/2;
      }
     
      float ppm = gasSensor.getPPM();
     
      Serial.print(rzero);
      Serial.print(", ");
      Serial.print(result);
      Serial.print(", ");
      Serial.print(ppm);
      Serial.println(" ppm");
      i++;
      delay(200);
    }
     
    Выводит 3 числа: первое и второе изменяются от 0 до скорее всего 2000, третье с обозначением ppm - от 0 до 12.
    Датчик почти сутки включен, комната проветривается, первые 2 числа показывает 1700-1800, третье - 0,05-0,07.
    Дышу на него: первые два числа начинают уменьшаться, третье - растет. Ради эксперимента подышал в пакете (до момента когда уже не хватало воздуха), закрыл, положил датчик. Первые 2 числа показания 200-300, третье число - 12.
    Инте говорит, что норма СО2 - около 600 ррм. Если предположить что второе число и есть значения наиболее подходящие, но только их нужно перевернуть (мах 2000). То как перевести третью цифру не знаю.
    Может что работал с этим датчиком, поделитесь пожалуйста библиотекой и скетчем.

    Спасибо
     
  2. ИгорьК

    ИгорьК Оракул Модератор

    Не стоит надеяться вытащить из этого датчика значение ppm.
    Датчики никак не калибруются и реагируют не только на СО2 но и на многие другие газы.
    У меня есть такой и есть ИК датчик. Нельзя сказать что их показания не коррелируют но иногда бывают и разнонаправленными.
    Что касается этого датчика, то нужно понимать как он работает: чем больше газов (разных) тем меньше его сопротивление. Для общего понимания ситуации этого достаточно а точности от него добиться не возможно, что бы там библиотеки не показывали.
     
  3. DIYMan

    DIYMan Guest

    Вы описание к той библиотеке читали? Разобрались, для чего функция getRZero()? Поняли, что это калибровочный коэффициент, который надо вставить в нужное место библиотеки спустя сутки после прогрева датчика?

    Если ответ на все три вопроса "нет" - значит, разбирайтесь.
     
  4. legik2003

    legik2003 Нуб

    Код (C++):
    #include "MQ135.h"

    #define ANALOGPIN 0
    float airthreshold[3] = {
      400, 400, 800};
      // Initialize the gas Sensor
    MQ135 gasSensor = MQ135(ANALOGPIN);

    void setup() {
      // start the LEDs
      //Set up the serial terminal
      Serial.begin(9600);
    }
    void loop() {
        float ppm = gasSensor.getPPM();
         Serial.print(" CO2: ");
      Serial.print(ppm);
      Serial.println(" ppm ");

      delay(1000);
    }
    И 2 файла к скетчу, которые закинь в туже папку где будет проект.
     

    Вложения:

    • MQ135.cpp
      Размер файла:
      3,8 КБ
      Просмотров:
      667
    • MQ135.h
      Размер файла:
      1,4 КБ
      Просмотров:
      458
    Последнее редактирование: 30 ноя 2016