Часы на сегментных индикаторах своими руками

Добавил пользователь Skiper
Обновлено: 18.09.2024

Существует множество способов собрать электронные часы своими руками: схемы широко представлены в литературе и сети Интернет. Большинство современных реализаций построено на основе микроконтроллеров. Выполнение таких проектов зачастую требует обширных практических навыков и теоретических знаний в области электроники: умения пользоваться специализированным программным обеспечением, создавать в домашних условиях печатные платы методом травления в хлорном железе, хорошо паять. Также необходимо иметь множество инструментов и расходных материалов.


Однако существует простой и доступный способ собрать электронные часы своими руками в домашних условиях: использовать платформу Arduino. Она представляет собой программно-аппаратный комплекс, специально предназначенный для обучения основам программирования и электроники. C помощью Arduino любой человек, даже без специальной предварительной подготовки, сможет построить электронные часы своими руками: схемы принципиальные, инженерные программы и даже паяльник не понадобятся!

Шаг 1. Список компонентов

Чтобы собрать простые часы на светодиодных матрицах вам потребуется всего несколько дешёвых компонентов:

  • платформа Arduino. Подойдут самые простые модели — Arduino Nano или Micro;
  • контактная макетная плата;
  • соединительные провода для макетной платы;
  • модуль часов реального времени Adafruit DS3231;
  • светодиодный матричный модуль 32x8 MAX7219;
  • две кнопки.

Также понадобится персональный компьютер и USB—mini-USB кабель для загрузки программы управления в память Arduino IDE. Вот и всё — паяльник, щипцы для снятия изоляции, монтажные ножи и прочие профессиональные инструменты не нужны: все операции выполняются руками. Разве что в некоторых случаях удобнее использовать пинцет, но можно обойтись и без него.

Детали для сборки электронных часов на Arduino

Детали для сборки электронных часов на Arduino

Шаг 2. Сборка электронной схемы

Схема электронных часов с индикацией на светодиодах с применением Arduino даже для неопытных радиолюбителей покажется довольно простой. Для сборки требуется всего несколько проводников. Таблица подключений:

Модуль Arduino → светодиодная матрица 32x8 MAX7219

Модуль Arduino → часы реального времени Adafruit DS3231

Модуль Arduino → кнопки

Второй вывод кнопок соединяется с землёй GND.

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

Схема электрических подключений макетной платы

Схема электрических подключений макетной платы

Два ряда (1 и 4) с обеих сторон замкнуты горизонтально — обычно они используются как линия питания +5V и земля GND. Все внутренние контакты (2 и 3) замкнуты вертикально. При этом монтажная плата как вертикально, так и горизонтально разделена на две независимые друг от друга симметричные части. Это позволяет, например, собрать два разных устройства на одной плате.

Схема электронных часов с индикацией на светодиодах, а также расположение элементов на монтажной плате представлена на иллюстрации:


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

Внешний вид собранного устройства

Внешний вид собранного устройства

Шаг 3. Прошивка Arduino

Интерфейс среды разработки Arduino IDE

Интерфейс среды разработки Arduino IDE

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!


Готовые часы на Arduino

Настройка часов осуществляется с помощью двух кнопок. Устройство поддерживает 12- и 24-часовой формат вывода времени, показ даты и дня недели, отображение времени с секундами и без. Также имеется возможность менять яркость свечения светодиодов.

Вариант корпуса для светодиодных часов

Вариант корпуса для светодиодных часов

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



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

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

UPD: Оформил в корпус.

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

Все, что нам нужно — подключить семисегментник в режиме динамической индикации, две кнопки для установки часов и минут и организовать часы.

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

Схема получилась вот такая:

Индикатор с общим анодом, аноды подключены напрямую к порту C микоконтроллера, резисторы сегментов я поставил 220 Ом, можно даже меньше больше, ночью очень ярко светятся (То есть, можно и меньше, но не меньше 100 Ом, тогда на каждую ножку порта будет нагрузка 35мА максимум, а по даташиту можно 40мА). Неправильно посчитал. Надо больше. Гораздо больше… Переделал на 560 Ом, и то ток больше чем по даташиту. Но работает.
На транзисторе Q1 сделан детектор напряжения питания. Он, как и кнопки, подключен на линии внешних прерываний, у ATMega16 их всего три.

Часы организуются с помощью асинхронного режима Тimer2. В этом режиме таймер тактируется от внешнего кварца на 32768 Гц и не останавливается в спящем режиме микроконтроллера, что мы и будем использовать при работе часов от резервного источника.

