Авторизация
Зарегистрироваться

MH-Z14A - датчик углекислого газа, сравнение с конкурентами.


В прошлом обзоре я сравнивал три датчика пыли. Сегодня в одном приборе четыре датчика CO2. Рассматриваем плюсы и минусы, изучаем подводные камни. Готовим простое и недорогое устройство для контроля воздуха дома.


Уровень СО2 влияет на наше самочувствие не меньше, чем пыль и аллергены в воздухе. Когда мы говорим, что нам душно, это не кислорода нам не хватает. Его уровень остается более-менее одинаковым. Это повышается уровень углекислого газа. В абсолютных значениях он повышается совсем незначительно. В относительных же диапазон от 0,04 до 0,5 процента — это расстояние от «чистейший горный воздух» до «тут опасно находиться, срочно покинуть помещение». В сети много полезной информации на эту тему, так что приступим сразу к делу.

У нас сегодня 4 датчика. Все они работают по одному принципу — измерению спектра инфра-красного излучения, проходящего через образец газа. Это довольно точный метод, но он дороже и сложнее другого, который основан на измерении электрических характеристик металло-оскидных пленок в среде анализируемого газа.



MH-Z14A
Это относительно старый датчик. Его характеристики:
Разрешающая способность в диапазоне измерения 0-2000 ppm: 5ppm;
Разрешающая способность в диапазоне измерения 2000-5000 ppm: 10ppm;
Разрешающая способность в диапазоне измерения 5000-10000 ppm: 20ppm;
Точность измерения: 50ppm ± 5%;
Повторяемость измерений: 30ppm;
Время измерения: < 30 сек.
Время прогрева: 3 мин.
Напряжение питания: 4-6В
Средний потребляемый ток: < 50mA
Максимальный потребляемый ток: < 100mA
Срок эксплуатации: > 5 лет.







Датчик выдает показания по трем каналам: UART, ШИМ-модуляция и аналоговый выход. Наиболее функциональный канал связи с датчиком — UART. Он позволяет не только получить точные измеренные значения, но и управлять датчиком. Производить калибровку. Это весьма важный момент, в описании рекомендуется калибровать датчик не реже чем раз в полгода.

MH-Z19A
Этот датчик выпускается тем же производителем, что и предыдущий, и должен был прийти ему на смену. Он заметно компактнее и экономичнее. Датчик выпускается в двух модификациях — «A» и «B». У нас более старая версия — «A». Его характеристики:

Диапазон измерения: 2000 или 5000 ppm;
Точность измерения: 50ppm ± 3%;
Время измерения: < 60 сек.
Средний потребляемый ток: < 18mA
Напряжение питания: 3,6 — 5,5В
Срок эксплуатации: > 5 лет.

Датчик выдает показания по двум каналам: UART и ШИМ-модуляция.

Senseair S8
Этот датчик считается наиболее точным. У нас версия 0053, вот ее характеристики:
Диапазоне измерения 400-2000 ppm;
Точность измерения: 40ppm ± 3%;
Напряжение питания: 4,5 — 5,25В
Средний потребляемый ток: < 18mA
Максимальный потребляемый ток: < 300mA
Срок эксплуатации: > 15 лет.

Датчик способен передавать измеренные значение по UART, шим-модуляцией, по протоколу Modbus, кроме того, имеется выход на внешние устройства, который включается при повышении концентрации CO2 до 1000 ppm и отключается при снижении до 800.
Как и у двух предыдущих датчиков, тут есть возможность калибровки и имеется автоматическая коррекция нулевого уровня.

LGAQS-HT01
Строго говоря, это не датчик углекислоты. Это металлооксидный датчик летучих органических соединений. Он определяет их концентрацию и подсчитывает абстрактный уровень углекислоты, эквивалентно влияющий на здоровье человека. Этот датчик представляет собой комбинацию двух датчиков — CCS811 (отвечает за ЛОС) и Si7021 — он измеряет температуру и влажность. Эти данные нужны для настройки датчика CCS811 для повышения точности измерений. Датчик подключается по I2C шине и доступен сразу по двум адресам — для снятия показаний с CCS811 и для Si7021. По каким-то причинам датчик влажности у меня все время показывает 50%, так что в прибор я добавил еще один датчик — BME280. Он более точно определяет температуру, влажность и давление.

Вот все датчики вместе.





А вот прочие элементы будущего устройства:



Нам потребуются: макетная плата, степдаун преобразователь 5->3,3 В, две платы интерфейса 5<->3,3 для согласования выводов датчиков и Ардуино, Ардуино Про Мини, экран, часы DS3221, «черный ящик» OpenLog, регистрирующий показания всех датчиков и разъем micro-usb, чтобы питаться от телефонной зарядки.





После установки всех разъемов и распайки проводов у меня получилось вот что:





Далее, была написана программа.

Код программы

///////////////////////////////////////////////////////////////////////
///                    © tykhon, 2019
///////////////////////////////////////////////////////////////////////

/*
MH-Z19
TX: 3<->5 A0
RX: 3<->5 A1
PWM:      12
Gnd:      Gnd
Vin:      +5v


MH-Z14A
1_+5v:    +5v
2_Gnd:    Gnd
6_Pwm:
11_RX: 3<->5 7
10_TX: 3<->5 6


S8:
G+:       +5v
G0:       Gnd
Rx: 3<->5 A3
Tx: 3<->5 A2


LGAQS-HT01
SCL:      A5
SDA:      A4
Gnd:      Gnd
VDD:      3.3v


BMP280
SCL:      A5
SDA:      A4
Gnd:      Gnd
VDD:      3.3v

DS3231
SCL:      A5
SDA:      A4
Gnd:      Gnd
VDD:      5v


TFT
Led: -> 150 Ohm -> 5v
SCK: -> 1 KOhm -> 13
SDA: -> 1 KOhm -> 11
A0:  -> 1 KOhm -> 8
Reset: -> 1 KOhm ->  9
CS:  -> 1 KOhm -> 10
Gnd:      Gnd
Vcc:      5v

*/

#include <Adafruit_GFX.h>                 // for LCD Core graphics library
#include <Adafruit_ST7735.h>              // for LCD  Hardware-specific library
#include <CCS811.h>                       // for TVOC sensor
#include <Adafruit_Sensor.h>              // for bme280
#include <Adafruit_BME280.h>              // for bme280
#include <SoftwareSerial.h>
#include "Wire.h"

