Приветствую! Поздравляю всех нас с днём рождения, и принимайте небольшую историю в подарок.
Заказали мне как-то раз знакомые девушки (которые устраивают файр и световые шоу) какую-нибудь забавную штуку для их очередного номера. Немного побурлив мозгами, мы пришли к идее сделать светящийся шар, который можно будет вертеть в руках, изображать всякую магию, высвечивать интересные ммм… места и моменты номера.
Со временем, заказчицы немного сдулись, да и бюджет предприятия уже был довольно высоким. Но идея, то уже запущена и мысль требует логического воплощения в железе.
Так и появился наш светодиодный шар.
Основная идея была в следующем – есть шар диаметром около 10см, поверхность которого покрыта светодиодами. Каждый светодиод имеет свою линию управления, т.е. управляется независимо от других. Получается некая матрица, размазанная по поверхности сферы.
Итого, исходя из размера шарика, размера светиков, получаем - 256 светодиодов, упакованных в 10см шарик.
Конструктив:
В основу конструкции, как ни странно, легла маленькая и очень вкусная ягода.
Я подумал, что будет довольно интересно и необычно сделать светодиодные рёбра, объединив их в общую матрицу. Так родился следующий конструктив:
с - шинная плата, которая объединяет рёбра в общую матрицу. Так же фиксирует нижний край платы “b”.
а – фиксирующее кольца. Фиксирует верхний край платы “b”.
d – процессорный модуль
e – батарейный отсек и модуль питания. Вставляется в устройство сверху, через отверстие в плате “а”.
В процессе разводки плат, проектирования и натурных экспериментов с картонными макетами, добавилось ещё несколько плат для удобства пользования и придания более интересного вида нашему шарику.
- Блок батарейного питания,
- Процессорный модуль,
- Светодиодные модули
Основная проблема переносных устройств (это не исключение) – организация питания и габариты, в которые можно вписать используемые элементы питания. Необходимо искать баланс между размером батареи и её характеристиками. Так же неплохо бы подумать о возможности быстрой замены отработавшей батарейки.
Я решил, что самое доступное решение – использовать пару батареек или аккумуляторов типа АА. Но, само собой, напрямую использовать батарейки для питания процессора и светиков – занятие странное и крайне не перспективное.
Решение пришло от Maxim’ов в виде микросхемки step-up MAX1674. Если верить даташиту – эта микросхемка повышает до 5 вольт, напряжение, начиная с 0.7V, что не плохо само по себе и позволяет “использовать” батарейки практически до упора. Так же есть приятная опция – индикатор низкого входного напряжения, который подаёт сигнал при понижении уровня входного сигнала ниже 1.3V.
Схема степ-апа довольно проста, микруха требует минимум обвязки.
Описание работы микрухи довольно подробно описано в даташите, от себя обращу внимание на конфигурацию выходного напряжения:
Pin1 – FB – подключаем к Gnd для получения на выходе 5V
Pin2 – LBI – на вход батарейного отсека. При просадке ниже 1.3V на ножке LBO (pin3) появится логический ноль и светодиод D1 загорится.
Pin5 – SHDN – соединяем с выходом питания для работы в нормальном режиме
Процессорный модуль:
Сердцем и мозгами нашего шарика выбран процессор ATmega88.
Вместо заявленного производителем 16МHz кварца можно спокойно ставить 20MHz. Возможны некие грабли, так как некоторые процессоры не заводятся на такой частоте, но в основном проблем нет. Кварц пошустрее ставился в расчёте на написание мат. эффектов и, возможно, использование программного шима по линиям “Enable”.
Самым простым и элегантным решением задачи управления огромным количеством светодиодов я считаю применение сдвиговых регистров. Например, любимых многими 74HC595. Каждый модуль имеет по 2 регистра на борту и разъём подключения питания и данных. По сути, каждый модуль вешается на общую шину SPI и добавляет 16 светодиодов к устройству.
Для управления всем этим безобразием требуется всего 6 линий питания/данных:
Gnd, VCC, Data In, Data Out, Clock, Latch + шина Enable 0 -> 15 (независимое включение светодиодных модулей)
Регистры было решено поставить непосредственно на светодиодную плату, вследствие чего она приобрела довольно специфический вид. А специфический вид сам по себе просит креативной разводки проводников ))))))
Два центральных светодиодных модуля объединены с процессорным.
Итак, мы рассмотрели все электронные модули. Давайте перейдём к сборке и программированию устройства.
После того, как запаяли электронику, на батарейный отсек, с помощью ножек от светодиодов припаиваем верхнюю крышку, которая будет закрывать верхнее отверстие и облагораживать тем самым внешний вид.
В квадратный вырез вставляем держатель для батареек. Будьте внимательны, батарейные отсеки порой довольно сильно отличаются по габаритам и перед тем как изготавливать плату – неплохо бы иметь его на руках. Я этого не учёл и пришлось заниматься напильнингом.
Боковинки держателя я проклею поксиполом к плате, чтоб он не гулял.
Распаянные светодиодные платки впаиваются в шинно-объединительную плату. Линии Enable прокинул МГТФ’ом. На центральный лепесток (который с процессором) напаиваются небольшие текстолитовые направляющие для батарейного модуля.
Верхние грани светодиодных плат объединяются текстолитовым колечком.
Программатор (крайняя левая плата с разъёмом) вставляется в шарик вместо платы питания.
Всё, шарик готов и можно сгонять за кофе и конфетой, чтоб, вернувшись, писать прошивку…
На конфигурации процессора я долго останавливаться не буду, скажу только, что проц работает на частоте 20МHz (16MHz по настройкам регистров), включено 2 таймера, они настроены на прерывания по переполнению. Первый генерит секунды (по сути развёртку), нулевой в дальнейшем должен выполнять функции программного ШИМа (пока не реализовано).
Обратим внимание на библиотечку
#include "mb_graph.c"
Она содержит мат. эффекты нашего шарика. В настоящее время написаны 4 тестовых эффекта. Я уверен, что вам не составит труда разобраться в них.
#define EFFECT_CHAIN 0
#define EFFECT_RANDOM 1
#define EFFECT_LINES 2
#define EFFECT_SIN 3
Может показаться странным, что в функции RANDOM несколько произвольных чисел умножается друг на друга несколько раз. Это сделано, чтоб уменьшить количество одновременно горящих светодиодов. Это и смотрится лучше и жрёт меньше батарейки.
И небольшая видяха на последок.
Файлы:
01.rar
Все вопросы в Форум.