Need a bit of advice in terms of choosing which type of LED chip

Need a bit of advice in terms of choosing which type of LED chip and 2D panel wiring I’m making for one of my stage shows.

So I have 2D array of abstract shape like the one pictured below, I actually have no idea what it’ll look like yet but that is just an example. It will have approximately ~2500 or 3000 pixels, and I would ideally like to address all of these with one (potentially two if need be) teensy 3.1s. I have drawn the strips running horizontally with wires connecting in between where there is an air-gap, and I didn’t draw in all the strips but hopefully that makes sense…

This leads me to a bunch of other questions which I hope some of you could shed some light on…
I will probably use the APA-102, but I haven’t been able to find any data on how fast they are compared to LPD8806, or is it negligible?
Over a length of ~20m or more of LED strip do you see any signal degradation in the data/clock signals or are they still okay?
If not should I add amplification somewhere along the strips like another 74HCT245 chip?

I think the weirdness of the shapes and different lengths makes using the parallel output and ws2812s a bad idea, but I don’t really know to be honest because I’ve never really used it before. More generally is this a better way to wire up an LED panel, or am I better off using ws2812s, multiple teensys and parallel output? Would this hurt me if I wanted to interrupt to receive dmx signals (has an interrupt every 1.5ms to fill the dmx buffer)

Never really done something quite like this before so I would like some input… also I apologise if you’ve talked about this stuff before, I couldn’t find anything in my 10 minutes of not really thorough searching.

Thanks! :slight_smile:

Remember the power wiring and distribution design for your 2,500 pixels. At full brightness the current is 50A (2500X0.020) This is going to require some hefty power wiring, and a good power supply.

It’s good practice to keep system voltage drops to no more than 3%. To get close to this drop with a 50A load would require AWG 2 wire if the power wiring length was 10 ft. This is a big wire, and the drop is 3.2%!
http://www.calculator.net/voltage-drop-calculator.html

It would actually be 150A for all LEDs at full brightness white, as an RGB LED is actually made up of three individual LEDs (Red, Green, and Blue), and each one draws ~ 20ma.

It would be 150A, my bad.

That’s fine, on my last project I was using 2x Meanwell HRP-450-5 power supplies, they’re 90A, 5V. http://www.meanwell.com/search/HRP-450/HRP-450-spec.pdf I don’t think I would run full white regardless, aside from looking horrible I don’t think there is much point other than testing.

I injected power every ~250px so the voltage drop over that distance shouldn’t be too bad. I think for this panel I would run power along both sides each strip would get power from both sides, so I am not so concerned about that. It is 150A, APA-102 leds, I could just say 250 leds but pixels makes sense to me.

I am more concerned about the signal and clock lines really, I guess I can just do some testing, but it would be nice to get some input if anyone has some experience with large led counts and making a large matrix.

The WS2812Bs re-transmit the signal out of each pixel so signal degradation isn’t a problem, unless you have a long run of signal wire in between the controller and the first LED. I assume the APA102s do the same. @Daniel_Garcia has mentioned good results running signal over cat-5 for reasonable distances.

If you’re going to use WS2812B’s you’re going to want parallel output with that many leds, otherwise your frame rate is going to be terrible (75ms to write a single frame out).

I haven’t tried the APA102 in lengths over ~300 leds, so I don’t know if the clock rate suffers the longer it gets beyond that. At 300 leds though I can drive it at about 12Mhz (way above the 800kHz i can get with WS2811s, and still above what I can get even with parallelizing). In segments of under ~100 leds I’ve been able to drive APA102s at 20Mhz.

Also, it sounds like your project might be a good candidate for the mapping software that I have - which I really need a reason (read: willing victims) to wrap up and publish for people to use. In which case, you don’t have to worry about how specifically the leds are laid out, because you end up with a map of the X/Y coordinates of all the leds :slight_smile:

@Daniel_Garcia , is that map simply a look-up table that you have to store in RAM? How many bytes per pixel does it use?

