Простые устройства
Просто об устройствах

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

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

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

cyclick-timer

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

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

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

{ads1}

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

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

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

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

Успехов!

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

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

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

Обсудить эту статью на форуме (0 ответов).

Copyright 2019 © simple-devices.ru.
При использовании материалов ссылка на simple-devices.ru обязательна.