Как реализовать до 40 ШИМ выходов с микроконтроллера?

Стоит задача независимо диммировать множество светодиодных лент.
Количество каналов (лент) на диммирование вплоть до 40.

На arduino mega количество ШИМ равно 14. Как худший вариант рассматриваю программную эмуляцию недостающих шим.

Прошу совет для решения задачи. Может быть вы посоветуете микроконтроллер, у которого есть столько ШИМ выходов или многоканальный LED драйвер который сможет общаться с МК или другой вариант который я упустил.
  • Вопрос задан
  • 7688 просмотров
Пригласить эксперта
Ответы на вопрос 6
@vilgeforce
Раздолбай и программист
Вариант - PCA9685, специализированный контроллер именно для LED. 16 каналов на корпус, управление по I2C. 3 корпуса и 48 каналов по 2 проводам готовы. Думаю, если поискать по "pwm i2c controller" или "i2c led controller" можно будет найти и что-то более ногастое.
Ответ написан
Комментировать
@Eddy_Em
Для светодиодов необязательно аппаратный ШИМ использовать, там и софтового за глаза хватит → нужно лишь взять микроконтроллер с достаточным количеством ног.
Я бы сделал так: основной таймер спокойненько щелкает, а в прерывании декрементирует все 40 счетчиков (массив), ищет нулевые значения, инвертирует соответствующие ноги и обновляет значение в счетчике. Т.е. понадобятся: массив из 40 счетчиков для таймера, массив из 40 значений для выхода == 1, массив для 40 значений для выхода == 0, массив из 40 флагов (это шустрей будет, чем битовые маски использовать, хотя, конечно, на 100-200Гц ШИМа все равно) для определения, откуда при обнулении счетчика заносить значение.

Если нужно обеспечить частоту не хуже 100Гц с восьмибитным разрешением, то нам нужно будет настроить таймер на 25600Гц. За одно прерывание нужно будет обработать не меньше 40 значений, т.е. потратить, скажем, 1-2 тысячи тактов. Следовательно, простецкого STM32 на 72МГц (с кварцем 16МГц) за глаза хватит. А то и чего-нибудь послабее...
Ответ написан
Комментировать
gbg
@gbg Куратор тега Arduino
Любые ответы на любые вопросы
Можно собрать матрицу из оптопар (для Atmega8 будет 96 оптопар (и 96 каналов ШИМ) ) и ими уже включать ключи на ленты.

А так, это задача для сети DMX - контроллеров. Это если по-серьезному.
620x400-2_32.jpgНапример
Ответ написан
@AlexeyKAM
Инженер по геокодированию
Я использовал 5 штук STP24DP05 (24-bit constant current LED sink driver with output error detection) включенных последовательно на один SPI для независимого управления цветом в линейке из 40 RGB светодиодов .
Ответ написан
Комментировать
@UA3MQJ
- применять 74HC595
- взять ПЛИС
Ответ написан
Комментировать
AlanDrakes
@AlanDrakes
Попробуйте почитать про Binary Angle Modulation - по сути, тот же ШИМ, но программный и не слишком требовательный к ресурсам.
easyelectronics.ru/upravlenie-bolshim-kolichestvom...
chipmk.ru/index.php/10-raznoe/10-programmnaya-real...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы