Датчик СО2

Использование прочих датчиков и энкодеров и пользовательских блоков к ним
JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#1

Сообщение JORA555 » 16.02.2017{, 05:21}

Нужно подключить три датчика СО2 к Arduino. Тип датчика MH-Z14, либо MH-Z19 (цена адекватная и отзывы неплохие.)
Делаю вентиляционную установку для трехкомнатной квартиры. Делаю для себя, поэтому есть желание сделать как нужно. Сам по профессии проектировщик систем ОВК. С подключением датчиков температуры и влажности разобрался, а с СО2-никак. Блоков для подключения нет в программе. Только начинаю изучать Arduino. До этого баловался с овеновским ПР, но там входов/выходов маловато для данной схемы.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#2

Сообщение AVGN » 16.02.2017{, 08:26}

Вы про этот датчик?
https://www.arduino.md/arduino-co2-gas-sensor-mh-z14
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#3

Сообщение JORA555 » 16.02.2017{, 09:27}

В том и вопрос, прочитал данную статью и еще несколько. Выглядит все красиво, а программа???. В FLProg логику работы установки составить могу, а библиотеки на датчик нет.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#4

Сообщение AVGN » 16.02.2017{, 11:48}

Тоже присматривался к датчику MH-Z19.
Хочу сделать автоматическую вентиляцию в гараж.
Вот здесь есть скетч для Ардуино http://www.2150692.ru/faq/87-co2-mhz19-arduino
Наверное можно на базе этого сделать пользовательский блок для FLProg.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#5

Сообщение JORA555 » 16.02.2017{, 12:30}

Так кто его сделает. Возможно кому из профи будет интересно сделать блок.Я лично Arduino начал рассматривать для внедрения только когда увидел FLProg. Тупо копировать коды и запускать устройства, не понимая как они работают не вариант. А теперь с FBD делай что хочешь, только блоки бы народ сделал.
AVGN писал(а):Хочу сделать автоматическую вентиляцию в гараж.
Как вентиляционщик не советовал бы этот датчик в гараж, выхлопные газы по моему быстро убьют сенсор. Данный датчик лучше использовать в относительно чистом воздухе, например квартире, офисе, магазине.
Лучше использовать что-то типа этого: http://egeny.webasyst.net/shop....pleniem
Измерение нужно проводить по СО (угарный газ), а не СО2 (углекислый газ).
Я смонтировал себе вентиляцию. Система работает в ручном режиме, только ТРМ стоит на нагреватель и регулятор оборотов двигателем. Много набегает за электричество зимой для нагрева воздуха (бывает забудешь выключить-неделю молотит). По датчику система включалась бы по необходимости, а не по ощущению пользователя. Ждемс помощи...

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#6

Сообщение AVGN » 16.02.2017{, 13:51}

MH-Z19 инфракрасный там нечего убивать.
Закоптится -протрем
Здесь обзор и документацию выложили
https://geektimes.ru/post/272090
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#7

Сообщение JORA555 » 16.02.2017{, 14:09}

AVGN писал(а):Закоптится -протрем
Вопрос не в том что закоптиться, а в том, что мерить нужно не углекислый газ, а угарный газ, как я понял от выхлопа автомобиля (гараж же все-таки).
Но протереть, тоже вариант Изображение
AVGN писал(а):Здесь обзор и документацию выложилиhttps://geektimes.ru/post/272090
Все перечитал вдоль и поперек, лучше не найти за такую цену. Отличие от MZ-H14 только отсутствием аналогового выхода (0-2,4В),  но он похорошему и не нужен.

Anydy

Датчик СО2

#8

Сообщение Anydy » 16.02.2017{, 14:36}

Так а в чем проблема сделать блок, Автор сделал видео и статью.
Тем более что код всего несколько строк.

СпойлерПоказать
#include

SoftwareSerial mySerial(A0, A1); // RX, TX сенсора

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
// волшебная комманда - смотри мануал
char response[9]; // здесь будет ответ

