Здравствуйте. Подскажите пожалуйста. С али пришел готовый модуль с датчиком 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). То как перевести третью цифру не знаю. Может что работал с этим датчиком, поделитесь пожалуйста библиотекой и скетчем. Спасибо
Не стоит надеяться вытащить из этого датчика значение ppm. Датчики никак не калибруются и реагируют не только на СО2 но и на многие другие газы. У меня есть такой и есть ИК датчик. Нельзя сказать что их показания не коррелируют но иногда бывают и разнонаправленными. Что касается этого датчика, то нужно понимать как он работает: чем больше газов (разных) тем меньше его сопротивление. Для общего понимания ситуации этого достаточно а точности от него добиться не возможно, что бы там библиотеки не показывали.
Вы описание к той библиотеке читали? Разобрались, для чего функция getRZero()? Поняли, что это калибровочный коэффициент, который надо вставить в нужное место библиотеки спустя сутки после прогрева датчика? Если ответ на все три вопроса "нет" - значит, разбирайтесь.
Код (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 файла к скетчу, которые закинь в туже папку где будет проект.