3-D программируемая матрица из 125 светодиодов
Jerry Jacobs (The Netherlands)
Каждый встречал двумерные светодиодные матрицы, но вариант, описанный в этой статье, описывает совсем иной калибр: а именно, пять матриц, сложенных вместе в куб; и в этой трехмерной матрице каждый светодиод которой может быть включен совершенно индивидуально.
(автор перевода - MACTEP)
Спецификации аппаратного обеспечения
• 125 светодиодов в специализированной 3-D матрице
• ATMEGA32 микроконтроллер с внутренним генератором на 1 МГц
• 10-контактный ISP-разъем для перепрограммирования
• 5 транзисторов для коммутации матриц
• 25 транзисторов для коммутации рядов
Многим нравится мигание СВЕТОДИОДОВ. Но обычно это несколько светодтодов или небольшая матрица. Здесь же мы представляем 3-D светодиодную матрицу, каждый светодиод управляется индивидуально. Этот великолепный 3-D куб управляется микроконтроллером Atmel AVR. Эти микроконтроллеры легко достать, и имеется много программ для программирования. Не только для Windows, но также для Linux и операционных систем Mac.
Режим
Возможно, вы думаете, что с 125 светодиодами в 3-D кубе Вам надо будет слишком много соединений, чтобы была возможность управлять ими индивидуально, но это не так. Мы используем меньше соединений, поскольку сигналы мультиплексированы. Управляем одной 'матрицей', из 25 светодиодов, которые являются всеми в той же самой высоте в колонках, можно контролировать с единственным, формируют соединения. Это приводит к в общей сложности 26 сигнальным проводам. Если бы каждый светодиод должен был быть связан, индивидуально тогда 50 формируют соединения, был бы требован.
Чтобы включать светодиод, мы коммутируем напряжение позитивного изображения в нужной матрице и выбираем соответствующий ряд.
Наш куб имеет 5 матриц и 25 колонок. Это означает, что мы имеем 30 соединений для 125 светодиодов. Без мультиплексирования, нам понадобилось бы 250 соединений!
С частотой генератора 1 МГц мы получаем частоту регенерации 39 кадров в сукунду.. Каждые 1024 импульса счетчик увеличивается (делитель частоты, используемый для этого также называют предварительный делитель частоты). Когда этот счетчик достигает величины 5, прерывание выполнено и счетчик восстановлен.
Это прерывание заботится о посылке величины в буферном регистре к матрице светодиода. Контроллер в кубе имеет частоту генератора 1 МГц (встроенный генератор). Программное обеспечение корректирует каждые 5 импульсов. Внутренняя частота поделена предварительным делителем частоты. Это приводит к регенерации 195 гц для всего куба. Так как мы имеем пять матриц, мы делим на пять и достигаем 39 кадров в секунду.
Таблица 1. Распределение матриц и колонок.
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
PA7 | PA6 | PA5 | PA4 | PA3 | PA2 | PA1 | PA0 |
Колонка 8 | Колонка 7 | Колонка 6 | Колонка 5 | Колонка 4 | Колонка 3 | Колонка 2 | Колонка 1 |
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 |
Колонка25 | -- | -- | Матрица 5 | Матрица 4 | Матрица 3 | Матрица 2 | Матрица 1 |
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
PC7 | PC6 | PC5 | PC4 | PC3 | PC2 | PC1 | PC0 |
Колонка 16 | Колонка 15 | Колонка 14 | Колонка 13 | Колонка 12 | Колонка 11 | Колонка 10 | Колонка 9 |
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
PD7 | PD6 | PD5 | PD4 | PD3 | PD2 | PD1 | PD0 |
Колонка 24 | Колонка 23 | Колонка 22 | Колонка 21 | Колонка 20 | Колонка 19 | Колонка 18 | Колонка 17 |
Программное обеспечение
Программное обеспечение (программируемое оборудование) записано в С и может быть собрано с avr-gcc [1 |. Это также зарегистрировано таким способом, что это может рассмотреться как вебсайт. Это сделано возможным из-за Doxygen |2].
Буферный регистр
Поскольку весьма сложно заставить куб показывать произвольный рисунок простым способом, для этой цели буферный регистр. Преимущество этого состоит в том, что Вы управляете битами в буферном регистре, используя функции, что означает, что Вы не должны записывать непостредственно последовательность. Это - работа программы прерываний. Буферный регистр, точно так же как куб, имеет многократные размеры, таким образом Вы можете 'вычертить' рисунок в буферном регистре, и программа прерываний заботится об остальном.
Рис. 1. Микроконтроллер AVR - в основе этого проекта. То, что является очевидным - большое количество транзисторов.
Прерывания
Программа прерываний в кубе, как уже былоупомянуто, гарантирует, что рисунок на кубе регенерируется 39 раз в секунду.
Эта программа прерываний записывает значения, которые Вы записали в буферный регистр, используя другую функцию, от буферного регистра до соответствующих входов и помещаете биты в правильное место. Мы используем фотошаблоны бита, которые гарантируют, что мы только смотрим на соответствующие биты, которые должны быть низкими или высокими на выходе..
Графические инструкции низкого уровня
Все соединения сделаны таким способом, что Вы можете создать ваши собственные действия для куба. В Таблице 1 Вы можете видеть, какой выход куда соединяется на кубе. Это облегчает понимание для новичков, как работают маски бита, сдвиги разряда и другие сложные функции. Эти инструкции низкого уровня определены в draw.h, это - файл интерфейса для инструкций, чтобы управлять индивидуальными колонками, слоями, рядами, и т.д. Ниже - несколько примеров, которые показывают, как эти функции могут использоваться.
Чтобы управлять рядом на определенном слое мы используем
Set_row(R0W_1, LAYER_1);
clear_row{ROW_l, LAYER_1);
toggle_row{ROW_l, LAYER_1);
Следующие функции могут использоваться чтобы включить и отключить колонку:
set_column(COLUMN_l, ON);
Set_COlumn(C0LUMN_1, OFF);
Мы используем удобные названия, типа ON, OFF и COLUMN_l. Они определены названия, также названные макроопределением, которые имеют закрепленное значение. Например, ON имеет значение 1 и OFF значение 0.
Все эти функции могут использоваться один за другим, чтобы создать желаемую картину. Поскольку мы не можем показать весь исходный текст и примеры здесь, Вы можете загрузить их с вебсайта Elektor.
Рис.2
Аппаратное обеспечение
Для питания используется адаптер на 9 V 600 мА . IC1 (7805) обеспечивает стабилизацию напряжения. диод D1 защищает от переполюсовки.
Транзисторы T1 - T5 используются для соединения 5-вольт я с различными матрицами. Колонки коммутируются транзисторами T6 - T30.
Значение резисторов колонки зависит от падения напряжения на светодиоде. Мы делаем предположение, что каждый светодиод требует 20 мА. Это ток, который пройдет через всю колонку. Электропитание для каждой матрицы - 5 V, Которыми вычисление для сопротивления является тогда приблизительно:
I = (5 V - ULED) / 20 мА
Падением напряжения на транзисторах можно пренебречь.
Рис.3. Печатная плата.
СПИСОК КОМПОНЕНТОВ
Резисторы
Rl = lOOkil
R2-R6 = 330ii
R7-R14, R31-R38, R47-R55 = см. текст
R15-R30, R39-R46, R56 = Ш28
Конденсаторы
Cl = 470pF 25V
С2,СЗ = lOOnF
C4 = lpF 100V
Полупроводники
IC1 = 7805
IC2 = Atmego32
Dl = 1N4001
T1-T5 = BC337
T6-T30 = BC547
125 светодиодов
Разное
10-woy boxheader (2x5), 2.54mm lead pilch
10-woy SIL pinheoder (1С socket)
Heatsink, TO-220, 5°K/W for IC1
4 винтика M3x5 длиной 10-mm
Гнездо для адаптера 2.5mm.
плата, код заказа 080355-1 от МАГАЗИНА Eleklor
Помощник!
Шаг # 1
'Матрицы' собираются сначала на плате. Отверстия в плате служат для удобной спайки светодиодов. Используйте лист бумаги так, чтобы удабно устанавливать светодиоды. Лучше пробить отверстия, используя шариковую ручку.
Шаг # 2
Установите пять светодиодов в первом ряду, анодами (длинный вывод) вверх и катоды (короткий вывод) в основании. Затем, согните анодный вывод первого светодиода налево в направлении второго светодиода. Второй светодиод спаять с первым светодиодом. Повторите, пока весь ряд не будет закончен. Для каждой матрицы требуется пять рядов. Мы поэтому повторяем от второго к пятому ряду. Как только все пять рядов полны, аноды спаиваем вместе двумя перпендикулярными соединениями. После этого целая матрица может быть выдвинута из платы.
Шаг # 3
Как только все пять матриц закончены, они спаяны вместе, пока они не образовывают конечную форму. Это нужно делать, разместив матрицы в плату. На следующей матрице, согните концы 25 выводов колонки примерно до 3 мм, достигать вокруг светодиодов предыдущей матрицы. Вторая матрица впоследствии помещена выше первой пленки, и мы паяем эту матрицу на каждом соединении, с однинаковым интервалом между матрицами и светодиодами, аккуратно выстроенными в линию.
Шаг # 4
Все другие компоненты теперь установлены на печатной плате. Удостоверьтесь что транзисторы BC337 и BC547 не перепутаны!
Регулятор напряжения с радиатором устанавливается последним.
Шаг # 5
Заключительный шаг соединяет каждую из матриц к их соответствующим транзисторам. Tl связан с нижним слоем и T5 с верхним. Используйте луженную медную проволку для соединений.
Шаг # 6
Программное обеспечение может быть запрограммировано в микросхему. Это программное обеспечение, вместе с исходным текстом, может быть загружено с вебсайта Elektor. Вы можете также заказать готовую печатную плату в магазине Elektor.
Ссылки
[1] AVR-GCC:
- Для Windows:
- Для Mac:
- Для Linux: depends on the distribution
[2] Doxygen:
Ваш способ как раз для моего ума обязательно попробую сделать :idea: Вот только вопросик управлять можно таким же способом как описано в этой статье? или уже этот метод не годится?