void setup() {
Serial.begin(9600); //это наш монитор
mySerial.begin(9600); //а это датчик MH-Z19(14)
}

void loop()
{
mySerial.write(cmd,9);//запрос PPM CO2
mySerial.readBytes(response, 9);
int responseHigh = (int) response[2];
int responseLow = (int) response[3];
int ppm = (256*responseHigh)+responseLow;
// ну и по мануалу из ответа считаем PPM

Serial.println(ppm);
delay(10000);
}
Я бы сделал, но самого датчика нет, как отлаживать)))

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#9

Сообщение AVGN » 16.02.2017{, 14:59}

Лейтенант, Вы наши погоны видели здесь.
Это и есть проблема - не доползли еще до создания пользовательского блока
Если можете помогите создать блок.
JORA555 протестирует.
У меня тоже блока нет.
Но блок считаю очень полезным в домашнем творчестве.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#10

Сообщение JORA555 » 16.02.2017{, 15:16}

Anydy писал(а):Я бы сделал, но самого датчика нет, как отлаживать)))
Могу приобрести, оно же мне больше всех нужно и протестить готовый блок, но есть вопросы, так как чайник в данной теме:
1) Какой датчик брать MH-Z14 или MH-Z19. У MH-Z14 есть PWM, UART, аналог. У MH-Z19 аналога нет, но точность вроде получше (по отзывам);
2) Какую Arduino брать, чтобы маленькие габариты были, выходов хватило но при условии:
      -Будет собрано три станции с наличием в каждой: датчика СО2 из пункта 1, DS18B20 и DTH22. Кнопка ВКЛ/ВЫКЛ системы для данного помещения (открытие заслони). Показания должны показываться на дисплее. Со всех станций должны либо: уходить показания всех датчиков на общий блок (по основной плате тоже еще не определился)+уставка по температуре, влажноости, СО2, либо просто сигнал о выходе параметра за пределы уставок. (Уставки выставляются на станции) По возможности возврат данных о режиме работы системы (Работа/Аваирия). Пр отключении основного блока получаем просто метеостанции, при включении основного блока имеем управление системой вентиляции с нагревателем, встроенным кондиционером.
3) Какой дисплей: двухстрочный конечно неплохо, но делать так делать-хотя бы четыре строки, чтобы все параметры видны били разом.
В общем централизовяаннан система вентиляции с режимом ветиляции, отопления, охлаждения, очистки воздуха.
Желаний много, а опыта "0". Пробовал на ПР-200 сварганить: алгоритм работы написал, а входов катастрофически не хватает и ценик кусается, а в общем платформа не плохая.

Все хочу делать по порядку, времени навалом: вся жизнь впереди, часть вентиляционной системы уже в работе (кондиционер к лету внедрю) только в полуавтоматическом режиме.

Итак, на чем делать станции, предложите: куплю, обкатаю и блок для СО2, и все в сборе.

Аватара пользователя
Vitez
Сержант
Сообщения: 211
Зарегистрирован: 08.11.2015{, 14:32}
Репутация: 4

Датчик СО2

#11

Сообщение Vitez » 16.02.2017{, 15:47}

Судя по описанию, там никакой блок не нужен.
Читаете Serial, конвертируете сткоку в число, оцениваете загазованность. Как то так.
Изображение

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#12

Сообщение AVGN » 16.02.2017{, 16:14}

Вот по уроку сделал.
Но не понял из урока что во внутрь вкладывать из этого кода
#include

SoftwareSerial mySerial(A0, A1); // RX, TX сенсора

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
// волшебная комманда - смотри мануал
char response[9]; // здесь будет ответ

void setup() {
Serial.begin(9600); //это наш монитор
mySerial.begin(9600); //а это датчик MH-Z19(14)
}

void loop()
{
mySerial.write(cmd,9);//запрос PPM CO2
mySerial.readBytes(response, 9);
int responseHigh = (int) response[2];
int responseLow = (int) response[3];
int ppm = (256*responseHigh)+responseLow;
// ну и по мануалу из ответа считаем PPM

Serial.println(ppm);
delay(10000);
}
Вложения
_CO2_MH-Z19-COD.ubi
(12.71 КБ) 162 скачивания
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

Датчик СО2

#13

Сообщение slavas » 16.02.2017{, 16:32}

блок на пробу A0 A1 -RX TX данные в порт кидает. Проверьте если что подправлю.

AVGN, #include    а дальше? это код ознакомительный он не работает

Добавлено (16.02.2017, 16:32)
---------------------------------------------
AVGN, я глянул Ваш код, вы создали входы и выход не не подключили их, а в конце ещё и повесили процессор на десять секунд.

Аватара пользователя
Alex16
Рядовой
Сообщения: 70
Зарегистрирован: 05.01.2016{, 01:20}
Репутация: 1
Откуда: Армавир

Датчик СО2

#14

Сообщение Alex16 » 16.02.2017{, 16:37}

AVGN писал(а):Вот по уроку сделал.!!!!!!
Vitez писал(а):Судя по описанию, там никакой блок не нужен. !!!!!!
Вложения
CO2-CODE-.ubi
(18.73 КБ) 150 скачиваний
CO2.flp
(58.01 КБ) 166 скачиваний
AlexA

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#15

Сообщение AVGN » 16.02.2017{, 17:12}

slavas писал(а):AVGN, я глянул Ваш код, вы создали входы и выход не не подключили их, а в конце ещё и повесили процессор на десять секунд.
slavas, да я в этих кодах вообще ничего не понимаю.
Попробовал сделать по уроку создания пользовательского блока, ну и вот видите, неерабочий получился
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Anydy

Датчик СО2

#16

Сообщение Anydy » 16.02.2017{, 19:20}

Накидал два блока для MH-Z19 по примерам с сайта выше.
Один по UART работает второй по ШИМ.
Можно использовать несколько блоков для разных датчиков.
С настройками разберетесь надеюсь.
Может где то что то и не верно сделал, пробуйте, там еще вариант есть работы через прерывания.
Вложения
CO2UART-CODE-.ubi
(22.42 КБ) 150 скачиваний
CO2PWM-CODE-.ubi
(19.26 КБ) 168 скачиваний

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#17

Сообщение JORA555 » 16.02.2017{, 20:41}

JORA555 писал(а):Могу приобрести, оно же мне больше всех нужно и протестить готовый блок, но есть вопросы, так как чайник в данной теме:1) Какой датчик брать MH-Z14 или MH-Z19. У MH-Z14 есть PWM, UART, аналог. У MH-Z19 аналога нет, но точность вроде получше (по отзывам);
2) Какую Arduino брать, чтобы маленькие габариты были, выходов хватило но при условии:
-Будет собрано три станции с наличием в каждой: датчика СО2 из пункта 1, DS18B20 и DTH22. Кнопка ВКЛ/ВЫКЛ системы для данного помещения (открытие заслони). Показания должны показываться на дисплее. Со всех станций должны либо: уходить показания всех датчиков на общий блок (по основной плате тоже еще не определился)+уставка по температуре, влажности, СО2, либо просто сигнал о выходе параметра за пределы уставок. (Уставки выставляются на станции) По возможности возврат данных о режиме работы системы (Работа/Авария). Пр отключении основного блока получаем просто метеостанции, при включении основного блока имеем управление системой вентиляции с нагревателем, встроенным кондиционером.
3) Какой дисплей: двухстрочный конечно неплохо, но делать так делать-хотя бы четыре строки, чтобы все параметры видны били разом.
В общем централизованная система вентиляции с режимом вентиляции, отопления, охлаждения, очистки воздуха.
Желаний много, а опыта "0". Пробовал на ПР-200 сварганить: алгоритм работы написал, а входов катастрофически не хватает и ценник кусается, а в общем платформа не плохая.

Все хочу делать по порядку, времени навалом: вся жизнь впереди, часть вентиляционной системы уже в работе (кондиционер к лету внедрю) только в полуавтоматическом режиме.