Теперь разберем код:
Динамическая индикация использует Timer0, часы на Timer2, кнопки на внешних прерываниях Int0 и Int1, контроль питания на внешнем прерывании Int2.
В основном цикле осталось только преобразование времени в двоично-десятичное и уход в спячку, причем функцию Bin2BCD специально сократил, потому что минут и часов не бывает больше 100, значит, нет смысла проверять ее на 10000, 1000 и 100.
Сама функция времени была взята из AVR ApNote134 и урезана до необходимых размеров.
Установку часов и минут сначала поместил в обработку прерывания счетчика секунд, но потом решил, что шаг в одну секунду — это слишком медленно и переместил в обработчик динамической индикации, подобрав опытным путем количество переполнений таймера для нормальной скорости коррекции.


Для начала я собрал макет на Pinboard2:


После того, как все заработало, на радостях быстро развел платку, вытравил, просверлил запаял, но когда начал припаивать проводки для прошивки, увидел, что после недавней работы с Mega8, забыл про самое главное — вывод сброса ))). Пришлось кидать проводок.

Плату делал ЛУТом. Сначала попробовал ламинатором, но, видимо, температуры в 170 градусов оказалось недостаточно и перевелось все плохо. Так что сделал по-старинке утюгом. В этой плате я впервые провел две дорожки под резистором 1206. Как видите, получилось нормально.

Во фьюзах нужно выставить внутренний RC-генератор на 4 или 8 МГц и отключить JTAG.

Ну и, как обычно, несколько фоток:



Во вложении исходник, схема, файл Протеуса для моделирования, прошивка.


UPD: Оформил в корпус:

Коробочку взял от автомобильного ароматизатора. Под индикатор подложил антистатический пакетик в один слой.
Кстати, параметры делителя датчика напряжения питания в итоге получились 39кОм и 6.2кОм.
END_UPD

bigtimefront

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

bigtimefront

Большие часы времени, основанные на ATtiny3216, используют гигантские 7-сегментные светодиодные дисплеи. Коробок для масштаба.

Введение

Эти часы были были задуманы как идея использования 2.3" одноразрядных 7-сегментных индикаторов, которые я видел на AliExpress. Я решил, что было бы интересно иметь часы, которые можно ясно видеть издалека. Дисплеи бывают разных цветов и напряжений; я выбрал красные версии 4V, чтобы я мог управлять ими непосредственно от линий ввода/вывода микроконтроллера без необходимости использования транзисторов. Мои дисплеи имеют общий катод, но при небольшом изменении в программе можно работать и с дисплеями собщим анодом.

Схема

Вот такая схема:

Схема больших часов времени, основанная на ATtiny3216.

Схема основана на одном из новых контроллеров ATtiny, которые имеют встроенный счетчик часов реального времени, который можно тактироватьс внешнего кварца на 32.768 кГц. Я выбрал ATtiny3216, 20-контактный микроконтроллер с 32кбайт флэш-памяти, который имеет достаточно линий ввода/вывода, чтобы управлять дисплеями простым способом, не прибегая к методу чарлиплексинга.

Токоограничивающие резисторы последовательно соединены с каждым сегментом для обеспечения постоянной яркости дисплея. Кнопка предусмотрена, чтобы устанавливать время, также установлен разъем, подключенный выводу UPDI для программирования ATtiny3216, и вохд, RX, в случае, если вы захотите подключить часы к модулю GPS.

Сборка

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

bigtime3

ATtiny3216 в корпусе SOIC, резисторы и конденсатор размера 0805 установлены на главной плате.

Задняя часть главной главной платы часов.

Я случайно спроектровал кнопку SMD на неправильной стороне печатной платы, поэтому мне пришлось просверлить два отверстия и использовать кнопку с выводами; я исправил эту ошибку это на винальных платах, выложенных ниже.

Я установил восемь 5-контактных разъемов для подключения индикаторов, но вы можете также просто припаять их.

Общее потребление часов составляет около 25 мА; я питаю часы от большого литий-полимерного аккумулятора, которого хватает на несколько дней работы, но также можно использовать и внешний блок питания на 5 вольт.

Программа

Отображение цифр

Индикация на 7-сегментных индикаторах обновляется из четырех значений в масиве Digits[], используя прерывания, генерируемые таймером / счетчиком часов. Например:

будет отображаться "1234". Дисплей настраивается с помощью обычной функции DisplaySetup():

Это во-первых делает все сегментные и цифровые линии выходами, и устанавливает четыре выхода PB0, PB1, PB4 и PB5 в высокий уровень, чтобы погасить цифры.

Таймер затем настраивается в режиме периодического прерывания, генерируя прерывание на частоте 250 Гц для мультиплексирования дисплеев.

Подпрограмма службы прерывания часов просто очищает прерывание и вызывает функцию DisplayNextDigit():

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

Кнопка установки времени

Кнопка Set Time позволяет установить часы на правильное время. При удержании ее нажатой, значение часов увеличивается дважды в секунду. При отпускании и снова нажатии накнопку, значение минут увеличивается два раза в секунду.

Кнопка использует порт ввода-вывода PA1 и подтягивается к питанию:

Состояние кнопки считывается методом ButtonDown (), который возвращает true, если кнопка нажата:

Часы реального времени

Периферийное устройство часов реального времени настроено как периодический таймер прерывания (PIT), генерирующий регулярное прерывание. В этом проекте для прерывания используется делитель 16384, который делит частоту кварца 32.768 кГц, чтобы дать два прерывания в секунду; это позволяет прерыванию увеличивать значений часов или минут дважды в секунду при настройке времени.

Подпрограмма обработки прерывания вычисляет текущее время в часах и минутах из глобальной переменной Time in half-seconds. Если кнопка Set Time не нажата, то она увеличивает время и обновляет массив Digits[] текущими значениями:

Нажатие кнопки Set Time приводит к переходу переменной ButtonState между двумя состояниями: 1, которое изменяет значения часов, и 3, которое изменяет значения минут. В промежуточных состояниях 0 и 2 часы работают нормально.

Компиляция программы

Скомпилируйте программу с помощью megaTiny Core от Spence Konde's на GitHub. Выберите ATtiny3216/1616/1606/816/806/416/406 в разделе megaTinyCore в меню платы. Убедитесь, что последующие параметры установлены следующим образом (игнорируйте любые другие параметры):

Чип: "ATtiny3216"
тактовая частота:" 5 МГц "
программатор:" jtag2updi (megaTinyCore)"

Затем загрузите программу в контроллер с помощью программатора UPDI. В качестве альтернативы вы можете сделать программатор UPDI из Arduino Uno или другой платы на основе ATmega328P, как описано здесь.

Вы можете игнорировать ошибку "не удается найти Флэш-и загрузочные накопители в описании".

Вот весь текст программы: bigtime.txt .

Изготовление печатной платы

Дальнейшие предложения

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

Также порт PA2 (RX) подключен к разъему на плате, для возможности расширения функция часов, например, подключения модуля GPS, чтобы автоматически корректировать время. Вы также можете использовать этот вход для запуска, остановки или сброса таймера.

Вам надоели простые часы? Они вызывают тоску и уныние? Тогда вы пришли по адресу!
Эти часы навсегда останутся в вашей памяти и вызовут массу приятных эмоций!
Множество разнообразных динамических эффектов сопровождают смену времени и температуры.
Яркая цветная подсветка создаёт праздничное настроение и изысканный контрантураж, особенно в ночное время.



Немного о корпусе для часов.

Насобирал кучу компьютерного хлама. Выкинуть жалко, подарить стыдно. Вдохновлённый поделками из интернета, решил собрать что-нибудь подобное.



Мышу покрасил черным спреем, клавиши клавиатуры оставил как есть.

Подсветка выполнена на 5-ти RGB светодиодах, которые сами изменяют свой цвет.

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

Проект собран на микроконтроллере ATMEGA и имеет настройки по времени отображения часов, термометра и эффектов.

Также можно регулировать скорость переключения эффектов. Все настройки сохраняются в энергонезависимой памяти.

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

Схема собрана на макетной плате и установлена в корпусе мыши.

Датчик температуры вынесен наружу, в корпусе он завышал температуру на 3-4 градуса.

Фьюзы установлены на работу от внутреннего генератора 8 МГц.

Кварц 32768 Гц используется для реализации софтовых часов.

Проект симулируется в протеусе, можете посмотреть что к чему.

В программе заложено 12 режимов появления / исчезания часов и термометра и 23 световых эффекта в промежутках между ними.

Принимаются предложения по совершенствованию программы девайса.

Хотя память забита на 98%, можно будет использовать более жирный камень, например 168 или 328.


Видео промежуточного результата:

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

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

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

21.07.2014 — прошивка без значащего нуля.

Незначащий ноль отключается в меню.

Для индикаторов с общим анодом / катодом. Выбор — путём подключения пина PB5 на землю.

Переключать нужно до подачи питания на контроллер или старта Протеуса.

14.10.2014 — сделал прошивку с отрицательной температурой. Функционал прошлых прошивок полностью сохранён.

18.10.2014 — разработал печатную плату, пока правда не тестировал.

20.11.2014 — на печатной плате перепутаны 24 и 25 пины! Учтите при повторении!


Это сделано для уменьшения габаритов платы. Индикатор с общим анодом.

По просьбе одного человека делал некоторые доработки, и он собрал индикаторы на светодиодных лентах.

Схема подключения — ОА, прошивка универсальная с режимом ОК.


19.02.2015 — доработал схему и прошивку.

Дополнительная батарейка на 4,5 вольта (3 элемента по 1,5 В) сохраняет время при пропадании основного питания.

При этом динамическая индикация отключается, для экономии. Время можно посмотреть, кратковременно нажав на кнопку. Проверено в работе.

Первая — больше этот проект я не поддерживаю. Никаких изменений, добавлений или правок, всё остаётся как есть.

Вторая — я сделал на основе неподдерживаемого старого поддерживаемый новый проект. И здесь есть действительно кое-что интересное, при этом минимум изменений в схеме!

Во первых, я добавил часовую микросхему DS3231, и теперь часы не только не сбиваются при пропадании питания, но и идут очень точно, коррекция им не нужна!

Во вторых, существенно переработан и оптимизирован код, и добавление обслуживания часовой микросхемы не уменьшило количество эффектов, но наоборот, увеличило их (25)!

В третьих, появилась возможность отключать показ температуры и анимацию между часами и термометром. При этом плавный выезд / заезд самих цифр и знаков сохранён.

В четвёртых, всё это опробовано в железе.

В пятых, вместо DS3231 можно применить более доставаемую DS1307, но коррекцию я для неё не делал.


Прогресс не стоит на месте. Да и часы тоже.

Всего два регистра 595 и 60 светодиодов — и мы имеем круговую секундную индикацию!

Прошивка и схема есть в двух вариантах — с общим анодом и общим катодом.

Схемы практически ничем не отличаются, за исключением подключения светодиодов. Они развёрнуты на 180 градусов.

13.05.2015

Иногда меня спрашивают, как я эффекты делаю. На бумаге в клеточку. Честно. Так делал 20 лет назад, так делаю и сейчас. Чтобы руки и мозги работали.

А когда надоедает рисовать, делаю очередной визуальный конструктор. На написание этого часа 2 потратил. Но зато теперь эффектов пиши — не хочу…

17.08.2015

Я их сделал! Воплотил из модели Протеуса в железо.



20.08.2015

Тряхнул стариной — ещё один конструктор реализовал.

Теперь дело должно ускориться. Получается неплохая вещь.

Ау, китайцы, а у вас такого ещё и нету!

Несколько фотографий от Макса его реализации конструкции:




21.09.2015

Скрестил бульдога с носорогом — добавил секундные эффекты в основную программу контроллера.

Обкатываю в Протеусе и потихоньку добавляю эффекты.

09.11.2015

Остапюк Александр повторил часы в виде кисти из клавиш — работают, нравятся, спасибо.






20.11.2015

03.12.2015

Новое видео от одного из повторивших конструкцию.

Основание — компакт диск.




31.12.2016

Мне самому было интересно наблюдать за невзрачной банальностью, которая на протяжении двух лет выросла в яркую индивидуальность. Ну и вот мой самый большой подарок порталу в этом году — материал для повторения конструкции, которая собрана на 8 меге, датчике температуры, двух 595 регистрах и 60 светодиодах. В архиве плата, схема, прошивка, моделирование в протеусе. Схема с общим анодом!


Часы получили своё продолжение и развитие на контроллере ATMEGA328 и датчике давления BMP180. Большое количество эффектов, часы, термометр и измерение атмосферного давления, режим бегущей строки. Это коммерческий вариант.

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

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

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

Нормальное чтение фьюзов

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

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

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

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

Если все сделано правильно - блок питания должен заработать сразу. Проверяем сборку блока питания. Подключаем к сети 220В и замеряем напряжение в контрольных точках. Во время проверки НЕ КАСАЙТЕСЬ ДОРОЖЕК - сетевое напряжение подведено непосредственно на печатную плату и в случае неосторожного касания можно получить непередаваемые ощущения от электрошока.

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

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

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

(кликни по картинке для увеличения)

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

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

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

  • Трансформатор FLG30.10/60216;
  • Диодный мост DFA028 (подойдет любой компактный для поверхностного монтажа);
  • Регуляторы напряжения LM2576ADJ в корпусе D2PAK, 78M05 в корпусе HSOP3-P-2.30A;
  • Транзисторные ключи BCP53 (корпус SOT223) и BC847 (корпус SOT23);
  • Микроконтроллер Atmega8 (TQFP);
  • Часы реального времени DS1307 (SO8);
  • Остальные детали - любого типа, подходящие по размерам для установки на печатную плату.

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

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

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

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

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

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

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

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

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

Расположение анодов на плате

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

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

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

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

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

Печатная плата семисегментного индикатора

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

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

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

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

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

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

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

(Кликните на картинку для увеличения)

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

Конструктивно девайс будет состоять из двух плат – одна над другой. Первая плата – матрица светодиодов, образующих разряды часов и минут, Вторая – силовая часть (управление светодиодами), логика и питание. Такая конструкция сделает часики более компактным (без корпуса примерно 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 по таймеру, остальное в цикле (пока не знаю как лучше).

Читайте также: