MQ-135

Тема в разделе "Arduino & Shields", создана пользователем zserg, 6 май 2016.

  1. zserg

    zserg Нерд

    Всем привет!

    На амперке появились датчики различных газов, но среди них отсутствует датчик CO2, который мне интересен. В общем-то все эти датчики сделаны на основе серии MQ и общение с ними однотипно, а модули все построены также одинаково, так что аналог я нашёл. Но вот как получить с него данные в ppm?

    Амперка (огромное спасибо за это!) создала библиотечку, как раз для этого, но там нету MQ-135 (который умеет CO2). Как я понимаю, достаточно указать верные параметры в функции readPpm, но как их получить из даташита я так и не понял. Кто подскажет?
     
  2. На сколько я понял, то нужно использовать график калибровки. Из него получают калибровочные коэффициенты, которые учитываются при расчете. Вот расчета CO2 в ppm, на примере кода:

    #define R0 1200 //сопротивление датчика при атмосферном воздухе (оно может отличаться для разных мест и условий. нужно промерять самому)
    #define PARA 116.6020682 // параметры для вычисления CO2
    #define PARB 2.769034857

    void MQ135
    {
    int MQ135val = analogRead(MQ135PIN); //чтение порта
    Serial.println(MQ135val);
    float Resistance = ((1023. / (float)MQ135val) * 5. - 1.) * RLOAD; //расчет текущего сопротивления
    CO2 = PARA * pow((Resistance / R0), -PARB); //пересчет в ppm

    Serial.print("CO2: ");
    Serial.print(CO2);
    Serial.println("ppm");
    }
     
  3. zserg

    zserg Нерд

    Спасибо! По графику-то нифига не поймёшь, там ещё логарифмическая зависимость, так что точность вообще никакая. Хорошо, что а архиве по ссылке есть таблички - это уже что-то :) Да и код адекватный. Ещё раз спасибо, буду пробовать теперь :)
     
  4. Не за что. Кстати не знаете, как реализовать при помощи кода следующий момент. Датчик MQ135 требует прогрева ~10 мин. для нормальной и стабильной работы. Часто в совокупности с датчиком делают какой-то извещатель о превышении ПДК. Вопрос: как сделать, чтобы, например buzzer (пьезоизлучатель), первые 10 минут при подачи питания на устройство не реагировал ни на какие изменения? Еще к примеру, при включении MQ135 в первый момент выводит 2000 ppm, через 5 минут 900 ppm, а ближе к 10 минутам выходит уже на нормальный уровень в 500 ppm.
     
  5. Т.е. в первые минуты значения плавают
     
  6. zserg

    zserg Нерд

    Думаю, тут только один вариант - на первых минутах работать в режиме "прогрева" и не обрабатывать данные как актуальные. И выходить из него или по времени или по гистерезису... Видимо, сам буду делать примерно так.