Разветвитель под WS2812

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
kalyanzb
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт май 28, 2009 15:46:53
Откуда: Україна, Тернопільська обл., м. Зборів

Разветвитель под WS2812

Сообщение kalyanzb »

Народ нужно решить одну задачу. Помогите с алгоритмом как правильно реализовать...
Суть заключается в создании некого разветвителя на контроллере STM32F030F4P6 для RGB светодиодных лент WS2812
Имеется 4 ленты по 100 светодиодов. Из контроллера с одного выхода идет последовательность импульсов для зажыгания всех 400 диодов. Есть устройство, схема которого приклеплена. На INPUT будет подаватся сигнал после выхода первой ленты. К каждому из трех выходов будет подключена своя лента.
Мне нужно после первой ленты ловить весь оставшийся поток для 300 остальных светодиодов и разбросать этот поток по трем остальным каналам поочередно: 100 в первый выход -> 100 во второй выход -> 100 в третий выход.
Все виходы заведены на PWM-виходы таймеров. Вход тоже заведен на таймер (может быть в Input capture mode).
Вобщем кто имеет опыт работы с WS2812 прошу помощи.
Сигнал на ленты будет подоватся с Ардуинки, с использаванием библиотеки FastLED
1.jpg
(107.02 КБ) 376 скачиваний
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Разветвитель под WS2812

Сообщение dosikus »

kalyanzb писал(а): Сигнал на ленты будет подоватся с Ардуинки, с использаванием библиотеки FastLED
*Facepalm*

1-Соединить все отрезки в одну последовательную цепь ?
2-Реализовать мультиплексирование выхлопа арурдуньи ?
Реклама
Аватара пользователя
kalyanzb
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт май 28, 2009 15:46:53
Откуда: Україна, Тернопільська обл., м. Зборів

Re: Разветвитель под WS2812

Сообщение kalyanzb »

dosikus писал(а):2-Реализовать мультиплексирование выхлопа арурдуньи ?
Это как вариант плана "Б". Просто у меня есть готовая плата контролера та шо по схеме. Для мультиплексирование нужно апаратно другой девайс городить
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Разветвитель под WS2812

Сообщение dosikus »

А чем последовательное соединение отрезков не нравится?
Реклама
Эиком - электронные компоненты и радиодетали
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Разветвитель под WS2812

Сообщение Мурато Мяуконни »

Это же адресуемые РГБ-светодиоды со сквозным каналом. Соединяйте хоть тыщщу штук последовательно, даташит позволяет 512 в низкоскоростном и 1024 в высокоскоростном режиме с 30 fps. Питание можете распараллелить, а сигнал не надо. Если вы прилепите переходник с распараллеливанием, вы все равно будете поочередно обращаться к каждой из параллельных ветвей.
Подпись убрал вместе с автором. aen
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Разветвитель под WS2812

Сообщение scorpi_0n »

kalyanzb писал(а): Это как вариант плана "Б". Просто у меня есть готовая плата контролера та шо по схеме. Для мультиплексирование нужно апаратно другой девайс городить
Как я понял, схема и плата не ваша и вам просто нужен колхозный реверсинженеринг. Ну так дерзайте! Вход это TIM1_CH2, а выходы - TIM3_CH1, TIM3_CH2 и TIM3_CH4. Вам понадобится ещё один таймер прицепленный к TIM1 для счёта входных импульсов, по которому и будут переключаться каналы TIM3.
Реклама
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Разветвитель под WS2812

Сообщение Galizin »

Как я понимаю делается что то типа креста с светодиодами. В основании находится контроллер на 400 светодиодов. Последовательное соединение не годится, допустим по соображением протяженности. Конец следующего луча оказывается слишком далеко от начала предыдущего.
1. Предлагаю простое последовательное соединение через 1 светодиод в обе стороны луча. Таким образом сигнал дойдет ко края луча а потом вернется в середину и пойдет в следующий луч.
2. Программа наверняка на ардуине и наверняка исходники где то есть. Поместить ардуину не в основание креста а в центр и дописать коммутатор для каждой линии. Тогда управление будет заключатсья в передаче 4 независимых последовательностей на коммутатор. Коммутатор предварительно должен выбрать нужную линию.
3. Можно заметить что на 2 луча креста уже все готово - это обычное последовательное соединение. Можно еще добавить коммутатор, который будет считать до 24*100 или 24*200 и подключать 2 оставшихся луча. Нужно также реализовать распознавание сигнала сброс. Это замечание по методу реализации той штуковины, которую хочет применить топикстартер. Можно заморочится и все сделать на рассыпухе.

ps Я бы хотел посоветовать топикстартеру не рассчитывать, что ему кто то напишет программу. Можно конечно разместить это объявление в разделе "есть работа".
Аватара пользователя
kalyanzb
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт май 28, 2009 15:46:53
Откуда: Україна, Тернопільська обл., м. Зборів

Re: Разветвитель под WS2812

Сообщение kalyanzb »

Galizin писал(а):Как я понимаю делается что то типа креста с светодиодами. В основании находится контроллер на 400 светодиодов. Последовательное соединение не годится, допустим по соображением протяженности. Конец следующего луча оказывается слишком далеко от начала предыдущего
Все правильно вы понимаете.
Но тут у меня проблема во времени переключения с одного канала на другой. Время од конца одного импульса до начала другого если при нуле = 0,85мкс. а если при еденице = 0,45мкс. Тоесть мне нужно в этот интевал вложится. И при этом нужно проверить что пришло столько-то импульсов, и если это "столько-то" = то что мне нужно, то тогда нужно переключать канал. А это все займёт очень много времени
WS2812-i-STM32Cube.png
(71.17 КБ) 473 скачивания
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Разветвитель под WS2812

Сообщение dosikus »

kalyanzb писал(а): Но тут у меня проблема во времени переключения с одного канала на другой. Время од конца одного импульса до начала другого если при нуле = 0,85мкс. а если при еденице = 0,45мкс. Тоесть мне нужно в этот интевал вложится.
Если код для ардудурилки вы пишете свой, то нет ни каких проблем.
Выпленули на 100 ws'ок, переключили выхлоп, выпленули на 100 ws'ок и т.д. главное во время переключения уложиться в 50мс.

То же самое и для stm32 , но для одного а не г.связки с ардуньей...
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Разветвитель под WS2812

Сообщение Galizin »

Поставьте в качестве коммутатора 2 2 входовых элемента AND. Тогда контроллеру нужно только досчитать до 200 и переключить одну из своих ног на коммутаторе, потом досчитать до 300 и переключить вторую ногу коммутатора. Считать таймером. Так что от контроллера будет использоваться только 1 таймер. Ну еще нужно будет определить сброс. Думаю за 50 микросекунд определить паузу не составит проблем, например вторым таймером. Коммутатор можно взять из HCT серии например для согласования уровней.

Я написал примерный алгоритм как я бы делал. Для этого нужно будет изменить схему. Возможно можно придумать и что то другое. Возможно даже за пару вечеров можно придумать, но стоимость переделки платы - 1 вечер + 2 бакса, игра не стоит свеч. Я вижу, что спортивного интереса нет, иначе бы звучали несколько другие вопросы.
Если же интерес спортивный, то читать про Timer Link feature.
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Разветвитель под WS2812

Сообщение Galizin »

Можно использовать PWM input mode & DMA на входе и DMA и PWM на выходе. Тогда задержку можно скомпенсировать буфером в памяти. Схема может остаться как в оригинале.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Разветвитель под WS2812

Сообщение scorpi_0n »

Полностью избавиться от неё таким образом всё равно не получится. На стыках она присутствовать всё равно будет. Можно её конечно нивелировать до жалких нескольких тактов, но это уже без PWM input mode. Хотя, как по мне, это всё и даром не нужно.
Ответить

Вернуться в «ARM»