It can be stored in either ram or flash - as for how many bytes per pixel, that depends on the X/Y resolution you want. I stick to 256x256 so it’s 2 bytes per pixel. If you wanted to go to 65536/65536 then it’d be 4 bytes per pixel.

The mapper program gives you a pair of array definitions that can be used to do the lookup (though I have some fixes/changes that I want to make to that output to a single array for faster/more efficient lookups).

Okay thanks for your help.

@Daniel_Garcia a quick question… say to update in realtime 16 parallel outputs by soldering on the back, I can get approx 300 leds per output correct? I would probably do 250, so that would take me well above the pixel count. Would I notice any CPU performance hit with the parallel output or would the APA102s be more efficient? More realistically I want to do some calculations with the visuals like waves overlapping/constructive interference and changing colour, I get the feeling I may have to stream pixel data to the teensy instead of doing it on-board like I would prefer…

Can you just set the length of the led strip to be 2500 to test the clock frequency to see how the clock performs at longer lengths or is it more complicated than that? I can’t imagine the frequency changing along the strip, unless I have fundamentally misunderstood my engineering degree :stuck_out_tongue:
It’d be nice to know how many APA102s I can put in a line before they start slowing down…

I’ll be ordering the parts soon and probably be building/programming it in January sometime so I’m happy to beta test your pixel mapper if you’ll let me. :slight_smile:

re: parallel off of the teensy 3/3.1 - yes. With 16 lines in parallel, updating 3000 WS2812 leds (~188 leds per line) it would take 6ms to write out led data for a frame (188leds per 32µs per pixel (30µs for WS2812, but the parallel code w/16 takes a little bit extra between pixels, but not much, 32 is probably high). Note that it would take 90ms to write it out if you had one single strand of 3000 WS2812 leds. For the APA102, at 12Mhz is 2.6µs per pixel (this is because the APA102 writes 32 bits of data per pixel), so it would take 7.8ms to write a frame out with the APA102, possibly a little bit longer. Note that in both cases (parallel WS2812 vs serial APA102) you’re looking at 6-7.8ms per frame of CPU time just to write out the CPU data.

re: testing the APA102, sadly, the problem has more to do with pixels further down the line. E.g. if I try to drive 200 pixels at 20Mhz with the APA102, it’s only pixels after 100 (give or take) that start glitching out. This is something that would require me getting a hold of about 3000 leds worth of APA102’s to test with (which I want to do for a future project, but that’s about $500 - and I’m trying to be good about spending money on led projects, especially since, for the most part, I don’t generally get paid for any of them (I am on one contract job, but I’ve done almost no led programming on that job, actually)).

You can, however, test timing on the teensy 3.1 right now. You could create your arrays of led data, and use the parallel controller - and then you can time how long it takes you to compute the data for a single frame vs. writing the frame’s data out. Let’s say you wanted a 60fps rate, at 6ms/frame, that’d be 360ms/s for writing led data out, leaving you with 640ms/s for computing led data or 10ms per frame. On the teensy 3.1 at 96Mhz, that’d give you 960,000 clock cycles per frame, or 320 clock cycles per pixel to play with data :slight_smile: I’ve heard that it is possible to overclock the teensy 3.1 to over 100Mhz as well, but I haven’t played with that at all yet.

If you are likely to be generating your pattern data on the computer, however, I would strongly strongly strongly recommend that you look into fadecandy - http://scanlime.org/fadecandy. It limits you to 64 WS2812 leds per line, 8 lines per controller, or 512 leds per controller (so you’d need 6 for your project). However, what you get for that is the fade candy controller pushing data out to the leds at 400Hz, using interpolation/dithering on the extra updates between each of your updated frames.

Thanks for all your help @Daniel_Garcia . I will look into all of these things, including overclocking the teensy, sounds like a fun project. I’d like to make this install fairly simple, so streaming data to the teensy is something I would prefer not to do if I can avoid it. Will post some videos once I’ve actually made the thing. :slight_smile:

Edit: Looks like you can overclock the teensy to 168MHz… I’m DEFINITELY trying this out with WS2811/LPD8806 and fastled 3.1, will report back. https://github.com/FrankBoesing/cores