Перейти к содержанию

Сколько светодиодов WS2812B можно питать от USB?

Обновлено Редакция GAW

Спецификация USB 2.0 считает питание в единичных нагрузках по 100 мА (раздел 7.2.1). Устройство после подключения — маломощное и может брать одну нагрузку, 100 мА, а после настройки хостом — столько, сколько указало в поле bMaxPower дескриптора конфигурации (раздел 9.6.3), но не больше пяти нагрузок, 500 мА. Arduino Uno в прошивке своего USB-контроллера ATmega16U2 заявляет 100 мА, то есть по правилам USB может рассчитывать именно на них.

Расчёт

По даташиту WS2812B каждый из трёх цветов работает при 12 мА, а схема управления берёт 0,6 мА в покое. Наш расчёт тока одного светодиода:

I=3⋅12 мА⋅k+0,6 мА,I = 3 \cdot 12\ \text{мА} \cdot k + 0{,}6\ \text{мА},

где k — средняя яркость от 0 до 1.

ИсточникТокБелый 100 % (36,6 мА)Белый 50 % (18,6 мА)Белый 33 % (12,5 мА)
USB 2.0 до настройки100 мА258
USB 2.0, устройство заявило 100 мА (Uno)100 мА258
USB 2.0, устройство заявило 500 мА500 мА132640
зарядное устройство 2 А2000 мА54107160

Из этих токов нужно вычесть потребление самого контроллера, поэтому реальный запас меньше. Пересчитать под свою ленту поможет калькулятор WS2812B, а как хост настраивает устройство после подключения и когда оно получает право на 500 мА, рассказывает статья о перечислении USB.

Что будет при перегрузке

По разделу 7.2.1.2.1 спецификации хост и хабы с собственным питанием обязаны иметь защиту от перегрузки по току, которая отключает питание портов, — лента просто погаснет вместе с платой. Слабые блоки и тонкие кабели к тому же проседают по напряжению, а ниже 3,7 В WS2812B выходит за режимы, указанные производителем. Для ленты длиннее пары десятков светодиодов нужен отдельный блок 5 В с запасом, предохранитель на каждую питающую пару и общая земля с контроллером — расчёт блока и проводов выполнит калькулятор светодиодной ленты. Сколько тока можно взять от порта USB-C без Power Delivery, разобрано в ответе «Какой ток можно взять от USB-C без Power Delivery?».

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

Можно ли питать ленту через вывод 5V платы Arduino?

Ток всё равно идёт от порта USB, а на Uno — ещё и через самовосстанавливающийся предохранитель F1 MF-MSMF050-2 на 500 мА по схеме платы. Сама плата заявляет хосту 100 мА. Для ленты больше пары светодиодов питание подают прямо от блока 5 В, а с платой соединяют только землю и линию данных.

А от зарядного устройства USB на 2 А?

Зарядное устройство не ограничено правилами порта компьютера, и его ток указан на корпусе. 2 А — это около 54 светодиодов на белом полной яркости по нашему расчёту. Провод и разъём тоже должны выдерживать этот ток.

Как ограничить ток программно?

Задать общую яркость так, чтобы средний ток не превысил бюджет. Ток WS2812B пропорционален средней яркости каналов, поэтому при яркости 33 % белый берёт около 12 мА на светодиод, и на 500 мА хватает примерно 40 светодиодов.

Источники

  1. USB Implementers Forum. Universal Serial Bus Specification, Revision 2.0, April 27, 2000 — 7.2.1 Classes of Devices (с. 171): единичная нагрузка — 100 мА; устройство по умолчанию маломощное и берёт до одной нагрузки, после настройки высокомощное — до пяти; порт с питанием от сети должен давать пять единичных нагрузок; 7.2.1.2.1 — хост и хабы с собственным питанием обязаны иметь защиту от перегрузки по току, отключающую питание портов; 9.6.3 — bMaxPower: наибольший ток устройства от шины в данной конфигурации, в единицах 2 мА
  2. Worldsemi. WS2812B-V5/W Intelligent control LED integrated light source, datasheet V6.1 (2022-09-08) — характеристики каждого цвета при 12 мА; ток покоя (центральное значение) 0,6 мА; питание +3,7…+5,3 В
  3. Arduino. ArduinoCore-avr: firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c (LUFA) — дескриптор конфигурации прошивки USB-контроллера ATmega16U2 Arduino Uno: MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
  4. Arduino. Arduino Uno Rev3 schematic — питание от USB идёт через самовосстанавливающийся предохранитель F1 MF-MSMF050-2 500 мА

Нашли ошибку?