Недавно на портале появились статьи о создании светодиодных кубов.
Это своего рода игрушки, способные формировать трехмерную картинку, но сделать высокое разрешение очень проблематично и трудоемко.
Большинство работ ограничиваются форматом 3х3х3 или в лучшем случае 5х5х5. Через некоторое время я нашел свой старый 10-этажный куб, немного его восстановил и решил написать о своем опыте создания устройства.
Первый кубик я спаял где-то в 2012 году, в подарок, с разрешением 4х4х4, для него использовалась готовая схема и программа, найденная в интернете.
Увлекшись, решил сделать себе такой же, но увеличив разрешение до 5х5х5. Схему на основе готового решения я сделал сам, полностью скопировав саму логику подачи напряжения на ножки светодиодов.
Надо сказать, что в тех кубиках напряжение на светодиоды шло полностью с выводов МК, поэтому пришлось брать МК с большим количеством ножек, ведь их уже было 25 нужных только для колонок, и 5 - для ряды.
В зазоре между МК и светодиодом находился только токоограничивающий резистор, а напряжение на «этажах» через полевой транзистор утекало на землю.
Тогда я заказал на Ebay 1000 диодов и решил собрать очень большой, по моим меркам, куб.
Кстати, мои небольшие эксперименты привели к тому, что лучший выбор пал на диоды с большой диаграммой направленности.
Они не вытянуты, как обычно, а образуют полусферу, их свечение видно практически со всех сторон, найти их можно, поискав соломенную шляпу.
Они стоят дороже, но светят гораздо эффективнее.
Пайка куба – еще одна задача.
Здесь, как и с телом, мне помог мой хороший друг, так как я запрограммирован на столь кропотливую работу.
Сделали как все, просверлили отверстия под колпачки диодов и сделали матрицу 10х10. Затем спаиваем все полы по отдельности и укладываем их друг на друга.
Процесс занял около 3 дней, почти все время сидел перед паяльником.
Корпус изготовлен из обычного оргстекла, которое нам любезно вырезали с помощью лазерной резки.
Мы клеили его с помощью Cosmofen PMMA, как специального клея для оргстекла, но на самом деле обычный суперклей работает так же хорошо, но требует большего ухода, ведь если нанести слишком много, отмыть его будет невозможно.
На нижней платформе с помощью лазерной резки предварительно размечено 100 отверстий для светодиодов.
Легко просверлив их отверткой, аккуратно погружаем туда припаянный кубик, а снизу припаиваем переходники.
Также, чтобы спрятать электронику, пришлось подогнать и покрасить дно куба.
Задача эта была несложная, главное, что мы узнали из прошлого опыта покраски маленького кубика, это то, что красить нужно под углом, желательно сверху вниз, чтобы краска не проникла в склеенные пространства ребер, под действием силы тяжести.
Теперь осталось придумать, как закрепить куб с основанием в декоративный футляр.
Необходимо было закрепить платформу отверстиями в месте стыка с окрашиваемой деталью.
Для этого из оргстекла вырезались квадратики с вкрученными винтами.
Их нужно было сделать настолько крошечными, чтобы сам кубик диодов мог «залезть» на свое законное место.
Квадраты обильно залил суперклеем, держится отлично.
В самой платформе также были просверлены отверстия и закреплен куб гайками.
Ах да, еще надо рассказать о том, как мы его чистили после пайки.
Кубик паял с помощью ЛТИ 120, соответственно все диоды имели желтый налет от канифоли.
Такой большой ультразвуковой ванны не было, и ничего нельзя было почистить даже вручную щеткой.
Кстати, ацетон немного мутнеет диоды, что недопустимо.
Решение было найдено неожиданно, методом проб и ошибок – нашатырный спирт. Загрузили его в емкость от бывшего стеклоочистителя и распылили на куб.
Затем подождите пять минут и смойте водой.
Потом снова нашатырный спирт – так примерно четыре подхода и куб засиял чистотой.
После окончательной сборки куб принял следующий вид:
К сожалению, к процессу проектирования электроники подошли не очень вдумчиво и в результате матрица была спаяна по аналогии со старыми кубиками, на полах был общий катод, а колонки воспламенились от анодов диодов.
Это решение не очень выгодно с точки зрения подачи большого тока в колонку, ведь если в 5-этажном кубе для хорошей яркости достаточно подать один ток, то в 10-этажном кубе минимум в 2 раза.
нужно больше.
Я особо не задумывался над этой проблемой и первая плата была создана с использованием известных сдвиговых регистров 74hc595, так как у меня уже был опыт работы с ними.
Задачу переключения выполнял МК AtMega128, а ток на этажах контролировался полевыми транзисторами.
Перепаяв все элементы и используя те же резисторы, я написал простую программу и был шокирован тем, что на кубик можно только с удовольствием смотреть в темноте.
Днем его яркость была неудовлетворительной и программными методами это не решить.
Вопрос не сложный - я подумал и припаял резисторы меньшего номинала, рассчитав, что диоды будут получать ток около 70 мА.
После включения разочарование еще больше усилилось – куб почти ничего не показывал, светясь редкими диодами, но был ярким.
Открыв даташит на 74hc595, все стало понятно — выходные напряжения нормированы на токи не более 8 мА, а общий ток через выводы земли и питания не должен превышать 70 мА, что нам категорически не подходило.
Я начал изучать микросхемы, подходящие для этой задачи.
В нашей южной столице почти ничего не было в наличии, и из всех даташитов микросхем, рассчитанных на большой ток, я начал замечать одну неприятность - все они содержат на конечном этапе пару Дарлингтона, а по схемам в в даташите они подключают выходной контакт к земле.
Для нашей конфигурации куба, где катод находился на полах, это никак не подходило.
Посмотрев схему популярного uln2003 и увидев аналоги на драйверах светодиодных матриц, я понял, что такое решение применить невозможно:
По-моему, изучив потом конструкцию популярных микросхем, я решил, что проще подать плюс на этажи через мощный транзистор, а колонки закинуть на землю с помощью ULN2003, т.е.
сделать схему куба с общим анод. Отчаявшись найти решение, куб был отложен на неопределенный срок, как вдруг он вдруг понадобился для какого-то мероприятия.
У нас было три дня, чтобы запустить его при нормальной яркости.
Решение, которое мы придумали, было простым: к каждому выходу 74hc595 подключаем обычный транзисторный ключ, и в программе инвертируем биты.
Пачка простых BC846B, давно валявшаяся на EBAY, была распакована, и плата была быстро установлена.
Он оказался громоздким, но микроконтроллер из него удалили.
Мы просто протянули три провода управления от старой платы к новой, на случай, если в будущем перейдем на stm32 или другое схемное решение.
После подключения всех пинов куб запустился и порадовал нас отличной картинкой.
В то время я нигде не мог найти исходный код таких программ, а мои навыки написания программ были далеки от идеала.
Но результат был достигнут, поэтому кратко опишу алгоритм.
Программа была написана на тот момент на CodeVision, а эффекты загружались отдельным файлом в основной листинг.
Первоначально были написаны процедуры для разделения десятизначного двоичного числа на 10 отдельных переменных для каждой строки и отправки этих 100 переменных в регистры сдвига, сброса и задержки для формирования этажей.
Все это привело к такому формату, который описывал то, что мы видим на конкретном этаже (единицы горят диодами):
Разбивка числа типа 0b0001111000 осуществлялась по простому алгоритму.a=0b1000000001; b=0b0000000000; c=0b0000000000; d=0b0001111000; e=0b0001111000; f=0b0001111000; g=0b0001111000; h=0b0000000000; i=0b0000000000; j=0b1000000001; addr();output_shift(); level1();
if (a>0b0111111111) {
out[1]=1;
a=a-0b1000000000;
}
if (a>0b0011111111) {
out[2]=1;
a=a-0b0100000000;
}
и т. д.
Мы проверяем самый старший бит на ноль или единицу методом сравнения.
Если оно больше, то устанавливаем переменную регистра в единицу и уменьшаем число на эту цифру.
Эту операцию мы проделываем десять раз, чтобы выбрать все 10 значений для одной строки, и сохранить их во временные переменные сдвигового регистра, которые затем сразу же отправим на отображение.
Описывать порядок работы со сдвиговым регистром нет смысла; это обсуждалось на многих сайтах.
Затем, после описания всех 10 уровней, все это загоняется в подпрограмму динамического отображения, где весь этот цикл повторяется необходимое количество раз (для каждого кадра задается время каждого кадра), чтобы обмануть человеческое зрение.
Конечно, для масштабных кубов написание эффекта может превратиться в пытку, и нужно создавать компьютерный интерфейс.
А вот для нашего я быстро скомпилировал несколько эффектов и закинул в МК avrmega128, занимая почти 20% флэш-памяти.
И конечно, какой же 3D-куб без финального видео.
К сожалению, мне так и не удалось настроить камеру так, чтобы передать красочность куба, иногда диоды сливались друг с другом, иногда были слишком темными, для эффекта я чередовал съемку экшн-камерой.
Надеюсь, что наш опыт создания куба и возможные ошибки кому-то пригодятся, ведь мы делали его около двух лет назад и тогда информации об устройствах такого типа было мало.
Недавно нашла в подвале, почистила и поставила у себя в магазине, всем клиентам нравится, все спрашивают, где купили, и почти всегда наблюдаю за эффектом где-то пару минут.
Теги: #Сделай сам или Сделай сам #3d куб #3d светодиодный куб
-
Кипр
19 Oct, 24 -
Reg.ru Разделил Несколько Доменов
19 Oct, 24