Содержание
Вступление
Восьмиканальная цветомузыкальная установка для самостоятельной сборки на микроконтроллере ATmega328p, с использованием элементов поверхностного монтажа (SMD) и микросхем в DIP (Dual In-line Package) корпусе.
Для реализации данного устройства понадобятся навыки изготовления печатных плат, монтажа SMD компонентов и “прошивания” микроконтроллеров, а так же наличие программатора для AVR микроконтроллеров.
Руководство по эксплуатации
Печатная плата
Плату разводил из расчета, что элементы управления и индикации будут прикручиваться/встраиваться в корпус устройства, а соединяться с основной платой будут посредством штыревых разъемов. Тактовые кнопки были предназначены для предварительного бескорпусного тестирования. Особой необходимости их установки нет.
Варианты разводки плат:
Разводка 1 вариант включает:
- Микропроцессор ATmega328p
- Фильтр низких частот на ОУ LM358N
Контактные разъемы:
- 3 вывода на кнопки управления (Demo, Fade Speed, Runlight)
- 3 вывода для индикации скорости затухания (Fade Speed status LED)
- вывод на светодиодную ленту со светодиодами ws2812b (Dout)
- стерео вход (Audio IN)
- вход для микрофонного предусилителя / линейный вход (Mic Amp IN)
- вывод для индикации наличия питания (Power LED)
Не выведены:
- 3 вывода для индикации режима работы (Mode status LED)
- вывод индикации нажатия (Button press blink)
Ширина дорожек 0,5. Посадочные места под SMD резисторы и конденсаторы для типоразмера 0603 или 0805. Если между контактами проходит дорожка, то практичнее использовать 0805. При монтаже главное контролировать отсутствие замыканий при установке последних.
Аудио сигнал подается одним из способов:
1. Сигнал с линейного выхода подаётся на 3-х пиновый вход “AUDIO IN”. Сумматор каналов предусмотрен на плате (по резистору в 1 кОм на каждый канал).
2. При использовании микрофонного усилителя сигнал в обход сумматора подается на “MicAmp IN”.
Если необходимо подключить регулятор громкости, то предварительно суммированный стереосигнал через регулятор громкости (переменный резистор в 10кОм) подается на вход “MicAmp IN” (в обход сумматора на плате). Сумматор в простом исполнении – по резистору в 1 кОм на каждый канал.
Разводка 2 вариант
Модифицированная разводка варианта 1 – выведены все задействованные выводы микроконтроллера и убраны перемычки. Здесь также используются элементы в DIP корпусе для микросхем и в SMD для остальных элементов. Данная разводка на железе еще не была проверена.
Разводка платы от Александра (от 19.06.2019)
Модифицированная разводка варианта 1 – выведены все задействованные выводы микроконтроллера и убраны перемычки. В отличии от остальных вариантов Александр развел плату под дискретные компоненты, за что ему огромное спасибо. Данная разводка на железе еще не была проверена.
Разводка платы от посетителя сайта - Алексея (от 06.12.2019)
Появился еще один вариант разводки. В данном исполнении плата была максимально уменьшена в размере без потери функционала. Работоспособность данной разводки успешно проверена на железе.
Перечень компонентов
Резисторы | Количество | Конденсаторы | Количество | Другое | Количество |
---|---|---|---|---|---|
Итого: | 14 | 12 | 3 | ||
100 kΩ | 1 | 1.5 nF | 1 | ATmega328p | 1 |
10 kΩ | 2 | 100 nF = 0.1 μF | 5 | LM358n | 1 |
150 Ω | 1 | 10 nF | 1 | Quartz 16 (20) MHz | 1 |
1 kΩ | 2 | 22 pF | 2 | ||
2.4 kΩ | 3 | 27 nF | 1 | ||
220 kΩ | 2 | 470 nF = 0.47 μF | 1 | ||
330 Ω | 3 | 470 μF 16v | 1 |
Приветствую посетителей и автора!
Столкнулся с проблемой.
НЕХ загруженный в ардуину прекрасно работает. А вот на DIP не могу запустить.
На 27 ноге (D0) ATmega328P как и положено идут серии импульсов для адресации, но лента их не определяет. Всё что я имею, это включенные на яркий белый 24 пиксела. Если в мегу залить например НЕХ для 8 диодов, то просто будут гореть белым все 8. При этом мега реагирует на кнопки и переключает как и положено светодиоды индикации режима.
Сравнил временные интервалы импульсов у Ардуины и у ATmega328P, так вот у меги они гораздо более длинные по времени. Перепробовал несколько микросхем, у всех результат одинаковый. Менял кварцы, ёмкости, всё одно…
Понимаю, что зубы по интернету не лечат, но всёже… Может у кого возникнет идея куда копать?
Привет!
Ну если лента на одном работает, а на другом нет, то значит дело не в ленте xD.
Странно конечно, но ардуина эта та же мега. Разница только в том, что на ардуине с завода выставлены фьюзы, а на меге надо выставлять вручную. Возможно загвоздка там.
Обрати внимание на бит CKDIV8. Это делитель тактовой частоты на 8 и по умолчанию он включен. Его надо выключить.
С включенным как раз длинна импульсов будет в 8 раз больше положенного.
Благодарю Вас за ответ!
Да, действительно интуитивно понятно, что дело в тактовой частоте. На ногах кварца что-то более похожее на помеху в 50 гц.
Начал рыть в сторону фьюзов. Перечитал кучу статей, что за что отвечает. Разобрался с калькулятором, проверил все галки на вашем скрине и тем, что по логике должно быть. Ну просто нЕ к чему прицепиться. Но кварц-то не работает!
Наконец нашел в чём ошибка… Проверил прошитые фьюзы, а там всё по умолчанию… ))
У меня это первый опыт работы с AVRDUDE_PROG, сразу не догадался что фьюзы нужно прошивать отдельно.
Прошил как нужно и кварцованый генератор заработал.
Вот такой ляп случился ))
Сейчас всё работает как положено. Полностью согласен, что это одна из лучших, если не самая лучшая цветомузыка. Благодарю за возможность воспользоваться прошивкой!
Делать печатную плату мне показалось слишком заморочным. Схемка простая и в ней не так уж много деталей. Поэтому собирал как в Советском НИИ “на слепыше”, луженой жилкой и проводом МГТФ. Так гораздо быстрее.
Ну вот и отлично! Только скорее это не ляп, а просто ценный опыт =)
Добрый день. Есть вопрос. Подключил матрицу 16*16 256 светодиодов. Но “расширяется” только до 240, не горит одна полоска из 16 штук. “Допилите” пожалуйста прошивку до новой версии, чтобы работало на 256 диодов
Или поделитесь пожалуйста кодом для Atmel Studio. Попробую разобраться….
Привет! Код лежит в одном архиве вместе с прошивкой в папке “Sources”.
Мне известны несколько ошибок в работе и есть пару предложений от пользователей сайта. Поэтому уже достаточно материала для выпуска новой версии, но пока тупо нет времени. =)
Думаю на выходных получится немного покопаться в коде по поводу 256.
Максимально количество светодиодов задает переменная MAXLEDS в mydefs.h, но возможно что-то перестанет работать или не будет работать вовсе =). Кое-где придется переводить 8-и битные массивы на более емкие.
Добрый день.
А есть ли скетч для Ардуино?
Привет!
Весь код написан в Atmel Studio, поэтому исходники можно ковырять только там.
Как скетч для Arduino IDE данный исходный код использовать не получится.
Всё, разобрался!!!
Здравствуйте! Вот и хорошо =)
В чем дело было? А то вдруг у кого-то такая же ситуация будет.
Здравствуйте! Собрал цму с лентой на 144 светодиода. с последней прошивкой горят только 24, при регулировке количества регулируется от 8 до 24, с ранней версией прошивки на 144 светодиода всё нормально, горит вся лента
Здравствуйте ! Что нужно сделать чтобы подключить 180 светодиодов? Заранее всем спасибо!
Доброго!
Количество подключаемых светодиодов настраивается в рабочем порядке на самом устройстве. Описание есть в разделе “Руководство по эксплуатации”.
Только 180 не кратно 8 каналам. Лучше 176 или 184, а еще лучше в районе 120 =). Чем больше светодиодов подключено, тем медленнее работают алгоритмы.
Спасибо!
Здравствуйте! Вопрос по поводу прошивки: проргаммой AVRDUDEPROG можно прошить, и прошивается только hex, и фьюзы?
Да, я так прошивал, работает
Спасибо!
Здравствуйте! А чем отличаются ленты WS2812BECO Black PCB и WS2812B Black PCB? Спасибо!
Судя по описанию WS2812B ECO это какая-то урезанная версия WS2812B:
– яркость на ~30% меньше;
– не имеет конденсаторов по цепи питания светодиодов;
– в процессе изготовления используется какое-то золото с примесями вместо чистого.
Здравствуйте! 2m 60 IP30 – это сколько диодов будет на 1м? Допускается ли резка ленты на куски и какая кратность? Спасибо!
Доброго! Это будет по 60 светодиодов на 1 метр, т.е. всего 120 светодиодов на 2-х метрах ленты.
Резать можно как угодно, но желательно так, чтобы оставалось количество светодиодов кратно 8.
Ленты можно и параллельно, и последовательно соединять. Главное, чтобы порядок RGB был одинаковый и блок питания позволял.
Добрый день!
В Вашей цветомузыке есть очень полезная опция смены цветового пространства для совместимости с некоторыми лентами на ws2811, учитывая их разнообразие. А как понять, какая именно последовательность цветов выбрана? В контроллерах SPI-лент в режиме установки последовательно устанавливаются цвета красный -зелёный – синий (сначала вся лента должна засветиться красным, затем зелёным и затем синим цветом, дальше нажимаем “SET” – лента помигала, цветовая последовательность записалась в память контроллера).
Здравствуйте! Сейчас правильность цветового пространства можно проверить только на эффекте “радуга”. Цвета должны отображаться в порядке очередности их в радуге, от красного до фиолетового. Поморгать же последовательностью цветов при смене цветового пространства не проблема. Сделаю в новой версии прошивки. Только когда эта самая новая версия будет пока не ясно.
Спасибо
Нашел! Спасибо!
2m 120 IP30 Это в поиске не находится!
Стоп… Все верно, 2m 60 IP30. Я в количестве-метраже ошибся…
Здравствуйте автор! Хочу посоветоваться с заказом светодиодов с сайта aliexpress.com
К сожалению не могу прикрепить скрин. Заказываю следующее: “Испускаемый цвет: WS2812B Black PCB” и “Цвет: 1m 96 IP30”. Это правильно? Спасибо!
Да, то что нужно. =) Будет 96 светодиодов на 1 метр без влагозащиты.
Потом можно еще попробовать 2m 60 IP30, если желание будет. Тоже неплохо смотрится.
Спасибо кстати, хорошая идея! Надо будет потом замутить пару ссылок на товары/магазины которым я доверяю. Чтобы можно было сразу заказать то, что необходимо.
Платы для Dip и SMD надо зеркалить для лут?
Теперь понятно! Запутался в двух статьях здесь и на Вашем сайте. Спасибо!
Уже не помню, но на первый взляд
DIP:
– для [ws2812b_DIP_v1] – надо
– для [ws2812b_DIP_v2] – не надо
SMD: для [ws2812b_TQFP32_SMD_v4] – надо
Для уверенности можете сравнить с фото готовых плат перед ЛУТ.
Да, уже прокрутил Sprint-Layout60 – зеркалим и не зеркалим! Спасибо!
По цифровому каналу понятно. Наверное не правильно выразился! Имелось ввиду развязка по восьми модулям.
Увы, но придется еще уточнить. =) Тут модулей никаких нет… Одна плата и одна лента.
Все светодиоды соединены последовательно и управляются одной шиной данных (цифровым каналом). Светодиод, на котором заканчивается один канал и начинается другой, задается программно (алгоритмом).
Если имелось ввиду видео, то оно уже старое. Там использовались 8 платок по 12 светодиодов на каждую. Они также соединены параллельно. Теперь лучше использовать ленту, т.к. можно в любой момент варьировать количество светодиодов. Число будет всегда кратно 8.
Здравствуйте автор! Хотелось бы получить подробное описание по подключению по каналам светодиодов в Вашей ЦМУ. Заранее благодарен!
Здравствуйте! Что вы имеете ввиду, говоря о “подключении по каналам”? Ведь там всего один канал – цифровой.