Electronic – arduino – 74HC595 +TLC5940 multiplexing 128 leds -> not enough power

74hc595arduinocurrentmultiplexer

Apologies in advance for probably missing a lot of things. I'm pretty new to electronics.

I'm building a 128 led (monochrome) multiplexed array, driven by an Arduino. I'm using a 74HC595 as the current source and a TLC5940 for sinking and PWM. The output consists of an 8 (74HC595) x 16 (TLC5940) array of leds. Any number of the leds can be on at a given time.

I'm doing the multiplexing by turning on a column with the 595, one at a time, and then setting the appropriate values for PWM for the TLC, lighting the rows in a columns at desired value.

Multiplexing works fine already but scale becomes a problem with the current 8×6 array i have built (6 out of 16 so far connected to the TLC). I'm pretty sure my problem is that turning on a column with the 595 can not supply enough juice for the 16 leds in it. The leds have a forward voltage of 3.3V with 20mA current. This would mean the 16 leds in series would eat up ~53V @ 320mA, which is far above what the 595 can provide and the TLC can sink. How would i go with making this work? Is there some magic i can do in software to help with this (my guess is not)?

I've been looking at adding a darlington array (something like ULN2803) to pump up the voltage to 50V per channel. This i guess would be fine if all 16 leds would be on at the same time but if only 1 is on the led will most certainly fry. Because of this i guess i need to be able to add a resistor that changes value depending on how many leds are on at a given time. I was thinking of putting in a digital potentiometer to do this but it feels a bit overkill + i haven't come up with a good solution for hooking this up (without putting a single one on each 2803 output)?

Ideally i'd keep the circuit quite simple but i'm open for ideas so any suggestions are more than welcome! Also I wouldn't be surprised if i'm totally missing the point on the problem..

If what i'm trying to do is not clear enough i can create a schematic for it

thanks

Best Answer

If you were running the LEDs in series then yes, you would need a higher voltage. You aren't though - otherwise they'd all be on or all be off. You are running them in parallel.

From what I understand of your description you have the one output of the '595 going into the anode of the all the LEDs of one column. The cathodes of these LEDs then go into separate inputs of the TLC for PWM.

And, as you say, the '595 can supply 35mA of current per output. That is enough for to light one LED reliably.

You will need to supply 6 times that current for 6 LEDs.

The simplest way would be to use a single transistor and resistor per column. For example, the '595 output connects to the base of an PNP transistor through a 1KΩ (for example) resistor. The emitter connects to Vcc, and the collector connects to the LEDs in the same way the output of the '595 used to. When the '595 sets an output low it turns on the transistor which then allows the current to flow from Vcc to the LEDs.

enter image description here

  • I don't know what the TLC5940 does in the way of current limiting - I haven't shown any current limiting resistors that may be required for the LEDs if the TLC5940 doesn't do that for you.

You can't use the TLC with, for example. a ULN2803 as they are both current sinks. You need something which can be a current source, which a transistor can be.