Универсальный таймер на микроконтроллере.

Рассказать в:

Автор - ARV.

Универсальный таймер на микроконтроллере.

Это ни что иное, как таймер, который позволит задать до 100 различных временных интервалов в течение суток, когда какая-либо нагрузка должна быть включена. Схема на рисунке 1 показывает лишь главное: три основных элемента, составляющих основу - микроконтроллер U1 типа Atmega8, интегральные часы U2 типа DS1307 и жидкокристаллический индикатор LCD1 любого типа, лишь бы он поддерживал 2 строки и не менее 16 символов в строке. Остальные элементы схемы, хотя и нужны, но не заслуживают отдельного рассказа, кроме пары слов: R1...R3 - любые резисторы сопротивлением 5,1К; RV1 - так же любой подстроечный (уточните номинал по документации на индикатор); кнопки - любые тактовые. 
На схеме показана линия OUT, которая никуда не идет. Но на самом деле она должна идти к исполнительному элементу: транзисторному ключу, нагруженному на реле; оптореле; сирене; тиристору и т.п., - в общем, к любому исполнительному элементу с током потребления не более 40 мА. Я надеюсь, что прикошачить одну из многих сотен готовых схем, которые могли бы быть исполнительными для этой схемы - не проблема для любого самодельщика. Так же и той же причине на схеме не показан источник питания. Надеюсь, подобные упрощения мне будут прощены... 
Несколько слов о DS1307. Эта микросхема требует особой аккуратности при разводке кварцевого резонатора X1 (т.н. часовой кварц). Рекомендации в общем просты: надо стремиться подключить его как можно более короткими проводниками к выводам микросхемы, и по мере возможности все свободное пространство под ней и вокруг нее залить площадкой меди, соединенной с общим проводом схемы. Батарейка BAT1 - любая литиевая 3В, она обеспечит верный ход часов при отключении питания прочей схемы. Т.е. если питание случайно пропадет, а потом снова появится, корректность работы таймера не будет нарушена. Если по каким-либо причинам батарейку решено не использовать, то 3-й вывод микросхемы часов надо соединить с общим проводом, иначе часы не "запустятся". 
Конечно, главное в данной конструкции - программа микроконтроллера. Она разработана так, чтобы не нужно было программировать знаменитые фьюзы, т.е. верно работает с теми значениями, которые "прошиты" в микроконтроллере при изготовлении. Если используется не новый МК, то придется задать ему работу от встроенного генератора 1 МГц, т.е. запрограммировать CKSEL=0001. Все прочие фьюзы некритичны. 
Управление всеми функциями осуществляется при помощи 4-х кнопок, условно обозначенных символами: 
[*] [#] [>] и [<] 
Первая строка дисплея предназначена для вывода основной информации, а вторая - для вывода подсказки. Подсказка - это краткое название функции, рядом с которым выводится символ соответствующей кнопки:

Универсальный таймер на микроконтроллере.

На рисунке показан вид изображения в обычном режиме работы таймера. Как видите, подсказка намекает, что нажав [*], мы попадем в меню. Если мы это сделаем, то увидим следующее:

Универсальный таймер на микроконтроллере.

Это пункт меню программирования таймера. Теперь подсказка уже более занятная: при помощи кнопок [>] и [<] (влево-вправо) мы можем перемещаться по системе меню, кнопка [*] теперь приведет к "входу" в выбранный пункт меню, а [#] играет роль Esc - выхода из меню. В меню всего 3 пункта, следующие 2 рисунка показывают оставшиеся пункты:

Универсальный таймер на микроконтроллере.
Универсальный таймер на микроконтроллере.

CLOCK - это пункт управления часами, а RESET - это пункт сброса всех настроек таймера.
В общем, система меню напоминает ту, что была в древних мобильных телефонах, когда их дисплеи были еще не графическими... 
"Вход" в один из пунктов меню приведет к включению одного из трех режимов соответственно. Рассмотрим их поочередно. 
1. TIMER - программирование таймера. 
Это наиболее важный режим. Он позволяет управлять промежутками времени, когда нагрузка (исполнительный механизм) должна быть включена. В этом режиме мы будем видеть следующее изображение на дисплее (черный прямоугольник - на самом деле мигающий курсор):

Универсальный таймер на микроконтроллере.

В первой строке после символов "Т-" указан номер интервала таймера, а затем два времени - включения и отключения нагрузки. Номер интервала может быть от 0 до 99 (т.е. 100 интервалов всего), а моменты включения и отключения задаются с шагом в 1 минуту. Ввод недопустимых значений (например, 32 часа или 60 минут) блокируется. 
Назначение кнопок в этом режиме другое: влево-вправо позволяют передвинуть курсор к следующей позиции, [*] изменяет на 1 значение числа в позиции, где находится курсор, а [#] - осуществляет запоминание всех сделанных изменений и возврат к основному режиму.
Программирование осуществляется очень просто: ставим курсор в позицию номера интервала и кнопкой [*] задаем нужный интервал (учтите, десятки и единицы всех чисел изменяются отдельно!). Затем сдвигаем курсор к времени включения и аналогично задаем его (снова десятки и единицы часов и минут редактируются независимо). Затем повторяем эти же действия для времени отключения. Если нужно, то можно выбрать другой интервал и задать его моменты времени и т.д. - хоть все 100 интервалов. Когда все задано, нажимаем # - происходит запись программы таймера в EEPROM, после чего включается основной режим.Запись в EEPROM длится заметное время, о чем вы будете уведомлены соответствующей надписью на дисплее. 
Вернитесь к рисунку 2 - видите небольшой кружочек во второй строке справа? Это символ состояния нагрузки. Пустой кружочек означает, что в текущее время нагрузка не должна быть включена (т.е. ни один из 100 интервалов не включает текущее время). Если наступит один из моментов, когда нагрузка должна включаться, кружочек приобретет вид жирной точки, т.е. будет закрашенным. Таким образом, глядя на дисплей, мы можем знать, включена ли нагрузка или нет (она же не обязательно должна находиться рядом).

2. CLOCK - установка времени.
Это режим коррекции времени. Изображение на дисплее будет следующим:

Универсальный таймер на микроконтроллере.

Ввод времени осуществляется аналогично ранее рассмотренному режиму TIMER. Значение секунд не отображается, но в момент нажатия [#] счетчик секунд обнуляется - это следует учитывать при коррекции времени. 

3. RESET - сброс программы таймера.
В этом режиме вы можете стереть сразу все запрограммированные ранее моменты включения нагрузки. Это нужно, если возможности просмотреть все 100 событий нет возможности, а изменить программу таймера необходимо. Т.е. быстрее стереть все и ввести пару новых, чем проконтролировать, что все 100 событий пусты. После включения этого режима на дисплее появится требование подтвердить свое намерение:

Универсальный таймер на микроконтроллере.

Соответственно, нажатие [*] приведет к очистке всей программы, а [#] просто выключит режим стирания. 
Теперь несколько слов о том, как происходит вообще работа таймера.
Программа каждую секунду перебирает все запрограммированные события и проверяет, попадает ли текущее время в один из этих интервалов. Если попадает - нагрузка включается. Если же не попадает ни в один - нагрузка отключается. Интервал должен быть правильным - время включения хотя бы на 1 минуту должно быть меньше времени отключения. Если это не так, то интервал не анализируется. Т.е. задав момент включения 20 часов при моменте выключения в 19 часов, вы "отключите" данный интервал (это может помочь при редактировании программы таймера). 
Да, если войти в любой пункт меню и не нажимать ни одну кнопку в течение 20 секунд, произойдет возврат в основной режим без выполнения любой начатой, но не законченной нормально функции. 
Изначально таймер задумывался для управления насосом подкачки воды для многоквартирного дома, но в процессе было решено расширить его функции разными способами, один из которых (наиболее простой) предложен вам. 
P.S. Все рисунки взяты из протеуса, в нем же производилась и отладка проекта. До финальной стадии был доведен более сложный проект (5-канальный таймер с термометром), но "пайку" производил совершенно другой человек, поэтому у меня нет "документального" подтверждения...

Файлы:
Файлы проекта Proteus.
Прошивка МК.




Раздел: [Устройства на микроконтроллерах]

Сохрани статью в:

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


Наше сообщество в VK, а ты с нами? Присоединяйся!!!
Тясячи схем в категориях:
-> Прочее
-> Измерительная техника
-> Приборы
-> Схемыэлектрооборудования
-> Источники питания (прочие полезные конструкции)
-> Теоретические материалы
-> Справочные материалы
-> Устройства на микроконтроллерах
-> Зарядные устройства (для батареек)
-> Зарядные устройства (для авто)
-> Преобразователи напряжения (инверторы)
-> Все для кулера (Вентилятора)
-> Радиомикрофоны, жучки
-> Металоискатели
-> Регуляторы мощности
-> Охрана (Сигнализация)
-> Управление освещением
-> Таймеры (влажность, давление)
-> Трансиверы и радиостанции
-> Конструкции для дома
-> Конструкции простой сложности
-> Конкурс на лучшую конструкцию на микроконтроллерах
-> Конструкции средней сложности
-> Стабилизаторы
-> Усилители мощности низкой частоты (на транзисторах)
-> Блоки питания (импульсные)
-> Усилители мощности высокой частоты
-> Приспособления для пайки и конструирования плат
-> Термометры
-> Борт. сеть
-> Измерительные приборы (тахометр, вольтметр итд)
-> Железо
-> Паяльники ипаяльные станции
-> Радиопередатчики
-> Вспомогательные устройства
-> Телевизионная техника
-> Регуляторы тембра, громкости
-> Блоки питания (лабораторные)
-> Усилители мощности низкой частоты (на микросхемах)
-> Другие устройства для усилителей
-> Cветовое оформление новогодней ёлки или праздничного зала
-> Глушилки
-> Телефонные жуки
-> Инфракрасная техника
-> Медицинская техника
-> Телефония
-> Для животного мира
-> Конструируем усилители
-> Антенны и усилители к ним
-> Звонки
-> Электронные игрушки
-> Усилители мощности низкой частоты (ламповые)
-> Управление двигателями (питание от однофазной сети)
-> Программаторы микроконтроллеров
-> Сверлилки
-> Изучаем микроконтроллеры
-> Радиоприемники
-> Сигнализации
-> Сотовая связь
-> USB-устройства
-> Блоки питания (трансформаторные)
-> Радиостанции простые в изготовлении
-> Источники питания (для усилителей)
-> Прочеее
-> защита от короткого замыкания (электронные предохранители)
-> Зарядные устройства (для радиостанций)
-> Мигалки
-> Cварочное оборудование
-> Кодовые электронные замки
-> Блоки питания (бестрансформаторные)
-> Часы
-> Управление поворотниками
-> Зажигание
-> Управление водой (насосы для скважин или колодцев, полив растений)
-> Моделирование
-> Блоки управления стеклоочистителями
-> Предварительные усилители
-> Защита от перегрузки и перегрева
-> Динамики
-> Ремонт бытовой техники
-> Дистанционное управление компьютером
-> Акустические микрофоны и преобразователи
-> Спутниковое ТВ
-> Gsm антенны, примочки, усилители, ретрансляторы.
-> Пищалки
-> Роботы
-> Ретрансляторы
-> Паяльники и паяльные станции
-> Звуковые сигнализаторы
-> Рули и джойстики
-> Схемы электрооборудования
-> Все для "кулера" (Вентилятора)
-> Работа с BGA микросхемами
-> Фильтры
-> Сабвуферы
Рейтинг@Mail.ru