[Teknynja] was working on a project where he needed to drive a few strips of Adafruit Neopixels – WS2812 LED strips – that were located several feet apart. These LED strips draw a lot of current, and are very timing sensitive; anything more than a few feet of wire between the microcontroller and the LED strip will probably result in missed data, voltage drops, dimming LEDs, and possibly a non-functional strip.
The solution, as in all matters concerning long distance transmission of data, was CAT5 cable. [Teknynja] used RS-422 drivers and receivers to pull this task off, with 75174 line drivers receiving signals from a Teensy 3.0, and 75176 bus transceivers reading everything at the other end of a 20 foot cable.
For the power drop issue, [Teknynja] is feeding 12V into a few of the wire pairs in the cable and using a cheap LM2596 buck converter to step everything down to 5V at the strip.
With a fairly simple circuit, [Teknynja] was able to drive a few strips of WS2812 LEDs through 20-foot lengths of CAT5 cable with ease; it worked just the same as if the pixels were connected directly to the Teensy on a workbench.
Ingenious!
I’d try to use AC for the power. It might be too noisy though. But possibly changing the frequency of it may help. You have a regulator on the other end anyway, so this is just eliminating a large(r) power loss.
But pretty good work though.
Why would using AC “eliminate a large(r) power loss”?
A good switching regulator should be more efficient than a transformer with a rectifier. Also, I imagine getting exactly 5V out of a settup without a feedback loop as beeing pretty difficult.
You can use low frequency AC (like 2 or 3 Hz)
AC or DC would have similar I*R losses. What you are saving is the big bulk capacitor that you are going to need at the far end (instead of both ends) and give you reverse polarity “protection”. I would consider driving it with *unregulated* DC instead of AC.
CAT5 have lots of parasitic capacitance per unit length. This is what limits the slew rate of the control signal over distance. Driving signal with differential signal is basic stuff.
I’m curious as to why the use of AC was suggested. Supply voltage being equal AC has no advantage over DC when it comes to overcoming the resistance of a conductor. In fact there is a distance where HV DC gains the advantage over HV AC. AC won the “current war” for a variety of reasons, that AC is inherently better than DC for overcoming conductor resistance wasn’t one of them.
AC will have greater losses due to inductance anyways.
You do not need line drivers on both ends for this feat. There are two critical things to consider when driving ws2812 via long lines:
– Make sure you convert your signal to 5V CMOS levels. 3.3V is marginal and will lead to trouble with long leads.
– Long lines will cause signal reflections due to impedance mismatch and cause lots of errors due to this. This can be preventes by proper matching. Parallel termination will not work with CMOS, but you can use series termination at the input of this line.
http://www.irctt.com/pdf/Nov_07_Electronic_Products.pdf
http://en.wikipedia.org/wiki/Characteristic_impedance
are you suggesting using only one line driver or none at all?
My first approach would be to use a driver to convert 3V3 logic to 5V logic. Then I would use series resistor termination to avoid ringing.
edit: You can use a 74HCTxx series chip for that, it does not have to be a line driver.
cat5 contains twisted parallel pairs and has very low loss. it is also not susceptible to much noise being that it contains TWISTED pairs. This being said, parallel lines will always have the same voltage at any point along the line. all wire has a calculated resistance per foot so a little bit of arithmetic can tell you if you need an amplifier (in this case likely to be a PPPoE booster.)
elementart
I love lemontart
Typo. Was meant to me LEMON TART
cat5 contains twisted parallel pairs and has very low loss. it is also not susceptible to much noise being that it contains TWISTED pairs. This being said, parallel lines will always have the same voltage at any point along the line. all wire has a calculated resistance per foot so a little bit of arithmetic can tell you if you need an amplifier (in this case likely to be a PPPoE booster.)
elementary
I’m sure the cat5 will achieve greater distances, but isn’t the real hero here the RS-422 differential line drivers? Those little beauties we’re used for extremely long terminal runs using Cat3 long before Cat5 was around, the differential signaling instead of using a common ground being the key. I also seem to recall that RS-422 would even work with line cable in a pinch, though twisted pair for better noise reduction was preferred. I like the use of cable on hand but I bet 20 ft could be achieved with the other two cable types as well, i.e. don’t waste your Cat5 if you have the other lying around.
The differential signalling is absolutely what helped him here. RS-422 or RS-485 will both do impressive distances over cat 5, and perform better with better cable.
I used WS2811 over CAT5 using SN75176 transceivers quite successfully on this project: http://bootiesattva.blogspot.com/2013/09/the-zonohedral-cathedral.html
This is getting ridiculous. The WS2812b is really easy to drive and the timings aren’t nearly as strict as HaD likes to pretend. I just put a 10 µH inductor in the dataline (admittedly, together with a 330 Ω series resistor) and it doesn’t faze them one bit.
this doesnt work at all. I tried it with only 3 strips, 4 meters away from the arduino and they are all failing