Итак, на чем делать станции, предложите: куплю, обкатаю и блок для СО2, и все в сборе.
Anydy, что можете посоветовать по данным пунктам. Какая плата, дисплей, а то заказать хочется, а плодить ненужные железки в столе нет желания. По моему Pro mini в самый раз (габариты очень важны), только какое питание выбрать 3.3 (С учетом большого желания дальнейшего подключения к DUE) или 5В (для Mega)  и вообще хватить памяти, процессора для моей задачи? Буду благодарен за помощь. Все необходимые датчики по ТХ работают при любом питании.
Возможно часть вопросов есть в GOOGLE, но везде много противоречивой информации.

Anydy

Датчик СО2

#18

Сообщение Anydy » 16.02.2017{, 22:05}

JORA555 писал(а):что можете посоветовать по данным пунктам
Тут столько ньюансов....Платы на конечные устройства я бы взял Nano, удобнее что с УСБ сразу. Лучше 5в. Какая связь с центром? по проводам тогда RS485, можно и WiFi но не очень надежно, смотря какое расстояние. Если не большое то можно ESP8266-12, и ардуино не нужно. Центральную плату я бы поставил или Мегу или малинку. Дисплей так понимаю на центральной плате будет? Тогда можно TFT 2.4" за 200руб. Если на каждой станции то Nokia5110.

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Датчик СО2

#19

Сообщение JORA555 » 17.02.2017{, 04:28}

Anydy писал(а):Тут столько ньюансов....Платы на конечные устройства я бы взял Nano, удобнее что с УСБ сразу. Лучше 5в. Какая связь с центром? по проводам тогда RS485, можно и WiFi но не очень надежно, смотря какое расстояние. Если не большое то можно ESP8266-12, и ардуино не нужно. Центральную плату я бы поставил или Мегу или малинку. Дисплей так понимаю на центральной плате будет? Тогда можно TFT 2.4" за 200руб. Если на каждой станции то Nokia5110.
Итого, как я понял: Arduino nano, DTH22 (связь PWM), дисплей 5110 (связь I2C), датчик MH-Z19 (связь PWM). Про связь с основным блоком: Расстояние-максимум 15 метров. Думал организовать через UART. Их на Mege как раз 4 шт. (3шт.- использовать на станции, а на один еще три датчика DS18B20 (1-Wire) повесить (для контроля температур в установке). Возможно по такой схеме подключить или есть "подводные камни".
А как организовать изменение уставки параметров с отображением на станциях и основном блоке : Изменять кнопками (Больше/меньше) по Uart отправлять (вместе с показаниями датчиков) на основной блок, а в ответ на дисплее будет меняться значение. Я правильно понимаю? Или есть более простой вариант.
По малинке: лежит одна ревизии В. Использую как медиацентр. Хотел сделать все на ней, но опять уперся в написание программы.

Добавлено (17.02.2017, 04:28)
---------------------------------------------
JORA555 писал(а):дисплей 5110 (связь I2C)
Извиняюсь, через 5 цифровых входов

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Датчик СО2

#20

Сообщение AVGN » 17.02.2017{, 09:03}

Цитата JORA555 () 200?'200px':''+(this.scrollHeight+5)+'px');">Итого, как я понял: Arduino nano, DTH22 (связь PWM), дисплей 5110 (связь I2C), датчик MH-Z19 (связь PWM). Про связь с основным блоком: Расстояние-максимум 15 метров. Думал организовать через UART. Их на Mege как раз 4 шт. (3шт.- использовать на станции, а на один еще три датчика DS18B20 (1-Wire) повесить (для контроля температур в установке). Возможно по такой схеме подключить или есть "подводные камни".
MH-Z19 нельзя соединить с Arduino nano на прямую. Выходы/входы поддерживают уровень 3,3V

Придется использовать TTL logic level converter
Вложения
7374590.png
0649508.png
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Ответить

Вернуться в «Прочие датчики и энкодеры»