Музыкальный светодиодный куб
Введение
Для начала немного теории. Наш куб будет состоять из 512 светодиодов, по восемь светодиодов на каждую грань, а вся конструкция построена на деревянной основе. Что касается принципа работы куба, то она основана на эффекте инерционности зрительного восприятия. Это свойство человеческих глаз, которое создаёт иллюзию движения при быстрой смене отдельных статичных картинок.
Принцип работы
При создании светодиодного куба нам пришлось использовать инерционность зрительного восприятия, поскольку одновременное включение всех светодиодов потребовало бы достаточно большого тока. К примеру, потребляемый ток для ярких светодиодов составляет порядка 20 миллиампер, таким образом, на одновременное включение 512 штук нужно 10,24 А. Довольно сложно обеспечить такой ток, и тогда мы принили решение включать по одному слою в каждый отдельно взятый момент времени. Таким образом, потребление тока составит 1.28 A (по 20 мA на 64 светодиода). Такие характеристики обеспечить намного легче, и хорошего трансформатора здесь будет вполне достаточно. Представим, что нам необходимо осветить куб целиком. Для этого, мы будем включать различные слои один за другим со скоростью большей, чем скорость реакции человеческого глаза.
Для независимого контроля каждого светодиода было принято решение поделить куб на вертикальные слои и горизонтальные колонки. Ко всем светодиодам на каждом горизонтальном слое на катод подведен общий «минус», а для вертикальных колонок общим является «плюс». Таким образом, мы можем управлять 8 катодами по слоям и 64 анодами по колонкам. Комбинация сигнала на колонку и слой даёт нам возможность управлять каждым отдельно взятым светодиодом.
Сдвижные регистры реализованы при помощи однобитных ячеек памяти, соединённых между собой. С каждым тактовым импульсом они сдвигают приходящий бит на одну ячейку. Для данного проекта используются регистры типа SIPO. Данные побитово подаются на входа и одновременно снимаются с восьми выходов.
Что касается блока питания для проекта, то был использован БП с выходным стабилизированным напряжением 5В и номинальным током 2А.
Реализация
Приступим непосредственно к построению куба. Для этого нам понадобится следующее оборудование: паяльник, припой, пистолет для горячего склеивания, лобзик. Также не лишним будет заранее запастись материалами: 512 светодиодов вашего любимого цвета, сорокапиновый шлейф (вполне подойдёт шлейф от жёсткого диска IDE), 34 – х пиновый шлейф (от флоппи — дисковода), фанера толщиной 8мм (20х20см), электрические провода, подходящие для паяния (тонкие, гибкие, с хорошим сопротивлением).
Для начала, на листе фанеры нарисуем квадратную сетку (7х7) с размером стороны 2,5см. На пересечениях просверливаем 64 отверстия размером, соответствующим размеру светодиода (примерно 5мм). Эта доска послужит основой для всех спаянных светодиодов. Благодаря твердой основе светодиоды будут размещены и совмещены идеально. Вставляем светодиоды в отверстия. Как уже говорилось, отрицательные контакты на каждом уровне должны быть соединены, поэтому необходимо согнуть отрицательную ножку светодиода таким образом, чтобы она совпала с соединительной сеткой.
Как только будут готовы 8 слоёв необходимо соединить их вместе. Для этого приготовим 64 провода длиной порядка 20см. Помещаем верхний слой на фанеру таким образом, чтобы светодиоды совпали с отверстиями. Присоединяем приготовленные провода к отрицательным контактам светодиодов. После того, как первый уровень готов, приступаем к соединению контактов следующего уровня. В качестве прослоек можно использовать 4 деревянные дощечки толщиной 1,5см, которые поддержат неприкреплённый слой пока ведётся пайка. Очень важно на данном этапе убедиться в работоспособности каждого светодиода, так как в дальнейшем заменить его будет сложно.
Как только слои будут соединены, необходимо привести все отрицательные контакты к нижней части куба. Для этого в фанерной доске просверливают 8 небольших отверстий для отрицательных проводов. Куб уже почти готов, и остаётся только подсоединить управляющие провода к клеммам светодиодов. Однако прежде необходимо определить распиновку соединений между клеммами светодиодов и управляющим контуром.
Для создания управляющего контура необходимо: 8 восьмибитных сдвижных регистров для включения – выключения каждой колонки куба, один сдвижной регистр, подсоединённый к 8 NPN транзисторов для включения – отключения слоёв, два разъёма под 40 и 34 пиновые шлейфы, один двухпроводной разъём для соединения параллельного порта.
Напрашивается резонный вопрос, зачем подключать 8 NPN транзисторов к сдвижным регистрам резисторов? Как известно, каждый слой имеет общий «минус». Но проблема заключается в том, что на выходе сдвижных регистров слоя сигнал имеет высокий уровень (логическая единица). Поэтому необходим был компонент, который по сигналу логической единицы включал бы токовый контур. Этим компонентом оказался транзистор. Он работает как выключатель: если на базу подаётся логическая единица, то через коллектор и эмиттер начинает протекать ток.
Прежде всего, необходимо разместить все компоненты, для оценки занимаемого ими места. Компоненты следует располагать в следующей последовательности: Разъёмы под сдвижные регистры, транзисторы, разъёмы, сопротивления от 100Ом до 1,5кОм. Особое внимание требуется уделять соединениям основных компонентов.
Теперь подсоединим провода к нашему кубу. Необходимо взять 40 и 34 – пиновые шлейфы и обрезать разъёмы с одной стороны. С этой стороны необходимо распустить шлейфы примерно на 10 сантиметров. Эти провода будут присоединены к различным плюсовым и минусовым клеммам куба. Каждая клемма на выходе сдвижного регистра будет подсоединена к целому ряду соединительных разъёмов. Таким образом, первый регистр будет контролировать первый ряд , второй регистр, соответственно, второй и т.д.
Из доступных нам 74 контактов (40+34), мы будем использовать только 72 (64 колонки и 8 уровней), два контакта останутся свободными. Если у вас нет кабеля для подключения к параллельному порту, можно сделать его самому. Вот его распиновка (необходимо использовать контакты от D0 до D5):
- D0 -> входа сдвижных регистров колонок
- D1 -> сброс сдвижных регистров колонок
- D2 -> счетчик сдвижных регистров колонок
- D3 -> входа сдвижных регистров слоёв
- D4 -> сброс сдвижных регистров слоёв
- D5 -> счетчик сдвижных регистров слоёв
Внимание: при неправильном расключении прилагаемое ПО работать не будет.
Теперь примемся за основание куба, в которое будут спрятаны управляющие элементы и кабели. Для этого нам понадобится одна деревянная табличка размером 20×20см, две таблички 20×6,8см, две таблички 21.6 x7,6см и примерно 25 шурупов или гвоздей. Собираем наши таблички в форме короба и готовимся их соединить. Перед тем, как вкручивать шурупы необходимо промазать рёбра клеем, для того, чтобы мы могли в дальнейшем их выкрутить, не разбирая коробки. Верхом короба будет служить наш куб. В принципе вместо шурупов можно использовать маленькие гвозди, однако достать их в дальнейшем будет намного сложнее. Как только высохнет клей, шурупы (или гвозди) можно удалить, а отверстия замазать древесной шпаклёвкой.
На задней стенке основания необходимо вырезать четыре отверстия: для параллельного порта, для индикатора питания, выключателя и для блока питания. Поверхность основания обрабатываем наждачной бумагой, и красится. После этого можно начинать крепить разъёмы, индикатор, выключатель и т.д. Вот и всё можно подключать питание и компьютер с управляющей программой.
Программная часть
Управляющая программа разработана в среде Visual Basic. Кроме этого необходимо поместить библиотеку inpout32.dll в каталог c:windowssystem32. Что касается работы с параллельным портом, то неплохое пояснение по этому поводу находится здесь.
В каждый момент времени состояние куба записывается в матрицу StatoCubo. Используя таймер новые события генерируются каждую миллисекунду и состояние, записанное в матрицу, отображается на кубе. Значения, записываемые в матрицу, каждый выбирает по своему усмотрению.
Конечно, можно использовать уже написанный код (ledcube.zip).
- Gestione led cube 0.5.3 – ручное управление кубом
- level meter con monoton — MP3 проигрыватель, контролирующий светодиодный куб (визуализация композиции отображается на кубе)
- inpout32.dll – библиотека для управления параллельным портом
Матрица StatoCubo – состоит из 8 столбцов и 64 элементов. Каждый столбец отображает состояние отдельного слоя, а каждое значение в нём показывает состояние отдельных светодиодов: 1 – включен, 0 – выключен.
- The ScriviCubo – эта функция вызывается по таймеру, для передачи данных с матрицы кубу.
- The ClokkaLivello – эта функция передаёт сигнал счёта на сдвижные регистры таким образом, чтобы бит включения перемещался с одного уровня на другой.
- The ClearAll – эта функция включает сброс обоих сдвижных регистров. Куб при этом будет полностью потушен.
- The Aspetta – функция используется для задержки обновления состояния какого либо слоя.
Здесь представлен код программы:
Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
`—————————COSTANT FOR LPT1 ADDRESS———————————
Public Const IndirizzoData As String = "&H378" `РЕГИСТРЫ ДАННЫХ: 8 bit
`——————————————————-GLOBAL VARIABLES—————————————————-
Public StatoCubo(1 To 8, 1 To 64) As Integer `переменная содержит данные о состоянии куба
———————————————————FUNCTIONS———————————————————
Public Function ScriviCubo(NumeroCicli As Integer) `функция, используемая для передачи состояния из матрицы StatoCubo непосредственно кубу
Dim ByteLpt As Byte
Dim ContaLivelli As Integer
Dim ContaLed As Integer
Dim ContaCicli As Integer
For ContaCicli = 1 To NumeroCicli
For ContaLivelli = 1 To 8
clear pins (xx 01x _1_)
For ContaLed = 64 To 1 Step -1 `For ContaLed = 1 To 64
`СДВИЖНЫЕ РЕГИСТРЫ СЛОИ:
`MSB (D5) = 0 —> отключение счётчика
`CENTRAL (D4) = 1 (valore=16)—> отключение счётчика
`LSB (D3) = не важно
`СДВИЖНЫЕ РЕГИСТРЫ СВЕТОДИОДЫ:
`MSB (D2) = 0 —> отключение счётчика
`CENTRAL (D1) = 1 (valore=2)—> отключение счётчика
`LSB (D0) = StatoCubo(ContaLivelli, ContaLed)
ByteLpt = (0 + 16 + 0) + (0 + 2 + StatoCubo(ContaLivelli, ContaLed))
Call ClokkaLed(ByteLpt) `передача значения функции, которая включает счётчик для сдвижных регистров колонок
Next ContaLed
`СДВИЖНЫЕ РЕГИСТРЫ СЛОИ:
`MSB (D5) = 0 —> отключение счётчика
`CENTRAL (D4) = 1 (valore=16)—> отключение счётчика
`LSB (D3) = (if layer = 1—> 1(value=8); if layer <> 1—> 0) —> устанавливает 1 только один раз
`СДВИЖНЫЕ РЕГИСТРЫ СВЕТОДИОДЫ:
`MSB (D2) = 0 —> отключение счётчика
`CENTRAL (D1) = 1 (valore=2)—> сброс отключен
`LSB (D0) = не важно
If ContaLivelli = 1 Then `если устанавливается 1 на первый слой сдвижного регистра, то в дальнейшем будет передаваться только данные счёта
ByteLpt = (0 + 16 + 8) + (0 + 2 + 0)
Else
ByteLpt = (0 + 16 + 0) + (0 + 2 + 0)
End If
Call ClokkaLivello(ByteLpt) `передача данных функции передающей сигнал счётчика к сдвижным регистрам слоёв
Call Aspetta(60000) `вызывается для задержки (куб останавливается и мигает от 60.000 до 70.000 циклов)
Next ContaLivelli `перезапуск цикла для установки значений на следующий слой
Call ClearAll `вызывается для сброса всех сдвижных регистров
Next ContaCicli
End Function
Public Function ClokkaLed(Valore As Byte)
Out Val(IndirizzoData), Val(Valore) `счётчик ОТКЛЮЧЕН
Out Val(IndirizzoData), Val(Valore + 4) `счётчик ВКЛЮЧЕН
End Function
Public Function ClokkaLivello(Valore As Byte)
Out Val(IndirizzoData), Val(Valore) ` счётчик ОТКЛЮЧЕН
Out Val(IndirizzoData), Val(Valore + 32) ` счётчик ВКЛЮЧЕН
End Function
Public Function ClearAll()
Dim ByteLpt As Byte
`сброс на всех сдвижных регистрах (значение=0) (xx x0x x0x)
ByteLpt = 0 `00 000 000
Out Val(IndirizzoData), Val(ByteLpt)
End Function
Public Function Aspetta(Ncicli As Long) `используется для задержки цикла обновления на слое
Dim Contatore As Long
Dim Contato As Long
For Contatore = 0 To Ncicli
Contato = Contatore
Next Contatore
End Function
Видео работающего куба
И, наконец, можно наслодиться красивыми видео работы куба:
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
красотища!!! +100
Мега вещица, но хотелось бы еще немного информации, схему, было бы просто супер!!!
так вы статью целиком прочитайте. В статье 4-е части, помоему все доходчиво расписано, схемы какие нужны приведены.
Статья мной была прочитана от и до, воспроизвести данное чудо по тем данным что есть с моими знаниями невозможно, вот я и поинтересовался, вдруг есть более технически емкая информация, потому что очень хочется такую штуку собрать…
ну вы задавайте вопросы — ответим. Только задавайте более конкретные вопросы, а не общие
можно было поставить трансформатор и на 11 ампер; чтобы не было комромисса при включении диодов; было немного проще
«Особое внимание требуется уделять соединениям основных компонентов» — из приведенных фотографий не ясно как соединяются эти компоненты!
…вот, полностью солидарен с zepellin69
хм… вам непонятно как соединить светодиоды в куб?
Спаять светодиоды в куб это понятно как! А схема подключения…..??? На фотке где все уложено в коробку видно что из вывода на параллельный поррт идет еще один шлейф — вот куда он подключается? Схема платы тоже непонятна, в нете искал схемы — нашел только 5х5(сильно отличается от приведенной на фотках)
я бы убил вас за параллельный порт.
Давно хотел собрать, что либо подобное но всё руки не доходили! РЕСПЕКТ И УВАЖУХА ЗА СТОЛЬ КРОПОТЛИВЫЙ ТРУД!
я такое пол года собирать буду и не соберу!
Огромнейшая просьба Автору!
Если можно собрать не столь огромный куб, а что то попроще и написать подобную статью, чтоб было доступно не опытному специалисту !(которым я являюсь! ) ну куб например на до 50 светодиодов ото и они тоже денег ведь стоят!
Буду очень признателен если сия просьба воспринята и рассмотрена!Давно хотел собрать, что либо подобное но всё руки не доходили! РЕСПЕКТ И УВАЖУХА ЗА СТОЛЬ КРОПОТЛИВЫЙ ТРУД!
я такое пол года собирать буду и не соберу!
Огромнейшая просьба Автору!
Если можно собрать не столь огромный куб, а что то попроще и написать подобную статью, чтоб было доступно не опытному специалисту !(которым я являюсь! ) ну куб например на до 50 светодиодов ото и они тоже денег ведь стоят!
Буду очень признателен если сия просьба воспринята и рассмотрена!
Привет есть деловое предложение! Мне понравился твой куб классная штука собрать я такой врядли смогу да и времени нет. Сколько ты возьмёшь денег за работу и за материал? Или сколько ты хочешь денег за свой куб? если тебя заинтересовало моё предложение напиши мне konstantin-od@mail.ru или kostjn-86@mail.ru
Кулл!! Потрясно, все зделаю, руки прямые сам занимаюсь радиоэлектроникой, только вот схемку бы поподробнее, а то как то непонятно куда что включаеться. Если можно на мой ящик. adamkov_s@mail.ru
Скинте схему устройства, пожалуйста: vovdavydo@yandex.ru
Присоединяюсь. Рульно получилось. Автор, выложи пожалуйста схему включения, а то без нее довольно сложно разобраться. Или вышли на intel-1@km.ru
Хотелось бы приобрести такой куб…Не смог бы ты сделать ещё один? email:MMasson2007@rambler.ru
этот проект просто переведен с английского, и сделан он тоже не человеком из России. Схемы стоят денег на оригинальном сайте, поэтому сюда и не попали….
Как я мыслю:
1. Запараллелить входа сдвиговых регистров колонок (те которых 8 шт).
2. Соединить их с LPT портом
D0 — к выводам 1
D1 — к выводам 9
D2 — к выводам 8
3. Выводы 2 микросхем соединить с «+» питания.
4. Вывод 2 микросхемы регистра слоя соединить с «+» питания.
5. Соединить с LPT портом регистр слоев:
D3 — к выводам 1
D4 — к выводам 9
D5 — к выводам 8
Если не так — поправьте
мега вещь, я тут полазил и нашол аналагичный куб 8х8х8 только с цветными светодиодами получается что количиство диодов внем возростает в три раза сответствено и ширина шлейфа, ьпрограму кнему наверно год писать надобудет ну и месяц сборки
дай ссылку
Светорежесер из него никакой!
хорошая штука, подскажите, где можно найти схему, какие компоненты нужны, как их связывать? Если можно на мыло vladimir_69_@mail.ru
Скинте схему! Пожалуйста по подробнее! iisysrw@list.ru
слишком дорогой кубик получается, если учесть что цена одного светодиода в среднем 10 рублей, вот и получается что за светодиоды мы отдаём 5120 рубликов. Но вещь прикольная, автору ЗАЧЁТ.
Ничего из этой статьи не понятно, абсолютно, как то соединить 512 светодиодов и как и крепить и к чему, как соединять друг с другом, как все это сделать что бы кроме светодиодов ничего лишнего не болталось и т.д. НИЧЕГО нет
штука класная.
ток ето ж не сайт новостей.
немешало б подробный мунал (схема, детали тд. тп.)
потому как могие кто ето увидел чайники кто полный кто не полный. (я не полный)
и сами рни не смогут без пояснений собрать такую вещицу.
Хотелось бы увидить принципиалку… этого куба сбросьте cred@ukr.net
Я сделал, только 5х5х5. ПОтрясно.
Потрясная штука , скинте схемку плз на snail_1@ukr.net
Гость (188.18.151.76) , 12 декабря 2010, 08:54:09
Я сделал, только 5 х5 х5. ПОтрясно.
скинь на почту схемку по которой собирал!! пожалуйста, если не сложно!!
ВСё можно тупо рассчитать, просто нужно немного посидеть подумать.
Можно реализовать кучу вариаций 64 диода последовательно с катушкой можно приделать и так 8 раз и после параллельно зафигачить =))
Ребята, напишите какие детали надо купить — резисторы, диоды и т.д. А то все в разброс. В радиомагазине просто не могут понять. Или сбросьте на Мэйл denisa8080@mail.ru Заранее спасибо.
Ребята, напишите какие детали надо купить — резисторы, диоды и т.д. А то все в разброс. В радиомагазине просто не могут понять. Или сбросьте на Мэйл avakov_denis@inbox.ru Заранее спасибо.
Гость (188.18.151.76) , 12 декабря 2010, 08:54:09
Я сделал, только 5 х5 х5. ПОтрясно.
Скинь схему пожалуста!!!!
Flase@mail.ru
Да тут вообще трудно разобраться. Нормальной схемы нет. Ни номиналов резисторов, не наименования микросхем и транзисторов. как хочешь так и догадывайся.
Ребята, если вы решили поделиться с народом, то желательно доходчиво и наглядно вылаживать материал. А так не пойми что получилось. Повторяемость 0%, а если так то зачем вообще было вылаживать. Если хотите чтобы любой мог повторить устройство, то расставляйте всё по полочкам, а если нет то просто вылажили видео и фото и достаточно.
Все очень прекрасно но какие регистры используются в схеме или можно использовать 74373
Скинте схему! Пожалуйста по подробнее! padranok@mail.ru
А я сделал!!!!У меня работает, как и обещал, только вот на все это ушло больше полугода. adamkov_s@mail.ru