#define TFT_CS     10
#define TFT_RST    9 
#define TFT_DC     8

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

#define SEALEVELPRESSURE_HPA (1013.25)      // for bme280
Adafruit_BME280 bme;                        // for bme280 I2C


#define CCS811_ADDR 0x5A                     // for LGAQS-HT01 or ccs811
#define SI7021_ADDR 0x40                     // for LGAQS-HT01 or si7021
#define WAKE_PIN  5                          // for LGAQS-HT01 or ccs811
#define DS1307_ADDR 0x68                     // RTC address

CCS811 sensor;

float si7021_h = 0;
float si7021_t = 0;
unsigned int data[2];
int ccs188_co2 = 0;
int ccs188_tvoc = 0;


int z14_co2;
int z19_co2;
int z19_t;
int z19_ss;


int ccs188_co2_last;
int ccs188_tvoc_last;
int z14_co2_last;
int z19_co2_last;


unsigned long s8_co2_sum = 0;
unsigned long z14_co2_sum = 0;
unsigned long z19_co2_sum = 0;
unsigned long ccs188_co2_sum = 0;
unsigned long ccs188_tvoc_sum = 0;
unsigned long bme_t_sum = 0;
unsigned long bme_h_sum = 0;
unsigned long bme_p_mm_sum = 0;
unsigned int polls = 0;
unsigned long s8_co2 = 0;
unsigned long s8_co2_last = 0;

int bme_t;
int bme_h;
float bme_p;
int bme_p_mm;
const float hpa2mm = 133.3224;

SoftwareSerial mySerial_z19(A0, A1);     
SoftwareSerial mySerial_s8(A2, A3);      
SoftwareSerial mySerial_z14(7, 6);       

byte cmd_z14[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response_z14[9]; 
String ppmString = " ";

byte cmd_z19[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
byte cmd_s8[7] = {0xFE,0x44,0x00,0x08,0x02,0x9F,0x25}; 
unsigned char response_z19[9];
byte response_s8[] = {0,0,0,0,0,0,0};

unsigned int current_minute, lastminute;
int second_delay = 30000;                    // delay between measurements, ms
int work_period = 3;                        // period for recording data, min

////////////////////////////////////////   functions    //////////////////////////////////////////////


byte bcdToDec(byte val)  {
  return ( (val/16*10) + (val%16) );
}


String getdate(){
  Wire.beginTransmission(DS1307_ADDR);      // Reset the register pointer
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDR, 7);
  int secondint = bcdToDec(Wire.read());
  int minuteint = bcdToDec(Wire.read());
  current_minute = minuteint;
  int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());
  String second = String(secondint); if (secondint < 10) {second ="0"+second;};
  String minute = String(minuteint); if (minuteint < 10) {minute ="0"+minute;};
  return String(hour)+":"+minute+":"+second+" "+String(monthDay)+"/"+String(month)+"/"+String(year);
}



void sendRequest_s8(byte packet[]){ 
 mySerial_s8.begin(9600);
 while(!mySerial_s8.available()){                       //keep sending request until we start to get a response 
    mySerial_s8.write(cmd_s8,7); 
    delay(50); 
 } 
 int timeout=0;                                         //set a timeout counter 
  while(mySerial_s8.available() < 7 ) {                 //Wait to get a 7 byte response 
    timeout++; 
    if(timeout > 10) {                                  //if it takes to long there was probably an error 
        while(mySerial_s8.available())                  //flush whatever we have 
        mySerial_s8.read(); 
        break;                                          //exit and try again 
    } 
    delay(50); 
  } 
 for (int i=0; i < 7; i++) { 
      response_s8[i] = mySerial_s8.read(); 
 }
  mySerial_s8.end();
}                      



unsigned long getValue_s8(byte packet[]) 
{ 
 int high = packet[3];                                   //high byte for value is 4th byte in packet in the packet 
 int low = packet[4];                                    //low byte for value is 5th byte in the packet 
 unsigned long val = high*256 + low;                     //Combine high byte and low byte with this formula to get value 
 return val; 
}



void sendRequest_SI7021(){
  Wire.beginTransmission(SI7021_ADDR);
  Wire.endTransmission();
  delay(500);
  Wire.requestFrom(SI7021_ADDR, 2);                         // Request 2 bytes of data
  if(Wire.available() == 2)                                 // Read 2 bytes of data to get humidity
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }
  float hum = ((data[0] * 256.0) + data[1]);                // Convert the data
  si7021_h = ((125 * hum) / 65536.0) - 6;
  Wire.begin();
  Wire.beginTransmission(SI7021_ADDR);                      // Send temperature measurement command
  Wire.write(0xF3);
  Wire.endTransmission();
  delay(500);
  Wire.requestFrom(SI7021_ADDR, 2);                         // Request 2 bytes of data
  if(Wire.available() == 2)                                 // Read 2 bytes of data for temperature
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }
  float temp  = ((data[0] * 256.0) + data[1]);              // Convert the data
  si7021_t = ((175.72 * temp) / 65536.0) - 46.85;           // 
}


void sendRequest_ccs188(){
  sensor.compensate(si7021_t, si7021_h);                    // replace with t and rh values from sensor
  sensor.getData();
  ccs188_co2 = sensor.readCO2();
  ccs188_tvoc = sensor.readTVOC();
}



void sendRequest_z14(){
  mySerial_z14.begin(9600);
  mySerial_z14.write(cmd_z14, 9);
  memset(response_z14, 0, 9);
  mySerial_z14.readBytes(response_z14, 9);

  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response_z14[i];
  crc = 255 - crc;
  crc++;
  if ( !(response_z14[0] == 0xFF && response_z14[1] == 0x86 && response_z14[8] == crc) ) {
    Serial.println("CRC error z14: " + String(crc) + " / "+ String(response_z14[8]));
  } else { 
    unsigned int responseHigh = (unsigned int) response_z14[2];
    unsigned int responseLow = (unsigned int) response_z14[3];
  z14_co2 = (256*responseHigh) + responseLow;
  };
  mySerial_z14.end();
}


