24V WS2811 White COB does not work

Hy i hope somebody can help me.

I got a project with about 20m white COB LED-Stripes. I got an SP105E Controller which works fine, but there are not enough features for me so i tried WLED.

The Stripes have 61 WS2811 Controllers on 5m and are powerd with 24V.
24V → 5V Buck-Converter → ESP32 → 74AHCT125 Level-Shifter → 44Ohms → Data-IN

The LEDs are not working with the setting on WS2811 or WS2811-White.
Except for the Setting Length >1000 and Output reversed, there the first and third segment are controllable.

If i switch to 400kHz, i can’t set the brightness, but i can set the number of active LED-segments in the settings for the strip. If i set the length to 20, the first 20 are on and the rest not.

I’m sorry but it drives me crazy, espacially because the cheap china-controller works perfectly just out the box. And i made a complete setup with external switch inputs, relais output an so on and now the strip is not working.

Ok, short Update. It really seems to be a Problem from WLED.
I made a simple code (ChatGPT made it :wink: ) for the ESP32 in Arduino-Studio with FastLED.h and it works perfectly.

So it really seems to be a programming issue.

Here is the Code:

It controls every second LED-Controller and the Brightness is controllable through a slider on the webpage.

#include <WiFi.h>
#include <WebServer.h>
#include <FastLED.h>

#define LED_PIN 2
#define NUM_LEDS 60
#define LED_TYPE WS2811
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

// WLAN Daten
const char* ssid = “DEIN_WLAN”;
const char* password = “DEIN_PASSWORT”;

WebServer server(80);

int brightness = 128;

// HTML Seite
String htmlPage = R"rawliteral(

LED Steuerung

ESP32 LED Helligkeit

Helligkeit: %BRIGHT%

)rawliteral";

// LEDs aktualisieren
void updateLEDs() {
FastLED.setBrightness(brightness);

for(int i = 0; i < NUM_LEDS; i++) {
if(i % 2 == 0) {
leds[i] = CRGB::White;
} else {
leds[i] = CRGB::Black;
}
}

FastLED.show();
}

// Root Seite
void handleRoot() {
String page = htmlPage;
page.replace(“%BRIGHT%”, String(brightness));
server.send(200, “text/html”, page);
}

// Slider Wert setzen
void handleSet() {
if(server.hasArg(“value”)) {
brightness = server.arg(“value”).toInt();
updateLEDs();
}
server.send(200, “text/plain”, “OK”);
}

void setup() {
Serial.begin(115200);

FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);

// WLAN verbinden
WiFi.begin(ssid, password);
Serial.print(“Verbinde mit WLAN”);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}

Serial.println(“\nVerbunden!”);
Serial.print("IP Adresse: ");
Serial.println(WiFi.localIP());

// Webserver
server.on(“/”, handleRoot);
server.on(“/set”, handleSet);

server.begin();

updateLEDs();
}

void loop() {
server.handleClient();
}

What do they do? Not respond at all? Wrong colors? Something else?

WS2811 do work, but might need to configure it differently than you have it.

If they are off, nothing happens.
If i put it to 400kHz, everything is on (depending on how many LEDs are set) and it can not turn off

When i put it back to WS8211 the amount of LEDs goes off set on LED-Number but it is not tuning on again.
The controller i made with Fast-LED works without any problems on the standard-setting for WS8211.

400 KHz is definitely not correct for ws2811, so don’t choose that.

“the amount of LEDs goes off set on LED-Number” ← what do you mean by that?

Posting your exact config would be a good idea too so we can check for problems.

When i set the Strip-Length, i can control the amount of LEDs - for testing i added a short strip

  • 400kHz - the strip lights up to the length-setting. For example i set the length to 1, then only the first LED-Segment is on, the rest is off.

  • When i change to WS821x or WS8211 white, the amount of LEDs set in the length goes off, for example through the 400kHz mode all 3 Segments are on and i set to WS8211 with length 1, only the first Segment shuts off and the other two are still on.

  • on both settings i can not control the strip, like brightness, on/off, etc.

