Светодиодный индикатор для часов своими руками

Крутые часы на адресных диодах

Часть 1. Используемые компоненты

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

Фото готового проекта

Я использовал размер цифры примерно 280х205 мм (почти лист А4), общий размер часов — 300х800 мм.

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

Что такое адресная светодиодная лента

Обычная RGB-светодиодная лента имеет 4 контакта: общий «+» и 3 «-«, соответственно для каждого из основных цветов — красного, зелёного и синего.

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

Читайте также:  Установка вентиля бескамерной шины своими руками

Лента на адресных диодах устроена иначе: на ней имеются контроллеры, которые позволяют управлять группой диодов (либо каждым диодом) по отдельности, позволяя независимо включать или выключать их, заставляя светиться любым цветом с любой яркостью. Лента имеет 3 контакта: «+», «-» и контакт управления, который подключается к микроконтроллеру.

На момент создания часов было 2 типа ленты, сейчас их стало несколько больше:

WS2811. Самая дешёвая из всех лент (считалась надёжнее «старшей» WS2812b). Позволяет управлять группами по 3 диода.

WS2812b. Использовалась мной (считается ненадёжной, хотя за время использования часов проблем выявлено не было). Позволяет управлять каждый диодом в отдельности. Из минусов — при выходе из строя 1 диода — дальнейшие работать не будут.

WS2813, WS2815, WS2815 — обновление WS2812, имеют «резервный» контакт передачи данных, увеличенная частота обновления. При выходе из строя одного диода остальной отрезок ленты сохраняет работоспособность. Минусы — цена.

Итак, нам понадобится:

Теперь подробнее об использованном оборудовании:

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

Arduino nano с распаянными «ногами»

Я использовал Arduino Nano (на базе ATmega328) — самая доступная плата как по цене, так и по простоте освоения новичку. Продаётся как с распаянными «ногами», так и без них. Лучше брать сразу с «ногами», так как я рекомендую использовать шилд, который очень сильно упрощает сборку, повышая качество и модульность.

Модуль часов реального времени

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

Настоятельно рекомендуется брать модель DS3231, так как у неё имеется встроенный датчик температуры, который нивелирует влияние перепадов температуры окружающей среды на показания часов.
Модули DS1302 и DS1307 к приобретению не рекомендуются, тем более что разница в цене незначительна.
Модуль выпускается в двух вариантах: полноразмерном (внизу) и компактном (вверху). Я брал полноразмерную версию, так как с ней удобнее работать.

Светодиодная лента

Адресная светодиодная лента

Светодиодная лента. Именно она отвечает за индикацию.
Я в своём проекте использовал WS2812b 60 диодов на метр.
Можно сэкономить и взять WS2811 (но тогда придётся немного поправить скетч, и при подключении схемы учесть, что ей нужно 12V питания, в то время как WS2812b питается от 5V).
Во многих проектах использовалась лента с частотой 30 диодов на метр, но на мой взгляд, так делать не стоит.

Датчик температуры

Датчик температуры DHT22 на плате

Использование датчика температуры опционально (в случае его отсутствия — необходимо удалить/закомментировать соответствующие строки в коде).
Я использовал модель DHT22 (кстати, измеряет также и влажность) — он дороже, чем его «младший брат» DHT11, однако, как пишут пользователи, младшая версия выдаёт значения, основанные на только ей известном алгоритме.
Рекомендуется брать сразу распаянный на плате (как на картинке слева).

Датчик освещённости

Датчик освещённости BH1750

Я использовал BH1750 по двум причинам:
1. Он позволяет передавать числовое значение освещённости (в отличие от более простых фоторезисторов, которые имеют только регулируемое значение порога «светло/темно»).
2. Согласно тестам (статьи в сети), он адекватно реагирует на лампы дневного света, так как имеет «на борту» несколько разных сенсоров (некоторые датчики не улавливают свет от люминесцентных ламп).

Уточнение по датчику

Как подсказал ivanii, «BH1750 — это цифровой 16-тибитный датчик с интерфейсом I2C, со спектрокомпенсацией и фильтром пульсаций», за что ему отдельная благодарность.

Фоторезистрор, распаянный на плате. Имеет три ноги: две питания и цифровой выход, и не позволяет плавно менять яркость ленты (выдаёт только 2 значения: «1» или «0»).
Винт регулировки позволяет настроить порог чувствительности.
P.S. Существуют такие фоторезисторы на плате с 4 ногами (помимо цифрового добавлен аналоговый выход), однако используемый датчик (BH1750) предпочтительнее.

Модуль bluetooth

Модуль bluetooth

Оригинальный проект для корректировки времени использовал кнопки, однако, на мой взгляд, bluetooth даёт гораздо больше возможностей (например, просмотр отладочной информации).
Кроме того, у меня часы висят на высоте примерно 3,5 метров, так что корректировать их кнопками — то ещё удовольствие.
Модель — HC-05 или HC-06, сразу на плате с «ногами».

Блок питания

Я использую БП на 10 ватт (5V/2A), чего вполне хватает для моих часов (172 диода), особенно с учётом того, что они редко светят даже на половину своей яркости.

Какой ток потребляет лента?

Один цвет одного диода при максимальной яркости потребляет примерно 12 мА. В одном светодиоде три цвета, то есть если метр нашей ленты с плотностью 60 диод/метр будет светить белым светом максимальной яркости, получаем (12*3*60) примерно 2.1A.

Однако нужно учитывать, что в данном проекте нет смысла запускать свечение ленты белым цветом; яркости у ленты так же с запасом.

Кстати: WS2811 питается от 12V, WS2812b — от 5V.

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

Провода и коннекторы

Провода «мама-папа»

Для соединения компонентов удобно использовать такие провода-джамеры (есть с более качественными концевиками). Могут быть различные варианты («мама-мама», «папа-папа», «папа-мама»).
Под блок разъём блока питания подбирается соответствующий разъём.

Материалы корпуса и рассеивателя

Для изготовления корпуса я использовал кусок экструзионного пенополистирола («техноплекс») — в отличие от всем известного «пеноплекса», он серый, то есть не влияет итоговый оттенок цифр и кабель-канал для рамки корпуса.

Для рассеивателя многие используют бумагу, что не очень практично и сильно ухудшает качество «изображения» цифр. Я использовал специальный светотехнический поликарбонат молочного цвета (opal). Он используется при изготовлении рекламных световых конструкций — можно поискать объявления в интернете или узнать у фирм, которые занимаются изготовлением рекламных конструкций. У меня лист толщиной примерно 4 мм, однако если бы у меня был выбор, то я бы рекомендовал взять более тонкий (толстый сильно «мылит» края цифр).

Поликарбонат бывает разный

Как я понял, поликарбонат бывает обычный, тоже белого (молочного цвета).

Предпочтительнее использовать именно «opal», так как он специально сделан для рассеивания света и имеет две разные стороны: одна направлена к источнику света, другая — наружу, к зрителю.

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

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

Источник

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

В статье проанализирована возможность проектирования и изготовления в домашних условиях больших цифровых индикаторов любой сложности и размера на базе дешёвых (100 штук за 1$/80руб/30грн…) сверхъярких китайских светодиодов.

В частности, рассмотрен вопрос построения 6-и разрядного 7-и сегментного индикатора на светодиодах smd5730, разработаны схемы управления, отладки и монтажа часов с данным индикатором.

Технические характеристики светодиода smd5730

  • Размеры (Д х Ш х В): 5,6 х 3 х 0,9 мм
  • Рабочее напряжение: 3,2-3,5 В
  • Номинальный ток: 120 мА
  • Рассеиваемая мощность: 400 мВт
  • Цветовая температура: 6000-8000 K
  • Сила света: 50-55 Лм
  • Угол свечения: 120°
  • Рабочая температура: -40° до 85°C

Цветовая температура некоторых электрических ламп

Лампа накаливания в 10 Вт порождает световой поток в 50 люменов, а потребляемая мощность smd5730 менее 0,5Вт, т.е более чем в 20 раз экономичнее.

Монтаж светодиодов на печатную плату

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

2. Для того, чтобы паять диоды SMD, необходимо использовать специальный паяльник малой мощности и ограничивать время контакта SMD светодиода с жалом паяльника не более 3-5 секунд. Распространенной ошибкой является использование паяльников с тонким жалом. Это снижает эффективность теплопередачи и не позволяет качественно нагреть контакты и дорожки печатной платы. Сначала припаивается один конец диода SMD, затем второй.

3. Я пользовался жалом с прямоугольным жалом (Рис.3) что обеспечивает быстрый прогрев площадки платы и расплав припоя, исключая перегрев светодиода. Жидкий припой под действием эффектов смачивания и капиллярного впитывания затекает в зазор между контактом smd-светодиода и дорожкой печатной платы. Температура жала подбирается экспериментально, чтобы выполнить п.2. Я работал с паяльной станцией SP 8520, где температура жала регулируется в диапазоне от 200 С° до 480С° с точностью до 1 град.

Ошибка, приводящая к выходу светодиода из строя — перегрев. Чрезмерно долгое прикосновение паяльника к контакту smd диода и дорожки приводит к расплавлению пластмассового корпус светодиода и его разрушение. Если не контролировать длительность прикосновения жала к детали, избежать чрезмерного нагрева не удастся. Повторить такую технологию в домашних условиях трудно но возможно, поскольку необходимо иметь:

  • Терпение и желание изготовить огромный индикатор.
  • Паяльник с прямоугольным жалом на конце.
  • Возможность установки и фиксации температуры жала.
  • Легкоплавкий припой с внутренним наполнением сосновой канифолью. Я пользовался проволокой диаметром 0,8 мм.

Выбор конфигурации индикатора

Рассмотрим 7-и сегментный индикатор с сегментами a,b,c,d,e,f,g представленный 7-ю жёлтыми smd светодиодами. Размер индикатора 6х3 мм

Такая крошка сгодится разве для карманного калькулятора. Следовательно, размер сегмента должен быть увеличен, допустим в 10 раз. Тогда индикатор по высоте будет более 12 см, а если в 20 раз, то индикатор по высоте будет более 24 см.

На рисунке, выше для экономии пространства, индикатор повёрнут на 90 градусов. Вертикальный сегмент индикатора состоит из 8-и светодиодов, горизонтальный из 4-х. Для подсчёта их количества они условно окрашены в разные цвета. Следовательно, индикатор по высоте будет более 8 х 2 х 6 = 96 мм, учитывая что светодиоды будут не вплотную друг к другу.

Наращивая количество светодиодов в сегменте, тем самым изменяем длину и высоту сегмента, можно спроектировать табло, например для стадиона ДИНАМО в г.Киеве.

Электрические связи внутри сегмента

На рисунке, выше изображены простейшие типы связей для 8-и светодиодов. Для зажигания 8-и светодиодов соединения А1-Б1 необходимо приложить напряжение 8smd х 3В=24В (См. выше Технические характеристики светодиода smd5730), ток 120 мА. Для зажигания 8-и светодиодов соединения А2-Б2 необходимо приложить напряжение 4smd х 3В = 12В, ток 240 мА. Для зажигания 8-и светодиодов соединения А3-Б3 необходимо приложить напряжение 2smd х 3В = 6В, ток 480 мА. Для зажигания 8-и светодиодов соединения А4-Б4 необходимо приложить напряжение 1smd х 3 = 3В, ток 120*8 = 960 мА.

Учитывая что питание управляющего контроллера равно 5В, то для схемы А1-Б1 необходим дополнительный источник стабилизированного питания на 24 В, для А2-Б2 12 В, для А3-Б3 6 В.

Для схемы для А4-Б4 подойдёт 5В с определёнными условиями.

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

Частота, длительность импульса и скважность подбирается экспериментально исходя из следующего:

  • Наличия одного или нескольких блоков питания
  • Отсутствия мерцания индикатора
  • Непревышения импульсных нагрузок для элементов управляющей части
  • Непревышения импульсных токов для светодиодов
  • Непревышения импульсных нагрузок для блока(блоков) питания

Управление сегментом

После ряда испытаний была выбран сегмент типа А4-Б4(См Рис., выше) и один стабилизированный блок питания на 5В для всей схемы.

Импульсы управления транзисторами в 1 млС Т1,Т2 формируются микроконтроллером. Каждый сегмент управляется по каналу А4 мощным ключом на Т1 и Т2 формирующим положительный импульс длительностью 1 млС. Таких ключей 6, по числу сегментов.

Для активации сегмента на канале Б4, должен быть сформирован нулевой уровень напряжения, на всё время действия положительного импульса на А4, при этом через сегмент протекает ток активируя выброс фотонов в глаза наблюдателя.

Ключи формирующие нулевой потенциал выполнены на транзисторах КТ645 Т3÷Т11, которые являются общими для всех сегментов. Превращение кода микроконтроллера(МК) в видимую цифру Программа формирует 7-и разрядный код и выставляет его на шинах МК. Например, код нуля равен 126, код девятки 123. 126 в бинарном виде представляется в виде строки 1111110.

Логические единицы представляют собой положительные уровни +5В, открывая транзисторы Т3÷Т11 с открытым коллектором, обеспечивая нулевой потенциал каналов Б4. Нулевой уровень закрывает транзистор и данный сегмент не светится. Про прошествии 1млС включается силовой ключ следующего сегмента, предыдущего выключается.

Глаз человека, по своей природе, обладает кратковременной памятью длительностью до десятков миллисекунд, он «помнит» подсвеченный сегмент, хотя он уже выключен. По прошествии зажигания/погасания 6-и сегментов идёт повторение, «остатки памяти» стираются от первого/второго… сегмента более яркими картинками текущих подсвечивающих цифр. Так работает динамическая индикация.

Детализация кода нуля 12610=11111102 Видимая цифра «0» индикатора формируется 6-ю сегментами «a», «b», «c», «d», «e», «f» кроме сегмента «g» транзистор которого закрыт нулём на его базе.Нижний индекс десятичного числа представляет его бинарный аналог.

Блок индикатора

На Рис., выше представлен 7-и сегментный 6-и разрядный индикатор часов точного времени. Старшие разряды десятки часов – 5 разряд, единицы часов – 4 разряд, десятки минут – 3 разряд, 2 разряд – минуты, 1 разряд представляет десятки секунд, нулевой разряд – секунды.

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

Сегменты индикатора двух типов – вертикальные и горизонтальные собранные по схеме А4,Б4 по 5 светодиодов тёплого солнечного света. Как видно из схемы, катоды сегментов «a1», «b1», «c1», «d1», «e1», «f1» и «g1» являются общими для всех разрядов, зато аноды «А11», «А21», «А31», «А41», «А51», «А61» индивидуальны для каждого разряда.

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

Печатные платы индикатора

Станок на котором я фрезерую платы, имеет ограничение на размеры платы не более 170 х 170 см, в действительности 160 х 160 см. Поэтому весь индикатор пришлось разбить на 3 части по 125 х 150:

Десятки часов от 0 до 2 – А1 и Единицы часов от 0 до 9 – А2

Десятки минут от 0 до 5 – А5 и Единицы мнут от 0 до 9 – А6

Десятки секунд от 0 до 5 – А3 и Единицы секунд от 0 до 9 – А4

Светодиоды smd изображены в красных прямоугольных корпусах по 5 светодиодах в каждом сегменте. Каждая цифра индикатора обвязана линией положительного импульса:

Десятки часов от 0 до 2 – А1

Единицы часов от 0 до 9 – А2

Десятки минут от 0 до 5 – А5

Единицы мнут от 0 до 9 – А6

Десятки секунд от 0 до 5 – А3

Единицы секунд от 0 до 9 – А4

Каждый сегмент любой цифры, состоящий из 5-и светодиодов, имеет имеет связь с подобным сегментом из 5-и остальных.

Платы похожи на первый взгляд, но имеют различия:

Плата часов принимает код символа от МК снизу и передаёт его по вертикали справа плате минут.

Плата минут принимает код символа по вертикали слева от платы часов и передаёт его по вертикали справа плате секунд.

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

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

Контроллер ATMega8 синхронизируется внутренним кварцевым генератором на 16 МГц обеспечивая точность хода ±0,5 сек/сутки.

Вывод текущего времени на индикатор

A1 PORTD=S[ch/10]; t1 cl t1 A2 PORTD=S[ch%10]; t1 cl t1 //вывод часов

A5 PORTD=S[min/10]; t1 cl t1 A6 PORTD=S[min%10]; t1 cl t1 //вывод минут

A3 PORTD=S[sec/10]; t1 cl t1 A4 PORTD=S[sec%10]; t1 cl t1 //вывод секунд

Расшифруем первую строку:

1. Процедура в фигурных скобках выполняется, если кнопка 1 (kn1) не нажата.

2. А1 – положительный импульс в 1 млС идёт на вход силового ключа К1. Транизистор Т2 (КТ645) открывается, обеспечивая базовым током транзистор p-n-p типа Т1(КТ816Б). Последний открывается и формирует мощный положительный импульс на выходе А11, обеспечивая питанием цифру «десятки часов».

3. Порт D формирует код «десятки часов» процедурой S[ch/10], где S массив чисел типа char S[10] = <126,48,109,121,51,91,95,112,127,123>содержащий коды от 0 до 9.

4. Переменная ch формируется процедурой interrupt [TIM1_COMPA] void timer1_compa_isr(void), представляющей из себя прерывание каждую секунду при сравнении таймера timer1 с некоторой постоянной. Секунды накапливаясь формируют минуты и часы точного времени. Для формирования цифры “десятки часов” переменная ch делится на 10 с отбрасыванием остатка от деления. Полученный результат является указателем в массиве S для формирования кода “десятки часов”.

5. t1 – задержка в 1 млС в течении которой на выходе силового ключа «висит» потенциал в 6 вольт на аноде цифры “десятки часов”, а на катодах «висит» код выводимой цифры.

6. cl – по прошествии 1 млС идёт процедура выведения порта D в высокий импеданс и обнуление. В результате семь катодных транзисторов Т закрываются, ци

