i’m doing a project with 40m of leds strip (2400 leds) and I have some problems. I’m using an esp32 with 5 power suppliers with 200w for each. All gnd are conected at the same of esp32
I try to put data at the stard of strip and it works but if I use white colour or full brightness, it change to other colours and do flashes. I try to put data at the middle and configure on wled but the second part doesn’t work, it change colour when I have in static colour (the first part it works well)
What i’m doing wrong? I don’t know if I have to mucho watts, I have to put data at more parts, I’m setting the multiple data wrong…
With the settings shown above, do the first 1200 LEDs work correctly? Or is it still misbehaving? If it is working, then change LED output 1 to “Start: 1200 Count:1200” and see if the second half of the string works correctly. This will at least confirm all LEDs are working as intended.
It sounds to me like there could be 2 or 3 issues that are causing your problems (Too many LEDs on one pin, and a lack of Level Shifters). Here are the steps I would take:
Connect all 2400 LEDs in one long strip to the default pin (pin 2)
Set your LED outputs to control only the first 800 LEDs.
Make careful observations to see if those 800 LEDs are behaving correctly.
If you find that these first 800 LEDs are behaving correctly, change your LED outputs to the next 800 LEDs and retest. Keep going until all have been tested. This will show you if there are bad pixels causing your problems.
If you find that these first 800 LEDs are still misbehaving, I suspect you will need to add level shifters. These are necessary when data lines cannot be kept sufficiently short. Here is the quick-start guide that outlines the use of level shifters, Aircookie specifically recommends the SN74AHCT125N. This chip has 4 channels, so you would only need 1 to complete your project.
Once you can get sets of 800 lights to reliably behave correctly, I would split the strip into 2 or 3 lengths, with each one being fed data from a different pin.
Edit to Add: These problems can also occur if not enough current is supplied to the LEDs. It looks like you have 1KW of power supply, this should be enough - so just make sure you are injecting power often enough, and are using a thick enough wire. The thinner the wire, the larger the voltage drop it will cause, leading to problems. Use the “Maximum amps for chassis wiring” Column on this table to ensure you’ve used a thick enough wire!
Not to downplay the effect of transmit distance on corrupting data, but I think a little clarification is in order.
The “start” data is the most critical piece of the stream.
Once you’ve reached the 1st pixel reliably you get a “free” data regeneration as you pass onto the 2nd.
Similarly the 2nd regenerates to the 3rd and so on.
As long as the inter pixel distances remain reasonable and there are no big hops, you don’t have anything (or not much) to worry about.
The first jump is the critical one really in terms of timing more than voltage level. I know that seems to go against the whole concept of level-shifters and their usefulness but it really doesn’t. The level-shifter gets things up to the voltage specs, but more importantly acts as a load driver to handle the capacitance of that initial long line. That keeps the timing of the pulses within spec, a much more critical piece of the process.
So as far as transmit distances are concerned, the first one is the thing to worry about. Or perhaps a better generalization would be to worry about the longest individual interpixel distance(s) you’ve got. Those can cause trouble. The total run length is really (almost) irrelevant if the individual lengths are reasonable.
And of course power supply capacity, noise, grounding and WLED programming all add to the fun as well.
@divsys thanks for providing some additional insight in this matter.
The reason for my remark/question was a test by “QuinLED” during which he noticed some issues with longer data lines.
So if I understand this correctly. When a pixel receives the data signals with peaks within a 3.5 tot 5V range, it would reproduce the signal using the 5V it is getting from the powerline? Therefore boosting the signal upon receiving it?
That would explain why some use a LED pixel as a level shifter instead of an “actual” level shifter. I never understood why that would work, but now it makes more sense.
Do you happen to know if there are LED IC’s that do not enhance the signal with each jump to the next pixel?
That’s a very different fish than saying “I’m driving a strip that’s 40m away from the ESP32”
The QuinLED tests (a great reference) address the distance to the 1st LED only, as I mentioned above.
What’s missing from the tests is a scope capture of why the signal degrades.
I can’t find a reference off hand, but there have been numerous examples of “live” captures of WS2812 data streams with and without level shifting. The net result is this is a classic “transmission line” problem where you try and switch a data stream at ~800Khz across a capacitor (the data wire) which tries to smooth things out (that’s bad).
Yup, although what really happens is it boosts to 0.7xVcc (or better) which is a typical spec for the WS281x devices. This can have an effect if you’re experiencing power drops down the line. A device being powered from 4.5V (5V with a 10% drop) might only output 3.15V which is getting near the lower limit for a “proper” signal level on the next device.
Any devices that are designed to be used in daisy-chain fashion (the reason for the WS281x protocol) have to meet the voltage specs. They might not have great current driving capability (on the data line) but they will have to meet the voltage specs. The reality is to watch out for power line drops as your current and distance to power supply increases, but also that first data line jump is critical too.