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

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

Недавно ко мне обратился человек из Индии... Попросил помочь - сделать простейший таймер, который мог бы периодически включать и отключать нагрузку на время от 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 комментариев).

Добавить комментарий

Правила комментирования

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


Защитный код
Обновить

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



Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня2369
mod_vvisit_counterВчера4480
mod_vvisit_counterНа этой неделе16874
mod_vvisit_counterНа прошлой неделе25781
mod_vvisit_counterВ этом месяце74794
mod_vvisit_counterЗа все время15987282

Ваш IP: 176.49.241.55
Chrome 58.0.3029.81, Windows
22 Сен. 2017