Представляем очередную электрическую схему часов на контроллере Atmega16. Для этого заблаговременно выпаял индикатор из 7-ми сегментов из нерабочей микроволновки. После чего, направился к компьютеру искать в сети электрическую схему устройства.
И вот, планомерно изучая, огромные мануалы технических текстов с характеристиками часов с многообразием полезных функциональных возможностей, среди которых: будильник, календарь, таймер и температурный сенсор задаюсь вопросом. Необходимо ли мне исключительно отображение временного интервала? В моих настенных часах это уже есть, не хватает лишь подсветки.
Пришел к выводу, что функций демонстрирования временного интервала мне вполне достаточно. В этой связи электрическую схему часов на контроллере, как и саму прошивку, следует упростить.
Во имя оптимизации схемы микросхемы, отображающие показатели времени я не брал, а выполнил все на едином контроллере. Рассмотрев даташиты, мой выбор стал на ATmega16 выполненный в корпусе TQFP, он собственно у меня и имелся.
Необходимо выполнить следующую операцию — подсоединить семисегментник с наличием индикации, пару кнопок для устройства показа времени и спланировать само устройство.
Не забудьте заложить в часы на контроллере альтернативные источники питания, чтобы в момент отключение не происходил сброс текущего времени, но отключалась индикация.
В итоге получил электрическую схему:
Принципиальная схема на часов на контроллере Atmega16

Индикатор, снабженный единым анодом подключенным прямиком к порту контроллера. сопротивление каждого сегмента выдает 220 Ом, чуть меньше либо немного больше в нашем случае не критично, ночью светятся довольно ярко (Проще говоря, подойдут и менее яркие, но меньше 100 Ом ставить не советую, так как на каждую опору порта придется всего 35 мА, а по даташиту должно быть не менее 40 мА). В расчетах я ошибся. требуется существенно больше. Скорректировал по 560 Ом, что превысило требование по даташиту. Но часы работают.
На самом транзисторе воплощен детектор входящего напряжения. Он, к слову, как и кнопки, подсоединен на протяжении прерываний их всего 3.
Часы функционируют при помощи Т imer2 работающего асинхронным способом. В данном режиме таймер берет свой такт от кварца на 32768 Гц установленного извне и не прекращает работу даже в ждущем режиме, этот принцип мы и возьмём за основу при программировании устройства для работы на резервном питании. Вот собственно и все.
Семисегментный индикатор выполнен с общим анодом. Его аноды непосредственно законнектины с портом «C» контроллера. На каждый сегмент был установлен сопротивление на 220 Ом, допустимо конечно и по меньше при этом свечение сегментов будет ярче. Здесь самое главное не переусердствовать, а то допустимо запросто спалить сам порт микронтроллера. Поэтому важно смотреть какой максимальный ток может выдержать порт.
Транзистор Q1 выполняет своего рода детектор напряжения. кроме того как и кнопки он подключается к линии внешних прерываний, в Atmega16 их всего 3.
Код прошивки часов на контроллере
Комментарии (0)