Публикации
Гроупедия
Перейти к содержанию
Doomnik

Датчик углекислого газа CO2

Рекомендуемые сообщения

Началось с того, что я на форуме натыкался на спор о пользе самодельных CO2-генераторов а-ля бражка в пластиковых бутылках.

 

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

 

Я так понял, что проблема в отсутствии средства измерения, которое должно по идее поставить жирную точку в подобных спорах:

 

по замерам CO2 в воздухе либо стало больше, либо нет.

 

Поэтому я подкидываю идею интересующимся том, как монитор CO2.

 

 

За основу взял датчик MH-Z19B, стоит на алике чуть больше штукаря. +Arduino nano

Датчик имеет две конфигурации: замер в диапазоне 0-2000ppm и 0-5000ppm.

post-33528-0-29683300-1515520632.jpg

 

Я не программист и особо не специалист, поэтому без резких претензий.

Статья рассчитана на тех, кто уже программировал Ардуинку. :ny_icon_old:

Я разделил проект на 4 уровня сложности, чтобы каждый выбрал что хочет.

 

В конце можно получить вот такой вот логгер, отображающий результат на табло с записью на карту памяти с привязкой к часам реального времени.

post-33528-0-64002200-1515526342_thumb.jpg

 

Ниже про принцип работы датчика.

 

 

В основе процесса измерения в сенсорах MH-Z лежит принцип оптического измерения содержания определенного газа. В

 

английском языке подобная технология называется Nondispersive infrared, что на русский язык переводится примерно как

 

«недисперсионная инфракрасная технология» или сокращенно NDIR. Наличие IR и то, что сам сенсор используется инфракрасное

 

излучение для анализа воздуха наводит некоторых «специалистов» на то, что в датчике используется PIR (Passive Infrared)

 

технология. Да, в PIR, как и в NDIR, используется инфракрасный свет, а в остальном это две отличных технологий.

 

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

 

в воздухе, которым мы дышим аж 78%. Кислорода 21%, а углекислого газа всего 1%. Так вот, одна из камер содержит азот, а

 

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

 

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

 

обеспечивающий требуемую длину волны. Если же источник инфракрасного света недостаточно стабилизирован по спектральной

 

характеристике, то применяется оптический фильтр, отсекающий все остальные длины волн.

 

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

 

рассеивание (преломление) направленного пучка света и его частичное поглощение молекулами или стенками сенсора. Как

 

правило, в качестве базовой отправной точки используется камера с азотом, а результаты из второй камеры сравниваются с

 

результатами в камере с азотом. В результате прошедший через камеры свет анализируется фотоприемником и вычисляется

 

содержание искомого газа. Следует заметить, что метод весьма точен и мало затратен в плане энергетики, а сам сенсор будет

 

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

 

Деградация датчика будет происходить из-за забивания пылью фильтров, изменения спектральных характеристик у излучающего

 

светодиода и деградацией фотоприемника. Но эти процессы небыстрые, поэтому можно считать, что такой датчик будет служить

 

лет десять без видимых ухудшений показаний.

 

Несмотря на то что измерения сенсорами с технологией NDIR точны, могут наблюдаться и некоторые погрешности, особенно при

 

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

 

CO2 есть некоторые, совсем небольшие, проблемы с H2O (паром), SO2 и NO2. В бытовом применении эти погрешности можно с

 

легкостью скинуть со счетов, но для промышленного применения, где требуется высокая точность, видимо надо изобретать какие-

 

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

 

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

 

 

 

 

От датчика без индекса B ( просто mh-z19) данный девайс отличает:

1. Поддерживает пятивольтовые логические уровни - можно выткать сразу в ардуино.

2. Аналоговый выход (0,4-2В по умолчанию, бывает 0-2,5В)

 

 

 

Уровень 0

 

Как говорилось выше, датчик имеет аналоговый выход 0,4-2В. Что это значит? Это значит то, что на этом выходе меняются

 

вольты пропорционально концентрации CO2. Если ваш датчик имеет максимальный предел 5000ppm, то 2 вольта это 5000 ppm, а 0,4 В - это 400 ppm скорее всего, но об этом позже.

Vin - подаем +5 вольт

CND - земля.

Берем тестер, переводим в режим измерения постоянного напряжения,тыкаем плюсовым щупом в Vo, минусовым в GND и радуемся.

post-33528-0-17569600-1515521346_thumb.jpg

 

Уровень 1

 

 

Датчик имеет еще выход ШИМ и цифровой. Возьмем цифровой, т.к. он мне больше нравится, хотя выход ШИМ, как пишут, не менее точный.

 

Я нашел готовый код на просторах интернета, поэтому... что объяснять? К каждой строчке я добавил комментарий. Никаких

 

библиотек не надо левых.

 

 

 

// Arduino nano. Яварь 2018

 

//*******настраиваем библиотеку и порты для работы с датчиком CO2*******

#include <SoftwareSerial.h> // используем эту библиотеку т.к. CO2 общается по UART

SoftwareSerial mySerial(A0, A1); //указываем куда подключили TX и RX датчика CO2

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //это надо послать в датчик, чтобы получить ответ

char response[9]; // здесь будет хранить ответ от датчика CO2

//*******конец настройки датчика CO2*******

 

void setup()

{

Serial.begin(9600); //это наш монитор порта

mySerial.begin(9600); //настраиваем линию UART связи как требует библиотека SoftwareSerial.h

}

 

void loop()

{

mySerial.write(cmd,9); //отправили в датчик команду звпроса измерения концентрации (ppm) СО2 <-работаетбилиотека SoftwareSerial.h

mySerial.readBytes(response, 9); // получили ответ в массив response <-работает билиотека SoftwareSerial.h

int responseHigh = (byte) response[2]; // надо читать мануал, ответ приходит во втором и третьем битах, второй бит записываем в responseHigh

int responseLow = (byte) response[3]; // третий бит записываем в responseLow

int ppm = (256*responseHigh)+responseLow; // по формуле из мануала конвертируем биты в ppm

 

Serial.println(ppm); // выводим в монитор порта

delay(10000); // хадержка 10 секунд, хотя по документашке надо больше

}

 

 

 

TX датчика CO2 подключаем на A0 ардуинки

RX датчика CO2 подключаем на А1 ардуинки

 

питать датчик пятью вольтами можно от ардуинки (Vin, GND).

 

Переходим в "Монитор порта" и там видим результат замера.

 

 

Уровень 2

 

Смотреть всё время в монитор не очень удобно. Поэтому мы добавим индикатор TM1637

post-33528-0-23601200-1515523152_thumb.jpg

 

TX датчика CO2 подключаем на A0 ардуинки

RX датчика CO2 подключаем на А1 ардуинки

 

CLK индикатора подключаю на A2 ардуинки

DIO индикатора подключаю на A3 ардуинки

 

Код опять же украден из примеров... Добавил свои комментарии

 

 

// Arduino nano. Яварь 2018

 

//*******настраиваем библиотеку и порты для работы с датчиком CO2*******

#include <SoftwareSerial.h> // используем эту библиотеку т.к. CO2 общается по UART

SoftwareSerial mySerial(A0, A1); //указываем куда подключили TX и RX датчика CO2

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //это надо послать в датчик, чтобы получить ответ

char response[9]; // здесь будет хранить ответ от датчика CO2

//*******конец настройки датчика CO2*******

 

//*******настраиваем библиотеку и порты для работы с индикатором tm1637*******

#include <TM1637.h> //подключаем библиотеку с работой индикатора

#define CLK A2 //указываем к какому порту ардуино подключили CLK индикатора (можно менять)

#define DIO A3 //указываем к какому порту ардуино подключили DIO индикатора (можно менять)

TM1637 tm1637(CLK, DIO); //объявляем объект для работы с функциями библиотеки

//*******конец настройки индикатора tm1637*******

 

void setup()

{

Serial.begin(9600); //это наш монитор порта; в ардуино вызываеться Инструменты->Монитор порта

 

mySerial.begin(9600); //настраиваем линию UART связи с датчиком CO2 как требует библиотека SoftwareSerial.h

 

tm1637.init(); // инициализация индикатора tm1637, как требует библиотека TM1637.h

tm1637.set(5); // установка яркости цифр индикатора, диапазон 0-7, в соответствии с библиотекой TM1637.h

 

}

 

void loop()

{

mySerial.write(cmd,9); //отправили в датчик команду звпроса измерения концентрации (ppm) СО2 <-работает билиотека SoftwareSerial.h

mySerial.readBytes(response, 9); // получили ответ в массив response <-работает билиотека SoftwareSerial.h

int responseHigh = (byte) response[2]; // надо читать мануал, ответ приходит во втором и третьем битах, второй бит записываем

 

в responseHigh

int responseLow = (byte) response[3]; // третий бит записываем в responseLow

int ppm = (256*responseHigh)+responseLow; // по формуле из мануала конвертируем биты в ppm

 

tm1637.display(ppm);// вывод ppm СО2 на индикатор tm1637

 

Serial.println(ppm); // выводим в монитор порта, хотя это уже лишнее.

delay(10000); // хадержка 10 секунд, хотя по документашке надо больше

 

 

здесь понадобиться библиотека TM1637.h которую необходимо скачать, на всякий случай я ее добавил к ссылкам ниже.

 

Уровень 3

 

 

Смотреть на табло особо долго тоже не варик, поэтому подключаем модуль карты памяти.

На алике я брал такой

https://ru.aliexpress.com/item/1PCS-Micro-SD-Storage-Expansion-Board-Mciro-SD-TF-Card-Memory-Shield-Module-SPI-For-Arduino/32523546123.html

Карту нужно форматнуть в FAT или FAT32. Т.е. больше 2 гигов смысла пихать особо и нет.

Стандартная библиотека по работе с картами памяти не видела мою карту хоть усрись, в интернете советовали библиотеку

 

SdFat.h - она заработала. Её необходимо скачать, на вяский я ее тоже добавил к ссылкам ниже

 

Короче при запуске проекта на флешке создастся файл ppmlog.txt и туда будут записываться значения ppm.

 

TX датчика CO2 подключаем на A0 ардуинки

RX датчика CO2 подключаем на А1 ардуинки

 

CLK индикатора подключаю на A2 ардуинки

DIO индикатора подключаю на A3 ардуинки

 

MOSI модуля флешкарты на D11

MISO модуля флешкарты на D12

SCK модуля флешкарты на D13

CLK модуля флешкарты на D10 (этот контакт в программе менять можно, остальные нельзя)

 

 

 

 

// Arduino nano. Яварь 2018

 

//*******настраиваем библиотеку и порты для работы с датчиком CO2*******

#include <SoftwareSerial.h> // используем эту библиотеку т.к. CO2 общается по UART

SoftwareSerial mySerial(A0, A1); //указываем куда подключили TX и RX датчика CO2

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //это надо послать в датчик, чтобы получить ответ

char response[9]; // здесь будет хранить ответ от датчика CO2

//*******конец настройки датчика CO2*******

 

//*******настраиваем библиотеку и порты для работы с индикатором tm1637*******

#include <TM1637.h> //подключаем библиотеку с работой индикатора

#define CLK A2 //указываем к какому порту ардуино подключили CLK индикатора (можно менять)

#define DIO A3 //указываем к какому порту ардуино подключили DIO индикатора (можно менять)

TM1637 tm1637(CLK, DIO); //объявляем объект для работы с функциями библиотеки

//*******конец настройки индикатора tm1637*******

 

//*******настраиваем библиотеку и порты для работы с картой памяти*******

#include <SPI.h> //подключаем библиотеку для соединения с картой по SPI

#include <SdFat.h> //подключаем библиотеку для работы с картой памяти, скачиваем ее.

#define SD_CS_PIN SS // SS-это типа контакт D10 на ардуино, его можно менять. Контакт MOSI - D11, MISO - D12,SCK -D13 менять нельзя

SdFat SD; //объявляем объект для работы с функциями библиотеки

File myFile; //создание переменной myFile класса File библиотеки SD, которая будет служить "указателем" на файл

//*******настраиваем библиотеку и порты для работы с картой памяти*******

 

void setup()

{

Serial.begin(9600); //это наш монитор порта;

 

mySerial.begin(9600); //настраиваем линию UART связи с датчиком CO2 в соответствии с библиотекой SoftwareSerial.h

 

tm1637.init(); // инициализация индикатора tm1637, в соответствии с библиотекой TM1637.h

tm1637.set(5); // установка яркости цифр индикатора, диапазон 0-7, в соответствии с библиотекой TM1637.h

 

 

 

if (!SD.begin(SD_CS_PIN)) { // чисто для себя посмотреть в мониторе

Serial.println("ne vizhu kartu pamyati"); // есть ли связь с картой памяти

return; // можно и убрать

} // т.к. мы и так увидим значение на табло

Serial.println("svyaz s kartoj pamyati est"); // а если карта будет, запишем лог, не будет - лог писаться не будет

 

}

 

void loop()

{

mySerial.write(cmd,9); //отправили в датчик команду звпроса измерения концентрации (ppm) СО2 <-работает билиотека SoftwareSerial.h

mySerial.readBytes(response, 9); // получили ответ в массив response <-работает билиотека SoftwareSerial.h

int responseHigh = (byte) response[2]; // надо читать мануал, ответ приходит во втором и третьем битах, второй бит записываем в responseHigh

int responseLow = (byte) response[3]; // третий бит записываем в responseLow

int ppm = (256*responseHigh)+responseLow; // по формуле из мануала конвертируем биты в ppm

 

tm1637.display(ppm); // вывод ppm СО2 на индикатор tm1637

 

 

myFile = SD.open("ppmlog.txt", FILE_WRITE); //создаем файл test.txt на флешке

if (myFile) { // если файл создался нормально

Serial.print("fajl otkryt dlya zapisi "); //выводим в монитор порта "файл открты для записи"

myFile.println(ppm); // записываем в файл значение ppm CO2 в соответствии с библиотекой SdFat.h

myFile.close(); // закрыть файл, иначе не запишутся данные

Serial.println("dannye zapisany "); // пишем в монитор что "данные записаны"

} else { //если данные не записались

Serial.println("oshibka zapisi v ppplog.txt"); //пишем в монитор "ошибка записи"

}

 

 

Serial.println(ppm); // выводим в монитор порта

delay(10000); // задержка 10 секунд, хотя по документашке надо больше

}

 

 

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

 

 

Уровень 4

 

 

Писать на карту памяти хорошо, но лучше иметь привязку ко времени. Поэтому цепляем модуль часов реального времени. Я покупал такие.

https://ru.aliexpres...2572449320.html

Хочу сразу сказать, что в них используется литиевый аккумулятор LIR2032, я сначала спутал с батарейкой подобного плана.

 

Батарейку пихать в модуль нельзя как я понял, т.к. он начнет его заряжать. Но в инете описан способ как это обойти. отпаять пару резисторов и всё. Аккумулятора хватает часа на два... Либо он такой старый либо на самом деле так работает, поэтому автономности я не вижу. Может с батарейкой было бы лучше.

 

TX датчика CO2 подключаем на A0 ардуинки

RX датчика CO2 подключаем на А1 ардуинки

 

CLK индикатора подключаю на A2 ардуинки

DIO индикатора подключаю на A3 ардуинки

 

MOSI модуля флешкарты на D11

MISO модуля флешкарты на D12

SCK модуля флешкарты на D13

CLK модуля флешкарты на D10 (этот контакт в программе менять можно, остальные нельзя)

 

 

SDA модуля часов на A4

SCL модуля часов на А5 (контакты менять нельзя)

 

 

 

 

// Arduino nano. Яварь 2018

 

//*******настраиваем библиотеку и порты для работы с датчиком CO2*******

#include <SoftwareSerial.h> // используем эту библиотеку т.к. CO2 общается по UART

SoftwareSerial mySerial(A0, A1); //указываем куда подключили TX и RX датчика CO2

byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //это надо послать в датчик, чтобы получить ответ

char response[9]; // здесь будет хранить ответ от датчика CO2

//*******конец настройки датчика CO2*******

 

//*******настраиваем библиотеку и порты для работы с индикатором tm1637*******

#include <TM1637.h> //подключаем библиотеку с работой индикатора

#define CLK A2 //указываем к какому порту ардуино подключили CLK индикатора (можно менять)

#define DIO A3 //указываем к какому порту ардуино подключили DIO индикатора (можно менять)

TM1637 tm1637(CLK, DIO); //объявляем объект для работы с функциями библиотеки

//*******конец настройки индикатора tm1637*******

 

//*******настраиваем библиотеку и порты для работы с картой памяти*******

#include <SPI.h> //подключаем библиотеку для соединения с картой по SPI

#include <SdFat.h> //подключаем библиотеку для работы с картой памяти, скачиваем ее.

#define SD_CS_PIN SS //SS-это типа контакт D10 на ардуино, его можно менять. Контакт MOSI - D11, MISO - D12,SCK - D13 менять нельзя

SdFat SD; //объявляем объект для работы с функциями библиотеки

File myFile; //создание переменной myFile класса File библиотеки SD, которая будет служить "указателем" на файл

//*******конец настройки карты памяти*******

 

//*******настраиваем библиотеку и порты для работы с RTC часами реального времени DS1307*******

#include <iarduino_RTC.h> //подключили библиотеку

iarduino_RTC time(RTC_DS1307); //объявили объект RTC_DS1307

//*******конец настройки часов реального времени DS1307*******

 

void setup()

{

Serial.begin(9600); //это наш монитор порта; в ардуино вызываеться Инструменты->Монитор порта

 

mySerial.begin(9600); //настраиваем линию UART связи с датчиком CO2 в соответствии с библиотекой SoftwareSerial.h

 

tm1637.init(); // инициализация индикатора tm1637, в соответствии с библиотекой TM1637.h

tm1637.set(5); // установка яркости цифр индикатора, диапазон 0-7, в соответствии с библиотекой TM1637.h

 

time.begin();

 

if (!SD.begin(SD_CS_PIN)) { // чисто для себя посмотреть в мониторе

Serial.println("ne vizhu kartu pamyati"); // есть ли связь с картой памяти

return; // можно и убрать (но оставить строчку !SD.begin(SD_CS_PIN))

} // т.к. мы и так увидим значение на табло

Serial.println("svyaz s kartoj pamyati est"); // а если карта будет, запишем лог, не будет - лог писаться не будет

}

 

void loop()

{

mySerial.write(cmd,9); //отправили в датчик команду звпроса измерения концентрации (ppm) СО2 <-работает

 

билиотека SoftwareSerial.h

mySerial.readBytes(response, 9); // получили ответ в массив response <-работает билиотека SoftwareSerial.h

int responseHigh = (byte) response[2]; // надо читать мануал, ответ приходит во втором и третьем битах, второй бит записываем

 

в responseHigh

int responseLow = (byte) response[3]; // третий бит записываем в responseLow

int ppm = (256*responseHigh)+responseLow; // по формуле из мануала конвертируем биты в ppm

 

tm1637.display(ppm);// вывод ppm СО2 на индикатор tm1637

 

SD.mkdir(time.gettime("d_m_Y")); // функция SD.mkdir библиотеки iarduino_RTC.h создает папку с названием, указанным в

 

скобках.

// функция time.gettime("d-m-Y")библиотеки iarduino_RTC.h возващает строку типа "день_месяц_год"

// поэтому строчкой кода мы создаем папку с названием день_месяц_год

/* Дальше необходимо создать файл txt по адресу папка(день-месяц-год)/ppmlog.txt, но я это делаю по уёбски, т.к. закинуть

 

time.gettime

в функцию создания файла я не смог, как я понял это из-за разных типов данных. Я НЕ ПРОГРАММИСТ, СДЕЛАЛ ЛИШЬ БЫ

 

РАБОТАЛО */

 

String logg="/ppmlog.txt"; //создаем строчку, в которую записываем текст "/ppmlog.txt"

String dataString=time.gettime("d_m_Y")+logg; // создаем строчку dataString в которую запишем день_месяц_год и добавим в нее

 

строчку "/logg.txt"

char charBufVar[30]; // создадим массив charBufVar типа chat

dataString.toCharArray(charBufVar, 30); // преобразуем строчку dataString типа String в массив charBufVar типа char...

myFile = SD.open(charBufVar, FILE_WRITE); // мы создаем тектовой файл по адресу "папка(день-месяц-год)/logg.txt"

if (myFile) { // если файл создался нормально

Serial.print("fajl otkryt dlya zapisi "); // выводим в монитор порта "файл открты для записи"

String ppm_str; //создаем строчку "ppm_str" типа string (кэп) в которую записываем значение ppm, которое

 

находится в формате int.

ppm_str=";"+String(ppm); // перед значением ppm (концентрации CO2)добавляем ";"

myFile.println(time.gettime("H:i:s")+ppm_str); // записываем в файл ppmlog.txt данные в формате "время;ppm"

myFile.close(); // закрыть файл, иначе не запишутся данные

Serial.println("dannye zapisany "); // пишем в монитор что "данные записаны"

} else { //если данные не записались...

Serial.println("oshibka zapisi v pplog.txt"); //пишем в монитор "ошибка записи"

}

 

Serial.println(ppm); // выводим в монитор порта

delay(30000); // хадержка 10 секунд, хотя по документашке надо больше

}

 

 

 

 

тут немного ошибся в самой последней строке, задержка будет 30 секунд, а не 10.

теперь наша система отображает текущий уровень ppm на табло и пишет лог.

Файл pplog.txt создатся в папке, название папки находится в формате "день_месяц_год", а в сам файл txt данные записываются в

 

формате "время;ppm"

 

Такой формат очень легко засунуть в иксель и построить график

post-33528-0-53259900-1515526143_thumb.png

 

 

 

Особенности:

1. Перед работой датчику необходимо прогреться 3 минуты. Первое время он показывает херь.

 

2. У датчика есть автокалибровка. Её суть удручает. Как я понял из форумов, датчик некоторое время меряет ppm CO2 и через определенное время самый низкий измеренный уровень ppm принимает за ноль и работает дальше. В даташите это называется ABC logic. Е е нужно отключить, по ссылке ниже есть скетч "ABS_OFF". Подключаем датчик к ардуинке, загружаем скетч - всё. Ардуина пошлет команду выключить автоклибровку.

 

3. Калибровка датчика произведена на заводе. Суть ее такая: на свежем воздухе уровень CO2 примерно 400 ppm. Датчик вынесли на улицу - включили калибровку. Можно перекалибровать на своем свежем воздухе, в даташите ищите ZERO POINT CALIBRATION. Т.е. теперь ваш уровень CO2 датчик примет за 400 ppm

 

4. Как я понял, откалибровать датчик по нулю вообще нельзя. Функциtq SPAIN POINT CALIBRATION можно откалибровать по известному уровню ppm и этот известный уровень должен быть не меньше 1000ppm, а лучше 2000ppm. Почему-то пол-интернета думают что это калибровка абсолютного нуля.

 

5. Собрал такую херь и поместил на продувку чистейшим азотом. Продувалось часов 8

post-33528-0-41314100-1515529931_thumb.jpg

post-33528-0-04788700-1515529942_thumb.jpg

 

Показания ниже 350 не падали.

 

6. Датчик влияет на всякие неясные флюиды. Пишут, что на показания могут колбасить из-за низкого содержания CO2 (хотя на азоте было стабильно 350!) и из-за влажности.

Снижу лог, я включил и ушел из квартиры, показания падали. В самом конце небольшой скачок. Это я подошел и сел за стол, на котором лежал датчик. Два выдоха и показания поперли вверх???

В выдыхаемом воздухе много воды типа... не дышите на датчик и не поливайте его водой ))

post-33528-0-53259900-1515526143_thumb.png

 

Ссылка на скетчи https://yadi.sk/d/jPvhCVWc3RJfkh

 

Изменено пользователем Doomnik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Золотые руки?

копировать- вставить из интернета))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

забыл... 

в скетчах есть файлик time.

это настраивать время в модуле часов реального времени.

там есть строчка 

 time.settime(0,51,21,27,10,15,2);  // 0  сек, 51 мин, 21 час, 27, октября, 2015 года, вторник

 

Правда в моем примере она изменена, я под себя настраивал. Короче понятно что какая цифра обозначает. 

Пишите что вам надо и загружаете в ардуино, часы при этом подключены. 

 

Это всё не я придумал, я лишь нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за материал. По моему, на изменения показаний при выдохе, больше влияет содержание СО2 в выдыхаемом воздухе. Изменение напряжения на выходе датчика, можно использовать для вкл/выкл увлажнителя, конечно не на прямую, а через компаратор. Регулируя порог срабатывания компаратора, будет поддерживаться необходимая влажность в помещении. Возможно эту функция реализуема и с помощью ардуино, но я не имел с ним дела, да и больше шарю в аналоговой схемотехнике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа просветите зачем столько ебли? да еще стоя в гамаке  :ny_icon_old: Ведь хороший сорт даст хороший и качественный урожай при правильном кормлении и освещении! И есть ли реальные данные на сколько CO2 увеличит или там усилит :hz:  урожай?

Имхо, если речь только об увеличении V урожая, то дополнительный CO2  лишний , если увеличивает концентрацию тгк и других терпенов(что оч маловероятно), то да смысл есть. Был бы интересен реальный опыт в данной области гровинга :JC_fan:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20-30% для С3 растений прирост к урожаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Hеisenberg

+20% урожая и +50% гемороя.  :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Жаль что не было замеров с самопальнымы генами цэодва

Бражники были бы огорчены очевидным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа просветите зачем столько ебли? да еще стоя в гамаке  :ny_icon_old:

как-то мыслите однобоко... Я тоже считаю, что в нормальном боксе CO2 лишний, но есть много других мелких случаев, которые имею место быть.

Ты гровишь на балконе зимой... Вентиляция противопоказана т.к. забор холодного воздуха всё мыморозит. делай герметичный бокс, пускай CO2, днат вместо обогревателя днем.

 

Гровинг в системнике а-ля стелс. Если вентилятор палит,то тоже можно запускать СO2.. Правда надо придумать как обеспечивать герметичность и так далее.

 

Правда для того чтобы работал CO2, необходимо нужное количество света вроде как...

ты узнал ответ на свой вопрос?

нет. я лишь хотел дать в руки инструмент тем, кто интересуется. 

 

Жаль что не было замеров с самопальнымы генами цэодва

Бражники были бы огорчены очевидным.

надо еще уметь правильно применять. Если твой гроубокс вентилируется вентом на 300 кубов, то здесь и от баллона толка мало будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Золотые слова

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

+20% урожая и +50% гемороя.  :lol:

От размеров хозяйства зависит,тепличный комбинат у тебя или гроубокс.Если бокс в жилом помещении,то смысла делать подачу СО2 наверное нет,в руме или в боксе в нежилой комнате надо кондиционеры и осушители ставить,с 1,2х1,2 м2 шестисоткой больше 10 л растения испаряют,надо эту воду убирать из атмосферы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Hеisenberg

От размеров хозяйства зависит,тепличный комбинат у тебя или гроубокс.

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

в руме или в боксе в нежилой комнате надо кондиционеры и осушители ставить,с 1,2х1,2 м2 шестисоткой больше 10 л растения испаряют,надо эту воду убирать из атмосферы.

А ночью обеспечивать проветривание. На счет 50% гемора я слукавил, тут все 146%.  :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если с СО2 что то пойдёт не так, можно запросто отправиться в страну вечной охоты...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зато мирно, спокойно, во сне

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего бред? То что от углекислого газа можно ласты завернуть? М-даааа....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего бред? То что от углекислого газа можно ласты завернуть? М-даааа....

