Иной раз возникает необходимость управлять несколькими нагрузками по определенному графику. Например, это может быть управление освещением (имитация присутствия), полив растений по графику, автоматизация технологических процессов и т.п.
Для реализации этой цели предлагается несложная схема на распространенном микроконтроллере, реализующая следующие функции:
часы
управление до 5-ю независмыми каналами нагрузки
до 9 моментов включения и отключения для каждого канала
дискретность установки времени для события - 1 минута
бонус: термометр.
Принципиальная схема таймера
Принципиальная схема устройства приведена на рисунке. Как видите, это не полная схема, а только "основная" ее часть - блок питания и выходные усилители для коммутации нагрузок, надеюсь, вы сумеете добавить самостоятельно.
Основа схемы - микроконтроллер atmega8U1, который выполняет все функции, кроме подсчета времени. Время считает микросхема часов реального времени U2 типа DS1307. Кварцевый резонатор для микроконтроллера не требуется, а вот для часов - необходим, частота его должна быть "часовой", т.е. 32,768 кГц. U2 питается от отдельной литиевой трехвольтной батаерйки, что позволяет сохранять точность хода часов при отключении питания основной схемы.
Микросхема U2 соединяется с микроконтроллером по интерфейсу I2C, на линиях которого должны быть "подтягивающие" резисторы R2 и R3 по 4,7...5,1К. Резистор R4 того же номинала поддерживает уровень сигнала на выходе "генератора" U2 - этот генератор выдает меандр с частотой 1 Гц, который используется микроконтроллером для обновления показаний на дисплее.
Жидкокристаллический дисплей может быть любым HD44780-совместимым, главное, чтобы у него было 2 строки по 16 символов. Важно соблюсти правильность подключения дисплея, так как номера выводов (распиновка) для одних и тех же сигналов у разных типов индикаторов могут отличаться. Правильная распиновка обычно приведена в документации на дисплей.
Резистор RV1 служит для регулировки контрастности изображения на дисплее.
В качестве бонусной функции в устройстве имеется термометр на основе датчика DS18B20 - микросхема U4 (не удивляйтесь ее схемному изображению - схема создавалась в протеусе). Резистор R1 так же имеет сопротивление 4,7...5,1К. Если термометр не требуется - резистор и датчик можно исключить из схемы, на остальном функционале это никак не отразится.
4 кнопки используются для управления функциями устройства, реализуя систему меню.
Основной вид дисплея
В обычном режиме на дисплее отображается в верхней строке температура и текущее время (см. рисунок выше), а в нижней строке всегда выводится подсказка о том, какую функцию выполняют в данный момент кнопки. Как видно по схеме, кнопки обозначены символами стрелок, звездочки и решетки. Эти же символы используются в подсказках. На рисунке вы видите, что в основном режиме только кнопка "звездочка" выполняет функцию входа в меню, остальные не используются.
Под часами в обычном режиме показывается состояние каналов управления: минусом обозначается выключенный канал, а если канал включен - то на месте соответствующего минуса выводится его номер, как, например, показано на следующем рисунке:
Вид при включенном канале 1
Если датчик температуры не используется, то вместо значения температуры будут выведены знаки вопроса. Индикация температуры может быть отключена (об этом далее), и тогда внешний вид дисплея в основном режиме будет таким:
Вид дисплея с выключенным термометром
Нажатие кнопки "звездочка" в основном режиме приведет к включению "меню". Первым пунктом меню будет настройка времени:
Вид дисплея в режиме МЕНЮ - Время
Как видите, в верхней строке выводится наименование пункта меню, а в нижней - подсказка о том, что кнопка "звездочка" приведет к выбору этого пункта, "решетка" обеспечивает выход из меню, а кнопки-стрелки осуществляют передвижение по пунктам меню. Похожее назначение кнопок принято и в других режимах.
По мере продвижения по меню вы увидите 5 пунктов настройки каналов (на рисунках показаны пункты для каналов 1 и 2):
Вид дисплея в режиме МЕНЮ - Канал №1
Вид дисплея в режиме МЕНЮ - Канал 2
Затем следует пункт включения и выключения термометра:
Вид дисплея в режиме МЕНЮ - Термометр включен
Вид дисплея в режиме МЕНЮ - Термометр выключен
Завершает меню пункт сброса настроек всех каналов:
Вид дисплея в режиме МЕНЮ - Сброс
Этот пункт выполняется после нажатия кнопки "звездочка" не сразу, а после подтверждения:
Вид дисплея при запросе подтверждения
Вернемся к пункту настройки канала. Нажав кнопку "звездочка" мы увидим на дисплее следующее:
Вид дисплея в режиме настройки канала
С1 обозначает Chanel 1, то есть канал №1. Затем следует номер события (как вы помните, их может быть 9), а после стрелочки - два времени (часы и минуты): первое время обозначает момент включения канала, второе - выключения. Перемещать курсор (мигающий квадратик) можно кнопками-стрелками, а изменять значение цифры - кнопкой "звездочка".
При вводе моментов включения и выключения следует помнить о том, что момент включения всегда должен предшествовать моменту выключения, и разница между ними должна быть минимум в 1 минуту. Если это условие не соблюдено - введенные значения игнорируются.
Таким образом вы можете задать до 9 интервалов включенного состояния каждого канала в течение суток. В момент нажатия кнопки "решетка" произойдет запоминание введенных значений и с этого момента таймер начнет отрабатывать состояние каналов, как задано.
Если не нажимать кнопки некоторое время (около 5 секунд), произойдет выход из меню без сохранения сделанных изменений.
Несколько слов о наболевшем, то есть о фьюзах (fuses). Программа разработана таким образом, что обеспечивает нормальное функционирование со значением фьюзов "по умолчанию", т.е. со значениями, которые микроконтроллер имеет сразу после изготовления на заводе. Если ваш МК уже побывал в передрягах, вы можете установить его фьюзы в исходное состояние, воспользовавшись документацией.