Рекуператор на ARDUINO своими руками

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

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

Получится у меня или нет - вопрос... Но, поживем - увидим. Далее я буду писать порядок действий и выкладывать рабочие скетчи (прошивки) для конкретного оборудования.

Расчет потребных параметров системы вентиляции можно почитать в статье Вентиляция в каркасном доме своими руками.

Блок управления рекуператором на ARDUINO

Для блока управления рекуператором мне понадобятся:

  1. контроллер (я выбрал Arduino UNO R3 на ATMEGA328P CH340);
  2. дисплей LCD1602 (синий) в сборе с I2C адаптером (что облегчит его подключение);
  3. модуль BME280  высокоточного датчика атмосферного давления, температуры и влажности (управление возможно по I2C интерфейсу);
  4. инфракрасный датчик MH-Z19B  для контроля уровня углекислого газа (UART, PWM).

 Все комплектующие были куплены на Aliexpress.com.

Подробнее о I2C / IIC (Inter-Integrated Circuit) 

I2C / IIC (Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. В основе i2c протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами. Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно. 

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

Проблема с китайской Arduino UNO R3

Среда Arduino IDE сначала ни в какую не хотела определять китайскую плату Arduino UNO R3. Для корректного определения пришлось в настройках изменить тип платы на "Arduino Duemilanove or Diecimila".

Китайская плата Arduino (выбор в IDE)



Подключение LCD1602 к  Arduino UNO R3

Я купил дисплей LCD1602 (синий) в сборе с I2C адаптером, который подключает экран LCD1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов. 

Жидкокристаллический дисплей с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания:

  • вывод GND подключается к GND на плате;
  • вывод VCC – на 5V;
  • SCL подключается к пину A5;
  • SDA подключается к пину A4.

Рисунок

Подключение Arduino UNO к LCD1602

Подробнее - на сайте https://arduinomaster.ru

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

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

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

Самый простой путь подключить библиотеку LiquidCrystal_I2C.h:

  1. запустить среду Arduino IDE;
  2. выбрать в меню "Скетч - Подключить библиотеку - Управлять библиотеками";
  3. в открывшемся окне Менеджера Библиотек ввести в строку поиска LiquidCrystal I2C, найти "LiquidCrystal I2C by Frank de Brabander", нажать кнопку установки. 

Скетч LCD1602 к  Arduino UNO R3 по I2C 

#include <Wire.h> // подключение библиотеки для связи микроконтроллера с устройствами и модулями через интерфейс I2C
#include <LiquidCrystal_I2C.h> // подключение библиотеки LCD-экрана

LiquidCrystal_I2C lcd(0x27,16,2);

// создаем значек градуса, byte - хранит 8-битное беззнаковое число, от 0 до 255

byte gradus[8] =
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};

// Функция setup вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д. 
// Функция setup запускает только один раз, после каждой подачи питания или сброса платы Arduino.
void setup()
{

lcd.init(); // Инициируем работу с LCD дисплеем
lcd.backlight(); // Включаем подсветку дисплея
lcd.createChar(1, gradus); // 1 – номер, присваиваемый создаваемому символу (от 0 до 7); gradus - пиксельные данные для символа
lcd.clear(); // Очищаем экран и размещаем курсор в левом верхнем углу

Wire.begin(); // Подключаемся к шине i2c 

}

void loop()
{

lcd.clear(); // очищаем экран для следующей итерации
lcd.setCursor(0,0); // устанавливаем курсор на нужную позицию
lcd.print("VLAG: "); // выводим необходимую информацию
lcd.print(" %");
lcd.setCursor(0,1);
//lcd.print("P ");
lcd.print(" ");
//lcd.print("T ");
lcd.print("\1");
lcd.print("C");

delay(1000); // обновление информации на экране 1 раз в 1000 мс
}



Подключение датчика давления, влажности и температуры BME280 по шине I2C

У модуля BME280 всего 4 контакта: питание (VIN), земля (GND), линия тактирования (SCL) и линия данных (SDA).

Подключаем аналогично дисплею:

  • вывод GND подключается к GND на плате;
  • вывод VCC – на 5V (мой датчик 5-вольтовый);
  • SCL подключается к пину A5;
  • SDA подключается к пину A4.

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

Рисунок подключения BME280 к Arduino UNO

Подключение BME280 к Arduino UNO

Попутно я подключил и модуль реального времени DS1302. Для установленной бибилиотеки iarduino_RTC time по умолчанию подключение выводов следующее:

  • pin 8 к выводу RST;
  • pin 6 к выводу CLK;
  • pin 7 к выводу DAT;
  • GND - GND;
  • 5 V - VCC.

Ссылка на скетч данного этапа https://yadi.sk/d/UpuV-6b_8fHiVA

Подключение датчиков температуры DS18B20

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

Для подключения датчиков необходимо:

  1. установить библиотеку OneWire.h;
  2. запастись (обязательно) сопротивлением 4,7 кОм (подтягивающий резистор для сигнального провода).

Процесс подключения я описывать не буду (можно почитать по ссылке http://arduino-diy.com/arduino-tsifrovoy-datchik-temperatury-DS18B20). Датчики я буду подключать через коннекторы, для этого припаял цветные пины (чтобы не перепутать провода).

Ссылка на скетч данного этапа https://yadi.sk/d/UpuV-6b_8fHiVA

В настоящее время мой проект имеет следующий вид:

Рекуператор на Ардуино своими руками
Рекуператор на Ардуино своими руками - Рекуператор на Ардуино своими руками

Управление вентиляцией с помощью Ардуино

Управление вентиляцией с помощью Ардуино - Управление вентиляцией с помощью Ардуино

Управление вентиляцией на Ардуино

Блок управления вентиляцией на Ардуино - Управление вентиляцией на Ардуино

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

Но об этом позже.

Блок управления содержит плату Ардуино, все датчики, а также два реле для включения и выключения вентиляторов.



 

Комментарии  

0 # Vic 14.03.2020 09:43
Здравствуйте. Как вы видите общую скелетную технологическую схему расположения всех датчиков и температурные графики с точками принятия решения по коммутации вентиляторов, и будет ли учтены в алгоритме режимы погодных сезонов? .
Ответить | Ответить с цитатой | Цитировать
+1 # Super User 14.03.2020 16:24
Здравствуйте. Рекуператор пока отложен в дальний ящик, вплотную им займусь не ранее следующей осени, так что ответить Вам пока не могу. Но сильно усложнять не планирую: стандартно 4 датчика температуры в рекуператоре, остальные - внутри дома, плюс два регулятора оборотов (на каждый вентилятор). Родителям в коттедже под Екатеринбургом собрал простейшую систему без всяких датчиков: поток воздуха регулируется диффузорами и регулятором оборотов. За прошедшую зиму впечатления - положительные, довольны.
Ответить | Ответить с цитатой | Цитировать
0 # Vittks 10.02.2021 11:59
Здравствуйте, прошел почти год, как Ваши успехи? Проект дошел до завершения? Очень интересует эта тема.
Ответить | Ответить с цитатой | Цитировать
0 # Super User 10.02.2021 13:49
Здравствуйте. Нет, всё на той же стадии, планы немного изменились, все силы, время и деньги были брошены на водопровод, канализацию и санузел. Так что вентиляция пока в ручном режиме, регуляторами оборотов управляется... Ардуино ждет своей очереди. Работы не много, надо подключить и протестировать, но это время, которого пока нет. Как только сделаю - результат выложу.
Ответить | Ответить с цитатой | Цитировать