Меню Закрыть

Содержание

Вступление


Восьмиканальная цветомузыкальная установка для самостоятельной сборки на микроконтроллере ATmega328p, с использованием элементов поверхностного монтажа (SMD) и микросхем в DIP (Dual In-line Package) корпусе.

Сложность:
Средний уровень

Для реализации данного устройства понадобятся навыки изготовления печатных плат, монтажа SMD компонентов и “прошивания” микроконтроллеров, а так же наличие программатора для AVR микроконтроллеров. 

Пример работы

Руководство по эксплуатации

Принципиальная схема

Устройство можно поделить на несколько основных блоков:

1. Микроконтроллер ATmega328p с обвязкой и элементы управления / индикации устройства.


2. Фильтр низких частот на базе операционного усилителя (ОУ) LM358N

Печатная плата

Плату разводил из расчета, что элементы управления и индикации будут прикручиваться/встраиваться в корпус устройства, а соединяться с основной платой будут посредством штыревых разъемов. Тактовые кнопки были предназначены для предварительного бескорпусного тестирования. Особой необходимости их установки нет.

Варианты разводки плат:

Разводка 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)

Появился еще один вариант разводки. В данном исполнении плата была максимально уменьшена в размере без потери функционала. Работоспособность данной разводки успешно проверена на железе.

Перечень компонентов

РезисторыКоличествоКонденсаторыКоличествоДругоеКоличество
Итого:14123
100 kΩ11.5 nF1ATmega328p1
10 kΩ2100 nF = 0.1 μF5LM358n1
150 Ω110 nF1Quartz 16 (20) MHz1
1 kΩ222 pF2
2.4 kΩ327 nF1
220 kΩ2470 nF = 0.47 μF1
330 Ω3470 μF 16v1

Прошивка

Светодиодные ленты WS2812B

41 комментарий

  1. FreeWind
    FreeWind

    Приветствую посетителей и автора!
    Столкнулся с проблемой.
    НЕХ загруженный в ардуину прекрасно работает. А вот на DIP не могу запустить.
    На 27 ноге (D0) ATmega328P как и положено идут серии импульсов для адресации, но лента их не определяет. Всё что я имею, это включенные на яркий белый 24 пиксела. Если в мегу залить например НЕХ для 8 диодов, то просто будут гореть белым все 8. При этом мега реагирует на кнопки и переключает как и положено светодиоды индикации режима.
    Сравнил временные интервалы импульсов у Ардуины и у ATmega328P, так вот у меги они гораздо более длинные по времени. Перепробовал несколько микросхем, у всех результат одинаковый. Менял кварцы, ёмкости, всё одно…
    Понимаю, что зубы по интернету не лечат, но всёже… Может у кого возникнет идея куда копать?

    • m1x
      m1x

      Привет!
      Ну если лента на одном работает, а на другом нет, то значит дело не в ленте xD.
      Странно конечно, но ардуина эта та же мега. Разница только в том, что на ардуине с завода выставлены фьюзы, а на меге надо выставлять вручную. Возможно загвоздка там.
      Обрати внимание на бит CKDIV8. Это делитель тактовой частоты на 8 и по умолчанию он включен. Его надо выключить.
      С включенным как раз длинна импульсов будет в 8 раз больше положенного.

      • FreeWind
        FreeWind

        Благодарю Вас за ответ!
        Да, действительно интуитивно понятно, что дело в тактовой частоте. На ногах кварца что-то более похожее на помеху в 50 гц.
        Начал рыть в сторону фьюзов. Перечитал кучу статей, что за что отвечает. Разобрался с калькулятором, проверил все галки на вашем скрине и тем, что по логике должно быть. Ну просто нЕ к чему прицепиться. Но кварц-то не работает!
        Наконец нашел в чём ошибка… Проверил прошитые фьюзы, а там всё по умолчанию… ))
        У меня это первый опыт работы с AVRDUDE_PROG, сразу не догадался что фьюзы нужно прошивать отдельно.
        Прошил как нужно и кварцованый генератор заработал.
        Вот такой ляп случился ))
        Сейчас всё работает как положено. Полностью согласен, что это одна из лучших, если не самая лучшая цветомузыка. Благодарю за возможность воспользоваться прошивкой!
        Делать печатную плату мне показалось слишком заморочным. Схемка простая и в ней не так уж много деталей. Поэтому собирал как в Советском НИИ “на слепыше”, луженой жилкой и проводом МГТФ. Так гораздо быстрее.

  2. bronepoezd
    bronepoezd

    Добрый день. Есть вопрос. Подключил матрицу 16*16 256 светодиодов. Но “расширяется” только до 240, не горит одна полоска из 16 штук. “Допилите” пожалуйста прошивку до новой версии, чтобы работало на 256 диодов

      • m1x
        m1x

        Привет! Код лежит в одном архиве вместе с прошивкой в папке “Sources”.
        Мне известны несколько ошибок в работе и есть пару предложений от пользователей сайта. Поэтому уже достаточно материала для выпуска новой версии, но пока тупо нет времени. =)
        Думаю на выходных получится немного покопаться в коде по поводу 256.

      • m1x
        m1x

        Максимально количество светодиодов задает переменная MAXLEDS в mydefs.h, но возможно что-то перестанет работать или не будет работать вовсе =). Кое-где придется переводить 8-и битные массивы на более емкие.

    • m1x
      m1x

      Привет!
      Весь код написан в Atmel Studio, поэтому исходники можно ковырять только там.
      Как скетч для Arduino IDE данный исходный код использовать не получится.

  3. Magali2012
    Magali2012

    Здравствуйте! Собрал цму с лентой на 144 светодиода. с последней прошивкой горят только 24, при регулировке количества регулируется от 8 до 24, с ранней версией прошивки на 144 светодиода всё нормально, горит вся лента

    • m1x
      m1x

      Доброго!
      Количество подключаемых светодиодов настраивается в рабочем порядке на самом устройстве. Описание есть в разделе “Руководство по эксплуатации”.
      Только 180 не кратно 8 каналам. Лучше 176 или 184, а еще лучше в районе 120 =). Чем больше светодиодов подключено, тем медленнее работают алгоритмы.

    • m1x
      m1x

      Судя по описанию WS2812B ECO это какая-то урезанная версия WS2812B:
      – яркость на ~30% меньше;
      – не имеет конденсаторов по цепи питания светодиодов;
      – в процессе изготовления используется какое-то золото с примесями вместо чистого.

    • m1x
      m1x

      Доброго! Это будет по 60 светодиодов на 1 метр, т.е. всего 120 светодиодов на 2-х метрах ленты.
      Резать можно как угодно, но желательно так, чтобы оставалось количество светодиодов кратно 8.
      Ленты можно и параллельно, и последовательно соединять. Главное, чтобы порядок RGB был одинаковый и блок питания позволял.

  4. SP634
    SP634

    Добрый день!
    В Вашей цветомузыке есть очень полезная опция смены цветового пространства для совместимости с некоторыми лентами на ws2811, учитывая их разнообразие. А как понять, какая именно последовательность цветов выбрана? В контроллерах SPI-лент в режиме установки последовательно устанавливаются цвета красный -зелёный – синий (сначала вся лента должна засветиться красным, затем зелёным и затем синим цветом, дальше нажимаем “SET” – лента помигала, цветовая последовательность записалась в память контроллера).

    • m1x
      m1x

      Здравствуйте! Сейчас правильность цветового пространства можно проверить только на эффекте “радуга”. Цвета должны отображаться в порядке очередности их в радуге, от красного до фиолетового. Поморгать же последовательностью цветов при смене цветового пространства не проблема. Сделаю в новой версии прошивки. Только когда эта самая новая версия будет пока не ясно.

  5. samand587
    samand587

    Здравствуйте автор! Хочу посоветоваться с заказом светодиодов с сайта aliexpress.com
    К сожалению не могу прикрепить скрин. Заказываю следующее: “Испускаемый цвет: WS2812B Black PCB” и “Цвет: 1m 96 IP30”. Это правильно? Спасибо!

    • m1x
      m1x

      Да, то что нужно. =) Будет 96 светодиодов на 1 метр без влагозащиты.
      Потом можно еще попробовать 2m 60 IP30, если желание будет. Тоже неплохо смотрится.

    • m1x
      m1x

      Спасибо кстати, хорошая идея! Надо будет потом замутить пару ссылок на товары/магазины которым я доверяю. Чтобы можно было сразу заказать то, что необходимо.

    • m1x
      m1x

      Увы, но придется еще уточнить. =) Тут модулей никаких нет… Одна плата и одна лента.
      Все светодиоды соединены последовательно и управляются одной шиной данных (цифровым каналом). Светодиод, на котором заканчивается один канал и начинается другой, задается программно (алгоритмом).

      • m1x
        m1x

        Если имелось ввиду видео, то оно уже старое. Там использовались 8 платок по 12 светодиодов на каждую. Они также соединены параллельно. Теперь лучше использовать ленту, т.к. можно в любой момент варьировать количество светодиодов. Число будет всегда кратно 8.

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

Translate »