By experience I have got to know that the cable normally used to drive Led strips (22AWG) is not good anymore if it is longer that 10 meters.

I realized this while working with 5 pieces of 2 meters of WS2812b where all of them are several meters apart from the Arduino board that I use to control them. In that case, I was sending the same program to all of them, and what I did was to connect all of them to the same pin, and it didnt work at all. The sum of the lenght of all 10 cables was much longer than 10 meters, and the signal got lost.

While searching for a solution, I discovered a post by Teknynja (http://www.teknynja.com/2014/02/driving-ws2812neopixels-rgb-leds-over.html?m=1) where it is explained how to use SN75176 to be able to drive WS2812b on cables much longer than 10 meters. I did the experiment myself, and even though he uses CAT 5 cable, I was able to succesfully send signal over 50 meters of 22AWG cable.

After that, I used SN75176 not to use longer cables, but to split the signal from the output pin into 5, and then I could connect 22AWG cable to drive each piece of led strip apart from the board some 10 meters each. (images of the board at the bottom of the post)

so far, so good.

Now I was trying to drive 4 pieces of 2 meters of WS2812b that are some 8 meters away from the arduino board, and again they are all displaying the same program out of a single arduino pin. So I connected a 8 meters long 22AWG cable to the arduino, which is inside of the restraints previously mentioned, and at the end of this cable I connected one of my "splitter board", to send the signal to the 4 Led strips. It didnt work.

I have the feeling that the SN75176 do the job only if it is connected close from the arduino board, but if there is already a lenght of cable between the pin and the driver (SN75176) the signal is already weak enough or noisy enough for the SN75176 to manipulate it properly.

I of course did a lot of try outs in different circumstances, different cables, lengths and a large list of etceteras, but I dont think it is worthy to post them here. Perhaps with the information already provided, some of you already has an idea on how to sort out these problems. How do you drive ws2812b over long distances?

pic 1

  • \$\begingroup\$ Simply add another pair of RS422 transceiver/receiver. The first transceiver is close to the arduino, the first receiver is at the end of your 8 meter cable, and from there you split it into the five cables you need. \$\endgroup\$ – Passerby May 27 '17 at 17:49

There are two very different wire pairs which you need to consider.

The first is the power pair, which provides 5 volts DC. This is your main problem, and the general answer to your question is that you can drive 5 volts over pretty much any length you choose, as long as you make your wire thick enough. You can do this by

a) Calculate the effective resistance of your strip. Divide the voltage (5 volts) by the current (in amps) to get a resistance in ohms.

b) Determine the length of cable, and multiply by 2.

c) Look up a table of wire gauges, and pick one which will have a total resistance over the wire length less than 10% of the resistance you found in a). And going for an even smaller resistance won't hurt, either.

d) Finally, remember to put a minimum 100 uF capacitor across the 5 volts at the strip end of your cable.

Now for the other pair - the signal pair. Since this has a load of (nominally) about 120 ohms, it can be much thinner than the first pair. You can use the procedure above to check your wiring size, except that you must leave out the cap.

However, what's important is not so much the wire thickness as the signal quality. Twisted pair is a minimum, and shielded twisted pair even better. I don't know what bit rate you expect to drive the strips with, but if you pay attention to what you're doing I'd estimate at least 100 meters is possible.

ETA - If you look at the 75176 data sheet, fig 10.2.3, you'll see that 5 MHz at 100 ft will give usable results. Since you're driving with an Arduino I'd guess that you won't be providing anything like 5 MHz, so your cable can be longer than 100 feet, and my number of 100 meters still seems reasonable. Of course, this requires that you use a very good signal cable such as the CAT 5 specified in the data sheet. If you are, your best bet might be to use one pair in a cable as signal, and parallel the other 3 to provide 5 volts.

|improve this answer|||||

Ground shift from LED current interferes as a CM noise. So use RS485 differential 120 ohm source and load.

The preferred solution is to use LTC486/488 for Tx/Rx quad. with 120 Ohm cable and matched Source load R's . If still a problem matching, use CM chokes and adjust R to cable Zo for optimal signal integrity and minimum ringing from mismatch. Then you can achieve ideal response with >=100kbps/km. That means 1 km @ 0.1 Mbps or 100m at 1Mbps.

Without proper differential Z and high CMRR with CM choke, and ground shift noise as a CM noise source, distance is degraded significantly.

|improve this answer|||||

This comes down to a basic application of Ohm's law. The cable has resistance proportional to its length. If you put too large a resistor in series with your LEDs, then too much voltage is dropped and they won't light they way you want.

AWG 22 has a resistance of 108 mΩ/meter. Your 10 meter cable contains 20 meters or wire, so is 2.2 Ω. Apparently that is too much for your application.

So don't do that. Solutions:

  1. Use a thicker cable. That has less resistance for the same length.

  2. Don't try to push power that far. Power the LEDs locally, then send a control signal.

  3. Drive with a higher voltage. Measure the voltage across the LEDs, and adjust the power supply to get the desired value at the LEDs.

  4. Drive with current. If you know the current these LEDs need, regulate that instead of the voltage. That automatically compensates for any series resistance. However, that current source will be required to have enough compliance voltage to produce the voltage the LED need plus the drop in the cable. The losses will still be there, just automatically compenstated for.

|improve this answer|||||
  • \$\begingroup\$ 5. Send a sufficiently high voltage to power a local voltage regulator at the load. This is done in, for example, PCs where 12V is sent from the PSU and locally regulated to lower voltages (CPU, PCIe). \$\endgroup\$ – TonyM May 27 '17 at 13:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.