«

»

Распечатать Запись

Большие светодиодные часы-календарь на микроконтроллере ATMega8

Однажды пришло неудержимое желание собрать большие часы на светодиодах. Как известно, схем часов на микроконтроллерах по интернету довольно много. Наиболее подходящий вариант для меня был вот этот.
Поскольку здесь было несколько непонятных для меня нюансов, то они стимулировали меня несколько переделать схему и написать собственную программу для микроконтроллера. Хотя, в итоге, проект по ссылке оказался тоже рабочим и довольно интересным. Но поскольку я уже начал писать собственную программу для микроконтроллера, то возвращаться к предыдущему варианту не стал.

В основе  часов находится микроконтроллер ATMega8 и  микросхема - DS1307.  Таким образом принципиальная схема получилась достаточно простой (Рис.1).

Схема часовРис.1. Принципиальная схема часов на микроконтроллере ATMega8

Микросхема DS1307 – представляет собой экономичные часы реального времени с последовательным интерфейсом. DS1307 содержит часы-календарь с представлением информации в двоично-десятичном коде и 56 байт энергонезависимого статического ОЗУ. Адрес и данные передаются по двунаправленной двухпроводной последовательной шине. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом высокосности текущего года. Часы работают или в 24-часовом или 12-часовом формате с индикатором AM/PM (до полудня/ после полудня). DS1307 содержит встроенную схему контроля уровня основного источника питания и при его недопустимом значении автоматически переключается к резервной батареи Bat1.
Написание программы для микроконтроллера ATmega8 и его сопряжение с DS1307 не составило особого труда.

Больше всего пришлось повозится над созданием светодиодного табло с большими цифрами и его коммутацией с источником питания, напряжением больше чем питание микроконтроллера. Как известно микроконтроллер ATmega8 питается от 5В, а для моего светодиодного табло необходимое напряжение около 14В.

Светодиоды соединены по такой схеме:

ИндикаторРис.2. Светодиодный индикатор

В одном сегменте индикатора 6 светодиодов, рассчитанных на 3В каждый. Как видим из Рис.2 все сегменты соединены между собой катодами (индикатор с общим катодом).

Каждый сегмент индикатора коммутируется с "+" источника питания через транзисторные драйвера выполненные на транзисторах BC547 (см.Рис.1, VT1,VT2). Таких драйверов 7 (на каждый сегмент). С другой стороны, для коммутации индикаторов (подключения общих катодов индикаторов к "-" источника питания) используется микросхема ULN2003A. Это 7-канальный коммутатор мощных нагрузок на основе транзисторов Дарлингтона (составных) с открытым коллектором.

Светодиоды вставлены в трехслойную фанеру, окрашенную в черный цвет. Корпус, как видим из ДСП. Поскольку красного светофильтра не нашел, то табло закрыл обычным стеклом.

Вот так получилось:

1Рис.3. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

Рабочий режим:

2Рис.4. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

3 Рис.5. Часы с большим светодиодным дисплеем на микроконтроллере ATmega84Рис.6. Часы с большим светодиодным дисплеем на микроконтроллере ATmega8

Часы и календарь отображаются на табло поочередно.

Видео работы и настройки часов-календаря:

Да, чуть не забыл, в начале каждого часа подается короткий сигнал через buzer со встроенным генератором (см. Рис.1).

Файлы к проекту:

Чтобы скачать файл войдите или зарегистрируйтесь

Fuse-биты при программировании выставляем так:

Fuses1

Постоянная ссылка на это сообщение: http://meandr.org/archives/17006

24 комментария

Перейти полю для комментария

  1. saska

    Очень понравился проект давно искал что нибудь подобное скажите пожалуйста если я уберу драйвера на сегменты и uln2003 я получу проект с общим анодом?Просто ключи транзисторные на меня плохо влияют,не получается нормально подключить и еще корректируется время появления даты и часов? 

  2. Пока что не корректируется, еще в планах в прошивку добавить коррекцию хода и показ температуры, но это уже позднее.
    uln2003 и ключи на транзисторах необходимы для того, чтобы подавать на сегменты 15В (6 светодиодов включенных последовательно, то есть 2,5В*6=15 В). Если не будешь ставить драйверы, то у тебя получатся индикаторы с общим анодом на напряжение 5В

    1. saska

      Спасибо огромное,а на сколько позднее задержится уж больно хороший девайс
       

      1. svkatz80

        Интересное расположение LEDов в сегментах.
        Я использовал MAX7219. Никаких транзисторов и резисторов не понадобилось.
        Ну и в прошивке есть коррекция времени, автоматический переход на зимнее / летнее время и температура.
        видео
        http://youtu.be/JdW0MNqweac
        тут схемы , коды
        http://fritzing.org/projects/led-wall-clock

  3. saska

    Мне например не нужен термометр,а очень нужен календарь и коррекция мне кажется использование atmega328 не стоит того уж очень не выгодно

  4. alex2994

    скажите пожалуйста, а есть проект печатной платы и код для данной схемы?
    Если есть могли бы  скинуть их?

    1. admin

      Исходник прикрепил в конце статьи

  5. den371

    Проект замечательный. Хорошо что есть микросхема реального времени. Попробую собрать такие. Есть такие детали DS1307N dip8 и ATmega8A-PU(PI)(8-16PU) dip28. Скажите пожалуйста, подойдут такие к данному проекту? Проект печатной платы посмотреть не удается.

  6. lionp

    Добрый вечер всем! Вопрос к автору: Если не жалко конечно, можно ли увидеть исходник программы?

  7. aandrey12345

    собрал не фурычит. присоединюсь к остальным... ИСХОДНИК дайте полностью.все файлы архивом.

  8. aandrey12345

    с кнопками не понятно.реакции-0.у меня просто просаживаются на полвольта напряжения на выводах 23,25,26. будто они запрограммированы на вывод и подана 1.поможите автор!

  9. coputo

    Здраствуйте aandrey12345.
    Я тоже кнопки не работали пока не заменил резистор R14(100-220) на 10 Ом .
    поставил 10Ом и кнопки заработали, но часы не запускались, причина: при включении показание секунд 80,
    установил 59 и меньше, часы сразу заработали вот Видео https://www.youtube.com/watch?v=QSDwVlAEqKM
    только подсветку сегментов(на видео хохошо видно), незнаю как убрать.
    отпишите заработали у Вас или нет, и есть ли у Вас подсветка. Отпишите буду ждать.

  10. urabant

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

  11. tolik-1965

    Зд. Уважаемые. Программатором MiniPro TL866 как установит биты с инверсией,так как на этом программаторе отсуствует инверсной кнопки. спасибо

  12. tolik-1965

    Здраствуйте товарищи. Собрал схему, работает отлично. но есть несколько нюансы: при первом включении секунды показывает 80, 2) дата при работе даже с основным питанием самопроизвольно меняеться , 3) не учитивает дату высокосности, 31 март тоже можно настроить. Может у кого-то встречался такие дефекты, где я ощибся, помогите. спасибо

  13. Alex T

    Горят все сегменты га всех цифрах(8).на кнопки не реагирует. В чем причина,подскажите.

    1. admin

      Ищите ошибки на печатной плате.

  14. shurup

    В архиве с исходником только файл проекта - cufr.prj
    Остальные файлы, такие как
    cufr.с , cufr.asm , cufr.lst , cufr.map
    отсутствуют 🙁

    1. admin

      Архив обновлен. Там весь проект

      1. kjkszpj

        Есть ли печатная плата к данному проекту?

  15. kolyanicolay

    здравствуйте, собрал часы но там показания на табло 01 01 10 и ни на что не реагирует,, обмен по шине данных с микросхемой 1307 есть 5-6 ноги 1307 на 28-27 как по схеме, на 7 ноге мс 1307 плюс 5 в она идет на 4 ногу атмеги,без микросхемы 1307 показывает 65 65 65 на табло.

  16. kolyanicolay

    разобрался все заработало спасибо, дело было как и выше написанного в резисторе на кнопки управления от минуса питания

  17. kolyanicolay

    получилось как то так

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