Адресная RGB-полоса работает по отдельности, но не может настроить все светодиоды на полностью белый цвет.

rgb-led led-strip

У меня есть 5-метровая полоса цифровых RGB-светодиодов на 12 В. Микросхема WS2811 (см. фото микросхемы). На полосе 50 адресов.

WS2811 IC

Используя библиотеку FastLED, я могу запустить пример "FirstLight", который преследует полностью белые с одним адресом за раз, вверх и вниз по длине. Это прекрасно работает. Поэтому я знаю, что они по отдельности работают должным образом.

Однако, если я установлю все светодиоды полностью белыми (255), первые несколько адресов будут выглядеть белыми, но чем выше адрес, тем больше будет красного. См. фото ниже. Полоса начинается в центре барабана.

Все белые проблемы с WS2811

#include <FastLED.h>

// Сколько светодиодов в полосе?
#define NUM_LEDS 50

// Вывод данных, по которому будут записываться данные светодиода
#define DATA_PIN 5

// Это массив светодиодов. Один элемент для каждого светодиода в вашей полосе.
CRGB leds[NUM_LEDS];

// Эта функция устанавливает светодиоды и сообщает о них контроллеру
void setup() {
    // задержка проверки работоспособности - позволяет перепрограммировать, если случайно перегорела мощность со светодиодами
    delay(2000);
    Serial.begin(115200);
    Serial.print("### SETUP ###");

      //Обе полосы заказаны BRG
      FastLED.addLeds<WS2811, DATA_PIN, BRG>(leds, NUM_LEDS); 
      //FastLED.addLeds<UCS1903, DATA_PIN, BRG>(leds, NUM_LEDS);

}

void loop() {

   for (int i = 30; i < NUM_LEDS; i++) {

       leds[i] = CRGB::White;

   }

   FastLED.show();
}

Для отладки я попытался включить только последнюю половину. Результат все еще был проблематичным: WS2811 последняя половина

for (int i = 30; i < NUM_LEDS; i++) {

    leds[i] = CRGB::White;

}

Затем я попытался установить для всех светодиодов белый цвет с половинной яркостью, и это выглядит намного лучше, но светодиоды снаружи по-прежнему не соответствуют цвету по сравнению с внутренней частью: WS2811 белая половинная яркость


Я попытался сделать всю полосу полностью синей, и это работает нормально.

У меня также есть еще одна почти идентичная светодиодная лента, в которой используется чип 1903. Тот же код (инициализированный для 1903 вместо WS2811) отлично работает на полосе 1903!

Другие вещи, которые я исключил:

  • Я использую настольный блок питания, рассчитанный на 5 А, эта полоса потребляет менее 1,5 А при полном белом цвете.
  • Я убедился, что напряжение питания составляет 12 В.
  • Я не позволял светодиодам нагреваться, когда они наматывались на катушку. Я обязательно отключаю их от сети, наблюдая за их цветом.

Что могло вызвать это на полосе WS2811, в то время как полоса 1903 работает отлично?

, 👍13


6 ответов


Лучший ответ:

40

Я подозреваю, что это падение напряжения в шинах питания, вызванное потреблением тока. Вероятно, дешевая конструкция с медными дорожками, которые слишком тонкие и поэтому имеют слишком высокое сопротивление.

Чтобы бороться с этим, вам нужно будет подать питание на полосу в разных точках вдоль нее. Первоначально, чтобы доказать теорию, вы можете попробовать подключить питание к обоим концам полосы и посмотреть, находится ли «тусклое» пятно на середине полосы. Если это так, то это, безусловно, падение напряжения. (кстати, падение напряжения приведет к тому, что сначала погаснут синие светодиоды, превратив их в желто-красные. Затем, вероятно, последуют зеленые, и они станут красными).

Затем, как только это будет доказано, вам нужно будет добавить дополнительные разъемы питания в полосу в середине любых тусклых участков и подавать напряжение непосредственно в эти точки.

,

Ты был прав! Я соединил оба конца, и середина была лишь немного не в цвете. Я думал, что в таком простом продукте не может быть такой проблемы, и вот она. Я никогда раньше не видел такого резкого падения на такой короткой полосе., @Bort

@Bort Это определенно выглядит хуже, чем на моей 5-вольтовой 5-метровой полосе с таким же количеством светодиодов. Возможно, они сэкономили на размере дорожки (что глупо, потому что производители печатных плат не взимают плату в зависимости от количества меди)., @user253751

Кстати, эта полоса продавалась как IP67 и была запечатана в единую непрерывную резиновую трубку. Таким образом, на самом деле это не предназначалось для сокращения до более короткой длины., @Bort

@ user253751 Зная, что медь дорогая, почему бы больше меди не увеличить цену? Может, в Азии все по-другому?, @Bort

Платы @Bort обычно изготавливаются методом вычитания, при котором плата полностью покрывается медью, а затем часть ее удаляется и выбрасывается. Таким образом, вы платите за всю медь, которую используете, и за все, что выбрасываете. Я не знаю, относится ли это к гибким подложкам., @Matt

@Matt - Разве базовое количество меди не изменит стоимость? Пример: начиная с печатной платы толщиной 1 единица меди и затем вычитая, по сравнению с начальной толщиной 3 единицы и затем вычитая. Хотя вычитание не экономит деньги покупателя, первоначальный выбор толщины поможет, верно? Или я что-то упускаю?, @Bort

@Bort Да, вы правы, толщина меняет стоимость. Я предположил, что мы просто говорим о ширине медных дорожек., @Matt

@Matt - О, теперь я вижу, что user253751 имел в виду ширину, а не толщину! Но потом я удивляюсь, почему они не учли толщину..., @Bort

@Bort Вы все еще можете разрезать его, но вам нужно будет найти что-то, чем можно запечатать конец, что может потребовать некоторых исследований или экспериментов (вы не можете просто предположить, что заполнение конца горячим клеем сделает его водонепроницаемым - хотя это может быть достаточно водонепроницаемым для вашего использования, если это небольшое количество воды), @user253751

@ user253751 Силиконовый герметик (герметик для ванной) - нормальный метод..., @Majenko

Это не обязательно дешевая конструкция ... но полосы ws2811, где 3 RGB-светодиода управляются 1 микросхемой, требуют довольно большого количества дорожек на 1 см ширины полосы. Это, в свою очередь, ограничивает ширину, которую могут иметь две силовые дорожки, что приводит к довольно большому падению напряжения на расстоянии. По этой причине производители этих полос обычно советуют размещать вторичные точки ввода питания через каждые 1 или 2 метра полосы. Эта проблема менее заметна для светодиодов ws2812 со встроенными контроллерами, так как они могут иметь две довольно широкие силовые дорожки, идущие прямо вдоль всей полосы., @WooShell

(но ws2812, в свою очередь, продается в вариантах с количеством светодиодов до 144 на метр, что потребляет столько энергии, что снова становится необходимой подача вторичной мощности ... хотя и с гораздо более высокой светоотдачей), @WooShell

@WooShell Это объяснило бы разницу. Полоса, которую я использовал WS2812s., @user253751

@Bort Еще один трюк, который вы можете попробовать, - это подключить только землю с 1 стороны рельса и только плюс с другой стороны, это должно в основном самобалансировать напряжение, которое видит любой светодиод., @Ferrybig

У меня есть небольшой опыт работы с этими полосками. Теоретически, для типов 5V, 60LEDs/M, вам нужно запитать их через каждые 1M или около того по их длине, на практике я считаю, что каждые 2-2,5M достаточно, если у вас есть источник питания с достаточно высоким током ( хотя это зависит от производителя). Я полагаю, что для 12 В вы могли бы растянуться до 2,5-3 м между ответвлениями. Типы с силиконовой оболочкой нуждаются в небольшом отверстии, вырезанном в оболочке, чтобы прикрепить силовые «отводы», которые затем должны быть полностью заполнены внешним силиконовым герметиком., @Ralph Bolton

@Majenko, на плакате конкретно не сказано, что он использует Arduino. Вы не думаете, что вам следует закрыть вопрос, поскольку он может быть не по теме, или это просто правило для всех, кто упоминает слово MicroPython?, @PrestonDocks

@PrestonDocks Нет, я считаю это по теме. 99,999% людей, использующих их, используют их с Arduino. Вам не нужно специально упоминать об этом. Но использование микроконтроллера, отличного от Arduino, с кодом, отличным от Arduino, явно не по теме. Если вам не нравится этот вопрос, проголосуйте за него. Вот для чего он нужен., @Majenko

@Majenko 99,999% людей, использующих платы ESP32, используют их с Arduino IDE, но поскольку я упомянул слово MicroPython в вопросе, связанном с ESP32, вы закрыли мой вопрос. Также большинство людей, использующих Arduino, не используют Arduino, они используют клоны., @PrestonDocks

@PrestonDocks ESP32 не является Arduino. Если вы используете его с кодом Arduino, мы будем рады вам помочь. Но так как ты не такой, то мы не можем тебе помочь. Если ты продолжишь стонать и ныть, я тебя забаню., @Majenko


5

Ответ Маженко правильный, и вы также можете проверить это с помощью проведенного теста.

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

Предпосылка: тесты проводились с полосой RGBW длиной 5 м, 60 светодиодов/м (SK6812, натуральный белый).

Первый тест был проведен для измерения тока каждого светодиода. Вот результаты:

  • Все светодиоды выключены: 230 мА (0,77 мА/светодиод)
  • 10 светодиодов, максимум КРАСНЫЙ, ЗЕЛЕНЫЙ или СИНИЙ (один цвет): 320 мА
  • 10 светодиодов, максимум БЕЛЫЙ: 410 мА

Это означает, что каждый светодиод R, G или B потребляет максимум 9 мА, а светодиоды W имеют ток 18 мА. Через каждый светодиод, включенный или выключенный, протекает ток 0,77 мА.

Чтобы оценить падение напряжения, я зажег первые 100 светодиодов полностью белыми, затем измерил ток, входное и выходное напряжения полоски. Получил падение напряжения с 4,8 В до 4,16 В при токе 2,11 А (что почти равно 230мА + 18мА/светодиод * 100светодиодов).

Затем я смоделировал полосу как последовательность идеальных генераторов тока, соединенных резисторами:

схема

Обозначая R сопротивление, вводимое полосой, I_Led ток, протекающий через один светодиод, и N количество включенных светодиодов (и игнорируя влияние тока в режиме ожидания), падение напряжения на первом резисторе равно dV1 = RNI_Led, второй — dV2 = R*(N-1)I_Led и так далее, вплоть до dVN = RI_Led. Общее падение напряжения равно dV = RN(N+1)*I_Led/2.

Используя измеренные данные, мы можем рассчитать сопротивление между двумя последовательными светодиодами:

R = (2*dV)/(N*(N+1)*I_Led) = (2*0,64 В) / (100*101*0,018 А) = 7 мОм

ПРИМЕЧАНИЕ: это пренебрегает влиянием тока в режиме ожидания. Однако в своих расчетах я искал наихудший случай, и, исключая эти эффекты, я фактически делал наихудшие предположения, поэтому я не заботился о них

Итак, с этим сопротивлением я смог рассчитать падение напряжения для произвольных полос и, следовательно, спланировать, где разместить разъемы питания. В моем случае я планировал иметь шлейфы максимальной длины 1,2 м (80 светодиодов), так что напряжение на конце, в самом худшем случае (все светодиоды горят в RGBW, на максимальной яркости), у меня было падение напряжения немного более 1В.

Обратите внимание, что в моей установке падение напряжения на первом элементе (с наибольшим падением) составляет (80*0,045 А*0,007 мОм) = 25 мВ при рассеиваемой мощности 90 мВт.

,

Эта полоса продавалась как IP67 и была запечатана в единую непрерывную резиновую трубку. Мне пришлось бы сломать эту печать, чтобы получить эти измерения, хотя я думаю, что на данный момент терять особо нечего., @Bort

@majenko, этот ответ о теории электроники, он определенно не об Arduino, поэтому он не по теме. Мы можем закрыть его, пожалуйста?, @PrestonDocks


1

Полоски такого типа просто не подходят по размеру для полного включения всех светодиодов. Ожидается, что если вы этого захотите, вы будете использовать параллельную светодиодную ленту для освещения, которая не адресуется и использует гораздо более высокое напряжение, такое как 12 или 24 В, где падение напряжения менее критично.

Обычно адресные светодиоды не предназначены для использования в длинных полосах, но ожидается, что они будут вписываться в какой-то массив с многочисленными короткими полосками, где каждая из них может питаться отдельно.

Бег на длинной дистанции не проблема, но вам нужно будет подавать питание во многих местах, если вы хотите такой уровень освещения. И вас убьют либо из-за размера провода, либо из-за падения напряжения, потому что падение напряжения настолько критично, когда ваше напряжение составляет всего 5 вольт. Сократите цифры, но вы можете в спешке купить большую фидерную проволоку 1/0. Вместо этого я рекомендую использовать питание 24 В или сеть и преобразовать его в 5 В во многих местах.

Я бы предложил переосмыслить замысел дизайна и, если желательно также освещение, запустить отдельную полосу только для этого. Это очень дешево.

,

На самом деле это лента на 12 В, я не знаю, откуда вы взяли «5 В». Как также говорится в вопросе, у меня есть еще одна полоса на 12 В, которая почти идентична, за исключением того, что в ней используется микросхема 1903 года, и эта полоса отлично работает со всем белым цветом., @Bort


1

Для светодиодов требуется 12 В, а для чипов требуется более низкое напряжение. Чипу WS требуется от 3,3 В до 5 В, в отличие от 6-7 В, которые требуются ИС, дополнительное сопротивление, а также тот факт, что последний светодиод должен проходить 10 метров в обратном направлении (5 м на положительном, 5 м на отрицательном = 10 м всего) может означать, что падение слишком большое.

Легче всего это выяснить, подключив посередине. Если проблема не устранена (оба конца неисправны), проблема в блоке питания

,

Когда вы говорите, что микросхеме WS требуется напряжение от 3,3 до 5 В [а микросхеме требуется 6–7 В], какую микросхему вы имеете в виду? IC и чип для меня почти одинаковы., @Bort


1

Как уже ответили другие, это из-за падения напряжения.

Если подключить плюс к разъему с одного конца, а минус к другому, падение напряжения на всех светодиодах будет одинаковым, так как все светодиоды подключены к источнику питания на расстоянии 5 м.

Если мы назовем концы L и R с помощью L+ и L- и R+ и R-:

Подключите + к L+ и - к R-

Если вы хотите быть продвинутым, приобретите блок питания с отдельными выходными и измерительными соединениями.

Затем соедините sense+ с R+ и sense- с L-

Это гарантирует, что напряжение на светодиодах составляет 12 В, за счет повышения напряжения для компенсации падения напряжения.

Я начал рисовать в CircuitLab, а теперь хотят денег?! Как грубо...

,

Обратите внимание, что если питание и земля подключены к противоположным концам, все равно не будет идеально равномерного напряжения для каждого сегмента светодиода. Я добавил свой собственный ответ с симуляцией, чтобы решить эту проблему., @Bort


2

Для полноты я хочу включить моделирование цепи RGB, которое я сделал некоторое время назад, вместе с некоторыми данными. Это для аналоговых полос RGB, но концепция падения напряжения та же. С тех пор я добавил еще несколько светодиодов, чтобы показать эффект падения напряжения по длине, а также добавил возможность переключения подключения питания.

Моделирование показывает ток через каждый сегмент из 3 светодиодов. Ленты на 12 В обычно имеют 3 последовательно соединенных светодиода, и это повторяется вдоль всей ленты.

При создании этого моделирования я выбрал преувеличенные значения сопротивления, однако эта полоса WS2811 может быть довольно близкой. Однако я не моделировал его с конкретными размерами.

В схеме моделирования есть переключатели, которые можно щелкнуть, чтобы переключить соединение на 12 В и заземлить на любом конце полосы.

[Ссылка на симуляцию] Моделирование светодиодной ленты 12 В


Результаты:

При 12 В и заземлении на одном конце: 28,389–27,892 мА = разница в 2,123 мА

При 12 В и заземлении на обоих концах: 28,389–27,892 мА = разница 0,497 мА

При 12 В и заземлении на противоположных концах: 27,310–26,834 мА = разница 0,476 мА

Хотя и питание, и заземление могут быть подключены к обоим концам полосы, эта симуляция на самом деле показывает лучший баланс, просто переместив землю на противоположный конец полосы, на который подается 12 В.

Единственный способ правильно сбалансировать каждый светодиодный сегмент — это иметь собственное подключение к источнику питания и земле.

,

@majenko Еще один ответ по теории электроники, мы снова входим в тему. Не могли бы вы модерировать надлежащим образом., @PrestonDocks