void sendRequest_z19(){
  mySerial_z19.begin(9600);
  mySerial_z19.write(cmd_z19, 9);
  memset(response_z19, 0, 9);
  mySerial_z19.readBytes(response_z19, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response_z19[i];
  crc = 255 - crc;
  crc++;
  if (response_z19[0] != 0xFF) {Serial.println("CRC error z19: response_z19[0] != 0xFF: " + String(response_z19[0]));};
  if (response_z19[1] != 0x86) {Serial.println("CRC error z19: response_z19[1] != 0x86: " + String(response_z19[1]));};
  if (response_z19[8] != crc) {Serial.println("CRC error z19: response_z19[8] != crc: " + String(response_z19[8]) + " / "+ String(crc));};
  unsigned int responseHigh = (unsigned int) response_z19[2];
  unsigned int responseLow = (unsigned int) response_z19[3];
  unsigned int responseTT = (unsigned int) response_z19[4];
  unsigned int responseSS = (unsigned int) response_z19[5];
  z19_t = responseTT-40;
  z19_ss =  responseSS;
  z19_co2 = (256*responseHigh) + responseLow;
  mySerial_z19.end();
}

void tft_form(){
  tft.setTextSize(2);
  tft.setCursor(0, 4);
  tft.print("ccs: ");
  tft.setCursor(0, 30);
  tft.print("z19: ");
  tft.setCursor(0, 60);
  tft.print("z14: ");
  tft.setCursor(0, 90);
  tft.print("s8: ");
}


void tft_output(){
  tft.setTextSize(2);
  tft.setTextColor(ST7735_BLACK);

  tft.setCursor(60, 4);
  tft.print(String(ccs188_co2_last));
  tft.print(String("/"));
  tft.print(String(ccs188_tvoc_last));
  tft.setTextColor(ST7735_WHITE);
  tft.setCursor(60, 4);
  tft.print(String(ccs188_co2));
  tft.print(String("/"));
  tft.print(String(ccs188_tvoc));
  ccs188_co2_last = ccs188_co2;
  ccs188_tvoc_last = ccs188_tvoc;

  tft.setCursor(60, 30);
  tft.setTextColor(ST7735_BLACK);
  tft.print(String(z19_co2_last));
  tft.setCursor(60, 30);
  tft.setTextColor(ST7735_WHITE);
  tft.print(String(z19_co2));
  z19_co2_last = z19_co2;

  tft.setCursor(60, 60);
  tft.setTextColor(ST7735_BLACK);
  tft.print(String(z14_co2_last));
  tft.setCursor(60, 60);
  tft.setTextColor(ST7735_WHITE);
  tft.print(String(z14_co2));
  z14_co2_last = z14_co2;

  tft.setCursor(60, 90);
  tft.setTextColor(ST7735_BLACK);
  tft.print(String(s8_co2_last));
  tft.setCursor(60, 90);
  tft.setTextColor(ST7735_WHITE);
  tft.print(String(s8_co2));
  s8_co2_last = s8_co2;
  
  tft.setTextSize(1);
  tft.fillRect(0, 117, 160, 120, ST7735_BLACK);
  tft.setCursor(0, 117);
  tft.print(String(getdate()));

}

///////////////////////////////////////  setup   /////////////////////////////////////////

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

    bool status;
    status = bme.begin();
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
    delay(100); // let sensor boot up


  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab

  Serial.println("init");
  if(!sensor.begin(uint8_t(CCS811_ADDR), uint8_t(WAKE_PIN)))
    Serial.println("Init fail");

  tft.setTextWrap(false); // Allow text to run off right edge
  tft.setRotation(3);
  tft.fillScreen(ST7735_BLACK);
  tft_form();
}

////////////////////////////////////////////////   loop    /////////////////////////////////////////////////////

void loop() {
  sendRequest_SI7021();
  sendRequest_ccs188();
  sendRequest_z14();
  sendRequest_z19();
  sendRequest_s8(cmd_s8); 
  s8_co2 = getValue_s8(response_s8); 
  bme_p = bme.readPressure();
  bme_p_mm = int(bme_p/hpa2mm);
  bme_h = bme.readHumidity();
  bme_t = bme.readTemperature();

  s8_co2_sum += s8_co2;
  z14_co2_sum += z14_co2;
  z19_co2_sum += z19_co2;
  ccs188_co2_sum += ccs188_co2;
  ccs188_tvoc_sum += ccs188_tvoc;
  bme_t_sum += bme_t;
  bme_h_sum += bme_h;
  bme_p_mm_sum += bme_p_mm;
  polls ++;
  getdate();
  tft_output();
  if (((current_minute)%work_period == 0)&&(lastminute != current_minute)) {
    s8_co2 = s8_co2_sum/polls;
    z14_co2 = z14_co2_sum/polls;
    z19_co2 = z19_co2_sum/polls;
    ccs188_co2 = ccs188_co2_sum/polls;
    ccs188_tvoc = ccs188_tvoc_sum/polls;
    bme_t = bme_t_sum/polls;
    bme_h = bme_h_sum/polls;  
    bme_p_mm = bme_p_mm_sum/polls;
    
    String dataString = getdate()+"  s8:  "+String(s8_co2)+"  z14:  "+String(z14_co2)+"  z19:  "+String(z19_co2)+"  z19_t:  "+String(z19_t)+"  ccs:  "+String(ccs188_co2)+  "  TVOC:  "+String(ccs188_tvoc)+"  ccs_t:  "+String(si7021_t)+"  ccs_h:  "+String(si7021_h)+"  bme_t:  "+String(bme_t)+"  bme_h:  "+String(bme_h);
    dataString.replace(".",",");
    dataString.replace("  ","\t");
    Serial.println(dataString);
    lastminute = current_minute;
    polls = 0;
    s8_co2_sum = 0;
    z14_co2_sum = 0;
    z19_co2_sum = 0;
    ccs188_co2_sum = 0;
    ccs188_tvoc_sum = 0;
    bme_t_sum = 0;
    bme_h_sum = 0;
    bme_p_mm_sum = 0;
  };

  delay(second_delay);
}






Первые данные, снятые с прибора, выглядят на графике вот так:



Датчик MH-Z14 включился впервые, так что он какое-то время потратил и еще потратит на калибровку. Видно, что его показания сильно коррелируют с показаниями датчика S8, но Z14 несколько шатает из стороны в сторону. Механизм автокалибровки состоит в следующем: датчик помнит минимальное значение измеренного уровня за какое-то время (около недели). Если минимум превышает 400 ppm, то скорее всего датчик завышает показания. Внутренние коэффициенты изменяются так, чтобы выдаваемое значение снижалось. За одну неделю вносимая поправка не может превышать 30-50 ppm, так что датчик необходимо «проветривать» раз в неделю для корректировки нулевых значений.

Вот еще пример графика снятых значений:



Видно, что теперь датчик слегка занижает уровень относительно S8. Но его более современный собрат Z14 занижает еще сильнее. Вероятно, в нем произошла калибровка нулевого значения. У этих датчиков, MH-Z14, есть специальный вывод для калибровки. При замыкании его на землю и удержании в течении 7 секунд датчик калибруется, рассматривая текущую атмосферу как нулевую точку.
Более свежая модификация «B» этого датчика отличается наличием аналогового выхода и возможностью калибровки не только по нулевому уровню, но и по произвольной точке, что особенно полезно, потому что газ, совершенно свободный от примеси углекислоты, в домашних условиях получить хлопотно. Вероятно, мой датчик случайно замкнул эту ногу и перекалибровался по 400ppm. Теперь могут уйти долгие недели на то, чтоб автокалибровка вернула более-менее правдоподобные показания. Или нужно искать жидкий азот, чтоб обеспечить для него безуглекислотную атмосферу.



Четвертый датчик, измеряющий eCO2, выполняет свою работу вполне неплохо. Всплеск его показаний в правой части графика — результат моей работы со спиртом. Я как раз протирал плату в этот момент, что он и зафиксировал.

Что в итоге:

Все датчики более-менее правдоподобно отражают изменения атмосферы в квартире. MH-Z19 нуждается в повторной калибровке. Ее механизм значительно усовершенствован в более поздней версии, MH-Z19B, так что я бы порекомендовал приобретать именно ее.

Датчик MH-Z14 оказался очень неплохим, его показания почти совпадают с более дорогим Senseair S8.
Датчик LGAQS-HT01 тоже правдоподобно показывает наличие примесей в атмосфере и послужит хорошим дополнением к датчикам углекислоты.

Теперь у меня в планах собрать одно устройство с лучшим из трех датчиков пыли из прошлого обзора и одним из датчиков углекислоты из этого обзора.
Пока готов код, отображающий на экране ситуацию с запылённостью. Подробности об этом проекте я добавил в обзор датчиков пыли, включая скетч для Ардуино. Показания прибора сегодня выглядят вот так:



Скоро туда добавится график измерения уровня углекислоты. Если нужно, объединенный скетч по мере готовности я выложу в этом обзоре.

MH-Z14A — рабочий датчик, рекомендую к покупке. Сейчас прилагается USB to RS485 TTL преобразователь, в хозяйстве пригодится.

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.
Планирую купить +66 Добавить в избранное +82 +123
свернуть развернуть
Комментарии (94)
RSS
+
avatar
  • Harwest
  • 25 апреля 2019, 18:00
+1
А зачем жидкий азот, можно гелий для шариков использовать.
+
avatar
  • tykhon
  • 25 апреля 2019, 18:57
0
У меня была мысль плеснуть в емкость азота, накрыть колпаком с гидрозатвором, подождать пока он весь испарится и вытеснит основную часть воздуха с углекислотой. Можно конечно и гелием, но с азотом мне каежтся проще.
+
avatar
  • Harwest
  • 25 апреля 2019, 19:06
+1
Ой как сложно.
Кмк проще сунуть датчик на проводах внутрь воздушного шарика и надуть гелием. Горловину перетянуть и откалибровать.
Даже простой шарик даст достаточно времени (для гелия стенки обрабатывают чтобы не травил).
+
avatar
0
смысл затеи — откалибровать на точках 0 и 400 ppm?
+
avatar
  • Harwest
  • 25 апреля 2019, 19:59
+1
Ну да, именно.
За 400ppm а чистый лес идти)
+
avatar
  • vovikah
  • 26 апреля 2019, 06:57
0
… днём, ночью там далеко не 400.
+
avatar
  • olgerd
  • 25 апреля 2019, 21:21
+2
В медицинских капнографах (капнометрах) спокойно калибруют ноль на атмосферном воздухе и это считается вполне достаточным для приборов в 1000$ и более.
Калибровку в диапазоне измерения проводят калибровочными газами с прецизионной концентрацией.
Но это в медицине.
Обозреваемые датчики имеют другую область использования и возможно описанные алгоритмы калибровки имеют право на жизнь, но я в них не уверен, imho
+
avatar
0
Вообще по документации инфракрасные детекторы запрещается калибровать любым другим газом, кроме измеряемого. Так что жидкий азот — тоже не очень верно, как и калибровка в среде инертных газов (в качестве инертного газа еще можно использовать аргон, который есть на любом шиномонтаже, занимающимся ремонтом литых дисков).
Но если уж очень хочется кустарно — то можно обойтись и без поисков жидкого азота или разговором со сварщиком на шиномонтаже. Достаточно пойти в магазин и купить брендовый баллончик газа для заправки зажигалок, или для туристических плиток. Там тоже углекислоты нет, пропан-бутан, довольно чистый…
+
avatar
0
Ужасный шрифт дисплея, вы фанат майнкрафта? :)))
Мне кажется такой лучше
+
avatar
+3
Шрифт ужасный как раз на вашей картинке, читается он в разы хуже чем у автора.

P.S. Майнкрафт не люблю :)
+
avatar
+1
Ну может и так, вкусы у всех разные ) Я вообще люблю имитацию семисегментных индикаторов, но не нашел такого шрифта под этот дисплей
+
avatar
0
Так сделай, всё бы всем готовое найти.
+
avatar
+1
по мне, так оба шрифта чего-то не-то. В комменте буквы S и E слишком близко, в обзоре некоторые буквы своими разрывами на нервы действуют.
Да и в коменте скорее всего разрешение дисплея выше и, соответственно, намутить шрифт можно посглаженнее.
+
avatar
+1
Дисплеи у нас одинаковые, 128х160
+
avatar
  • walther
  • 25 апреля 2019, 18:37
-1
а в чем практический смысл измерять СО2? Ну стало душно, открыл окно, не стало — не открыл. Это же не СО, которым можно спокойно дышать до сна, из которого никогда не выйдешь.
+
avatar
  • tykhon
  • 25 апреля 2019, 18:55
+10
Это будет один из элементов климатической системы квартиры. Уже проделано отверстие приточной вентиляции, установлен вентилятор, фильтр и две заслонки с электроприводом. Кроме того, над батареями устроены щели вохдухопритока, которые зимой подают воздух в комнаты. Воздух сразу же подогревается батареями, намного эффективнее форточки. Со временем появится автоматическое увлажнение.
+
avatar
  • Setjet
  • 25 апреля 2019, 20:00
