Простейший циклический таймер

Рейтинг пользователей: / 4
ХудшийЛучший 
Проекты - Автоматика

Недавно ко мне обратился человек из Индии... Попросил помочь - сделать простейший таймер, который мог бы периодически включать и отключать нагрузку на время от 1 до 60 минут.

Ну, я подумал и накорябал проектик, которым и хочу поделиться: большой пользы от него будет вряд ли, но и вреда не будет наверняка. Возможно, кому-то как раз потребуется, или кто из начинающих почерпнет для себя что-нибудь... В общем, смотрите сами.

cyclick-timer

Схема сграблена из "протеуса", служит только для общего представления. Для реального использования необходимо дополнить ее цепями питания, ключами для нагрузки и т.п.

Светодиод D1 - это имитатор нагрузки. Нагрузка же включается на заданный интервал времени при нажатии кнопки RUN/SET. Эта же кнопка и останавливает обратный отсчет. Как только заданное время истечет, нагрузка выключается, а счет времени начинается заново, затем нагрузка снова включается и т.д. Таким образом, нагрузка работает по диаграмме "меандра": сколько времени включена, столько же и отключена, и так циклически.

Индикаторы с общим катодом, служат для отображения заданного (оставшегося) интервала времени. Индикатор мигает, пока таймер остановлен. Во время мигания индикатора кнопками UP/DN можно установить нужное время. После запуска отсчета индикатор мигать прекращает, и в это время кнопки UP/DN не работают.

Светодиод D2 дополнительно мигает во время рабочего режима таймера - по мне, так нужды в нем нет, но моему "клиенту" из жаркой Индии это было зачем-то надо.

МК тактируется от встроенного RC-генератора на 8 Мгц, однако для точного отсчета времени применен "часовой" кварц. Знатоки AVR поймут, что для работы с этим кварцем задействован асинхронный режим таймера №2.

Исходники прилагаются, правда, комментарии в них на английском (как я его понимаю). Но код очень прост. Увы, но код не является примером для подражания: я не ставил себе цель получить красивый и быстрый код, цель была - быстро получить результат. Соответсвтенно, код я бы сам оценил на троечку. Зато очень просто все, должно быть понятно даже новичку.

Код легко позволяет изменить распиновку МК: переназначить кнопки на другие линии другого порта (главное, все три кнопки на общем порту), аналогично перетасовать линии сегментов и общих катодов/анодов индикатора (опять же - все на одном порту), а линии управления нагрузкой и "индикации" можно разбросать произвольно. Кстати, переделать код на индикатор с общим анодом тоже очень просто. Все перечисленные "переделки" осуществляются путем редактирования файла config.h, и больше ничего делать не будет надо (для тасования сегментов служит leds7.h).

Успехов!

Файлы для загрузки:
ФайлОписаниеРазмер файла
Скачать файл (MANOJ-TIMER-60.ZIP)cyclic-timerИсходники, готовые hex и elf-файлы, а так же проект "протеуса" для отладки.61 Kb
 Обсудить на форуме (0 комментариев).

Возможно, вас так же заинтересует:



Темы форума

Нет сообщений для показа

Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня2528
mod_vvisit_counterВчера4300
mod_vvisit_counterНа этой неделе21966
mod_vvisit_counterНа прошлой неделе24305
mod_vvisit_counterВ этом месяце97563
mod_vvisit_counterЗа все время16242466

Ваш IP: 54.80.60.91
 , 
24 Ноя. 2017