фра гаснет, но глаз имея енерцию зрения помнит её.

7. А2 – положительный импульс в 1 млС идёт на вход силового ключа К2. Транизистор Т2 (КТ645) открывается, обеспечивая базовым током транзистор p-n-p типа Т1(КТ816Б). Последний открывается и формирует мощный положительный импульс на выходе А21, обеспечивая питанием цифру «единицы часов».

8. Для формирования цифры “единиц часов” от переменной ch берётся остаток от деления на 10 оператором ch%10 которая является указателем в массиве S.

9. Для формирования остальных цифр индикатора процедура зажигания/погасания аналогичны.

Синхронизации времени часов с временем интернета

Для корректировки времени данного устройства с точным временем интернета служит пульт управления являющийся внешним устройством на 2-х кнопках kn1,kn2, переменном резисторе в 10к и мобильного телефона. Подвижный контакт резистора acp соединён с ADC3. АЦП измеряет напряжение на acp и передаёт данные в программу МК. Программа анализирует в состояние kn1,kn2 и выполняет корректировку времени.

//Вывод на индикатор режима

A5 PORTD=S[val/10]; t1 cl t1

A6 PORTD=S[val%10]; t1 cl t1

//корректировка параметра согласно выбранного режима

Отслеживание и корректировка точного времени происходит по телефону.
Режимов корректировки 4, выбирается поворотом ручки переменного резистора в 10 кОм:
1. Корректировки минут+
2. Корректировки минут-
3. Корректировки часов+
4. Корректировки часов-

В два последних разряда при kn1=0 выводится код АЦП делённый на 100, что позволяет выводить до 10 режимов. При отпускании кнопки kn1=1 код АЦП сохраняется в переменной val что и является номером режима.

При нажатии kn2=0, выполняется процедура корректировки:
1. val=0, при отпускании kn2=1 добавляется 1 мин, обнуляются сек, анализируется переменная min, если она больше 59, min обнуляется
2. val=1, при отпускании kn2=1 минуты уменьшаются на 1, обнуляются сек.
3. val=2, при отпускании kn2=1 добавляется 1 час, обнуляются сек, анализируется переменная ch, если она больше 23, обнуляется ch
4. val=3, при отпускании kn2=1 отнимается 1 час, обнуляются сек.
При подаче питания/включения устанавливается время по умолчанию 14 часов 0 минут 40 секунд, далее происходит процедура корректировки.

Внешний вид часов

Программа

Автор Владимир Шишмаков

Chip type : ATmega8

Program type : Application

AVR Core Clock frequency: 16,000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

#define t1 delay_ms(1);

#define cl PORTD=0;PORTB=0;

#define A1 PORTB=1;

#define A2 PORTB=4;

#define A3 PORTB=2;

#define A4 PORTB=8;

#define A5 PORTB=16;

#define A6 PORTB=32;

#define acp PINC.3//измерение/определение режима

#define kn1 PINC.4//фиксация номера режима

#define kn2 PINC.5//-добавить/убавить параметр в выбранном режиме

//0 1 2 3 4 5 6 7 8 9

// Timer1 output compare A interrupt service routine

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

// Voltage Reference: AVCC pin

#define ADC_VREF_TYPE ((0 59) min=0;> break;

Автор: Владимир Шишмаков, г.Кузнецовск

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ

П О П У Л Я Р Н О Е:

На сайте drive2 можно встретить ни одну активацию различных функций в MediaNav, в прочем и в других блоках тоже.

Обладателям бензиновых версий автомобилей Renault в комплектации со штатным автозапуском и MediaNav повезло больше — с завода у них в машине установлен блок BIC 283468105R который коммутирует две шины автомобиля: CAN1 и CAN2, передавая данные бортового компьютера и температуры окружающей среды на экран MediaNav.

Компактный ШИМ-Тестовый генератор 10Гц — 1МГц

Небольшой 8-контактный микроконтроллер Atmel ATtiny15 генерирует широкий спектр сигналов с широтно-импульсной модуляцией (ШИМ). Компактный блок с батарейным питанием, этот универсальный ШИМ-генератор также включает в себя возможность развертки частоты. Он также может выводить синусоидальный звуковой тестовый сигнал частотой 1 кГц.

Для изготовления нашего бесконтактного термометра будем использовать датчик-пирометр MLX90614 — это инфракрасный датчик, позволяющий определять температуру бесконтактным методом.

Такой датчик позволяет практически моментально считывать температуру тела, измеряя инфракрасное излучение объекта. Сейчас познакомимся с ним поближе и разберем работу в Bascom-AVR.

Источник

Оцените статью