# What to use for the high-side (anode) drivers of a common anode LED matrix?

I'd like to multiplex rows of LEDs with a constant current sink driver. Should I just use BJTs to switch current into the rows of anodes, or is it better to use FETs, an array of FETs, or the same packaged into a convenient IC? It's easy to find current sinking ICs but I'm not sure what to search for on the sourcing side.

I would like to build something substantially similar to the Rainbowduino, http://nkcelectronics.com/rainbowduino-led-driver-platform.html . The Rainbowduino lights 24 LEDs at once with 24 current sinks and one current source using a Darlington array as the so-called "Super Source Driver", then it lights the next row of 24 and so on for 8 rows. Very standard. I would like to find a substitute for their unavailable-in-the-USA Darlington array. What do I need search for on digikey/Mouser to find an IC containing an array of current sources?

• It appears the "magic search word" I was missing is the humble buffer IC, a chip that turns a logic signal of x volts from its input into y volts at its output. They cost 15 cents. Of course a buffer that can source 1A is another thing and probably better left to a PNP + open drain. – joeforker Jul 26 '10 at 16:42

You can build your own common-anode driver out of discretes like this:
A forward-biased diode at the zener (D2) cathode will let you use 1 zener and a bunch of standard silicon diodes for lower cost and easier availability.

Remember that discrete devices are available in arrays, which will greatly simplify breadboard or perfboard construction. However, this will reduce your available power significantly. If you're doing it on a PCB, it's perfectly fine to do it with discretes (as long as you have room.)

With that circuit R1, D2, and Q1 all dissipate minimal power, so can be SOT-23 and 0805/0603, or low power arrays.

• I'm having a little bit of difficulty understanding what your circuit's doing. I can see that you're creating a tiny power supply with R1 and D2, but I'm confused as to what Q1's doing. – akohlsmith Jul 22 '10 at 17:48
• Note that I need 8 of them... – joeforker Jul 22 '10 at 18:47
• R1 pulls the gate of M1 up to V+ to turn it on. D2 clamps the voltage here below the diode voltage so that you don't exceed your maximum Vgs. This may not be necessary if you're using 12V and durable MOSFETS. When the MOSFET turns on, current flows and establishes a voltage across R2. R2 is selected such that the desired current (750mA) produces a voltage just less than Vbe at the base of Q1 - About 1.5 ohms in this case; but 750mA is a lot of current. – Kevin Vermeer Jul 22 '10 at 23:08
• When too little current flows, Vbe fails to cause current to flow through Q1, and the gate goes high. When more current flows, Vbe increases, Q1 turns on, and the gate voltage is lowered. Works like a charm, and much cheaper and smaller than an opamp measuring the voltage over a current sensing resistor. Note that a zener at the base of Q1 would allow you to make R2 share the power dissipation with the MOSFET. – Kevin Vermeer Jul 22 '10 at 23:12
• @joeforker - Just replicate the circuit (with the exclusion of V1, of course) 8 times. Nothing in that is expensive or big, except for M1. But, (without a buck regulator) you're going to need something to dissipate some power. – Kevin Vermeer Jul 22 '10 at 23:16

There isn't anything wrong with using discrete devices (BJTs or FETs). FETs will get you more bang for your buck (lower losses, easier driving) but BJTs are cheaper. All in one ICs are more convenient and take up less space, but are more expensive.

It's your call. 750mA across a 1.4V BJT drop is just over a Watt; I understand that you're duty-cycling the drive, but I'd suggest P-channel FETs with small NPN switching transistors driving the gates if I were to do it myself. You're probably going to want to drive those LEDs from a higher (12V?) supply in order to maximize brightness, and the transistor will give you a nice open-collector gate driver (although the pull-up resistor may end up drawing some current.) Without knowing more about your design it's hard to say what is best.

• Thank you for your explanation. I will be sure to include the row driver voltage drop in my calculations the next time I choose resistors for my LEDs! – joeforker Jul 22 '10 at 17:15

and one current source using a Darlington array as the so-called "Super Source Driver"

This is maybe just a terminology thing, but you don't want a current source, you need a voltage source. Current will be controlled by your constant current sink driver. A current source wouldn't be good anyway, since the sourced current will depend on the number of LEDs that's on.

Let's look at your requirements first. You need 8 outputs, each of which has to drive 24 LEDs. The outputs will be 1:8 multiplexed, so each LED will have to served 8 times its nominal current to have the same luminosity as when statically driven. I'm presuming common 20mA LEDs. That means each output has to supply 24 $\times$ 8 $\times$ 20mA = 3.85A. That's a lot.
I'll presume you have a low voltage power supply, like 5V, and that you want to control your driver using a logic level.

There are high side driver arrays. The AMIS-39101, for instance, looks nice, but isn't cut for the required current.

How about a discrete solution? If we can find a logic-level P-MOSFET that can supply 4A pulsed we'd be there. Let's take a look at the Si2377EDS I found at Digikey. $R_{DS(ON)}$ is 61m$\Omega$ at a 4.5V $V_{GS}$ and $I_D$ of 4.4A. Power dissipation is then (4A)$^2$ $\times$ 61m$\Omega$ $\times$ 12.5% duty cycle = 120mW. That's pretty decent!

The $I_D-V_{DS}$ graph shows that even at 2V $V_{GS}$ we have plenty of current.

So, just use 8 Si2377EDSs, possibly with a gate resistor, and you can drive the lot from 8 microcontroller outputs.

A Maxim MAX7219 can handle up to 64 LEDs as a current source. I wrote a short review about it here.

• That's for common cathodes. I have common anodes. – joeforker Jul 22 '10 at 14:17
• Ah, sorry. Thought you were looking for current sourcing IC. – user1307 Jul 22 '10 at 14:55
• @joeforker - and expensive! 11 dollar in 1s at digikey. – stevenvh May 24 '12 at 5:08
• @joeforker - The common cathode for the 7219 is only relevant if you want to use the 7-segments decoder. If you have just an 8x8 matrix common cathode or common anode aren't relevant. – stevenvh May 24 '12 at 7:16