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