Семисегментные индикаторы. Практическая электроника. Часы на Atmega8 и семисегментном индикаторе

Эта статья о простых часах на 7-ми сегментном индикаторе. По большому счету это статья воспоминание, так сказать, чтоб не забыть. Забегая далеко на перед, дабы зря не тратить время ардуинолюбов, сообщу, что сердцем часов является микроконтроллер PIC16F873A, а лицом 7-ми сегментный 4-х разрядный индикатор с высотой символа 30мм.

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

И вот. Сердцем часов служит микроконтроллер PIC16F873A фирмы «Микрочип». Я начинал программировать на этих контроллерах. Но особо великих успехов не добился, научился писать только на picbasic pro, да и с прерываниями не срослось. Однако, что то все-таки получалось. PIC здесь задействован в роли контроллера для вывода информации, отсчет времени ведет микросхема DS1307 — часы реального времени. Некоторые засмеют, что мол, и одного пика хватит, но это не для моего случая. Информация выводится на довольно большой 7-ми сегментный 4-х разрядный индикатор с общим катодом. (все даташиты будут по ссылке в конце статьи). Реализовано изменение яркости свечения индикатора в зависимости от освещенности. Ну и как же без бесполезной функции будильника, он тут есть. Неверно сразу покажу фотку изделия, а потом продолжу:

Сверху натянута пленка, вырезанная из антистатического пакета, так как белые пустые сегменты ну прям в глаза въедаются. А сверху видно глазок фоторезистора. Провода слева это датакабель программатора. Ну а теперь глянем схему (она кликабельная):

И прям сразу печатную плату:

В конструкции все соответствует схеме, кроме токоограничивающих резисторов индикатора, у меня установлены номиналом 240 Ом и smd транзисторы выпаянные из материнки. Кварц для DS1307 тоже выпаян из материнки вместе с держателем батарейки. Сейчас я бы наверно не стал использовать именно DS1307 как счетчик времени, так как очень она капризна к разводке земли и сильно подвержена температурному дрейфу. Но уже что сделано, то сделано. Плата односторонняя с двухсторонним монтажом. Габарит платы вписывается в габарит индикатора. И последняя «подгнившая изюминка» этого проекта это стабилизатор питания — MCP1701AT-5002I фирмы микрочип. У него есть как сладкая сторона, так и горькая. Классная сторона это падение напряжения на нем порядка 0,3 — 0,6 В (за точной цифрой надо лезть в даташит), а это значит, что можно использовать источник питания начиная от usb выхода ПК и до старых зарядок для мобил. Сторона по хуже это то, что входное напряжение должно біть не более 10 В, блоки питания от роутеров уже не канают. Управляются часы всего двумя клавишами. Ну и фото платы:


Концепция часов с большими цифрами

Конструктивно девайс будет состоять из двух плат – одна над другой. Первая плата – матрица светодиодов, образующих разряды часов и минут, Вторая – силовая часть (управление светодиодами), логика и питание. Такая конструкция сделает часики более компактным (без корпуса примерно 22см х 9 см, толщиной сантиметра 4-5) + даст возможность прикрутить матрицу к другому проекту, если что то пойдет не так.

Силовая часть будет построена на базе драйвера UL2003 и транзисторных ключах. Логическая - на Atmega8 и DS1307. Питание: 220В - трансформатор; логика 5В (через 7805), силовая часть - 12В (через LM2576ADJ). Отделено будет предусмотрена кроватка для батарейки 3В для автономного питания часов реального времени - DS1307.

Думаю использовать Atmega8 и DS1307 (часики планирую подвесить под потолком, и что бы в случае пропадания электричества каждый раз не лазить за настройкой), однако разводка платы будет предполагать возможность работы девайса и без DS1307 (на первое время, а может и навсегда – уж как получится).

Таким образом, в зависимости от комплектации алгоритм работы программы часов будет следующим:

Atmega8 – счетчик времени по таймеру. Работа в цикле без пауз: опрос клавиатуры, корректировка времени (если необходимо), отображение 4 разрядов и разделителя.

Atmega8 + DS1307 . Работа в цикле без пауз: опрос клавиатуры, корректировка времени DS1307 (если необходимо), зачитка времени с DS1307, отображение 4 разрядов и разделителя. Или другой вариант – зачитка с DS1307 по таймеру, остальное в цикле (пока не знаю как лучше).

Сегмент представляет собой 4 красных светодиода, соединенных между собой последовательно. Одна цифра – 7 сегментов с общим анодом. Сегменты не планирую разделять шаблоном «восьмерки», как это сделано в обычных индикаторах.

Силовая часть часов

Силовая часть часов построена на драйвере UL2003 и транзисторных ключах VT1 и VT2.

UL2003 отвечает за управление сегментами индикатора, ключи – за управление разрядами.

Отдельно управляется разделитель часов и минут (сигнал K8).

Управление сегментами, разрядами и разделителем осуществляется от микроконтроллера подачей положительного потенциала (т.е. подачей +5В) на К1-К8, Z1-Z4.

Подача сигналов на сегменты и разряды должна осуществляться синхронно и с определенной частотой, для того, что бы обеспечить динамический вывод информации (часов и минут).

В качестве транзистора VT1 (BCP53) можно использовать транзистор BCP52.

Схема силовой части часов с большими цифрами

Печатная плата семисегментного индикатора для часов с большими цифрами

Как я говорил ранее, конструктивно часы будут состоять из двух печатных плат - плата индикатора + логика и силовая часть.

Начнем с разработки и изготовления печатной платы индикатора.

Разработка печатной платы семисегментного индикатора для часов с большими цифрами

Печатная плата семисегментного индикатора для часов с большими цифрами в формате "lay" находится конце статьи, в присоединенных файлах. О технологии изготовления печатных плат методом ЛУТ можно почитать .

Если вы сделали все правильно, готовая печатная плата будет выглядеть примерно так.

Готовая печатная плата семисегментного индикатора для часов с большими цифрами

Сборка семисегментного индикатора

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

Межслоевые переходы на плате индикатора

Следующий шаг, собственно говоря, сборка индикатора. Для чего нам понадобится пачка красных (зеленых, белых, синих) светодиодов. Я, например, брал эти.

Подготовка к сборке индикатора

При установке диодов не забываем, что мы делаем индикатор с общим анодом - т.е. "+" диодов должны быть соединены вместе. Общие аноды на печатной плате - это большие фрагменты меди. Обязательно обратите внимание на анод разделительной точки.

Расположение анодов на печатной плате индикатора

В итоге, после 2 часов кропотливой работы должно получиться вот что:

Семисегментный индикатор

Цифровая часть часов

Цифровую часть часов с большими цифрами будем собирать по схеме:

Схема часов с большими цифрами

Схема часов довольно прозрачна, поэтому объяснять как она работает не вижу смысла. Печатную плату в формате *.lay можно скачать в конце статьи. Замечу, что печатная плата в основном разработана под детали для поверхностного монтажа.

Итак, элементная база, которую использовал я:

1. Диодный мост DFA028 (подойдет любой компактный для поверхностного монтажа);
2. Регуляторы напряжения LM2576ADJ в корпусе D2PAK, 78M05 в корпусе HSOP3-P-2.30A;
3. Транзисторные ключи BCP53 (корпус SOT223) и BC847 (корпус SOT23);
4. Микроконтроллер Atmega8 (TQFP);
5. Часы реального времени DS1307 (SO8);
6. Блок питания 14В 1,2А от какого-то старого устройства;
7. Остальные детали - любого типа, подходящие по размерам для установки на печатную плату.

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

Обратите внимание на номиналы сопротивлений R3 и R4 - они должны быть именно такими, какие указаны на схеме - не больше не меньше. Это сделано для того, что бы обеспечить на выходе регулятора напряжения LM2576ADJ ровно 12В. Если все таки не удастся найти такие номиналы резисторов, то значение сопротивления R4 может быть рассчитано по формуле:

R4=R3(12/1.23-1) или R4=8.76R3

Сборка цифровой части. Версия 1, без DS1307

Если при изготовлении печатной платы часов вы придерживались рекомендаций, изложенных в этой статье , то тогда вам излишне напоминать, что перед сборкой печатная плата должна быть просверлена, все видимые короткие замыкания на ней устранены, а плата покрыта жидкой канифолью? Тогда приступаем к сборке часов.

Я рекомендую начать со сборки блока питания и только за тем выполнить монтаж цифровой части. Это общая рекомендация по самостоятельной сборке девайсов. Почему? Просто потому, что если блок питания собран с ошибкой можно пожечь всю низковольтную электронику, которая должна питаться этим блоком питания.

Если все сделано правильно - блок питания должен заработать сразу. Проверяем сборку блока питания - замеряем напряжение в контрольных точках.

На рисунке показаны контрольные точки, в которых следует проверить напряжение питания. Если напряжение соответствует заявленному, можно приступать к сборке цифровой части часов. Иначе проверяем монтаж и работоспособность элементов блока питания.

Контрольные точки и значения напряжений для блока питания часов

После того, как проверка блока питания выполнена приступаем к сборке цифровой части часов - устанавливаем все остальные элементы на печатную плату. Проверяем на КЗ, особенно в ногах микроконтроллера Atmega и драйвера UL2003.

Монтаж цифровой части часов

Обратите внимание на то, что сборку часов мы выполняем БЕЗ установки часов реального времени DS1307, однако вся обвязка этой микросхемы должна быть выполнена. В будущем, если возникнет необходимость, это сэкономит нам время на доработку часов под вторую версию, там где все таки будут использоваться отдельные, независимые часы реального времени на DS1307.

Предварительная проверка микроконтроллера ATMEGA8

Для того, что бы проверить правильность и работоспособность микроконтроллера нам потребуется:

1. Программатор, например USBASP .
2. Дата-кабель V4 для внутрисхемного программирования микроконтроллера.
3. Программа AVRDUDESHELL.

Подключаем плату часов к дата-кабелю. Дата-кабель подключаем к программатору. Программатор к компьютеру, на котором установлена программа AVRDUDESHELL. Подключать плату часов к питающей сети 220В не следует.

Удачное чтение данных с микроконтроллера программой AVRDUDESHELL

Если при чтении фьюзов возникла проблемы - проверяйте монтаж - возможно где то есть короткое замыкание или "непропай". Еще один совет - возможно микроконтроллер находится в режиме низкоскоростного программирования, тогда достаточно переключить программатор в этот режим (

Всем привет! Накануне праздник 8 марта, вы уже придумали что подарить? Да/Нет? Можно конечно купить готовый подарок, но лучший подарок, это подарок сделанный своими руками. И так, вот задумался я: а что подарить Маме на 8 марта? Подумал...Подумал...О, а подарю я часы. Но покупать китайские часы я не хочу и не буду по двум причинам: сразу сломается, я же радиолюбитель. И я решил сделать свои часы своими руками! И вот что из этого получилось:

Сейчас я расскажу как самому сделать такие часы, но обо всём по порядку.

И так чего мне хотелось? А хотелось мне сделать достаточно большие часы на светодиодных семисегментных индикаторах, чтобы просто показывали время и шли даже тогда, когда выключены. За основу конструкции взял AVR микроконтроллер Attiny2313 с двумя килобайтами флеша, этого более чем достаточно. Сами часы реализовал с помощью RTC микросхемы реального времени DS1307, к которой подключается батарейка на 3 вольта, для поддержания хода часов. Семисегментные индикаторы поставил REC-S12101AG, зелёного цвета, с общим анодом. Их габариты: 28,8 на 40,8 мм. Поскольку часам для питания нужны 5 вольт, то я применил готовый импульсный блок питания RS-25-5. Почему именно такой ИБП? Лежал он у меня в коробочке с детальками (Давно, год назад я купил его за пять тыщ бел. руб. у одного парня, думаю хороший ИБП, пригодится!), пылился, а трансформатора у меня не было, вот и поставил что было. С блоком питания часы питаются от сетевого напряжения 220 вольт. Вот фото ИБП:

Ну собственно сложностей при сборке часов возникнуть не должно. И так, принципиальная схема часов:

Собрал я всё на печатных платах, семисегментные индикаторы разместил на одной плате, всё остальное на другой. Платы лудил сплавом розе и в конце покрывал . Печатные платы делал с помощью . Чертил в программе . Вот фото платы с семисегментными индикаторами:

Платы вместе соединял шлейфом, вот так:

В ход можно пустить компьютерный IDE шлейф. Вот фото основной платы:

Обратите внимание, что корпус часового кварца нужно соединить с минусом питания, это позволяет избежать сбоев и внешних помех. Всё поместил в корпус, вот что получилось:

Как вы уже заметили внутри корпуса я закреплял всё с помощью термо клея. После сборки часов необходимо прошить микроконтроллер прошивкой ClockFirmware.HEX. Как прошить микроконтроллер и сделать программатор я писал и . После прошивки не забудьте установить следующие фьюз-биты:

Я прошивал микроконтроллер с помощью программатора и программы SinaProg. Программу (прошивку) для часов писал в среде , исходник прилагается. У меня часы работают уже почти неделю и не на секунду не отстают. Точность хода часов зависит от кварца, его лучше купить новый. Яркость часов зависит от резисторов R1-R8, чтобы уменьшить яркость увеличьте сопротивление этих резисторов, но следует учесть, что резисторы необходимо ставить с сопротивлением не меньше 10 Ом а резистор R3 не менее 100 Ом. При первом включении часов либо после смены батареи резервного питания, зажмите обе кнопки S1, S2 и включите часы. Часы сбросятся на 00:00 и начнут идти.

Кстати, ночью часы смотрятся просто отлично:

Ну всё, часы готовы и работоспособны!

Мною на сборку часов было потрачено примерно 250 тысяч бел. руб. Отлично! Убил двух зайцев сразу: сделал своими руками и обошелся в меньшую сумму чем стоят китайские часы. Надеюсь часы понравятся Маме.

Для любителей программы прилагается проект часов.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATtiny2313

1 В блокнот
IC2 Часы реального времени (RTC)

DS1307

1 В блокнот
VT1-VT4 Биполярный транзистор

КТ315А

4 В блокнот
C1 Электролитический конденсатор 100 мкФ 1 В блокнот
C2 Конденсатор 100 нФ 1 Керамический В блокнот
R1, R2, R4-R8 Резистор

10 Ом

7 В блокнот
R3 Резистор

150 Ом

1 В блокнот
R9-R12 Резистор

1 кОм

4 В блокнот
R13-R15 Резистор

10 кОм

3 В блокнот
R16, R17 Резистор

4.7 кОм

2 В блокнот
CH1 Кварц 32768 Гц 1 В блокнот
7Seg Семисегментный индикатор REC-S12101AG 4 С общим анодом

Вариант реализации больших светодиодных часов

Речь пойдет о светодиодных часах, собранных на больших семисегментных индикаторах 70Х110 мм с общим катодом, имеющих по 6 светодиодов в сегменте и, соответственно, требующих питания часов чуть более 12 вольт. Максимальный ток потребления сегмента — 30 мА, но в нашей конструкции сегмент потребляет около 13 мА, чего более чем достаточно для нормальной видимости. Также часы имеют термометр на датчике DS18B20 и коррекцию хода. Контроллер - Atmega8. При отключении питания часы работают от трех пальчиковых батареек, при этом индикация отключается.

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

Схема переделана под данные индикаторы, то есть были добавлены ключи на биполярных транзисторах в анодных цепях и микросхема ULN2003 в катодных.

Резисторы R43-R49 и R50-R53 в реальности не нужны, они поставлены здесь чтобы Протеус адекватно запускал схему. Схема могла быть и проще если применить полевые транзисторы и индикаторы с общим анодом.

В конструкции применены транзисторы BC847 и BC857. Резисторы в анодных цепях по 20 Ом, и подбирать их не нужно поскольку достаточно подобрать напряжение питания, которое идет с LM317. В моем случае оно равно 12,7 вольт. D2- точка, в индикаторах это обычно один светодиод. Её нужно подключать только у одного индикатора.

Настройка происходит нажатием кнопки SET, по кругу.

1. Режим отображения минут и секунд. Если в этом режиме одновременно нажать на кнопку PLUS и MINUS , то произойдет обнуление секунд.
2. Установка минут текущего времени.
3. Установка часов текущего времени.
4. Величина ежесуточной коррекции точности хода часов. Символ c и значение коррекции. Пределы установки -25÷25 сек. Выбранная величина будет ежесуточно в 0 часов 0 минут и 30 секунд прибавлена/вычтена из текущего времени.
5. Символ t. Настройка продолжительности отображения часов.
6. Символ o. установка времени индикации температуры с внутреннего датчика.
7. Символ P. установка времени индикации рекламной заставки.
Пределы установки для времени отображения 0÷60 сек. Если установлен 0, данный параметр на индикатор не выводится. Если все параметры установить в 0 - на индикаторе будут часы.

Во всех режимах удержанием кнопок PLUS/MINUS производится ускоренная установка.

Если производились изменения настроек, через 10 секунд от последнего изменения новые значения запишутся в энергонезависимую память (EEPROM) и будут считаны оттуда при повторном включении питания. Индикатор перейдет в основной режим времени.
Новые настройки вступают в силу по ходу установки.

Микроконтроллер отслеживает наличие основного питания. Для уменьшения тока потребления при пропадании оного, отключаются индикатор, датчики и кнопки. Часы продолжают отсчитывать время. При появлении питания от основного источника все функции восстанавливаются.

Фьюзы микроконтроллера:

Теперь непосредственно о реализации схемы. Сначала была собрана плата.


Соединение индикаторов между собой производилось проводом МГТФ, а с платой — через разъемы.
Индикаторы скрепляются с помощью вкрученных в них полосок стеклотекстолита


Потом я подпаял датчик к плате и запустил схему.


В качестве корпуса был куплен электрощиток на 18 модулей, с прозрачной крышкой.


Как видно, в щиток можно прекрасно установить индикаторы, остается только вырезать окно соответствующего размера.


После того как с помощью ножа, плоскогубцев и напильника сделали окно, индикаторы были установлены вовнутрь и закреплены скобами, вырезанными из планки для крепежа автоматов.


На задней крышке щитка установлены батарейный отсек, трансформатор и плата блока питания. Также вырезано окошко для настройки часов, так как кнопки остаются на плате.Детали установлены так чтобы центр тяжести всей конструкции был посередине, поскольку щиток будет висеть на одном саморезе.

Запуск готовых часов. Тонированная крышка удовлетворительно скрывает винты, провода и белые сегменты и в то же время через нее хорошо видны светящиеся сегменты.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: