Поиск

21 августа 2019 г.

Управление фанкойлом или термостат на Arduino MiniCore

Для очередного фанкойла решил сделать контроллер управления.
Чтобы и обороты вентилятора (или другое исполнительное оборудование) задавал по заданной температуре и отключался, если подача жидкости слишком низкая (для режима отопления) или высокая (для охлаждения).
Выход на нагрузку - два твердотельных реле (симисторы), но можно обойтись и одним. Сама плата поддерживает ШИМ регулировку оборотов.

Ядром контроллера является мк Atmega8a, для которого есть MiniCore board в Arduino.
Для отображения используется символьный экран LCD1602.
Датчики температуры NTC.



Если нужно прошивать atmega8a из под Arduino, то нужно подготовить мк, загрузив в него соответствующий бутлоадер.
Например, для кварца 16 Mhz и загрузки прошивки на скорости 115200 это optiboot_flash_atmega8_UART0_115200_16000000L.hex.

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

Параметры таблицы задаются в NTC.h, по умолчанию, она от -20 до 95 градусов.
Если коэффициент B неизвестен, то лучше использовать таблицу сопротивлений.
В контроллере есть корректировка показаний датчиков.

На дисплей выводится режим работы: Off / Heat / Cool.
В верхней строке текущая температура воздуха и цель.
В нижней строке температура подачи (трубы) и ограничение подачи.



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

Кнопка OK переключает режим работы или выключает контроллер.
Кнопки "Up", "Down" меняют целевую температуру воздуха.
Расширенные настройки, включая температуры ограничения подачи - длительное нажатие на кнопку "OK".

Кнопки управления подключены к мк по одному проводу, и при первом пуске их нужно откалибровать, режим калибровки так же включается, если перед подачей питания на контроллер замкнуть "KEYS-INIT".

Схема (полный размер):


Универсальная плата для Atmega8/88/168/328p в DIP корпусе:


Скетч и библиотека NTC для Arduino/C++ лежит здесь: https://github.com/vad7/Fancoil-control



Комментариев нет:

Отправить комментарий