Музыкальный светодиодный куб

10 сентября 2009

Введение

Для начала немного теории. Наш куб будет состоять из 512 светодиодов, по восемь светодиодов на каждую грань, а вся конструкция построена на деревянной основе. Что касается принципа работы куба, то она основана на эффекте инерционности зрительного восприятия. Это свойство человеческих глаз, которое создаёт иллюзию движения при быстрой смене отдельных статичных картинок.

led cube

Принцип работы

При создании светодиодного куба нам пришлось использовать инерционность зрительного восприятия, поскольку одновременное включение всех светодиодов потребовало бы достаточно большого тока. К примеру, потребляемый ток для ярких светодиодов составляет порядка 20 миллиампер, таким образом, на одновременное включение 512 штук нужно 10,24 А. Довольно сложно обеспечить такой ток, и тогда мы принили решение включать по одному слою в каждый отдельно взятый момент времени. Таким образом, потребление тока составит 1.28 A (по 20 мA на 64 светодиода). Такие характеристики обеспечить намного легче, и хорошего трансформатора здесь будет вполне достаточно. Представим, что нам необходимо осветить куб целиком. Для этого, мы будем включать различные слои один за другим со скоростью большей, чем скорость реакции человеческого глаза.

led cube

Для независимого контроля каждого светодиода было принято решение поделить куб на вертикальные слои и горизонтальные колонки. Ко всем светодиодам на каждом горизонтальном слое на катод подведен общий «минус», а для вертикальных колонок общим является «плюс». Таким образом, мы можем управлять 8 катодами по слоям и 64 анодами по колонкам. Комбинация сигнала на колонку и слой даёт нам возможность управлять каждым отдельно взятым светодиодом.

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

Что касается блока питания для проекта, то был использован БП с выходным стабилизированным напряжением 5В и номинальным током 2А.

Реализация

Приступим непосредственно к построению куба. Для этого нам понадобится следующее оборудование: паяльник, припой, пистолет для горячего склеивания, лобзик. Также не лишним будет заранее запастись материалами: 512 светодиодов вашего любимого цвета, сорокапиновый шлейф (вполне подойдёт шлейф от жёсткого диска IDE), 34 – х пиновый шлейф (от флоппи — дисковода), фанера толщиной 8мм (20х20см), электрические провода, подходящие для паяния (тонкие, гибкие, с хорошим сопротивлением).

led cube

Для начала, на листе фанеры нарисуем квадратную сетку (7х7) с размером стороны 2,5см. На пересечениях просверливаем 64 отверстия размером, соответствующим размеру светодиода (примерно 5мм). Эта доска послужит основой для всех спаянных светодиодов. Благодаря твердой основе светодиоды будут размещены и совмещены идеально. Вставляем светодиоды в отверстия. Как уже говорилось, отрицательные контакты на каждом уровне должны быть соединены, поэтому необходимо согнуть отрицательную ножку светодиода таким образом, чтобы она совпала с соединительной сеткой.

led cube

Как только будут готовы 8 слоёв необходимо соединить их вместе. Для этого приготовим 64 провода длиной порядка 20см. Помещаем верхний слой на фанеру таким образом, чтобы светодиоды совпали с отверстиями. Присоединяем приготовленные провода к отрицательным контактам светодиодов. После того, как первый уровень готов, приступаем к соединению контактов следующего уровня. В качестве прослоек можно использовать 4 деревянные дощечки толщиной 1,5см, которые поддержат неприкреплённый слой пока ведётся пайка. Очень важно на данном этапе убедиться в работоспособности каждого светодиода, так как в дальнейшем заменить его будет сложно.

led cube

Как только слои будут соединены, необходимо привести все отрицательные контакты к нижней части куба. Для этого в фанерной доске просверливают 8 небольших отверстий для отрицательных проводов. Куб уже почти готов, и остаётся только подсоединить управляющие провода к клеммам светодиодов. Однако прежде необходимо определить распиновку соединений между клеммами светодиодов и управляющим контуром.

led cube

led cube

Для создания управляющего контура необходимо: 8 восьмибитных сдвижных регистров для включения – выключения каждой колонки куба, один сдвижной регистр, подсоединённый к 8 NPN транзисторов для включения – отключения слоёв, два разъёма под 40 и 34 пиновые шлейфы, один двухпроводной разъём для соединения параллельного порта.

Напрашивается резонный вопрос, зачем подключать 8 NPN транзисторов к сдвижным регистрам резисторов? Как известно, каждый слой имеет общий «минус». Но проблема заключается в том, что на выходе сдвижных регистров слоя сигнал имеет высокий уровень (логическая единица). Поэтому необходим был компонент, который по сигналу логической единицы включал бы токовый контур. Этим компонентом оказался транзистор. Он работает как выключатель: если на базу подаётся логическая единица, то через коллектор и эмиттер начинает протекать ток.

led cube

Прежде всего, необходимо разместить все компоненты, для оценки занимаемого ими места. Компоненты следует располагать в следующей последовательности: Разъёмы под сдвижные регистры, транзисторы, разъёмы, сопротивления от 100Ом до 1,5кОм. Особое внимание требуется уделять соединениям основных компонентов.

led cube

Теперь подсоединим провода к нашему кубу. Необходимо взять 40 и 34 – пиновые  шлейфы и обрезать разъёмы с одной стороны. С этой стороны необходимо распустить шлейфы примерно на 10 сантиметров. Эти провода будут присоединены к различным плюсовым и минусовым клеммам куба. Каждая клемма на выходе сдвижного регистра будет подсоединена к целому ряду соединительных разъёмов. Таким образом, первый регистр будет контролировать первый ряд , второй регистр, соответственно, второй и т.д.

led cube

Из доступных нам 74 контактов (40+34), мы будем использовать только 72 (64 колонки и 8 уровней), два контакта останутся свободными. Если у вас нет кабеля  для подключения к параллельному порту, можно сделать его самому. Вот его распиновка (необходимо использовать контакты от D0 до D5):

led cube  

  • D0 -> входа сдвижных регистров колонок
  • D1 -> сброс сдвижных регистров колонок
  • D2 -> счетчик сдвижных регистров колонок
  • D3 -> входа сдвижных регистров слоёв
  • D4 -> сброс сдвижных регистров слоёв
  • D5 -> счетчик сдвижных регистров слоёв

Внимание: при неправильном расключении прилагаемое ПО работать не будет.

led cube

Теперь примемся за основание куба, в которое будут спрятаны управляющие элементы и кабели. Для этого нам понадобится одна деревянная табличка размером 20×20см, две таблички 20×6,8см, две таблички 21.6 x7,6см и примерно 25 шурупов или гвоздей. Собираем наши таблички в форме короба и готовимся их соединить. Перед тем, как вкручивать шурупы необходимо промазать рёбра клеем, для того, чтобы мы могли в дальнейшем их выкрутить, не разбирая коробки. Верхом короба будет служить наш куб. В принципе вместо шурупов можно использовать маленькие гвозди, однако достать их в дальнейшем будет намного сложнее. Как только высохнет клей, шурупы (или гвозди) можно удалить, а отверстия замазать древесной шпаклёвкой.

led cube

На задней стенке основания необходимо вырезать четыре отверстия: для параллельного порта, для индикатора питания, выключателя и для блока питания. Поверхность основания обрабатываем наждачной бумагой, и красится. После этого можно начинать крепить разъёмы, индикатор, выключатель и т.д. Вот и всё можно подключать питание и компьютер с управляющей программой.

led cube

led cube

Программная часть

Управляющая программа разработана в среде 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

Видео работающего куба

И, наконец, можно наслодиться красивыми видео работы куба:

Комментарии
  • mddr says: 11.09.2009 в 09:56

    красотища!!! +100

  • JIEBA says: 28.09.2009 в 18:28

    Мега вещица, но хотелось бы еще немного информации, схему, было бы просто супер!!!

  • mddr says: 29.09.2009 в 15:51

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

  • JIEBA says: 29.09.2009 в 20:01

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

  • mddr says: 30.09.2009 в 19:45

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

  • Аноним says: 04.10.2009 в 07:33

    можно было поставить трансформатор и на 11 ампер; чтобы не было комромисса при включении диодов; было немного проще

  • zepellin69 says: 05.10.2009 в 16:16

    «Особое внимание требуется уделять соединениям основных компонентов» — из приведенных фотографий не ясно как соединяются эти компоненты!

  • JIEBA says: 08.10.2009 в 00:48

    …вот, полностью солидарен с zepellin69

  • mddr says: 08.10.2009 в 07:36

    хм… вам непонятно как соединить светодиоды в куб?

  • zepellin69 says: 09.10.2009 в 13:02

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

  • Аноним says: 22.10.2009 в 20:08

    я бы убил вас за параллельный порт.

  • Аноним says: 15.11.2009 в 01:36

    Давно хотел собрать, что либо подобное но всё руки не доходили! РЕСПЕКТ И УВАЖУХА ЗА СТОЛЬ КРОПОТЛИВЫЙ ТРУД!

    я такое пол года собирать буду и не соберу!

    Огромнейшая просьба Автору!
    Если можно собрать не столь огромный куб, а что то попроще и написать подобную статью, чтоб было доступно не опытному специалисту !(которым я являюсь! ) ну куб например на до 50 светодиодов ото и они тоже денег ведь стоят!

    Буду очень признателен если сия просьба воспринята и рассмотрена!Давно хотел собрать, что либо подобное но всё руки не доходили! РЕСПЕКТ И УВАЖУХА ЗА СТОЛЬ КРОПОТЛИВЫЙ ТРУД!

    я такое пол года собирать буду и не соберу!

    Огромнейшая просьба Автору!
    Если можно собрать не столь огромный куб, а что то попроще и написать подобную статью, чтоб было доступно не опытному специалисту !(которым я являюсь! ) ну куб например на до 50 светодиодов ото и они тоже денег ведь стоят!

    Буду очень признателен если сия просьба воспринята и рассмотрена!

  • Аноним says: 01.12.2009 в 00:50

    Привет есть деловое предложение! Мне понравился твой куб классная штука собрать я такой врядли смогу да и времени нет. Сколько ты возьмёшь денег за работу и за материал? Или сколько ты хочешь денег за свой куб? если тебя заинтересовало моё предложение напиши мне konstantin-od@mail.ru или kostjn-86@mail.ru

  • Аноним says: 05.12.2009 в 17:48

    Кулл!! Потрясно, все зделаю, руки прямые сам занимаюсь радиоэлектроникой, только вот схемку бы поподробнее, а то как то непонятно куда что включаеться. Если можно на мой ящик. adamkov_s@mail.ru

  • Аноним says: 06.12.2009 в 18:51

    Скинте схему устройства, пожалуйста: vovdavydo@yandex.ru

  • Аноним says: 09.12.2009 в 06:21

    Присоединяюсь. Рульно получилось. Автор, выложи пожалуйста схему включения, а то без нее довольно сложно разобраться. Или вышли на intel-1@km.ru

  • Аноним says: 15.12.2009 в 06:28

    Хотелось бы приобрести такой куб…Не смог бы ты сделать ещё один? email:MMasson2007@rambler.ru

  • Аноним says: 18.12.2009 в 19:52

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

  • Аноним says: 08.01.2010 в 23:01

    Как я мыслю:
    1. Запараллелить входа сдвиговых регистров колонок (те которых 8 шт).

    2. Соединить их с LPT портом
    D0 — к выводам 1
    D1 — к выводам 9
    D2 — к выводам 8

    3. Выводы 2 микросхем соединить с «+» питания.

    4. Вывод 2 микросхемы регистра слоя соединить с «+» питания.

    5. Соединить с LPT портом регистр слоев:
    D3 — к выводам 1
    D4 — к выводам 9
    D5 — к выводам 8

    Если не так — поправьте

  • Аноним says: 02.02.2010 в 01:43

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

  • Аноним says: 07.02.2010 в 16:32

    дай ссылку

  • Аноним says: 20.02.2010 в 00:35

    Светорежесер из него никакой!

  • Аноним says: 07.03.2010 в 14:56

    хорошая штука, подскажите, где можно найти схему, какие компоненты нужны, как их связывать? Если можно на мыло vladimir_69_@mail.ru

  • Аноним says: 18.03.2010 в 17:12

    Скинте схему! Пожалуйста по подробнее! iisysrw@list.ru

  • Аноним says: 26.04.2010 в 08:09

    слишком дорогой кубик получается, если учесть что цена одного светодиода в среднем 10 рублей, вот и получается что за светодиоды мы отдаём 5120 рубликов. Но вещь прикольная, автору ЗАЧЁТ.

  • Аноним says: 13.07.2010 в 00:26

    Ничего из этой статьи не понятно, абсолютно, как то соединить 512 светодиодов и как и крепить и к чему, как соединять друг с другом, как все это сделать что бы кроме светодиодов ничего лишнего не болталось и т.д. НИЧЕГО нет

  • Аноним says: 27.09.2010 в 22:34

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

  • EnToN says: 07.12.2010 в 23:15

    Хотелось бы увидить принципиалку… этого куба сбросьте cred@ukr.net

  • Аноним says: 12.12.2010 в 08:54

    Я сделал, только 5х5х5. ПОтрясно.

  • Аноним says: 14.12.2010 в 23:50

    Потрясная штука , скинте схемку плз на snail_1@ukr.net

  • Аноним says: 12.01.2011 в 15:30

    Гость (188.18.151.76) , 12 декабря 2010, 08:54:09

    Я сделал, только 5 х5 х5. ПОтрясно.

    скинь на почту схемку по которой собирал!! пожалуйста, если не сложно!!

  • Аноним says: 24.01.2011 в 15:47

    ВСё можно тупо рассчитать, просто нужно немного посидеть подумать.
    Можно реализовать кучу вариаций 64 диода последовательно с катушкой можно приделать и так 8 раз и после параллельно зафигачить =))

  • Аноним says: 29.01.2011 в 07:02

    Ребята, напишите какие детали надо купить — резисторы, диоды и т.д. А то все в разброс. В радиомагазине просто не могут понять. Или сбросьте на Мэйл denisa8080@mail.ru Заранее спасибо.

  • Avakov Denis says: 08.02.2011 в 13:50

    Ребята, напишите какие детали надо купить — резисторы, диоды и т.д. А то все в разброс. В радиомагазине просто не могут понять. Или сбросьте на Мэйл avakov_denis@inbox.ru Заранее спасибо.

  • Аноним says: 03.03.2011 в 17:08

    Гость (188.18.151.76) , 12 декабря 2010, 08:54:09
    Я сделал, только 5 х5 х5. ПОтрясно.

    Скинь схему пожалуста!!!!

    Flase@mail.ru

  • Аноним says: 05.06.2011 в 18:18

    Да тут вообще трудно разобраться. Нормальной схемы нет. Ни номиналов резисторов, не наименования микросхем и транзисторов. как хочешь так и догадывайся.
    Ребята, если вы решили поделиться с народом, то желательно доходчиво и наглядно вылаживать материал. А так не пойми что получилось. Повторяемость 0%, а если так то зачем вообще было вылаживать. Если хотите чтобы любой мог повторить устройство, то расставляйте всё по полочкам, а если нет то просто вылажили видео и фото и достаточно.

  • Аноним says: 07.08.2011 в 09:22

    Все очень прекрасно но какие регистры используются в схеме или можно использовать 74373

  • Аноним says: 19.11.2011 в 17:10

    Скинте схему! Пожалуйста по подробнее! padranok@mail.ru

  • Аноним says: 18.02.2012 в 16:28

    А я сделал!!!!У меня работает, как и обещал, только вот на все это ушло больше полугода. adamkov_s@mail.ru

Добавить комментарий