Разветвитель под WS2812
- kalyanzb
- Открыл глаза
- Сообщения: 54
- Зарегистрирован: Чт май 28, 2009 15:46:53
- Откуда: Україна, Тернопільська обл., м. Зборів
Разветвитель под WS2812
Народ нужно решить одну задачу. Помогите с алгоритмом как правильно реализовать...
Суть заключается в создании некого разветвителя на контроллере STM32F030F4P6 для RGB светодиодных лент WS2812
Имеется 4 ленты по 100 светодиодов. Из контроллера с одного выхода идет последовательность импульсов для зажыгания всех 400 диодов. Есть устройство, схема которого приклеплена. На INPUT будет подаватся сигнал после выхода первой ленты. К каждому из трех выходов будет подключена своя лента.
Мне нужно после первой ленты ловить весь оставшийся поток для 300 остальных светодиодов и разбросать этот поток по трем остальным каналам поочередно: 100 в первый выход -> 100 во второй выход -> 100 в третий выход.
Все виходы заведены на PWM-виходы таймеров. Вход тоже заведен на таймер (может быть в Input capture mode).
Вобщем кто имеет опыт работы с WS2812 прошу помощи.
Сигнал на ленты будет подоватся с Ардуинки, с использаванием библиотеки FastLED
Суть заключается в создании некого разветвителя на контроллере STM32F030F4P6 для RGB светодиодных лент WS2812
Имеется 4 ленты по 100 светодиодов. Из контроллера с одного выхода идет последовательность импульсов для зажыгания всех 400 диодов. Есть устройство, схема которого приклеплена. На INPUT будет подаватся сигнал после выхода первой ленты. К каждому из трех выходов будет подключена своя лента.
Мне нужно после первой ленты ловить весь оставшийся поток для 300 остальных светодиодов и разбросать этот поток по трем остальным каналам поочередно: 100 в первый выход -> 100 во второй выход -> 100 в третий выход.
Все виходы заведены на PWM-виходы таймеров. Вход тоже заведен на таймер (может быть в Input capture mode).
Вобщем кто имеет опыт работы с WS2812 прошу помощи.
Сигнал на ленты будет подоватся с Ардуинки, с использаванием библиотеки FastLED
- Реклама
Re: Разветвитель под WS2812
*Facepalm*kalyanzb писал(а): Сигнал на ленты будет подоватся с Ардуинки, с использаванием библиотеки FastLED
1-Соединить все отрезки в одну последовательную цепь ?
2-Реализовать мультиплексирование выхлопа арурдуньи ?
- kalyanzb
- Открыл глаза
- Сообщения: 54
- Зарегистрирован: Чт май 28, 2009 15:46:53
- Откуда: Україна, Тернопільська обл., м. Зборів
Re: Разветвитель под WS2812
Это как вариант плана "Б". Просто у меня есть готовая плата контролера та шо по схеме. Для мультиплексирование нужно апаратно другой девайс городитьdosikus писал(а):2-Реализовать мультиплексирование выхлопа арурдуньи ?
Re: Разветвитель под WS2812
А чем последовательное соединение отрезков не нравится?
-
Мурато Мяуконни
- Прорезались зубы
- Сообщения: 203
- Зарегистрирован: Сб ноя 19, 2016 21:05:48
Re: Разветвитель под WS2812
Это же адресуемые РГБ-светодиоды со сквозным каналом. Соединяйте хоть тыщщу штук последовательно, даташит позволяет 512 в низкоскоростном и 1024 в высокоскоростном режиме с 30 fps. Питание можете распараллелить, а сигнал не надо. Если вы прилепите переходник с распараллеливанием, вы все равно будете поочередно обращаться к каждой из параллельных ветвей.
Подпись убрал вместе с автором. aen
- Реклама
Re: Разветвитель под WS2812
Как я понял, схема и плата не ваша и вам просто нужен колхозный реверсинженеринг. Ну так дерзайте! Вход это TIM1_CH2, а выходы - TIM3_CH1, TIM3_CH2 и TIM3_CH4. Вам понадобится ещё один таймер прицепленный к TIM1 для счёта входных импульсов, по которому и будут переключаться каналы TIM3.kalyanzb писал(а): Это как вариант плана "Б". Просто у меня есть готовая плата контролера та шо по схеме. Для мультиплексирование нужно апаратно другой девайс городить
Re: Разветвитель под WS2812
Как я понимаю делается что то типа креста с светодиодами. В основании находится контроллер на 400 светодиодов. Последовательное соединение не годится, допустим по соображением протяженности. Конец следующего луча оказывается слишком далеко от начала предыдущего.
1. Предлагаю простое последовательное соединение через 1 светодиод в обе стороны луча. Таким образом сигнал дойдет ко края луча а потом вернется в середину и пойдет в следующий луч.
2. Программа наверняка на ардуине и наверняка исходники где то есть. Поместить ардуину не в основание креста а в центр и дописать коммутатор для каждой линии. Тогда управление будет заключатсья в передаче 4 независимых последовательностей на коммутатор. Коммутатор предварительно должен выбрать нужную линию.
3. Можно заметить что на 2 луча креста уже все готово - это обычное последовательное соединение. Можно еще добавить коммутатор, который будет считать до 24*100 или 24*200 и подключать 2 оставшихся луча. Нужно также реализовать распознавание сигнала сброс. Это замечание по методу реализации той штуковины, которую хочет применить топикстартер. Можно заморочится и все сделать на рассыпухе.
ps Я бы хотел посоветовать топикстартеру не рассчитывать, что ему кто то напишет программу. Можно конечно разместить это объявление в разделе "есть работа".
1. Предлагаю простое последовательное соединение через 1 светодиод в обе стороны луча. Таким образом сигнал дойдет ко края луча а потом вернется в середину и пойдет в следующий луч.
2. Программа наверняка на ардуине и наверняка исходники где то есть. Поместить ардуину не в основание креста а в центр и дописать коммутатор для каждой линии. Тогда управление будет заключатсья в передаче 4 независимых последовательностей на коммутатор. Коммутатор предварительно должен выбрать нужную линию.
3. Можно заметить что на 2 луча креста уже все готово - это обычное последовательное соединение. Можно еще добавить коммутатор, который будет считать до 24*100 или 24*200 и подключать 2 оставшихся луча. Нужно также реализовать распознавание сигнала сброс. Это замечание по методу реализации той штуковины, которую хочет применить топикстартер. Можно заморочится и все сделать на рассыпухе.
ps Я бы хотел посоветовать топикстартеру не рассчитывать, что ему кто то напишет программу. Можно конечно разместить это объявление в разделе "есть работа".
- kalyanzb
- Открыл глаза
- Сообщения: 54
- Зарегистрирован: Чт май 28, 2009 15:46:53
- Откуда: Україна, Тернопільська обл., м. Зборів
Re: Разветвитель под WS2812
Все правильно вы понимаете.Galizin писал(а):Как я понимаю делается что то типа креста с светодиодами. В основании находится контроллер на 400 светодиодов. Последовательное соединение не годится, допустим по соображением протяженности. Конец следующего луча оказывается слишком далеко от начала предыдущего
Но тут у меня проблема во времени переключения с одного канала на другой. Время од конца одного импульса до начала другого если при нуле = 0,85мкс. а если при еденице = 0,45мкс. Тоесть мне нужно в этот интевал вложится. И при этом нужно проверить что пришло столько-то импульсов, и если это "столько-то" = то что мне нужно, то тогда нужно переключать канал. А это все займёт очень много времени
Re: Разветвитель под WS2812
Если код для ардудурилки вы пишете свой, то нет ни каких проблем.kalyanzb писал(а): Но тут у меня проблема во времени переключения с одного канала на другой. Время од конца одного импульса до начала другого если при нуле = 0,85мкс. а если при еденице = 0,45мкс. Тоесть мне нужно в этот интевал вложится.
Выпленули на 100 ws'ок, переключили выхлоп, выпленули на 100 ws'ок и т.д. главное во время переключения уложиться в 50мс.
То же самое и для stm32 , но для одного а не г.связки с ардуньей...
Re: Разветвитель под WS2812
Поставьте в качестве коммутатора 2 2 входовых элемента AND. Тогда контроллеру нужно только досчитать до 200 и переключить одну из своих ног на коммутаторе, потом досчитать до 300 и переключить вторую ногу коммутатора. Считать таймером. Так что от контроллера будет использоваться только 1 таймер. Ну еще нужно будет определить сброс. Думаю за 50 микросекунд определить паузу не составит проблем, например вторым таймером. Коммутатор можно взять из HCT серии например для согласования уровней.
Я написал примерный алгоритм как я бы делал. Для этого нужно будет изменить схему. Возможно можно придумать и что то другое. Возможно даже за пару вечеров можно придумать, но стоимость переделки платы - 1 вечер + 2 бакса, игра не стоит свеч. Я вижу, что спортивного интереса нет, иначе бы звучали несколько другие вопросы.
Если же интерес спортивный, то читать про Timer Link feature.
Я написал примерный алгоритм как я бы делал. Для этого нужно будет изменить схему. Возможно можно придумать и что то другое. Возможно даже за пару вечеров можно придумать, но стоимость переделки платы - 1 вечер + 2 бакса, игра не стоит свеч. Я вижу, что спортивного интереса нет, иначе бы звучали несколько другие вопросы.
Если же интерес спортивный, то читать про Timer Link feature.
Re: Разветвитель под WS2812
Можно использовать PWM input mode & DMA на входе и DMA и PWM на выходе. Тогда задержку можно скомпенсировать буфером в памяти. Схема может остаться как в оригинале.
Re: Разветвитель под WS2812
Полностью избавиться от неё таким образом всё равно не получится. На стыках она присутствовать всё равно будет. Можно её конечно нивелировать до жалких нескольких тактов, но это уже без PWM input mode. Хотя, как по мне, это всё и даром не нужно.


