[Перевод] Мини-куб из 3456 светодиодов

image-loader.svg

Не знаю почему, но мне очень нравятся светодиоды, и видеть их можно почти во всех моих проектах. Буквально недавно меня вдохновил Грег Дэвилл своим проектом миниатюрного LED-куба с 3456 светодиодами. Немного поразмышляв на эту тему, я решил собрать такой же чудесный куб сам, о чем и поделюсь с вами в данной статье.

Аппаратная часть: печатные платы


Я изначально предполагал, что сборка LED-панелей будет самой сложной частью проекта, и не ошибся. У меня уже есть опыт успешной пайки оплавлением, но в той ситуации мне не требовалось втискивать 576 RGB-светодиодов в крохотную квадратную поверхность.

Замечательные люди с PCBWay.com по-дружески предоставили для моего проекта панели печатных плат. Толщина этих плат составляет 1.6 мм, они обработаны паяльной маской, имеют покрытие ENIG и оформлены белой шелкографией. Такое сочетание цветов мне нравится.

image-loader.svg
LED-панель, верхняя часть

image-loader.svg
LED-панель, нижняя часть

Тем, кого интересуют подробности дизайна электроники, я посоветую прочесть статью Грега. Если кратко, то управление панелями реализовано с помощью мультиплексирования. Ряды матрицы управляются сдвиговыми регистрами SN74HC595, которые, в свою очередь, управляются 24 МОП-транзисторами. Рядами светодиодов управляют шесть LED-драйверов постоянного тока TLC59025.

Я начал со сборки нижней части панелей. Это довольно просто, поскольку все компоненты достаточно велики. Некоторые панели после извлечения из духовки потребовали доработки, в основном из-за возникших «мостиков» припоя между выводами на корпусах TLC59025 QSOP-24.

image-loader.svg
Нижняя часть в сборе, до оплавления

image-loader.svg
Оплавление нижней стороны. Красный стержень — это термощуп

На очереди сборка верхней части. Это, как можно догадаться, оказалось сложнее всего. Я знал, что установить вручную 576 светодиодов размером 2×2 мм без спец инструмента будет излишне трудоемкой задачей, поэтому купил вакуумный пинцет Quick 381A. Справляется он со своей задачей отлично. Как только я с ним освоился, на заполнение одной панели ушел всего где-то час.

image-loader.svg
Стальной трафарет верхней стороны

image-loader.svg
Раздражало, когда я случайно задевал катушку

image-loader.svg
Верхняя сторона в сборе, до оплавления. Нестыковки в процессе пайки выправятся

image-loader.svg
Каждая площадка покрыта крохотным сгустком паяльной пасты

image-loader.svg
Защита пластиковых коннекторов оловянной фольгой

image-loader.svg
Пайка верхней стороны. Наблюдать выравнивание в процессе светодиодов — чистое удовольствие

В ходе сборки семи таких панелей я допустил ряд очень поучительных ошибок, исходя из которых могу дать такие рекомендации:

  1. Внимательно следите за температурой пайки, потому что при перегреве светодиоды утратят работоспособность. В моем случае это произошло при пайке первой панели, где в итоге отказалась работать большая группа красных светодиодов в самой середине платы. Сперва причину я понять не мог, но чуть позже до меня дошло, что они находились непосредственно над теном духовки.
  2. Оказалось, что выравнивать трафарет на плате нужно очень точно и потеков необходимо избегать любой ценой. Я оплавил плату с небольшим потеком в углу и в итоге получил кучу спаянных контактов. В общей сложности из-за этого мне пришлось заново переделать около десятка светодиодов на одной плате.
  3. Прочно фиксируйте термощуп, чтобы он случайно не выбил с платы светодиоды, когда вы будете открывать дверцу по завершению оплавления.


image-loader.svg
Шесть светодиодных панелей собраны и протестированы

Аппаратная часть: корпус


Я спроектировал корпус для куба сам, решив сделать его максимально простым. Размер получился 67 мм3. Это единая деталь, которую можно напечатать на 3D-принтере. Платы же фиксируются в него за счет вытянутых краев.

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

image-loader.svg
3D-печатный каркас (1)

image-loader.svg
3D-печатный каркас (2)

Программирование


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

Под рукой же у меня оказалось всего несколько микроконтроллеров, и выбор пал на Arduino Uno. Большую часть кода мультиплексирования я запрограммировал с помощью низкоуровневых инструкций, что существенно ускорило программу в сравнении с вариантом, опирающимся на функции вроде digitalWrite.

Принципиально моя программа проста: настроить таймер для вызова прерываний каждые 1/2400 секунды. При этом каждый раз нужно считывать и смещать объем данных, «защелкивать» регистры и ожидать прерывания, чтобы повторить все это сначала.

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

Тестирование, сборка, результаты


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

image-loader.svg
Соединение шести панелей шлейфом

image-loader.svg
Проверочная установка панели

image-loader.svg
Боке!

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

image-loader.svg
Добро пожаловать в шлейфовые джунгли

image-loader.svg

Готово! Результат мне пришелся по душе. Я был настолько им восхищен, что не захотел откладывать публикацию статьи до момента установки батарей и контроллера. Опять же, огромная благодарность Грегу Дэвиллу и PCBWay — благодаря вам этот проект увидел жизнь. Он также научил меня многому в плане программного управления массивами светодиодов. Кроме того, я существенно отточил свои навыки по сборке и переделке печатных плат.

image-loader.svg
Вуаля!

image-loader.svg
Еще боке!

image-loader.svg

image-loader.svg

image-loader.svg

kghq9za934md5ceo14bxovinlgy.jpeg

© Habrahabr.ru