Now i have tried a lot of things. The LED-Strip is only white, but the control works with the channels RGB, so one Chip controls the segement in 3 parts → Data In → Red → Green → Blue → Data Out (physical Layout)
When i activate the option “Calculate CCT from RGB” it can control one of the 3 outputs.

  • Color Order: GRB or RGB → The “blue’” part of the segment is controllable

  • Color Order: RBG or GBR-> The “green” part of the segment is controllable

  • Color Order: BRG → The “red” part of the segment is controllable

  • Control is limited to the first segment, and if i set the strip-lenth to >2 nothing is turning on.

So it really seems to be a setting-problem or firmware. As i have mentioned, with the same ESP32 an same hardware-setup but arduini-studio and fastLED-function it works perfectly.

LED & Hardware setup
Total LEDs: 3
Recommended power supply for brightest white:
A power supply with total of 0.5A is required.
Enable automatic brightness limiter: 
Hardware setup
LED outputs:
Only last output can be changed. Remove to edit others.
1: WS2811 White
Color Order: RGB
Swap: None
Start: 0
Length: 3

Data GPIO: 2

Reversed: No
Skip first LEDs: 0

Off Refresh: Yes
Auto-calculate W channel from RGB: None
 
LED memory usage: 9 / 64000 B

Make a segment for each output: No
Custom bus start indices: No
Use global LED buffer: Yes
Color Order Override:

Button 0 GPIO: 5 Switch 
Button 1 GPIO: unused
Button 2 GPIO: unused
Button 3 GPIO: unused

Disable internal pull-up/down: No
Touch threshold: 32

IR GPIO: unused  Remote disabled
Apply IR change to main segment only: No

Relay GPIO: 4
Invert: Yes  Open drain: No 

Defaults
Turn LEDs on after power up/reset: Yes
Default brightness: 128 (1-255)

Apply preset 1 at boot (0 uses values from above)

Use Gamma correction for color:  No (strongly recommended)
Use Gamma correction for brightness:  No (not recommended)
Use Gamma value: 2,8

Brightness factor: 100%


Transitions

Enable transitions: No
Effect blending: No
Default transition time: 700 ms
Palette transitions: No
Random Cycle Palette Time: 5 s
Use harmonic Random Cycle Palette: No


Timed light

Default duration: 60 min
Default target brightness: 0
Mode: Fade


White management

White Balance correction: No
Global override for Auto-calculate white: Disabled
Calculate CCT from RGB: No
CCT IC used (Athom 15W): No
CCT additive blending: 0 %


Advanced
Palette wrapping: Linear (wrap if moving)
Target refresh rate: 20 FPS

you are missing a levelshifter arent you?

No, i have the setup with 74HCT125 and 44Ohms inline resistor.
The Hardware is not the problem, because with different software it works.

If you increase that to 6 do any additional pixels beyond the first triplet turn on?

While it worked before, in your picture you have the two ground wires connected to two different power supplies with neither ground connected to the level shifter. The level shifter output should be two wires, a data and a ground connected directly to the strip, so add that second wire even if you managed to get it to work before.

Additionally, can you look at the labels on the control IC and confirm that they’re WS2811? I wonder if maybe this is some other chip sold as ws2811?

The Ground is completely looped trough in the circuit.
I have tried to connect an seperate GND from the level-shifter, but there is no improvement.

Yes these are WS2811. When i increase the length-setting everything goes off and thats it.
When i reduce it to one then the red and green-channel from the first segement are active and controllable.

In the final setup i have 192 Segements. I think i try to make my own program, because the libary for the arduino-studio works.

That is the correct way to wire it. Make sure you do that.

Whats the text on the chip say?

It says: WS2811F 60023

Then I really have no idea. I’ve driven tons of those with WLED and never had an issue. If it didn’t work with another library, I’d guess a broken chip.

I got the Problem. It was really the WLED-Software.
The 0.15.3 made the Problems at first, i have now tried the 0.14.4 and the 0.16.0 and it works.

Now i have switched back to the 0.15.3 and it workes also.
On the same ESP32 Board. So it seems, that it was some issue, that something wasn’t correct installed.

Thank you for your tipps