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 8x6 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