Бесплатная техническая библиотека ЭНЦИКЛОПЕДИЯ РАДИОЭЛЕКТРОНИКИ И ЭЛЕКТРОТЕХНИКИ Таймер на микроконтроллере. Энциклопедия радиоэлектроники и электротехники Энциклопедия радиоэлектроники и электротехники / Часы, таймеры, реле, коммутаторы нагрузки В рассматриваемом таймере предусмотрено два режима обратного отсчета интервалов времени длительностью от 1-й до 999 минут или такого же числа секунд. Схема устройства представлена на рисунке. В нем имеется выключатель SA1, с помощью которого выбирают, в каких единицах, минутах или секундах будет вестись счет, кнопки управления SB1-SB3, трехразрядный светодиодный индикатор HG1 (разряд сотен) - HG3 (разряд единиц). После включения питания таймера RC-цепь R2C3 формирует импульс, устанавливающий микроконтроллер DD1 (AT90S2313-10PI) в исходное состояние. При установке продолжительности формируемой выдержки каждым нажатием на кнопку SB1 (Л) показания индикатора увеличивают на единицу. Если удерживать эту кнопку нажатой более 3 с, значение на индикаторе станет в каждую секунду увеличиваться на 5 единиц (минут или секунд). Кнопка SB2 (V) действует аналогично кнопке SB1, но значение на индикаторе не увеличивается, а уменьшается. По достижении значений 999 или 0 дальнейшее изменение показаний в соответствующую сторону автоматически блокируется. Выбрав выключателем SA1, в минутах или в секундах будет отсчитываться время и установив кнопками SB1 и SB2 необходимую продолжительность выдержки, следует нажать на кнопку SB3 (С). С этого момента начинается работа таймера - высокий уровень на выходе PD6 микроконтроллера сменяется низким, подается напряжение на исполнительное устройство, подключенное к разъему Х2, о чем сигнализирует неоновая лампа HL1 (со встроенным балластным резистором), и начинается обратный отсчет заданного времени. Число, выведенное на индикатор, каждую минуту или секунду уменьшается на единицу. Десятичная точка в разряде единиц мигает с периодом 1 с. Как только показания индикатора достигнут нуля, низкий уровень на выходе PD6 вновь станет высоким, что приведет к выключению исполнительного устройства. Кроме того, в режиме отсчета минут в этот момент на выходе PD4 будет сформирована импульсная последовательность длительностью 60 с - прозвучит звуковой сигнал. Затем прибор возвратится в исходное состояние. Для досрочного завершения выдержки на кнопку SB3 следует нажать еще раз - исполнительное устройство будет выключено. Чтобы сформировать новую выдержку, необходимо задать ее продолжительность заново. Узел управления исполнительным устройством собран на твердотельном реле U1, излучающий диод которого соединен с выходом PD6 микроконтроллера. Благодаря этому реле цепи, связанные с сетью 220 В, изолированы от остальных цепей таймера. Пьезоэлектрический излучатель НА1, подающий звуковой сигнал окончания выдержки, подключен к выходу PD4. На выходах порта В микроконтроллер DD1 формирует сигналы, поступающие через токоограничительные резисторы R4-R11 на катоды элементов светодиодных индикаторов HG1-HG3, и сигналы, используемые для определения состояния кнопок SB1-SB3. Вторые выводы всех кнопок соединены вместе и подключены к входу PD3 микроконтроллера. Диоды VD1-VD3 предотвращают замыкания между линиями порта В при одновременном нажатии на несколько кнопок. Транзисторы VT1-VT3, управляемые сигналами с выходов PDO-PD2, поочередно соединяют с источником питания общие аноды индикаторов HG1-HG3, что требуется для организации динамической индикации. Тактовая частота микроконтроллера DD1 задана кварцевым резонатором ZQ1 равной 10 МГц. Загружаемая в микроконтроллер таймера программа, исходный текст которой имеется в приложении к статье, состоит из трех основных частей: модуля инициализации (метка INIT), основного бесконечного цикла (метка SE1) и обработчика прерывания от таймера Т/С1 (метка TIM0). Она начинает свою работу, инициализируя регистры, счетчики, стек, таймер Т/С1, сторожевой таймер, порты ввода-вывода. По завершении инициализации на индикатор выведено число 001, все десятичные точки выключены, на выходе PD6 установлен высокий уровень, поэтому цепь исполнительного устройства разомкнута. Отсчет времени остановлен. Задача формирования точных интервалов времени длительностью 1 с решена с помощью прерываний от таймера Т/С1, запросы которых следуют через каждые 3,9 мс (1/256 с). Их подсчитывает счетчик в регистре г25. С помощью счетчика, организованного в регистре г21, формируется интервал в 1 мин. В процессе обработки прерываний производятся также смена отображаемого на индикаторе разряда и преобразование двоичного значения цифры, выводимой в этом разряде, в "семисегментный" код. Кроме того, выполняется опрос состояния кнопок, формируются сигналы управления оптоэлектронным реле и звуковым сигнализатором. В памяти данных микроконтроллера с адреса $060 по $062 организован буфер, хранящий значение оставшегося до завершения выдержки интервала времени. Именно из него программа обработки прерывания берет цифры для динамического вывода на индикатор. При нажатии на кнопку SB1 хранящееся в буфере значение увеличивается на единицу. Одновременно запускается счетчик секунд в регистре r1. Если кнопка удерживается нажатой более 3 с, значение в буфере начинает увеличиваться на единицу пять раз за каждую секунду. Подсчет интервала времени, в течение которого происходит это увеличение, организован в регистре гО. После отпускания кнопки SB1 счетчики в регистрах г1 и гО обнуляются. Совершенно аналогичным образом организована обработка нажатий на кнопку SB2, уменьшающих число в буфере. Счетчики времени для этой кнопки находятся в регистрах гЗ и г2. В процессе отсчета заданной выдержки число в буфере декрементируется (уменьшается на единицу) каждую минуту или секунду в зависимости от положения выключателя SA1. Учтите, что при переводе его в другое положение до завершения заданной выдержки соответственно изменится период декрементирования. В регистре г22 хранится двоичный код с единицей в разряде, соответствующем включенному в данный момент разряду индикатора. При инициализации в него записывается 00000001 (включен индикатор HG3), а в регистр Y - начальный адрес буфера ($060). При каждом вызове процедуры обработки прерывания содержимое регистра г22 сдвигается на один разряд влево, а регистр Y инкрементируется. Понятно, что как только единица в регистре г22 будет сдвинута в третий разряд (пройдены все индикаторы), регистры г22 и Y следует перезагрузить, восстановив в них исходные значения. На время опроса состояния кнопок SB1-SB3 все индикаторы выключаются, а на выходах PB0-РВ2 микроконтроллера формируется код "бегущий ноль". Обнаружив низкий уровень на входе PD3 и зная, на каком из выходов PB0-РВ2 уровень в данный момент низкий, процедура обработки прерывания принимает решение о том, какая кнопка нажата. Вся программа занимает около 670 байт памяти программ микроконтроллера. Таймер собран на макетной плате, помещенной в пластмассовый корпус, на переднюю панель которого выведены индикаторы HG1- HG3, кнопки SB1 - SB3, выключатель SA1 и неоновая лампа HL1. Потребляемый от источника напряжения 5 В ток не превышает 100 мА.
Программу микроконтроллера можно скачать отсюда. Автор: С. Шишкин, г. Саров Нижегородской обл.; Публикация: radioradar.net Смотрите другие статьи раздела Часы, таймеры, реле, коммутаторы нагрузки. Читайте и пишите полезные комментарии к этой статье. Последние новости науки и техники, новинки электроники: Искусственная кожа для эмуляции прикосновений
15.04.2024 Кошачий унитаз Petgugu Global
15.04.2024 Привлекательность заботливых мужчин
14.04.2024
Другие интересные новости: ▪ Влияние электрокаров на окружающую среду ▪ Новый способ подачи и усвоения учебных программ ▪ Опасность исчезновения шоколада Лента новостей науки и техники, новинок электроники
Интересные материалы Бесплатной технической библиотеки: ▪ раздел сайта Часы, таймеры, реле, коммутаторы нагрузки. Подборка статей ▪ статья Время работает на нас. Крылатое выражение ▪ статья Почему не все облака дождевые? Подробный ответ ▪ статья Имитатор голосов птиц. Энциклопедия радиоэлектроники и электротехники
Оставьте свой комментарий к этой статье: All languages of this page Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте www.diagram.com.ua |