двинуть можно... в теории

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

Изменено пользователем Doomnik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он не оседает вниз,углекислый газ только собранный можно как жидкость из сосуда в сосуд "переливать",но недолго,он с атмосферой быстро перемешается,броуновское движение не даст ему осесть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он не оседает вниз,углекислый газ только собранный можно как жидкость из сосуда в сосуд "переливать",но недолго,он с атмосферой быстро перемешается,броуновское движение не даст ему осесть.

я знаю это. я идеализировал для понимания. 

полохеет если в воздухе 50% CO2... т.е. баллон можно выпустить на 12 кубах. Высота потолка 2,5 м, значит комната должна быть не меньше  2 на 2,5 м. Опять же это если выпустил весь баллон. 

 

корочое сложно коней двинуть.

 

Можно сказать, что некоторые получают CO2 путем сгорания, но там проблема в том, что  получается не только CO2, но и CO. Поэтому коней двигаешь от угарного газа.

 

Но мы здесь вроде о браге говорили.

Изменено пользователем Doomnik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

http://www.f-med.ru/...gia/ugl_gaz.php

Изменено пользователем borroo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй )))

что именно, подышать из бутылки с бражкой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

http://www.f-med.ru/...gia/ugl_gaz.php

Да я просто говорю, что при сгорании еще и угарный добавляется. + к вредному воздействию.

3% и удушье... хм... тогда если выпустить 40 литров и баллона то можно двинуть. Открыть баллон, закрыть двери и лечь уснуть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Hеisenberg

Смотря что сжигать. Газ жги, там только со2, без угарного.

 

Газовую горелку с автоподжигом к датчику приспособить, самый удобный способ добычи углекислоты. Если газ магистральный отпадает надобность постоянно таскать баллоны на заправку.

Изменено пользователем Hеisenberg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что именно, подышать из бутылки с бражкой?

я знаю это. я идеализировал для понимания. 

полохеет если в воздухе 50% CO2... т.е. баллон можно выпустить на 12 кубах. Высота потолка 2,5 м, значит комната должна быть не меньше  2 на 2,5 м. Опять же это если выпустил весь баллон. 

 

корочое сложно коней двинуть.

 

Можно сказать, что некоторые получают CO2 путем сгорания, но там проблема в том, что  получается не только CO2, но и CO. Поэтому коней двигаешь от угарного газа.

 

Но мы здесь вроде о браге говорили.

Баллон с СО2 в комнате поставь и вентиль открой  :lol2: ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотря что сжигать. Газ жги, там только со2, без угарного.

при сгорании будет образовываться CO2 в случае достаточного количества кислорода, если его мало, будет образовываться CO.

Вряд ли кто-то будет проветривать помещение во время сгорания.

Изменено пользователем Doomnik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из курса школьной химии помним, что пищевая сода – это натрий двууглекислый или бикарбонат натрия илиNaHCO3.

Чтобы узнать химическую формулу уксуса (уксусной кислоты) обратимся к органической химии. Это слабая, предельная одноосновная карбоновая кислота с формулой CH3-COOH.

Итак, сода по классу химических веществ – кислая соль. Уксус – кислота.

Так как кислотный остаток уксуса сильнее, он замещает кислотный остаток в соде, образуя ацетат натрия (CH3COONa). Реакция протекает с выделением углекислого газа (СО2) и воды (H2O) и выглядит следующим образом:

NaHCO3 + CH3COOH → NaCH3COO + H2O + CO2

 

ацетат натрия растворим в воде, поэтому мы не видим твердого осадка. Он известен как пищевая добавкаЕ262 и применяется как консервант.

Вода остается в бутылке, а углекислый газ начинает заполняет пространство над жидкостью. Газ имеет гораздо меньшую плотность, чем жидкость или твердое вещество, следовательно, объем при одинаковой исходной массе в разы превышает исходный. Тут можно вспомнить пар от кипящей воды. Плотность воды при температуре 99 С почти в 2000 раз выше плотности пара.

Итак, газ, выделяющийся в процессе реакции, постепенно заполняет все пространство и, не помещаясь в заданном объеме, начинает давить на стенки шарика. Резина растягивается, шарик надувается.

Кстати, эффект от этой реакции используют в кулинарии. Разрыхлители теста основаны именно на этом. Тесто становится “воздушным” благодаря молекулам углекислого газа, выделяющимся при контакте сухой смеси реактивов с жидкостью. 

 

Нашёл в и-нете. Есть кто пробовал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кстати нашел статью о том, что датчик надо питать отдельно от ардуинки, тогда показания скакать не будут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Создать...

Успех! Новость принята на премодерацию. Совсем скоро ищите в ленте новостей!