У большинства людей жизнь проходит достаточно циклично. Утром подымаемся с постели, завтракаем, идем на работу. Вечером возвращаемся домой, отдыхаем, ложимся спать. Зачем отапливать дом в те периоды, когда никого нет дома, или ночью, во время сна? А что если каждый день недели разделить на несколько программируемых периодов и снижать температуру в доме в определенное время. При этом имея возможность установить время начала каждого программируемого периода и температуру для этого периода можем получить вот такую картину: Ночью поддерживается температура +16°С. В 06:15 включается отопление и к 07:00 температура поднимается до +20°С. В это время Вы просыпаетесь и чувствуете комфортную температуру. В 7:15 отопление выключается и в 07:30 Вы выходите из дома на работу… В течении дня температура поддерживается на уровне +16°С. В 17:15 снова включается отопление и ко времени Вашего прихода домой, температура поднимается до +20°С. За 30 минут до того как Вы ложитесь спать, отопление опять выключается и всю ночь поддерживается на уровне +16°С.
В выходные дни отопление включается в 08:15 и весь день, поскольку Вы находитесь дома, температура поддерживается на уровне +20°С до 22:30.
Простой расчет показывает, что в рабочие дни пониженная температура в доме поддерживается в течении 18 часов, а в выходные 8 часов (ночью) !!!
Все что нужно – добавить в предыдущий проект микросхему часов реального времени и программный код… В данном случае очень кстати использование четырехразрядного индикатора…
Для данной версии терморегулятора понадобится микроконтроллер с объемом FLASH не менее 16кБ. Например, ATMega16.
Можно было бы в качестве часов реального времени использовать таймер TC2 микроконтроллера, но, если у Вас не будет возможности обеспечить резервное питание для системы, то при сбоях питания возникнут проблемы с текущим временем. В качестве микросхемы RTC я выбрал DS1307. К ее выводу 3 подключается независимый источник питания, который обеспечит бесперебойную работу микросхемы на долгое время. Микроконтроллер обменивается данными с микросхемой RTC по интерфейсу I2C.
Микросхема конфигурируется так, что на ее выводе 7 (sout) формируются импульсы с периодичностью 1 секунда. Этот вывод подключен к выводу микроконтроллера с обработкой внешнего прерывания INT0. Таким образом, нет необходимости постоянно считывать данные от микросхемы по шине I2C. Достаточно считать данные времени при включении микроконтроллера, а затем, в обработчике прерывания INT0, просто увеличивать значение внутренних счетчиков текущих секунд, минут, часов, дней недели. Кроме того, один раз в сутки в 00:00 данные синхронизируются, переписываясь из RTC в микроконтроллер (на тот случай, если в течении суток, какие то импульсы секунд небыли обработаны).
Для хранения программируемых данных создан двухмерный массив структур, расположенный в энергонезависимой памяти EEPROM. Массив состоит из 6 периодов для каждого из 7 дней недели. Каждая структура содержит переменные начала времени программируемого периода (часы и минуты), и температуру, поддерживаемую в течении периода.
Кнопками «+» и «-» заданную температуру воздуха можно оперативно изменить, но только в пределах текущего периода. Поясню подробнее. Допустим, у Вас запрограммирован период, который начинается в 08:00 с поддержанием температуры +17°С. Следующий программируемый период начнется в 12:00, с поддержкой той же температуры. По каким-то причинам, Вы не пошли на работу, и в данный момент находитесь дома, текущее время 09:45. Для того, чтобы включить отопление, Вам нужно нажать на кнопку «+», установив заданную температуру воздуха +20°С. Терморегулятор отработает эти действия и будет поддерживать заданную температуру, НО! только до 12:00. По наступлению этого времени, программа микроконтроллера считает запрограммированные ранее параметры следующего периода, и установит заданную температуру воздуха (+17°С)…
Заметьте, что максимальная заданная температура датчика 2 (максимальная температура пола) не зависит от программируемого периода, это отдельная переменная.
Установка программируемых периодов в данной версии производится кнопками. Немного изменено меню. Появились два раздельных пункта: «установки» и «программирование».
МЕНЮ «УСТАНОВКИ». Для перехода в меню «установки», нужно, находясь в режиме «ожидания» нажать обе кнопки. При этом происходит переход, и на дисплей выводится надпись [ SEt].
Для входа в подменю «установки» необходимо нажать кнопку «+» или «-». В этом случае Вы получите доступ к пунктам подменю настроек терморегулятора. Как и в прошлой версии, Вы имеете возможность выбрать используемые датчики, установить максимальную заданную температуру датчика 2, установить яркость дисплея в «дежурном» режиме. Поскольку в проект добавлена микросхема часов реального времени, добавились два новых пункта меню – «установка текущего времени (часы)» и «установка текущего времени (минуты)».
МЕНЮ УСТАНОВКА ТЕКУЩЕГО ВРЕМЕНИ. Для перехода в подменю «установка текущего времени (часы)», нужно, находясь в режиме «ожидания» нажать обе кнопки (переход в меню «установка»). Затем нажать кнопку «+» или «-» (вход в меню «установка»). Затем несколько раз нажать обе кнопки (выбор датчиков –> установка температуры датчика 2 –> установка яркости дисплея –> установка текущего времени). При этом на дисплей выводится текущее время с мигающим значением часов.
Кнопками «+» или «-» можно установить текущее время. При отпускании кнопки, значение часов сохраняется в микросхеме часов реального времени.
Для перехода в подменю «установка текущего времени (минуты)», нужно нажать обе кнопки. При этом на дисплей выводится текущее время с мигающим значением минут. Кнопками «+» или «-» можно установить текущее время. При отпускании кнопки, значение минут сохраняется в микросхеме часов реального времени и значение секунд сбрасывается в 00.
Для перехода в подменю «установка текущего дня недели», нужно нажать обе кнопки. При этом на дисплей выводится номер текущего дня недели. Кнопками «+» или «-» можно установить день недели. При отпускании кнопки, значение сохраняется в микросхеме часов реального времени.
Пункт меню «выбор данных выводимых на дисплей» в режиме «ожидание» и в «дежурном» режиме, в данной версии я удалил. Терморегулятор, находясь в этих режимах, последовательно выводит на дисплей: заданную температуру воздуха –> текущую температуру воздуха –> заданную максимальную температуру пола –> текущую температуру пола –> текущее время…
МЕНЮ ПРОГРАММИРОВАНИЕ. Для установки программируемых параметров следует определить:
номер дня, для которого происходит программирование (1..7);
номер программируемого периода (1..6);
время начала программируемого периода;
заданную температуру воздуха;
Для перехода в меню «программирование» нужно, находясь в режиме «ожидания» два раза нажать обе кнопки. При этом происходит переход сначала в меню «установка», а затем в меню «программирование». На дисплей выводится надпись [ProG].
Для входа в подменю «программирование» необходимо нажать кнопку «+» или «-». В этом случае Вы получите доступ к пунктам подменю настройки программируемых параметров терморегулятора. Переход по подменю «программирование» осуществляется нажатием обоих кнопок.
ВЫБОР ПРОГРАММИРУЕМОГО ПАРАМЕТРА. Первым пунктом меню «программирование» является «выбор номера программируемого периода». При входе в это меню на дисплей выводится номер дня недели (1..7) и номер программируемого периода (1..6).
В данном случае выбран программируемый период №3 для первого дня недели.
Увеличение/уменьшение номера программируемого периода происходит при нажатии на кнопки «+» или «-». При этом, например, каждое нажатие кнопки «+», вызывает увеличение номера программируемого периода от 1 до 6. Следующее нажатие кнопки «+» вызовет увеличение номера дня недели и установку номера программируемого периода в 1. То есть: d1P1 –> d1P2 –> … d1P6 –> d2P1 –> d2P2 –> … d7P6 –> d1P1.
УСТАНОВКА ВРЕМЕНИ НАЧАЛА ПРОГРАММИРУЕМОГО ПЕРИОДА. Вторым пунктом меню «программирование» является пункт «установка времени начала программируемого периода». На дисплей выводится установленное ранее время начала данного периода.
Установка времени производится кнопками «+» или «-». При этом время увеличивается/уменьшается с периодом 10 минут, например 12:00 –> 12:10 –> … 12:50 –>13:00 –>13:10 –> … 23:50 –> 00:00 –> 00:10.
УСТАНОВКА ЗАДАННОЙ ТЕМПЕРАТУРЫ ПРОГРАММИРУЕМОГО ПЕРИОДА. Третьим пунктом меню «программирование» является пункт «установка заданной температуры воздуха». На дисплей выводится установленная ранее заданная температура программируемого периода.
Установка заданной температуры производится кнопками «+» или «-». При этом температура увеличивается/уменьшается на 0,5°С.
ВЫХОД ИЗ ПРОГРАММИРОВАНИЯ ПАРАМЕТРОВ. При нажатии обоих кнопок, происходит возврат в подменю «выбор номера программируемого периода». При этом значение номера дня недели и номера программируемого периода увеличивается на 1, то есть происходит выбор следующего программируемого периода. Для случая показанного выше, происходит переход к программируемому периоду №4 для первого дня недели.
Для удобства программирования стоит составить подобную табличку:
Вы должны понимать, что данный терморегулятор нецелесообразно использовать совместно с системой водяного «теплого пола», так как время нагрева/остывания такого пола не часы, а дни… Но терморегулятор прекрасно будет работать совместно с классическим водяным отоплением, с пленочным «теплым полом», с ИК панелями или электрическими конвекторами…
Еще одним вариантом использования данной версии регулятора, с небольшими доработками, может являться следующее:
На входе установить датчик влажности воздуха (например, AM2320 или DHT11). На выход добавить еще два реле. Дописать программу микроконтроллера следующим образом:
Датчики температуры 1 и 2 управляют системой отопления, используя реле 1. Датчик влажности управляет включением/выключением увлажнителя воздуха, используя реле 2. Реле 3 управляет системой приточно-вытяжной вентиляции по программируемым периодам…