![]() |
![]() |
|||||||||||||||
RGB гирлянда
Автор: Aheir Даже и не знаю, чем можно объяснить факт того, что за более чем 20 лет общения с паяльником я так и не сделал ни одной елочной гирлянды... Вобщем, пришло время это исправить, тем более что и подрастающее дите проявляет живейший интерес ко всяким мигающее-светящимся штукам)) С жесткой логикой связываться было откровенно лень, поэтому в качестве основы взят микроконтроллер Atmega16 (был в наличии, к тому же, существенный объем памяти программ так же не лишний в таком применении). Естественно, используем светодиоды, конечно же – трех основных цветов R, G, B. Для управления светодиодами задействуем сдвиговые регистры 74HC4094, их выводы без проблем «тянут» необходимые ярким светодиодам 7-10 мА. Логично поделить систему на две части: пульт управления и непосредственно элементы отображения, т.е. сама гирлянда. Схема пульта: В качестве источника питания используется внешний стабилизированный блок питания на 5В («адаптер»), поэтому подсистема питания весьма проста. В качестве элементов управления – 6 «тактовых» кнопок, в качестве экрана – LCD от Nokia 3310 (см. статью , при их стоимости на уровне 50р – реальный конкурент светодиодным индикаторам), зуммер для озвучивания нажатий на кнопки, светодиоды подсветки экрана – никакой экзотики. Я решил не насиловать экран питанием от 5В (хотя есть информация, что он вполне себе нормально живет в такой ситуации) и поставил ему отдельный стабилизатор на 3,3В, а вот для согласования логических уровней решения в виде последовательных резисторов в цепях данных экрана и вправду вполне достаточно. Для управления сдвиговыми регистрами нужно 3 сигнала (Data, Clock, Strobe), они выводятся на разъем и далее во внешний мир (к гирлянде) через буфер 74HC244. Деталь, в общем-то не обязательная, но лишней не будет. Конструктивно все это оформилось в корпусе КА12 от Мастеркита: Чертеж для желающих: Плата разрабатывалась именно под эту коробочку: При сборке нужно учитывать, что под экраном с обратной стороны платы располагаются некоторые компоненты (тот же микроконтроллер, например), поэтому их нужно монтировать так, чтобы над поверхностью платы со стороны экрана не выступали выводы или наплывы припоя. Разъем питания на плату не устанавливался (применен разъем другого типа), в качестве выходного разъема применен DB-9F. После упиливания корпуса все это выглядело так: В первом приближении пульт сделали, теперь о гирлянде. Схема одного звена такая: Сдвиговый регистр с подключенными к нему 6 светодиодами и два разъема, входной и выходной. Плата для этого дела: Как видно, светодиоды располагаются с обеих сторон платы. Это сделано для более равномерного распределения светового потока, чтобы плата светила при взгляде на нее с любого направления (забегая вперед с кажу, что светодиоды одного цвета с разных сторон платы работают синхронно) . Собранные платы выглядят так: Я применил обычные 5 мм светодиоды, спилив их под углом 45 градусов на обычном наждаке. Опять же, для целей более равномерного распределения света, а то очень уж они были у меня направленные – около 10-15 градусов. Всего было изготовлено 20 таких сегментов, между собой они соединены отрезками кабеля КММ-4 (4 жилы + экран, что как раз обеспечивает передачу трех информационных сигналов и питания). После сборки и проверки каждый сегмент был дополнительно запакован в прозрачную термоусадку (на фото – последний сегмент цепи): В результате светится эта штука вполне себе равномерно.
Теперь по прошивке. Данные в регистры загружаются через аппаратный SPI микроконтроллера, 10 раз в секунду в каждый из 20 сегментов. МК работает от встроенного генератора на 8 МГц (кварц, хоть и разведен на плате, не используется), SPI настроен на самую низкую скорость (пробовал тактовую SPI до 10 МГц с внешним кварцем – работает, как ни странно, но здесь оно пока не надо). Фьюзы: Пульт позволяет выбрать программу (световой эффект), скорость ее выполнения (продолжительность шага) и количество сегментов в подключенной к контроллеру гирлянде (у меня – 20, можно больше или меньше – на вкус и цвет). Внешний вид меню: Три пары кнопок как раз и увеличивают/уменьшают эти параметры. Световые эффекты, реализуемые устройством, описаны в файле effects.c в виде функций. Они основаны на цикличном расчете элементов выводимого в цепь сдвиговых регистров массива. Эффекты с 1 по 7 – «одноцветные», т.е. в них происходит смена одного цвета (фона) другим, целевым: перемещение красного бегущего огня по синему фону и т.п. Параметрами к этим функциям как раз и служат номера исходного и целевого цветов. Эффекты с 8 по 17 – «полноцветные», в них одновременно участвуют все цвета и параметров они не имеют. В файлах red.c, green.c и blue.c сосредоточены вызовы функций одноцветных эффектов во всех возможных вариантах сочетаний базового и целевого цветов (в качестве базового введен еще псевдо-белый, когда светятся все три светодиода), это в совокупности с полноцветными эффектами дает 94 различных световых программы. Регулировка скорости сделана с помощью введения в цикл обновления данных задержки, обратнопропорциональной значению скорости в меню. Программа 0 – выключение гирлянды, программа 1 – случайная смена программы из имеющихся 94. В силу особенностей работы сдвиговых регистров и достаточно скоростной загрузки данных в них, если установить число сегментов меньше, чем физически имеющееся, произойдет визуальное разделение цепочки на две идентично работающих части. Поэтому в программе случайного воспроизведения (программа 1) реализован еще и случайный выбор количества сегментов для текущей программы: 10 или 20. Это добавляет разнообразия в эффекты. Естественно, значение последней активной программы, количество сегментов и скорость для каждой программы сохраняется в энергонезависимой памяти МК. При нажатии на любую кнопку происходит включение подсветки экрана (4 зеленых светодиода), которая продолжает работать 5с после завершения каких либо действий с пультом. Как я уже говорил, сейчас 6 имеющихся в каждом сегменте светодиодов работают попарно по цветам. Мне кажется, делать индивидуальное управление ими бессмысленно: визуально это воспринимается с трудом, чистые цвета интереснее. В принципе, с учетом запаса по производительности, представляется вполне возможно реализовать ШИМ-управление яркостью светодиодов (я делал такие системы на 8 регистрах: ШИМ управление 8*8 = 64 каналами), но мне пока не очевидна необходимость этого. Вот так оно выглядит с подключенными разъемами: Ну а это уже в облагороженном виде: Вобщем, вполне приличный результат для пары вечеров потраченного времени (без учета изготовления плат, конечно). Приличный результат можно оценить на видео :
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |