Controlling a large number of LEDs

Hi guys,

I posted this in the software interfacing forum on accident. Sorry for the repost.

Basically I want to create a modularized LED visualizer. What I mean by this is that I want my visualizer to be composed of many boxes that contain some circuitry and several bright LEDs, but I want to minimize the mess of wires between these boxes.

However, I need a little help with this. My plan is to have a shift register/LED driver on each module. I have been looking at this chip (TPIC6C596).

Basically it's a cascadable LED driver that is able to provide 100mA of current per output. I plan on having a 20mA LED on each leg, so this will probably work. I also plan on cascading up to thirty of these chips.

Do you guys think this will work? Is it overkill? I would like to spend as little money as possible. I have found shift registers for around $0.20/unit (versus $0.80/unit for my current chip), but am I correct in believing they won't source/sink enough current? Does anybody know of a cheaper shift register/cascadable LED driver that would provide enough current?

Oh and one last thing, will I run into an issue of not being able to update all of these fast enough? I may want to be able to pwm the leds. I'm assuming I'll be fine based on the Arduino's clock cycle speed, but this might not be the case.

Thanks, Jacob

I think the 596 (74ls596) is an interesting chip for this application. Other shift registers I am aware of can sink <10 mA only.

The arduino technique of digitalOut() (also used in shiftOut(), there is no performance advantage in using that library!) however is not very efficient for clocking things out. I seem to recall that I once measured 150us with the scope for one output bit cell…

30 chips x 8 bits will thus take 36 ms for an update cycle…

However using the basic hardware (which however will need some low level coding) will speed it up by a factor of 10 to 20 which will suffice for a 2 or 4 level dimming…

If you use shift registers and have 8 LEDs controlled by individual pins at each node, then you could have 8 level dimming just by turning different numbers of LEDs on.

That's a good idea. I'm trying to decide whether or not I want to make each module a single color or do the typical RGB thing. If I go with a single color I will have increased maximum brightness.

I don't think programming at a low level will be a problem for me, but I plan on communicating with a computer via usb at the same time as all of this is going down so I may have to go with the TLC5940.

I'm kind of wary though, the best price I've found on that chip is $1.95. Add that to the price of the LEDs and I'm quickly approaching the shift bright's cost. The modules will most likely be significantly brighter, however.

Does anybody have suggestions on where I should buy my LEDs? I've found a few good Chinese suppliers, but I would rather not wait a couple of weeks for them.

Thanks, Jacob

Out of curiosity, do you consider the ShiftBrite and the MegaBrite to be too expensive even after some of the quantity discounts? We've tried to price them at a point comparable to the cost and time it would take to source all the parts, build, and assemble your own PCBs. Of course if you just want on/off control instead of 30bit color, it should be possible to make something a lot cheaper.

You might also be interested in some of bliptronic's LED strings. There are a few higher brightness options. Those are strings imported from China, they do require an external PWM signal that synchronizes with the serial data stream coming from the Arduino using a high frequency interrupt, so bitdepth is a bit less.