0
Уже проделано отверстие приточной вентиляции, установлен вентилятор, фильтр и две заслонки с электроприводом.
Заслонки с «нормальным» электроприводом или тоже самодельные на каких-то чахлых приводах с Али?
Сам размышляю над этой темой и хотелось бы узнать какие управляемые заслонки кто использует.
+
avatar
  • rexen
  • 25 апреля 2019, 22:20
+4
tykhon, можно вас попросить сделать небольшой эксперимент? Терехов утверждает, что в комнате воздух расслаивается и более тяжёлый CO2 опускается вниз, и именно поэтому классически при естественной вентиляции вытяжка воздуха осуществляется щелью под дверью.
Меня крайне одолевают сомнения, что в комнате возможно явное расслоение.

Можете сделать измерения CO2 на полу, в центре и под потолком? Для статистической верности — несколько раз, но в одинаковых условиях. Скажем, минут по 5 на каждом уровне и два-три-четыре измерения в течение дня — чтобы невозможно было списать на случайность и погрешности.
+
avatar
  • tykhon
  • 25 апреля 2019, 22:23
0
Это надо взять отдельную комнату, заткнуть все двери-окна, поставить прибор и выйти вон. Потому что пока кто-то находится в комнате, показания ни минуты не стоят на месте. Попробую, когда будет подходящие обстоятельства, но не обещаю.
+
avatar
  • Olkan
  • 26 апреля 2019, 00:04
+1
Не стоит тратить время. Лучше на столь же классный обзор потратьте. IMHO.
+
avatar
  • rexen
  • 26 апреля 2019, 09:03
+1
Так лабораторная комната не интересует. Важна именно что жилая вместе с человеком в самых обычных условиях. Ну да, с открытыми окнами и/или горячей батареей будет значительное движение воздуха. Поэтому самое время измерять — межсезонье — когда и отопление уже не греет и окна ещё не распахивают. В это время Естественная Вентиляция хуже всего и работает.

Мне просто не удалось нагуглить чётких данных. Все ограничиваются пространными рассуждениями про молекулярную массу или конвекцию воздуха. А циферок-то нет.

Как по мне — эти измерения на статью на Хабр потянули бы.
+
avatar
  • rexen
  • 26 апреля 2019, 09:28
+1
Кстати, на Хабре уже были статьи по сабжам:
habr.com/ru/post/395755/
habr.com/ru/post/187210/
habr.com/ru/post/301296/
и ещё несколько там же можно нарыть.
+
avatar
  • Olkan
  • 25 апреля 2019, 23:57
+1
Кто это Терехов? Чем он обосновывает? Он сам измерял, или Рабинович ему напел?
+
avatar
  • rexen
  • 26 апреля 2019, 08:57
-1
Терехов — самый грамотный инженер-строитель на ютубе:
www.youtube.com/user/Consulbud
Настолько системного и объёмного разжёвывания всяких строительных тонкостей я во всём рунете не встречал. Тем не менее, некоторое количество спорных тезисов есть и у него.

Ну а про молекулярный вес углекислого газа тут уже ответили. Это из школьного учебника — можете Рабиновича не трогать.
+
avatar
  • Setjet
  • 26 апреля 2019, 08:37
0
Думаю сделать приточку в новой квартире с агрегатом в наружной корзине, тоже спрашивал на выставке Мосбилд специалистов по климату насколько справедливо утверждение, что в квартире весь углекислый газ стекает на пол. Сказали, что хотя он действительно и несколько тяжелее остального воздуха, но любое самое слабое движение воздуха в квартире его легко обратно перемешивает. Так что «явное расслоение» если и возможно, то в герметичной комнате.
+
avatar
  • Vetalar
  • 26 апреля 2019, 10:10
0
конечно никакого расслоения не происходит даже близко. может в идеальных условиях герметичной камеры спустя продолжительное время воздух частично расслоится… учитывая что в воздухе в норме до 1% СО2 то это слой толщиной в 3 см у пола комнаты трёхметровой высоты :)
в медицине устройство приточно-вытяжной вентиляции предусматривает приток сверху, вытяжку снизу на высоте 0,3 метра от пола.
+
avatar
  • rexen
  • 26 апреля 2019, 14:39
0
Но нас не интересует трёхсантиметровый слой чистого CO2. Достаточно повышения его концентрации в 2...3 раза. А это вполне себе высота кровати.

Дальше. Оптимальное место для приточки ещё и от температур зависит. У нас ведь сезоны разные — зимой мы подогреваем входящий холодный воздух, а летом — охлаждаем входящий с улицы тёплый. И тут либо делать полностью воздушное отопление-кондиционирование как у америкосов, либо соответствующим образом располагать дырки под приток.

Ну т.е. в типовой квартире с центральным отоплением приточка для зимы делается сразу над батареей, а приточка для лета — сразу под кондишеном.

Впрочем, кондишен и так агрессивно перемешивает воздух, значит можно для всех сезонов ограничиться подоконной приточкой.

А вот где забирать воздух при принудительной вентиляции зависит от того, где он «грязнее» — наверху из-за выдыхаемого пара или внизу из-за выдыхаемого CO2.

Поэтому и попросил сделать замеры на разных высотах. Ибо строить теоретические выкладки можно до посинения.
+
avatar
  • Q2W
  • 25 апреля 2019, 22:53
+1
Кроме того, над батареями устроены щели вохдухопритока, которые зимой подают воздух в комнаты. Воздух сразу же подогревается батареями, намного эффективнее форточки.
А вот об этом можно поподробнее?
Это что, прям щели на улицу сделаны чтоль? =)
+
avatar
  • tykhon
  • 25 апреля 2019, 23:43
+3
Да, прямо на улицу. Со стороны комнаты прикрыты щелевыми заслонками. Дуют на батарею. Со временем прикручу шаговые двигатели на ползунки управления и сделаю единую систему управления. Датчики — на кухне метан и со, в ванной влажность, в комнатах влажность, температура и со2. При необходимости автоматически включаем вытяжку, приточку, увлажнитель, возможно нагреватель. В прихожей, где тренажер, отдельный канал вентиляции с подпором давления в комнаты, чтоб не затягивало их прихожей в жилые комнаты.Но пока реализовано не все.
+
avatar
  • rexen
  • 26 апреля 2019, 09:10
