Какой выбрать мк для ws2812b
- Войдите на сайт для отправки комментариев
Втр, 12/01/2021 - 07:45
Всем доброго времени суток. Имеется несколько светодиодных лент Суммарное количество светодиодов будет ~700 штук. Нужно реализовать контроллер управления. В наличии есть arduino nano, arduino mega, stm32f103. Изначально пробовал писать всё в среде разработки arduino. Но в случае с atmega328 и stm32 удалось зажечь около 600 светодиодов. Atmega2560 же спокойно завела 900 светодиодов (больше в наличии просто не было), но она будет избыточна в данном проекте. Пробовал писать на чистом c++ в atmel studio на atmega328, но количество светодиодов в итоге не смог увеличить. Какой мк можно использовать для данного проекта?
64 или 128 мега.
Количество светодиодов от МК не зависит совсем. Хоть миллионы можно зажечь, при правильном подходе.От МК зависит программа, которую ты не удосужился упомянуть.
Ну, вообще-то библиотеки, которые работают с ws2812, обычно используют, как не трудно догадаться, по 3 байта на светодиод. Ну а дальше - арифметику в школе проходили?
Ну а так: минимально, думаю Micro, но я бы предпочел stm32.
Но в случае с atmega328 и stm32 удалось зажечь около 600 светодиодов.
Atmega2560 же спокойно завела 900 светодиодов (больше в наличии просто не было)
Кит, шо нипраснулсо? На один диод скока байт нужно? Пральна - ТРИ! Употреби 600 НА_ТРОИХ - будет МАЛО!!!
Ну, вообще-то библиотеки, которые работают с ws2812, обычно используют, как не трудно догадаться, по 3 байта на светодиод. Ну а дальше - арифметику в школе проходили?
Ну а так: минимально, думаю Micro, но я бы предпочел stm32.
Ну вообще-то не обязательно и даже нежелательно держать все светодиоды в памяти одновременно. Так что арифметика ни о чем.
Вот я и хотел на stm32 сделал. Использовал комплектную библиотеку из этого репозитория https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries. Не помню точное число. Если задать 400 светодиодов, то лента нормально светиться. Если задать 700, то прошивка собирается, но лента перестаёт реагировать. Я так понимаю, что дело всё в оптимизации кода. Но пока не соображу, куда копать
Для среды ардуино использовал либы от adafruit, fastled, alex gyver. На всех примерно один результат
А если светодиодов 512 и 513 - работает?
Вот я и хотел на stm32 сделал. Использовал комплектную библиотеку из этого репозитория https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries. Не помню точное число. Если задать 400 светодиодов, то лента нормально светиться. Если задать 700, то прошивка собирается, но лента перестаёт реагировать. Я так понимаю, что дело всё в оптимизации кода. Но пока не соображу, куда копать
Я бы в первую очередь начал копать в сторону применения более серьезного источника питания: 700 светодиодов могут потреблять более 40А. Ну и, само собой, грамотная разводка питания по ленте (не в одной точке).
Ленту питал от двух бп от компов (каждый по 350w, по 5в линии макс нагрузка 30А), разделив её на две части
Вот я и хотел на stm32 сделал. Использовал комплектную библиотеку из этого репозитория https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries. Не помню точное число. Если задать 400 светодиодов, то лента нормально светиться. Если задать 700, то прошивка собирается, но лента перестаёт реагировать. Я так понимаю, что дело всё в оптимизации кода. Но пока не соображу, куда копать
преобразователь уровней 3.3 -> 5в ставили? - для большого числа диодов нужен обязательно
а так на стм32 можно засветить, теоретически, 5-6 тыс диодов
Судя по описанию либы, лента на прямую цепляется на контакт. Я пробовал, она работает, но если задать больше значение светодиодов, то перестаёт реагировать. Я так понимаю, что из-за ограничений по spi интерфейсу. Там в библиотеке есть проверки на переполнение
Судя по описанию либы, лента на прямую цепляется на контакт. Я пробовал, она работает, но если задать больше значение светодиодов, то перестаёт реагировать. Я так понимаю, что из-за ограничений по spi интерфейсу. Там в библиотеке есть проверки на переполнение
где там проверка на переполнение, покажите. Переполнение чего?
У стм логический уровень 3.3в, а ленте нужно 5в. Пока диодов мало, уровня сигнала хватает., когда их много, напряжение падает. Поставьте преобразователь уровня, не спорьте.
Вот тут есть проверка на память
Попробую ближе к вечеру собрать согласователь уровня и подцепиться с ним. А на каком транзисторе можно собрать, что порекомендуете?
B707, я читал, что ws2812 имеют на борту "восстановитель сигнала". Поэтому проблемы с ослаблением нет. Конвертор нужен только для того, чтобы первый пиксель правильно подхватил битстрим, далее они сами разбираются.
Вот тут есть проверка на память
у Stm32F103 на борту 20к оперативки, а для 700 диодов нужно всего 2100 байт. Так что эта проверка не при делах
тем не менее, личный опыт. Собирал клиенту матрицу с параллельным выводом на 4 ленты. Тестировали на Дуе и СТМ32. В обоих случаях на 30-60 диодах все работало, а начиная со 100 штук - нет. После уставновки конвертера уровней все завелось, прошивка не менялась
тем не менее, личный опыт. Собирал клиенту матрицу с параллельным выводом на 4 ленты. Тестировали на Дуе и СТМ32. В обоих случаях на 30-60 диодах все работало, а начиная со 100 штук - нет. После уставновки конвертера уровней все завелось, прошивка не менялась
А на каком транзисторе собирали конвертер уровней? По интернету нашёл две схемы
Для 3.3в устройство достаточно первый светодиод запитать через выпрямительный диод - тогда порог входного уровня окажется поменьше. Дальше по цепочке уже пойдет нормально.
Для 3.3в устройство достаточно первый светодиод запитать через выпрямительный диод - тогда порог входного уровня окажется поменьше. Дальше по цепочке уже пойдет нормально.
Вы имеете ввиду, что нужно по питанию на ногу +5 вольт ленты поставить диод
А на каком транзисторе собирали конвертер уровней?
брал готовый
Что в слове "первый светодиод" не понятно? Первый. Светодиод.
Вот я и хотел на stm32 сделал. Использовал комплектную библиотеку из этого репозитория https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries ...
Сейчас подключил к stm32 всего один светодиод ws2812b. Открыл готовый пример из либы и зашил. Всё работает. Если указать количество светодиодов более 627, то светодиод перестаёт загораться.
Сейчас подключил к stm32 всего один светодиод ws2812b. Открыл готовый пример из либы и зашил. Всё работает. Если указать количество светодиодов более 627, то светодиод перестаёт загораться.
вспомнил.
если там используется SPi через DMA - то на каждый пиксель нужно толи 24, толи даже 48 байт
Возьмите библиотеку FastLED, она тоже работает с СТМ32 аддоном от кларка, но использует традиционные 3 байта на пиксель
Сейчас подключил к stm32 всего один светодиод ws2812b. Открыл готовый пример из либы и зашил. Всё работает. Если указать количество светодиодов более 627, то светодиод перестаёт загораться.
вспомнил.
если там используется SPi через DMA - то на каждый пиксель нужно толи 24, толи даже 48 байт
Возьмите библиотеку FastLED, она тоже работает с СТМ32 аддоном от кларка, но использует традиционные 3 байта на пиксель
Да, там как раз через DMA. А на счёт FastLed под стм32 не видел. Сейчас поищу по инету и попробую
Да, там как раз через DMA. А на счёт FastLed под стм32 не видел. Сейчас поищу по инету и попробую
кстати, у Кларка на форуме или в его блоге есть продвинутый вариант его же либы, где разбиение байтов на биты делается не заранее (когда под каждый бит отводится целый байт), а на лету.
Соответвенно памяти требуется не 24 бата, а опять же только 3 байта на пиксель.
Но ссылку сейчас не найду. поищите.
Сейчас подключил к stm32 всего один светодиод ws2812b. Открыл готовый пример из либы и зашил. Всё работает. Если указать количество светодиодов более 627, то светодиод перестаёт загораться.
вспомнил.
если там используется SPi через DMA - то на каждый пиксель нужно толи 24, толи даже 48 байт
Возьмите библиотеку FastLED, она тоже работает с СТМ32 аддоном от кларка, но использует традиционные 3 байта на пиксель
Нашёл, проверил. Спокойно 1000 светодиодов завелось. Всем большое спасибо за советы. Поразбираю эту либу для общего понимания
Но в случае с atmega328 и stm32 удалось зажечь около 600 светодиодов.
Atmega2560 же спокойно завела 900 светодиодов (больше в наличии просто не было)
Кит, шо нипраснулсо? На один диод скока байт нужно? Пральна - ТРИ! Употреби 600 НА_ТРОИХ - будет МАЛО!!!
Так нехрен с пролетарской прямотой буферизировать все. И зазжеш хоть 100500 на любом МК.