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

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

Сообщение kalyanzb »

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

Сообщение dosikus »

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

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

Сообщение kalyanzb »

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

Сообщение dosikus »

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

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

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

Сообщение scorpi_0n »

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

Сообщение Galizin »

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

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

Сообщение kalyanzb »

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

Сообщение dosikus »

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

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

Сообщение Galizin »

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

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

Сообщение Galizin »

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

Сообщение scorpi_0n »

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

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