Устройство представляет собой четырехканальный термоконтроллер, который может использоваться как автономно, так и с возможностью удаленного контроля и управления через интерфейс RS485. Каждый канал работает независимо друг от друга.
Одним из вариантов применения этого устройства является использование его в составе домашней автоматизации, построенной на основе миникомпьютера Raspberry Pi.
Но перед тем, как перейти непосредственно к самому устройству, немного остановимся на общих вопросах терморегулирования (термостатирования).
Допустим, нам необходимо поддерживать в отапливаемом электрообогревателем помещении определенную температуру, например, около 22 градусов. За начальную точку отсчета примем значение 14 градусов (рис.1)
Рис. 1
Рассмотрим график, выделенный на рис.1 синим цветом. Температура при включенном обогревателе линейно нарастает с 14 до 22 градусов и при значении 22 градуса обогреватель должен отключиться. Затем, когда температура упадет ниже 22 градусов, обогреватель снова включается. Таким образом, температура в помещении поддерживается строго на заданном уровне.
Однако то, что красиво выглядит на картинке, в реальных условиях может работать несколько иначе. Дело в том, что вблизи выбранной температурной точки контроля существует «зона неопределенности». Например, если шаг установки температуры 1градус, то в интервале 21,9… 22,0 значение 21,9 будет приравнено к 21 градусу, а 22,0 – соответственно к 22 градусам. Следовательно, при колебании температуры между 21,9 и 22,0 мы получим эффект периодического отключения/включения (дребезга) обогревателя.
Поэтому, более правильным будет применить несколько иной алгоритм. Выбираются две точки контроля температуры – температура включения обогрева и температура отключения (красныйграфик на рис.1). Интервал между этими двумя точками называется гистерезисом. Из графика видно, что обогреватель отключится, когда температура достигнет 22 градуса и снова включится, когда она опустится до 20 градусов. Такой принцип использовался и в терморегуляторе, описание которого публиковалось ранее на нашем сайте – Простой терморегулятор с ЖКИ.
При установке значений температуры отключения и включения необходимо предусматривать защиту от ввода ошибочных значений - температура включения обогревателя не должна превышать температуру отключения. Допустим, если значение отключения выбрано 22 градуса, то установка значения включения возможна только в интервале 0...21 градус.
Подобный алгоритм можно использовать и для режима охлаждения. Разница только в том, что режим охлаждения работает наоборот. Например, при достижении 22 градусов должна включиться охлаждающая установка, а при снижении температуры до 20 градусов – отключиться.
Переходим к принципиальной схеме термоконтроллера (рис.2).
Рис. 2
Эта схема фактически полностью идентична схеме контроллера, который рассматривался в предыдущей статье по Raspberry Pi. Отличие только в том, что в схему добавлены транзисторные ключи с электромагнитными реле для управления нагрузками, кнопки для установки параметров, бузер для звуковой сигнализации и вместо датчиков температуры и влажности DHT11(22) применяются более распространенные температурные датчики DS18B20.
В основном режиме работы на дисплей выводится состояние каждого канала (включен/выключен), порядковый номер канала и текущая температура (рис.3)
Рис. 3
Для входа в режим ввода параметров температуры необходимо нажать и удерживать более 2-х секунд кнопку «Меню». После звукового сигнала кнопку необходимо отпустить, при этом на дисплей будет выведен номер настраиваемого канала и текущее нижнее значение температуры в этом канале (рис.4)
Рис. 4
Кнопкой «Ввод» необходимо выбрать требуемое нижнее значение температуры и нажать кнопку «Меню». Выбранное значение запишется в EEPROM микроконтроллера и будет выполнен переход к вводу верхнего значения температуры в канале (рис.5)
Рис. 5
Аналогично выбираем необходимое значение кнопкой «Ввод», а кнопкой «Меню» переходим к вводу значений температуры в следующем канале. И так последовательно настраиваем все каналы. После ввода значений в четвертом канале устройство перейдет в основной режим работы.
Отображение текста латиницей выбрано из тех соображений, что сейчас появилось много дешевых китайских индикаторов, которые не поддерживают знакогенератор кириллического текста. Поэтому, латинские символы дают возможность применить такие индикаторы в этом устройстве.
Внимание! В алгоритме программы реализована блокировка от ввода некорректных значений. При изменении параметров программа не позволит ввести значение нижнего уровня больше верхнего и наоборот. Принцип работы такой блокировки был описан выше.
Устройство работает только в интервале положительных температур – 0…99 градусов. Отрицательная температура только измеряется датчиками и отображается на дисплее.
Внешний вид собранной платы термоконтроллера показан на рис.6
Рис. 6
Подключив устройство через интерфейс RS485 к шине системы домашней автоматизации, построенной на базе Raspberry Pi, о которой мы говорили в предыдущих статьях, можно расширить его возможности. Например, через интернет контролировать состояние термоконтроллера, текущее значение температуры в каждом канале, дистанционное управление каждым каналом. Web-интерфейс для работы с устройством показан на рис. 7
Рис. 7
В левой колонке отображается состояние каждого канала и его режим работы. Далее показывается текущее значение температуры, установленное верхнее и нижнее значение, и кнопки управления «Включить», «Отключить», «Авторежим».В нижней строке web-интерфейса есть четыре кнопки (1-4) для управления портами GPIO в Raspberry Pi.
Управление через web-интерфейс построено по следующему принципу. В автоматическом режиме отслеживается температура в каждом канале и, в зависимости от установленных параметров, включаются или отключаются нагрузки. Если нажать кнопку управления «Включить» или «Отключить», то устройство перейдет в ручнойрежим работы, выполнив данную команду. При этом значения температуры в соответствующем канале будут игнорироваться. Разумеется, использовать ручной режим управления возможно как при положительной, так и отрицательной температуре. Для возврата в режим «термостата» необходимо нажать кнопку «Авторежим».
На приведенном рисунке web-интерфейса показаны различные варианты работы устройства. В первом канале температура включения установлена 20 градусов, а отключения 22 градуса, режим работы автоматический. Так как температура ниже 22 градусов, то первый канал включен.
Во втором канале аналогичные параметры температуры, но канал принудительно отключен (ручной режим управления) и текущее значение температуры не влияет на его состояние.
В следующей версии предполагается добавить режим дистанционного ввода через web-интерфейс параметров температуры и некоторые другие доработки.
В новой версии термоконтроллера, по сравнению с предыдущей, никаких аппаратных изменений выполнять не требуется, достаточно только заменить прошивку микроконтроллера и страницу Web-интерфейса, которая размещена на сервере Raspberry Pi. Но вместе с тем функционал устройства значительно расширен :
- добавлена возможность удаленного ввода параметров верхнего и нижнего значений температуры в каждом канале с защитой от ввода некорректных параметров;
- термоконтроллер запоминает, а затем восстанавливает состояние каналов и все режимы работы в случае перебоев с питанием:
- введена возможность инвертирования каналов управления - теперь термоконтроллер можно использовать не только для управления нагревом, но и для управления охлаждением;
- изменены пиктограммы включенного/отключенного состояния каналов на дисплее термоконтроллера;
- введена функция сторожевого таймера.
Новый web-интерфейс имеет вид, приведенный на рис.1
Рис. 1
Описание web-интерфейса. В верхней строке находятся органы управления визуализацией каналов термоконтроллера и портов GPIO Raspberry Pi. Например, нажатие кнопок -2, -3, -4, -5 приведет к тому, что будет показан только канал №1. Хотя остальные каналы в такой ситуации и не отображаются, они все находятся в работе (рис.2).
Рис. 2
Индикатор контроля связи Raspberry Pi с термоконтроллером по интерфейсу RS485 показывается сетевой адрес и статус соединения. В случае отсутствия связи индикатор становится серым и сетевой адрес не отображается. Так же становится серой индикация состояния каналов (рис.3)
Рис. 3
В последней ячейке верхней строки показывается дата и текущее время.
Следующие строки таблицы интерфейса – четыре абсолютно идентичных канала управления и дополнительное управление портами GPIO Raspberry Pi. Порты GPIO можно использовать для управления пятью дополнительными нагрузками.
В каждом канале показывается состояние выхода (включено/отключено), режим работы (ручной/автоматический), значение текущей температуры, верхний и нижний уровни температурного регулирования с возможностью их изменения, тип управления каналов (прямой/обратный) и наконец, панель ручного и автоматического управления.
Остановимся на параметрах, которые отсутствовали в предыдущей версии. При прямом управлении реле соответствующего канала отключается, если значение температуры достигло установленного верхнего значения и включается, если температура опустилась до нижнего значения (режим управления обогревом). При обратном управлении все происходит наоборот – при верхнем значении реле включается, при нижнем – отключается (режим управления охлаждением).
Для ввода верхнего и нижнего значения температуры необходимо кликнуть по кнопке «Ввод» и в диалоговом окне последовательно ввести необходимые параметры (рис.4).
Рис. 4
При вводе параметров через Web-интерфейс, также предусмотрена защита от ввода некорректных значений – диапазон температур должен быть 0…99 градусов, невозможно ввести нижнее значение больше верхнего или верхнее значение меньше нижнего.
Все остальные возможности устройства, которые присутствовали в предыдущей версии, сохранены.
Основное управление устройством предусматривается через web-интерфейс. Непосредственно на термоконтроллере возможно задать только нижние и верхние значения температурного регулирования для каждого канала. Однако изменение некоторых функций можно реализовать введя соответствующие значения в EEPROM при программировании микроконтроллера (рис.5). В первую очередь это касается типа управления канала – прямого или обратного.
Рис. 5
Адресация ячеек:
F0…F7 – нижние и верхние значения температуры для каждого канала (hex).
F8 – состояние каналов (включен/выключен). Значение 0х00 указывает, что все каналы отключены.
F9 – ручной/автоматический режим управления каналом. По умолчанию (0х00) все каналы работают в автоматическом режиме. Если записать, например, значение 0х18 (b=11000, т.е четвертый и третий биты равны 1), то соответственно четвертый и третий канал работают в ручном режиме, а второй и первый – в автоматическом.
FA – тип канала управления (прямой обратный). По умолчанию (0х00) все каналы имеют прямой тип управления. Если записать, например, значение 0х18 (b=11000, т.е четвертый и третий биты равны 1), то соответственно четвертый и третий канал будут иметь обратный тип управления, а второй и первый – прямой.
FE – десятки двухзначного адреса контроллера (ASCII)
ADMIN, еще вопрос. А в какой среде Вы программируете? Я установил MPLAB IDE V8.30, чтобы можно было попробовать исправить что-то в исходниках для своих нужд. Но он слишком навороченный как для меня. Есть что-нибудь простенькое. Исходник загнал, подправил, что нужно, скомпилировал и без создания этих проектов.
Если хотите что-то "простенькое" - открывайте исходники *asm обычным блокнотом (или, что более удобно, Notepad++), корректируйте код и компилируйте в hex компилятором MPASMWIN, входящим в пакет MPLAB IDE.
Здравствуйте. 1.Ссылка на форум http://lock.3dn.ru/forum/6-91-1 2.Уважаемый админ, дополните статью до логической целостности. Т.е. добавьте информацию о настройках Raspberry. Я наконец-то спаял плату, но найти настройки малины под эту плату оказалось проблематично. А лучше приложить необходимые файлы. 3. Вы так и не поправили схему в части подключения 33 Ом к +12в. 4. Хотелось бы информации о наладке (кто является активатором диалога, что шлется, что в ответ)
Еще один момент, что бы потом не было вопросов, непонимания и претензий - контроллер температурного регулирования работает только с протоколом, ссылку на который я привел выше - т.е. с протоколом пилотной версии проекта, построенным на запросах/ответах в ASCII кодах. Версия для работы контроллера по Modbus RTU не разрабатывалась!. Поэтому поддержки данного контроллера в последней версии системы нет. Там функцию терморегулирования планируется организовать непосредственно в самом Raspberry Pi
Вау! Это то что я искал для своей "кочегарки". Только очень не хватает десятичного знака в уставке и отображении температуры. Сам, к сожалению, не смогу подправить. Возьмётесь сделать? Спасибо.
Автору респект! Все отлично заработало с первого раза! Промудохался неделю со связью - пока не прочитал форум и не собрал на 555 схему - связи не было . На PICе не успел собрать, пока некогда. Для дома в частном секторе вещь превосходная - рекомендую!
Добрый день! Очень заинтересовала тема умного дома на распберри. Хочу собрать первоначальный экземпляр, вот в этом термоконтроллере все устраивает, но есть вопросы(простите новичка за некоторые уточнения) : 1. Что такое K1 на схеме ? Какой диод ставить как VD1 ? 2. Зачем 4 датчика, если допустим такой контроллер ставить один в комнату (в другие комнаты тянуть провода нецелесообразно), в таком случае было бы достаточно одного внутри помещения датчика, один датчик уличный на всю систему умного дома. Поправьте если я не прав. 3. Где на схеме можно найти выходы ? Я не смог найти. 4. Что с выходами, на котрых написано VT2/VD2/K2 ?
С уважением. Хотелось бы поподробней пообщаться про систему умного дома.
Попробую ответить так как уже есть опыт сборки и настройки этого контроллера. Правда пока не подключал к Распберри, жду когда пришлют 1. Это обычное электромагнитное реле на 12В. Диод фактический любой подойдет, я ставид SMD диод SM-1 DO-214AC 2. Так а кто запрещает использовать один датчик и соответственно один канал ??? Лично мне нужно два канала. Просто не устанавливаете элементы "лишних" каналов - датчики, транзисторные ключи и реле 3. Выходы - это контакты реле К1-К4. Отследить их можно на печатной плате - там нормально-разомкнутые контакты от каждого из 4 реле выведены на отдельный разъем внизу печатной платы. 4. На схеме полностью показан только первый канал - с транзисторным ключом и реле. Оставшиеся три будут аналогичные, к ним и подключаются эти выходы. Как уже говорил раньше если нужен только один канал то эти элементы вообще не устанавливаются. P.S. И рекомендую вопросы задавать не в комментариях, а на форуме - там больше людей их увидит, комментарии мало кто читает, допустим я увидел чисто случайно
Спасибо большое ! У меня опыта практически нет в сборках, поэтому пока что для меня всё это темный лес, я программист. Вот вопрос - если ничего туда не подключать, а контроллер уже прошит на четыре входа от термодатчиков, я захочу что-то другое туда подцепить, например датчик движения - как он у меня будет восприниматься ? Спасибо за совет про форум.
А как выход на реле может сам по себе стать входом для датчика? Это нужно уже в прошивке контроллера изменения делать. Но с этими вопросами лучше к автору, тут я не смогу помочь.
Я имел в виду вместо термодатчика поставить датчик движения (то есть на вход, а не на выход) - в любом случае Вы правы, тут нужна перепрошивка, буду дальше изучать тему, спасибо )