120-Adjusty strip — продвинутый индикатор уровня на WS2812B

Автор: | 05.08.2015

Продолжая тему «Подстраиваемого светодиода» и преследуя цель опробовать в деле умную светодиодную ленту на базе WS2812B (NeoPixels) родилось новое устройство — Adjusty strip — продвинутый индикатор уровня!

Ленту на пробу мне предоставил магазин DiyLab.com.ua Если Вам понравится устройство и Вы захотите его повторить, то ленту в Украине можно приобрести в этом-же магазине — ссылка на ленты. Для России ее можно приобрести еще у одного моего партнера TIXER.RU (обещались в ближайшее время пополнить ассортимент).


Переходим к конструкции.

Схема элементарна – на несколько деталек и ATtyni13. Надеюсь, знаете, как записать в МК прошивку? Нет? Тогда Вам сюда.

Длина ленты по умолчанию — 30 пикселей. Количество пикселей отображения можно изменить, указав в исходнике значение константы «Number_Pixels» равное реальному количеству пикселей  (эффекты автоматически пересчитаются под новое значение).

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


Устройство
– визуально отображает на ленте уровень входного сигнала. Это, своего рода, большой светодиодный столбик.

Индикатор умеет работать в 9-ти режимах отображения входного уровня. Для перебора режимов нужно нажимать на кнопку «Режим». Выбранный режим запоминается в энергонезависимую память и при повторном старте устройства будет автоматически активирован.

Режимы:
0 – Off – лента выключена
1 – Simple – обычная одноцветная полоса
2 – Bar – линейка от синего к белому по палитре
3 – Inv_Bar – линейка от белого к синему по палитре
4 – Color – вся линейка подсвечивается одним цветом в зависимости от длины
5 – Point – цветная точка, отображающая уровень
6 – Solid_Color – все пиксели горят цветом, зависящим от величины уровня
7 – Fire – стилизованный огонь — чем больше уровень, тем больше пламя
8 – Chaos – хаотичные засветки пикселей (изменяются от уровня)
9 – Scroll – сдвиг уровня по полосе

Устройство, кроме того, что отображает уровень входного сигнала, еще может работать в автоматическом режиме. Для этого нужно замкнуть на землю переключатель «Демо». В Демо-режиме уровень устройства меняется случайным образом автоматически.

Так как устройство элементарно, для демонстрации его возможностей я собрал его на макетке, за пару минут:

И вот что получилось:



Материалы для сборки устройства:
120-Adjusty_WS2812B.zip - Материалы для сборки устройства

Область применения индикатора уровня Adjusty strip:

— Первое, что приходит на ум – визуализация музыки.
— Еще, думаю здорово будет смотреться, если им подсвечивать тахометр в машине (в зависимости от оборотов подсветка будет менять цвет).
— Дальше – подсветка ручек регуляторов уровня.
— Еще создание оригинальных светильников для автономной работы в демо-режиме (режим огня смотрится очень эффектно даже сам по себе).
— Визуализация температуры (например, можно задействовать дешевый аналоговый градусник LM35) …


Обновление 2016
viktor001 проделал большую работу по подключению звука к устройству. Получилось здорово. Прошивка тоже немного изменена — смотрите в архиве.


Схема к индикатору получилась до безобразия простой и собственно соответствует поставленной задаче — простата, легкодоступные компоненты и 100 процентная повторяемость. При правильной сборке работает сразу. Вся настройка сводится к выставлению уровней компрессии и выхода микрофонного усилителя. Главное и единственное требование — не выставлять усиление по максимуму. Наличие компрессора не является таблеткой от всех болезней и при работе от микрофона всё же имеет свои границы регулирования. Можно конечно «зажать» сигнал регулятором компрессии, но тогда страдает подвижность индикации. Лучшим средством является предусмотренный регулятор усиления Ку на первом операционнике фильтра нч. При работе от линейного входа, компрессор замечательно справляется без дополнительных регулировок.
С питанием схемы всё ещё проще. Выбор блока питания исходил от требования ленты WS2812B, точнее от потребления тока, плюс небольшой запас. 10 вольт получаем через DC/DC преобразователь.