0
Зачем вам «подпор»? ИМХО — хорошую звукоизолированную вытяжку, а приток кислорода организовывать исключительно задвижками в каждой комнате индивидуально по индивидуальным датчикам CO2.

Если будет подпор, то система будет неустойчивой — может случиться картина, когда давление нагнетания будет равно разрежению вытяжки — тогда у вас в щели под окнами вообще перестанет поступать воздух — два вентилятора будут пахать исключительно друг на друга.
+
avatar
  • tykhon
  • 26 апреля 2019, 21:25
0
Вытяжка в этом случае только естественная. А вентилировать прихожую через комнаты не вариант: когда на тренажере занимаешься, хочется прохладного воздуха в больших количествах. А тем, кто отдыхает в комнатах, хочется теплоты и отсутсвие сквозняков. И тишина. Для такого, собственно, и делалась приточка целенаправленно в прихожую.
+
avatar
  • rexen
  • 26 апреля 2019, 22:14
0
Я может не совсем понял на словах вашу схему во фразе «отдельный канал вентиляции». В моём представлении достаточно каждое помещение обеспечить пассивным приточным каналом с регулируемой задвижкой. И все помещения имеют, скажем, щель под дверью.

Тогда один общий вентилятор-вытяжка на кухне будет создавать общее разрежение на всю квартиру. Причём, скорость вентилятора (тобишь создаваемое разрежение) должно равняться степени открытия всех задвижек суммарно.

И в каждом помещении свой датчик СО2. Где больше нагазовано — там задвижка сильнее открывается (автоматикой) на улицу. А вентилятор тем сильнее крутится, чем больше задвижек открыто и чем они сильнее открыты.

В этой схеме исключено передавливание-перетягивание — когда несколько вентиляторов могут мешать друг другу и перенаправлять поток не так как надо.

Всё — ИМХО от диванного инженера, хоть и с дипломом :) Сам пока только планирую себе подобную схему — как там оно на практике встанет — посмотрим.
+
avatar
  • Q2W
  • 26 апреля 2019, 09:34
+1
Звучит очень занятно.
Вот бы обзор с фоточками.
Хотя бы уже реализованных узлов, в частности вот этой околобатарейной вентиляции.

И ещё такой вопрос интересует: а разве это легально, вентилировать прям на батарею?
Там наверняка какие-то нормативы же есть по кол-ву отнимаемого у соседей по стояку тепла.
Я, просто, хотел себе обдув батарей сделать, чтобы тёплый с холодным воздух перемешивался лучше, и чтобы теплее было дома.
+
avatar
  • tykhon
  • 26 апреля 2019, 12:46
+2
Так выглядит приточная щель с заслонкой:
+
avatar
  • tykhon
  • 26 апреля 2019, 12:47
+2
Так она же снаружи (там еще будет отделка)
+
avatar
  • tykhon
  • 26 апреля 2019, 12:48
+2
А так заслонка, фильтр и вентилятор приточки:
+
avatar
  • Q2W
  • 26 апреля 2019, 21:10
+1
Получается, воздух над батареей не фильтруется, а фильтруемый приточной не нагревается.
Статистика по датчикам что говорит, критично это или норм?
+
avatar
  • tykhon
  • 26 апреля 2019, 21:23
0
Разные юзкейсы: батарея — постоянная небольшая приточка, открыта в большей или в меньшей степени круглогодично. Если там поставить фильтр — естественной конвекции будет недостаточно для эффективного воздухообмена. Кроме того, на фильтре оседают ионы. Это тоже не очень хорошо. А большая приточка — для ударной вентиляции, включается только при необходимости. Там фильтр не помешает совсем.
+
avatar
  • Q2W
  • 26 апреля 2019, 22:12
+1
Кроме того, на фильтре оседают ионы. Это тоже не очень хорошо.
Вот об этом вообще впервые слышу. Что за ионы и почему это плохо?
Но вообще фильтр ведь для того и сделан, чтобы на нём что-то оседало.
+
avatar
  • rexen
  • 26 апреля 2019, 22:25
0
Ну аэроионы. Чижевский, все дела. Некоторые ЗОЖ сайты стращают, что пропускание воздуха через механические преграды (фильтры, вентиляторы) уменьшает количество полезных отрицательных ионов в итак бедном уличном воздухе.

Всё на пальцах — конкретных цифр и измерений не видел. Реальное воздействие нужно подкреплять обширными исследованиями. Только кому оно надо? Фирмачам — нафиг. Юзерам — да, но не потянут. Ждём может институт какой озабодится проблемой.
+
avatar
  • Q2W
  • 26 апреля 2019, 22:44
+1
Ну тогда пока беспокоиться об этом не вижу причины.
+
avatar
  • rexen
  • 26 апреля 2019, 22:20
0
Так ить в СССР-е всё ограничивалось ЕВ через щели в деревянных окнах. В СанПиН-ы всё укладывалось. Никто тот воздух с улицы не фильтровал никогда. Да, сейчас и машин за окном больше и, собственно, можно хоть звездолёт из ИКЕИ себе собрать — были б деньги.
+
avatar
  • tykhon
  • 26 апреля 2019, 12:53
0
Нашел только один норматив — отверстие не более 125 мм в наружной стене без согласования. Разумеется, если дом не памятник архитектуры. Да, и только без внешнего оборудования на фасадах домов. Но это так в Санкт-Петербурге, в Москве свои правила. Куда приток дует — правил не нашел. Кстати, наткнулся на похожую идею где-то в Финляндии или в Швеции, даже сфоткал.
+
avatar
  • Rzzz
  • 25 апреля 2019, 19:02
+7
Не всегда можно открыть. Например на работе. Можно сидеть 8 часов в сутки и не понимать, почему сил нет, мозги не работают и голова трещит.
+
avatar
  • denM
  • 25 апреля 2019, 20:43
-3
вы работаете на подводной лодке или форточка/и забиты наглухо или ручки как класс отсутствуют?
+
avatar
+2
каким боком непонимание, что нужно открыть, связано с тем, что невозможно открыть?
+
avatar
  • denM
  • 25 апреля 2019, 22:26
0
вопрос вот к этому:
Не всегда можно открыть. Например на работе
+
avatar
  • Rzzz
  • 26 апреля 2019, 05:54
+6
Когда в помещении сидит одна вредная тётка, которой «холодно» или «продует». А когда их несколько, таких тёток, причем они не всегда женского пола?
Ну, или когда помещение не имеет окон вообще, находится внутри здания.
+
avatar
  • admin
  • 27 апреля 2019, 10:14
+1
Не всегда можно открыть. Например на работе
во многих высотных бизнес центрах открывющихся окон просто нету. или может быть они есть, но открывать их запрещено эксплуатирующей организацией.
+
avatar
0
насчет неоткрывющихся окон — это точно. Почти у всех (а может вообще у всех) высоток со здоровыми стеклоокнами эти окна не открываются. Да и было бы странно, если бы они открывались.
+
avatar
+7
Вы не один живёте случайно? Мы с женой вечно спорим проветрить или нет. Про офисы вообще молчу, там прям битвы за/против проветривания.
+
avatar
+4
Смысл в том, что ты можешь даже не понять от чего тебе плохо. Да и понятие душно — это значит, что газа уже намного выше уровня, когда у тебя органы (могзи и т.п.) работают в норме.
+ Если людей больше 1, то и понятие душно у каждого может юыть разное.

P.S.
Для меня, к примеру, «душно» — это когда у большинства других это уже перебор. Дкмаю это зависит не только от самой предрасположенности к CO2, но и то как ты дышишь (частота/глуюина дыхания).
+
avatar
0
Абсолютно точно! Нужны именно датчики угарного газа, там где в помещении есть открытое горение (дрова или газ).Что толку от СО2??? Это безопасный газ в отличии от СО!!!
+
avatar
+12
Дерево новогоднее. 1шт)))

За обзор спасибо.
+
avatar
+1
спасибо, познавательно, но подобное дерево могло быть причиной замыкания контактов на калибровку одного из датчиков.
+
avatar
  • hanzo
  • 25 апреля 2019, 19:20
+1
Наверное, имелся ввиду не жЫдкий азот, а азот высокой чистоты, применяемый при калибровке промышленных датчиков кислорода и других газов?
А то от жидкого-то, датчик кони двинет))

пс. Подскажите, где можно почитать про логгер «OpenLog»? Интересная штука.
+
avatar
+2
ну этот жидкий азот при вводе его в воздух один же фиг станет газом.
пс. Подскажите, где можно почитать про логгер «OpenLog»? Интересная штука.
судя по гуглу, это разработка sparkfun, так что плясать надо от его github'а.
+
avatar
  • hanzo
  • 25 апреля 2019, 20:07
+1
Станет.
Но станет очень холодным газом, что не отменяет возможного песца сенсору.
Плюс опять-же это будет не чистый азот, а смесь с воздухом, с ненормируемым содержанием других газов, что не позволит правильно откалибровать ноль/нуль.

это разработка sparkfun
Спасибо за ссылочку!
+
avatar
0
Но станет очень холодным газом, что не отменяет возможного песца сенсору.

а вот фиг его знает, что будет с данным объектом, если он даже временно заморозится. Зависит от веществ, которые входят в его состав.
Плюс опять-же это будет не чистый азот, а смесь с воздухом, с ненормируемым содержанием других газов, что не позволит правильно откалибровать ноль/нуль.

На состав этого азота — скорее всего, т.к. судя по вики точка кипения жидкого азота -195,75 °C. Сомневаюсь, что там азот при температуре ниже этой => какая смесь газов.
+
avatar
  • dfhj
  • 25 апреля 2019, 20:34
+1
Срок эксплуатации: > 5 лет
Я правильно понимаю, что эти датчики деградируют при работе? Если да, то деградируют ли они в выключенном состоянии?
+
avatar
  • p0gank
  • 25 апреля 2019, 22:17
+2
В выключенном состоянии деградации быть не должно. Но если по чесноку, то все тут приведенные датчики кроме LGAQS-HT01 формально будут работать пока не испортятся, там ломаться нечему, а калибровка позволит корректировать деградацию фотодиода и лампочки/светодиода, ну при условии, что пылью датчики не засыпать. А вот последний действительно деградирует со временем. Датчики MQ- вообще больше 2-х лет в работе не живут.
+
avatar
  • Sosedus
  • 25 апреля 2019, 21:15
+1
в магазине Али датчик MH-Z19, скорее всего B, есть в трех модификациях.0-5000PPM, 0-2000PPM, 0-10000PPM, это разные датчики или отличаются прошивками? Какой предпочительно брать для квартиры?
+
avatar
  • tykhon
  • 25 апреля 2019, 21:21
+1
Ничем они не отличаются, датчик специальной командой настраивается на нужный диапазон. Во всяком случае, между 2000 и 5000 точно так. Для квартиры 2000 — потолок, после уже не важно сколько там ppm, открывать окно в любом случае нужно срочно. По-хорошему, после 1000 уже открывать нужно.
+
avatar
  • Sosedus
  • 25 апреля 2019, 21:31
0
вот нашел ссылку aliexpress.com/item/MH-Z19-co2-co2/32916782044.html,
я делаю метеостанцию, взял 5000, только потому что в исходном проекте было озвучено что датчик используется 5000. Т.е я смогу переключить диапазон на 2000?
+
avatar
  • p0gank
  • 25 апреля 2019, 22:19
+1
Можете, но для цифрового выхода ничего не изменится. Смысл переключения разве что в пределах аналогового канала и в канала PWM.
+
avatar
+1
У меня такой стоит в AirMAster из таобао. Жалею что не взял вариант с SenseAir.
Вообщем он периодически сбивается на 500-1000 пунктов. И сам же возвращается назад…
+
avatar
  • p0gank
  • 25 апреля 2019, 22:13
+1
Для MH-Z19 и MH-Z14 важно хотя-бы раз в сутки проветривать место его размещения до 400 ppm, иначе автокалибровка начинает занижать показания. А если выключить автокалибровку, то в течении двух недель датчик начинает за городом показывать 800-900ppm.
Попробуйте проведите длительный тест в пару-тройку недель.
+
avatar
  • mooni73
  • 25 апреля 2019, 22:17
+1
У меня без автокалибровки скоро год работы — после проветривания так же 350, как и раньше.
+
avatar
  • tykhon
  • 25 апреля 2019, 22:20
0
Очень интересная информация, спасибо. Когда мой доавтокалибруется до совпадения с двумя другими датчиками, я его автокалибровку планирую тоже отключить.
+
avatar
  • p0gank
  • 25 апреля 2019, 22:23
0
Вы можете его откалибровать руками, достаточно его на 20 минут положить там где 400ppm, и запустить калибровку командой или замыканием ножек и через 2-5 минут калибровка будет закончена.
+
avatar
  • tykhon
  • 25 апреля 2019, 22:24
0
Увы, это справедливо только для MH-Z19B, а у меня «А», тут нужно 0 ppm.
+
avatar
  • mooni73
  • 25 апреля 2019, 22:43
+1
Как я помню замыкание ножек не равноценно команде, после замыкания ножек сбивается его линейность и датчик требует заводской градуировки по нескольким точкам.
+
avatar
  • p0gank
  • 25 апреля 2019, 23:17
+1
На Z19B инструкция не делает различий в способе запуска калибровки и даёт любой вариант для её проведения.
+
avatar
  • mooni73
  • 26 апреля 2019, 14:29
+1
Когда собирал измеритель, нашел то ли на хабре, то ли на гитхабе возмущенный текст разработчика — в заводском мануале pdf, которым завален весь инет есть пара принципиальных ошибок. Но перелопачивать инет, что б найти линк я не буду. Просто при желании учтите такую вероятность.
+
avatar
  • p0gank
  • 25 апреля 2019, 22:22
0
Какой датчик стоит? У меня MH-Z19B и MH-Z14 оба уплывают вверх.
+
avatar
0
У меня он сам то уплавывает вверх на 500-1000 ед, то уплаывает назад в норму.
+
avatar
  • tykhon
  • 25 апреля 2019, 22:18
-1
Да, собираюсь все датчики прибора установить в один корпус, вентилятор туда же, и погонять их месяцок в разных условиях. А потом вычислить корреляцию показаний.
+
avatar
0
У меня старая версия MH-Z19, вероятно A, работает третий год, прекрасно показывает — при проветривании помещения сразу же 398-400 ppm.
+
avatar
  • mooni73
  • 25 апреля 2019, 22:15
+1
Собирал себе на z19 и esp. Обнаружил, что большинство софта не учитывает автокалибровку — раз в сутки датчик берет свои минимальные показания и принимает их за «чистый воздух», т е если помещение не проветривали сутки, он будет показывать «лесной воздух», хотя в реальности воздух будет «автодорожный». Прошивка, имеющая тумблер для вкл/выкл автокалибровки называется esp easy.
Вторая проблема этих датчиков была описана на хабре — предельный диапазон на цифре и аналоге может быть и 5000ppm и 2000ppm и узнать это без образцового прибора можно лишь косвенно, анализируя показания чистого воздуха и не очень.
+
avatar
  • AndyBig
  • 25 апреля 2019, 22:36
+3
Единственным нормальным датчиком выглядит только S8 :) У остальных какие-то сплошные разброд и шатание :)
+
avatar
  • futsker
  • 25 апреля 2019, 23:04
+1
Как-то Z19 сильно расстроил — что ж он так врет-то?
зы: Только приехал такой, с индексом «B»…
+
avatar
  • tykhon
  • 25 апреля 2019, 23:38
0
Он старый, пережил отработку многих моих не всегда корректных команд, валялся в куче проводов, питался черт знает как, общался с ардуинами без предохранения (3,3-5), так что жизнь его была нелегка. Очень может быть, что он откалибровался по 400 как по 0. Но сейчас вот, третьи сутки я его гоняю, так он уже более-менее (±20%) соответствует S8. Да, и это Z19, не Z19B, а разница очень существенна.
+
avatar
  • f1203
  • 26 апреля 2019, 12:37
0
Как долго Z19 может выдержать подключение по линии 5В? Для ардуино хлопотно паять конвертер уровней 3,3В — 5В, а на esp8266 не смог разобраться с подключением к UART
+
avatar
  • tykhon
  • 26 апреля 2019, 12:40
+1
Учитывая соотношение стоимости датчика и конвертора, я бы не рисковал. Но если уж совсем хочется — хоть резисторы поставил бы на килоом.
+
avatar
0
Возьмите ардуину на 3.3В.
+
avatar
  • batal
  • 25 апреля 2019, 23:46
+2
MHZ19 тут явно мертвый. Можно было даже не показывать, меньше бы вопросов было.

Имею несколько MH-Z19B и несколько S8. Если MH-Z19B откалибровать и отключить автокалибровку — показывает ПОЛНОСТЬЮ идентичные данные с S8 (в рамках заявленной погрешности). Проверенно опытами в несколько месяцев непрерывной работы в квартире с показаниями 400-2500 (газовая плита).
+
avatar
  • tykhon
  • 26 апреля 2019, 00:13
+2
Как только обзор опубликовался, Z19 стал исправляться и вот уже почти приблизился в показаниях к остальным:

Зеленая линия — MH-Z19, красная — MH-Z14, синяя — S8.
+
avatar
+1
А есть подобные инфракрасные датчики на природный газ метан СН4?
+
avatar
  • p0gank
  • 26 апреля 2019, 13:34
0
Да, например вот тут (http://ru.lmsnt.com/applications/applicationideas/ch4/) есть разные варианты.
+
avatar
  • Vetalar
  • 26 апреля 2019, 10:15
+2
а вообще интересная идея, самому приходило в голову нечто подобное для частного дома. летом то можно открыть окна и не волноваться, а зимой так не сделать — всё отопление в окно выдует. а вот какое то «умное» устройство с контролем СО2 в спальнях было бы замечательным решением. уровень вырос больше заданного — задвижки на вентиляции открылись. комната проветрилась — задвижки закрылись.
+
avatar
  • p0gank
  • 26 апреля 2019, 13:22
0
Для частного дома отличным решением является рекурператор, и тепло не выдувается и воздух свежий.
+
avatar
0
Как мне кажется, совершенно бесполезный обзор. Из графиков не понятно ничего, все датчики показывают разное.
Глядя на график, можно лишь предположить, что Z19 откалиброван неверно — за 400 ppm он принимает некоторое большее значение (700?) и всё, что меньше него, обрубает. То же касается электрохимического. Z14 вообще оч странно колбасит, не очень похоже на калибровку. Возможно, глюки. S8 тоже один раз скакнул. Почему? Непонятно.
В общем, для начала надо откалибровать, а потом уже приводить графики.
+
avatar
  • Gena_
  • 26 апреля 2019, 23:08
0
Подскажите как обезопасить датчик для работы в 100% влажности?
+
avatar
  • Tosha
  • 06 мая 2019, 15:38
0
У меня почему-то z19, подключенный к esp8266 показывает 65536, если питать 5В от USB

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.