I'm using a 7219 LED controller in multiplex-mode to control a grid of 64 LED-clusters. My LEDs draw a lot of current (60mA/cluster), so I've run each of the 7219's column/digit drivers through a Darlington transistor pair, using a ULN2803A array.
The problem: I think I need to include some resistors between the 2803 and the LEDs to keep them from burning out. (This wouldn't be necessary without the 2803, since the 7219 has that nice current-management feature.) I'm having trouble figuring out where to put the resistors and how to calculate their optimal values.
Some things I've read suggest I only need one resistor for each column, placed between the Darlington output and the LEDs. This seems weird to me though -- wouldn't this result in each column's LEDs getting brighter/dimmer depending how many LEDs are active?
It seems to me like the obvious solution would be to give each of the 64 LEDs its own resistor, calculating the value with the standard (Vcc - Vf)/I formula. But this adds a lot of complexity to my circuit, so I'd rather not do this unless I'm sure it will work and is really necessary.
What I'm trying to say is is that the 2803 is an open-collector switch, which usually is connected to the cathodes of an LED. If you apply "+" to pin10 of that chip, how will it get to the anodes of the LED? This is for the free-wheeling diodes only.
You need something like an UDN2981 / TLC59213 / M54564 / LB1740
My prototype circuit uses the schematic above and was constructed mostly through trial-and-error. It seems to work ok, but I have no idea why. I'm new to working with transistors in this way and don't totally understand the principles yet. I'll try using a UDN2981 instead.
Any thoughts on the resistor question? See any other major flaws I'm missing?
You are right about the shared current argument and brightness. To tell whether R1-R8 are placed right, one would have to know what kind of multiplexing this chip does in matrix mode (row or column scanning).
Well, I've just found a document that I clearly should've read before I began working on this.
I guess it's time to redesign this circuit altogether!
This seems to suggest that I need one kind of transistor array on my DIG pins (maybe a sinking array like the ULN2803?) and another kind of transistor array on my SEG pins (maybe a driving array like the UDN2981?)?
You do not need the inverters in that schematic they serve no purpose. As it stands that circuit will not work, if it is working then you have not wired up what you have drawn. You will need a current source for the anodes and a sink for the cathodes, not the raw output of an arduino. Current limiting resistors should be placed in the cathodes if you are refreshing by rows.