3-wire Amazon addressable LED cable testing

I looked around but didn’t see any detailed measurements for the 3-wire cable a lot of WS28xx strips used, and it looked handy for a project so I tested this spool of 3/20 AWG cable from Amazon:

3-wire cable is a little strange because the data has 2 return “ground” wires, the actual white ground wire and the red positive supply voltage (which functions as an AC signal ground). Since there are two grounds tightly flanking the data, the impedance should be a bit more than half a similar 2 wire cable. I guessed 80 ohms from the look of the cable … and was wrong. Measurement showed just 65 ohms.

Next I tested it with a QuinLED data booster. I set to 33 ohms, which combined with the 9 ohms (measured) source impedance of the driver IC and traces gives 42 ohms. 42 < 65, so we should get some overshoot.

Not bad at all. Voltage hits 5.64V and the undershoot goes down to -720mV, but the waveform looks clean even at ~19 m (I cut off a few feet for testing first). We can make this better by adding a 22 ohm resistor (64 ohm total) to match the impedance exactly:

Looks perfect even after ~19m. Also interesting, I tried tightly coiling and uncoiling the cable and it made no difference, meaning the field is almost entirely contained between the outer wires with almost nothing leaking out, so noise immunity should be high. Since I can barely measure a difference after ~19 meters, you could probably run this for hundreds of meters with the extra resistor (and probably much further than 19m even without).

Finally, I tried driving with an ESP32 directly and adjusting the source impedance with a small resistor to raise the voltage a little:

The ESP32 has a source impedance of 32 ohms (by default, it can be adjusted in software), and the WS2812B says the minimum data voltage should be 3.5V, and we’d like a little margin for error. Since the cable is 65 ohm, aiming for about 75% on the source impedance should give a nice overshoot without too much distortion. Here is 32+15 ohms = 47 ohms source into the same ~19m of 65 ohm cable:

That gives a 3.8V signal, which is within spec for WS2812B and works well (no data corruption observed). There is some distortion because it is running with the impedance a little mismatched, but it is quite small. Not sure how that would hold up at 100m+, but not a good idea to drive long lines without a level shifter anyway.

One other warning: since the data return current passes through the positive (red) wire, it is important that the positive wire connects to the controller, meaning if you’re using an ESP32 it probably works best with 5V strips. The data boost solves this problem by supporting 12/24V supply voltages and is a good idea if you want to drive WS2811, etc.

I was a little surprised at the impedances measured. I had thought it would be higher, and had tried using the standard 50 ohm recommended resistor on an ESP32 and had some data corruption, which makes sense since that would actually attenuate the peak voltage below 3.3V. Anyway, hope this helps someone else.

1 Like

This is a really interesting read.

Thanks for taking the time to pull it together.

This idea of “2 grounds” - in the form of an ‘ac signal ground’ is thoroughly bamboozling me.

It’s a dc signal and I presumed it returned via the ground.

I’ll have a look at my small project and see if I can account for my flickering allowing for this.

Finally, why don’t people typically just put a 0-1k pot in as the resistor and just eyeball adjust until it is ‘good enough ‘ or is that sacrilege? I know there is a cost implication but for the odd project here and there the time spend not spend would pay dividends..

It is a shifting square wave, which is definitely not DC, which cannot change. The changing high and low voltages make it AC, so the signal return current doesn’t need a DC ground, just a low impedance path back to the driver. In this case there are two equally low impedance paths back, so each gets roughly half the current.

That is exactly what I do :slight_smile: