Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Электронные часы с будильником на микроконтроллере AT90S2313-10PI

Аннотация
В данном проекте описаны электронные часы с будильником, выполненные на AVR - микроконтроллере типа AT90S2313-10PI. Часы имеют светодиодный индикатор отображения текущего времени и встроенный аккумулятор для поддержания хода при пропадании сетевого напряжения, что очень актуально в условиях непрекращающегося экономического кризиса. Устройство содержит минимум комплектующих и имеет несложную электрическую схему. Часы были испытаны автором на протяжении нескольких месяцев, что показало их надежность и работоспособность.

Краткое описание устройства часов
Предлагаемый вашему вниманию проект был выполнен "по ходу дела" при освоении автором микроконтоллеров семейства AVR фирмы ATMEL. Один из этих "жучков" и был использован при разработке часов. Выбор именно AT90S2313-10PI объясняется широкой доступностью и невысокой ценой этого кристалла, а также наличием в нем памяти программ объемом 2 КБ и программно реализованного стека.
Принципиальная схема здесь.
На рисунке представлена принципиальная электрическая схема часов. Как видно, микроконтроллер является основной и единственной микросхемой, используемой в данной разработке. Для задания тактовой частоты контроллера используется кварцевый резонатор на 10 МГц, но управляющую программу очень легко переделать и для резонаторов с другими частотами. В качестве устройства отображения использованы два индикатора красного цвета свечения с общим анодом, каждый индикатор состоит из двух цифр с десятичными точками. Цифры имеют отдельные аноды. Можно применить любые индикаторы с общим анодом, лишь бы ток сегмента не превышал 20 миллиампер и каждая цифра имела бы собственный анод. Рекомендуется выбирать индикаторы с большими цифрами, тогда часы будут хорошо видны в темноте.
Индикация текущего времени осуществляется динамически, в данный конкретный момент времени отображается лишь одна цифра, что позволяет значительно снизить аппаратные затраты. Происходит это так. Аноды каждой из четырех цифр обоих индикаторов являются раздельными, что позволяет в данный момент времени подключить к источнику питания только один анод и отобразить одну цифру. Для этого часы имеют четыре транзисторных кюча, выполненных на транзисторах типа КТ361Е (VT1 … VT4), и резисторах (R2 … R9). Ключи управляются микроконтроллером, причем соответствующий ключ открыт, если на выводе контроллера присутствует логический ноль. Одноименные сегменты всех четырех цифр соединены вместе и через токоограничивающие резисторы R21 … R27 подключены к выводам порта "B" (выводы PB.0 … PB.6). Десятичная точка не используется, она "принесена в жертву" добавленному в часы будильнику и всегда выключена. Управляющая программа один за другим подключает цифры к источнику питания , и одновременно на соответствующие выводы порта "B" выставляется код отображаемой цифры. Поскольку сканирование индикатора происходит очень быстро, мерцание цифр становится незаметным.
Для перевода минут, часов и установки будильника используются кнопки S1 … S3. Обновление показаний индикатора происходит каждую секунду. При нажатии более чем на одну кнопку управляющая программа игнорирует нажатие кнопок. Для установки будильника следует нажать кнопку "ALARM" и подождать двукратного звукового сигнала (не более секунды) для входа в режим будильника. Для перехода обратно в режим часов кнопку "ALARM" нужно удерживать до подачи однократного сигнала. В качестве выхода для сигнала будильника используется вывод PB.7 порта "B", а в качестве усилителя - схема на транзисторе VT5. В роли сигнализатора применен звонок от импортных часов сопротивлением около 15 Ом. Для отключения будильника используется выключатель S4 (лучше всего - кнопка с фиксацией).
Питаются часы от стабилизированного источника напряжением 6 Вольт. Причем индикация работает только при работе часов от сети. Ток потребления при наличии индикации - около 80 мА. При работе от аккумуляторов (четыре аккумулятора типа Д-0,26) индикация отключается, но часы продолжают идти и функционирует будильник . Диоды D5 … D7 обеспечивают правильное использование источников питания при работе от сети и от аккумуляторов, сами же аккумуляторы при работе часов от сети заряжаются через резистор R10. Поскольку при отсутствии индикации часы потребляют ток около 6 мА, предложенный "UPS" способен поддерживать работу часов более суток, что чрезвычайно удобно. Лично я не люблю наводить часы всякий раз после броска сетевого напряжения . Кстати, это явилось одной из движущих сил данного проекта.

Краткое описание управляющей программы
Управляющая программа часов написана на Ассемблере.
Сразу после включения часов программа разрешает прерывания, настраивает порты контроллера соответствующим образом и устанавливает указатель стека на старшие адреса внутренней памяти данных (стек растет "сверху вниз", как в семействе 80X86). Далее программа переводит устройство в режим часов, настраивает будильник на 6 часов 55 минут, после чего запускает цикл сканирования индикатора и цикл счета времени. Вся дальнейшая работа программы состоит в реализации пустого цикла, из которого ее выводят запросы прерываний от таймеров - счетчиков и в который она снова возвращается после завершения обработчика.
Основой программы являются два обработчика прерываний от таймеров. Обработчик прерывания от таймера-счетчика Т/С0 используется для динамической индикации, а обработчик от таймера-счетчика Т/С1 считает время. Естественно, можно было бы организовать сканирование индикатора и без привлечения прерывания от таймера и применить более дешевый кристалл, например, AT90S1200. Но непривычность работы с аппаратным стеком (автор много лет до этого занимался 80X86), недостаточный объем памяти и незначительное отличие между этими контроллерами в цене говорят явно не в пользу такого решения.
Обработчик счета времени вызывается каждую секунду. Он является более приоритетным, чем обработчик сканирования индикатора. В этом обработчике также выполняется определение состояия клавиш часов и при необходимости - перевод времени, переход в режим часов/будильника а также проверяется равенство текущего времени установкам будильника. Обработчик сканирования индикатора вызывается около 1600 раз в секунду и по очереди отображает каждую из цифр текущего времени, то есть каждая цифра появляется на индикаторе примерно 400 раз в секунду. Кстати, изменяя в разумных пределах частоту сканирования, легко регулировать яркость свечения индикатора.
Дальнейшие пояснения работы программы Вы сможете получить, просмотрев ее текст с подробными комментариями.

Резюме
К сожалению, мне не удалось численно определить точность хода часов. Могу сказать лишь одно - за месяц часы отстали примерно на минуту, что, согласитесь, вполне приемлемо для устройства такого класса …
Вы можете загрузить следующие файлы, относящиеся к проекту:
prog.bin — двоичный код управляющей программы
2313def.inc — Inc-файл для процессора AT90S2313
clock_10.a90 — исходник управляющей программы
clock.zip — разработка в формате PROTEL
Автор проекта: Игорь Коваль. E-mail: kovigor@yahoo.com


C этой схемой также часто просматривают:

Генератор видеосигнала на микроконтроллере PIC16F84
ГОВОРЯЩИЕ ЧАСЫ
ЭЛЕКТРОННЫЕ КАЧЕЛИ
Часы-будильник с ЖК-индикатором
Автомобильные часы-термометр-вольтметр
Контроллер двухцветного светового шнура Flexilight
Электронный замок с ключами iButton
Стабилизатор частоты вращения коллекторного двигателя
Адаптер двухканального светового шнура

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU




Последние поступления

Подключение энкодера к микроконтроллеру PIC

Счётчик людей в помещении, управляющий освещением

Велокомпьютер на микроконтроллере PIC16F628A

Устройство ввода-вывода на микроконтроллера

Два термометра на PIC16F628A и DS18B20

Светодиодные часы с циферблатом

Двоичные часы

Два вывода микроконтроллера PIC управляют шестью светодиодами

Цифровой программируемый таймер на микроконтроллере PIC16F628A

Устройство рисования в воздухе на ATtiny2313



© 2003—2017 «KAZUS.RU - Электронный портал»