Схема к индикатору получилась до безобразия простой и собственно соответствует поставленной задаче — простата, легкодоступные компоненты и 100 процентная повторяемость. При правильной сборке работает сразу. Вся настройка сводится к выставлению уровней компрессии и выхода микрофонного усилителя. Главное и единственное требование — не выставлять усиление по максимуму. Наличие компрессора не является таблеткой от всех болезней и при работе от микрофона всё же имеет свои границы регулирования. Можно конечно «зажать» сигнал регулятором компрессии, но тогда страдает подвижность индикации. Лучшим средством является предусмотренный регулятор усиления Ку на первом операционнике фильтра нч. При работе от линейного входа, компрессор замечательно справляется без дополнительных регулировок.С питанием схемы всё ещё проще. Выбор блока питания исходил от требования ленты WS2812B, точнее от потребления тока, плюс небольшой запас. 10 вольт получаем через DC/DC преобразователь.

Кстати, что бы первые пиксели не светились в паузе между треками, на вход МК надо повесить резистор на 100к относительно массы. Я когда рисовал схему упустил этот момент.


В архиве есть печатки усилителей. Расположение деталей микрофонного усилителя я не стал указывать. Поэтому прилагаю плату МУ как отдельный блок. На ней всё указано. Обратите внимание на перемычки.

vu_meter_by_viktor001.zip - Индикатор уровня от viktor001


(Visited 10 965 times, 6 visits today)

120-Adjusty strip — продвинутый индикатор уровня на WS2812B: 97 комментариев

  1. viktor001

    Тоесть выводы РВ1 и РВ2 можно запаралелить с другим МК и вешать на соотвествующую кнопку? Разницы нет если использовать ATTINY13А? В продаже только с буквой А

  2. GetChiper Автор записи

    Да, выводы кнопок можно параллелить. Разницы в ATtiny13А нет, можно использовать.

  3. Denis147

    Добрый день! Спасибо за разработку! Начал эксперементировать и сталкнулся с такой проблемой, эффекты хорошо работают только на 30 пикселях, подключал кольцо с 24 пикселями W2812 светодиоды как хотят так и мигают на кнопку почти не реагируют, подключал ленту на 300 пикселей , такая же история светодиоды могут гореть в конце или в начале ленты хаотично. В программе константу менял на соответствующее число пикселей но работает корректно только на 30. В чем может быть проблема?

  4. GetChiper Автор записи

    Отлично! Я давно заметил некоторые возможные баги и исправил их, но никак руки не доходили обкатать в устройстве прошивку.
    Давайте Вы попробуете и отпишитесь что-как — вместе отладим прошивку.
    Файлы на обкатку здесь: http://www.forum.getchip.net/viewtopic.php?f=7&t=676
    Отзывы нужно кидать в тему на форуме. Как все обкатается я заменю файлы в статье

  5. Valeriy

    Здравствуйте,Евгений.Прошивка Adjusty ws2812b source auto effectprobe 006.rar(20.75кБ).Переключатель ДЕМО замкнут,кнопка делает перебор режимов.
    При удержании идет автосмена режимов.Переключатель разомкнут-начинает мигать по разному,не понятно.Подаю на вход сигнал с динамика 10вт-никакой реакции на музыку.
    В чем причина? Подскажите.Спасибо за ответ

  6. Valeriy

    Здравствуйте Евгений.Очень прошу сделать модификацию прошивки
    Aljusty WS2812B..source base.zip(22,12kb) под 20 пикселей WS2812B.
    Исходники я править не умею.Спасибо за ответ.

  7. GetChiper Автор записи

    Исходник из этой статьи или модификация с форума?

  8. Valeriy

    Да,из этой статьи

  9. GetChiper Автор записи

    ОК. на выходных сделаю.

  10. Valeriy

    Спасибо за прошивку.Работает,кнопка Демо разомкнута,идет выбор программ.Нет режима Point.Кнопка Демо замкнута,нет сигнала,но горят первый и второй светодиоды, третий- в полнакала.На музыку реагирует,но лента полностью не гаснет.Как это устранить.Спасибо. Да,последнее видео от virtor001-класс!!!

  11. Juris

    @Valeriy
    А это про какое видео где, скажите пожалуйста? Я заблудился 🙂

  12. Valeriy

    Доброго дня всем.Фильтр НЧ-какие номиналы резисторов должны стоять на плате.
    Транзисторы на плате BC560- на схеме BC547.Что еще изменить/дополнить на
    плате. Спасибо за ответ.

  13. viktor001

    Да, действительно пропустил пару деталей. Номиналы на плате можно легко сравнить с схемой. Транзистор брал по маркировке, в сПлане не было ВС547. Давайте по порядку. Плату рисовал под то, что было под рукой. Поэтому получилась смесь SMD и DIP. Транзисторы ВС547. Но в смд нет 547-ых, поэтому ставил аналогв смд корпусе, помоему ВС847. Резисторы — тот, что внизу с лева (между +10 и колектор) -3к. Между массой и эмитером второго транзистора — 1к. Возле МК есть смд площадка, вход мк 3 нога -100к на массу.
    Теперь два резистора возле ТЛ-ки (указаны как 10к). Тот что между 1 и 2 ногами — это подстроечный на 4.7к. А тот, что с ноги 2 через конденсатор на массу — 1.8к. Конденсатор соответственно 2.2мкф — можно и 100нано. Ещё выше кондесатор фильтра, тоже 100нано. Смд площадки по питанию, для конденсаторов — 100нано. Вроде всё.

  14. Valeriy

    Уважаемый Viktor 001.Спасибо за детальный ответ.Буду пробовать,что-то застрял.
    Очень хочу повторить.

  15. viktor001

    Пробуй! Должно заработать сразу и без бубнов. Настраивать схему всё же советую сначало без МК. Транзисторный ключ питается от 10 вольт, мало ли что.

  16. viktor001

    Ещё один совет. СМД микросхемы впаивать в последнюю очередь и строго соблюдая температурный режим.

  17. Денис-Рыболовлев

    Здравствуйте все!!Собрал данную схему все работает с первого раза восторг прямо скажу неописуемый!
    Есть вопрос по модификации прошивки
    Реально сделать так чтоб при подаче единички на вход выбранный эффект повторялся два раза и потом вся лента загоралась белым.,а второй кнопкой которая Demo регулировалась скорость эффекта.Хочу применить такое на машине в ангельских глазках
    Длинна ленты 30 пикселей

  18. admin Автор записи

    Это возможно сделать. Но заняться этим я смогу не раньше чем через неделю — вторую.

  19. Денис-Рыболовлев

    Евгений огромное спасибо за то что откликнулись на мою просьбу.По времени я не тороплюсь и вас торопить не стану.Могу ждать столько сколько потребуется.

  20. Valeriy

    viktor001
    .Какой тип микрофона применен в схеме. Как правильно настроить М У на LM358 и как его проверить.Если подключить к компьютеру вход LINE — что в схеме убрать

  21. viktor001

    Valeriy
    Я использую обычные капсульные. Если есть от сотового то лучше его использовать. Вместо LM358 лучше TL072, но если нету то не принципиально. При наличии осцилографа настраивается очень просто. Регулятором громкости выставляем максимум по амплитуде. Потом регулятором компрессии немного зажимаем амплитуду и пробуем менять громкость. Регулировка считается идеальной когда при любой громкости имеем устойчевый неискажонный сигнал на выходе МУ. Собственно на этом и всё, дальнейших настроек в моём случае не потребовалось. На всякий случай в схеме фильтра предусмотрен выносной потенцинометр для усиления/ослабления сигнала. Когда всё настроите и проверите, установите МК в плату и подключите пиксельную ленту. Уровень отображения сигнала на ленте выберите примерно в третьей части ленты (примерно 20 пиксель). Если уровень слишком большой или маленький то надо подкоректировать усиление. Если на подвижном треке нет динамики то компрессор слишком зажат. Я собирал и разбирал эту схему трижды и никаких проблемм не было, работала сразу. В схеме предусмотрен вход от линейного выхода ПК. Указан как LINE. На плате не предусмотрено подключение линейного входа. Поэтому надо добавить резистор и конденсатор. Возможно резистор придётся подбирать, зависит от вашей звуковой карты.

  22. Жорик

    Добрый вечер.
    а можно использовать ленту WS2811?

  23. admin Автор записи

    Попробуйте.
    Если не заработает я сделаю модификацию.

  24. admin Автор записи

    main.hex

  25. Корней-Чуйковский

    Уважаемый автор, а возможно адаптировать программу под Мегу 8? Тинек к сожалению нет в наличии(((

  26. admin Автор записи

    Слишком много менять придется.
    Не хочется делать одно и тоже устройство дважды…

  27. EvgenZP

    Добрый вечер. Собрал по схеме Viktor001 и с его прошивкой. Хорошо работает при количестве пикселей=30. При других значениях идет мерцание и на звук не реагирует. Пересмотрев исходник нашел несколько мест, где указанно число 30 и 29. Заменил их на Number_pixels и Number_pixels-1.
    После этого индикатор устойчиво работает до 42 пикселей, а дальше опять мерцание. Может ли сказываться нехватка ОЗУ контроллера Attiny13? Переход на Attiny45/85 сможет спасти ситуацию?

  28. GetChiper Автор записи

    Добрый день.
    Да, в некоторых эффектах используется буфер в озу и он небольшой.
    Но проблемы могут быть только с некоторыми сложными эффектами — простые должны работать нормально.
    Хотя на большом количестве пикселей я не проверял устройство.

  29. Евгений

    Добрый день.
    Вчера перевел исходник на Attiny85, но эффекта это не дало.
    Так же устойчивая работа до 42 пикселей и не переключаются режимы.
    Хотя в демо режиме все 60 пикселей работают.

  30. GetChiper Автор записи

    Во всех режимах плохо?
    Нужно смотреть. Подозреваю буфер неправильно работает.
    Или с АЦП значение неправильно конвертируется…

  31. viktor001

    EvgenZP, а на 40 пикселей на всех режимах стабильно работает? У меня на некоторых режимах возникало «дублирование». Вот на этом видео всё видно https://www.youtube.com/watch?v=UExhbD8HBdo
    В этой теме GetChiper помогал мне побороть эту проблемку http://www.forum.getchip.net/viewtopic.php?f=24&t=712&hilit=Mod%23120&start=30
    И не могли бы Вы выложить Ваш вариант прошивки, ну хотя бы в туже тему.
    Если интересно то к этому индикатору есть прошивка для управления пультом. Всё руки не доходят выложить на форум схему с описанием.

  32. Антоха

    Приветствую. Собрал по упрощённой схеме, без музыкального входа. Хотел проверить только демо-режим. http://images.vfl.ru/ii/1501528114/615caeb6/18093464.jpg
    Заливал прошивку main.hex из архива
    120-Adjusty_WS2812B.zip. При подаче питания загораются белым цветом все светодиоды в ленте и никак не реагируют на переключение кнопки «демо». Может ли прошивка быть битой?

  33. GetChiper Автор записи

    Привет!
    Нет, прошивка нормальная — ее много раз опробовали — так что причина не в этом.
    Фьюзы правильно выставили?

    На форуме есть модификации этого устройства — посмотрите еще там
    http://www.forum.getchip.net/search.php?keywords=Mod%23120&terms=all&author=&sc=1&sf=titleonly&sk=t&sd=d&sr=posts&st=0&ch=300&t=0&submit=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA

  34. Антоха

    Спасибо за ответ. Фьюзы, вообще, не выставлял. Прошивал программатором ChipProg LPT. Раньше, другие самоделки когда делал, прошивал Attiny13 без проблем. Когда отсоединяю провод с 5-ой ноги микроконтроллера перед подачей питания, то белыйм светодиоды не загораются. Значит код белого цвета передаётся. Попробую другие прошивки.

  35. Антоха

    Вообщем, фьюзы выставил такие же в архиве 120-Adjusty_WS2812B в файле fuses.png, а прошивку брал из архива vu_meter_by_viktor001.zip Может ли из-за этого не работать. Просто теперь ничего не происходит. Если раньше, хоть код белого цвета передавался, то теперь ничего вообще не происходит.

  36. Антоха

    может подскажите. Программатор ChipProg LPT. Для Attiny13A есть три режима программирования «Attiny13A», «Attiny13A ISP HV Mode» и «Attiny13A ISP Mode». Какой режим выбирать?

  37. Антоха

    загружаю код viktor001 хоть с конфигурационным словом по умолчанию, хоть с вашими настройками, как на картинке fuses.png не работает. В первом случае вся лента белым загорается, а это означает, что код белого цвета передаётся, во втором случае ничего не происходит вообще. http://images.vfl.ru/ii/1502221466/d2a4bf91/18185038.jpg

  38. GetChiper Автор записи

    Даже не знаю что еще может быть… Я склоняюсь к неправильно установленным фьюзам. Если они правильны, тогда может саму ленту проверить на заведомо рабочем устройстве?

  39. viktor001

    Антоха, у Вас в конфигурации CKDIV8 помечена галочкой. По моему её надо убрать.

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