Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Superbright LED Driver chip

Status
Not open for further replies.

herbert

New Member
I need to drive a whole bunch of superbright LED's (up to 128) individually. I'm looking for a serial to parallel latch with outputs capable of 2.5V..3V at 20mA..30mA. I need constant current output. It does not have to be regulated.

Any suggestions are greatly appreciated. Thanks, Herbert
 
Consider using PIC chips. For example, the 16F84 has 13 I/O pins, each of which can be programmed as an output, and each output has a 25mA current limit.

Take 11 of these and program them with 12 of the pins as outputs. These outputs connect to your LEDs - no dropping resistors necessary. The 13th pin is programmed as a serial input. The program running on the PIC just repeatedly reads a 12 bit value from the serial input pin and puts that value on the output pins. That gives you control over 132 LEDs using 11 serial inputs.

Take a 12th PIC and program it as the master: one pin will be a serial input and 11 pins will be serial outputs. The 13th I/O pin is unused. The program just repeatedly reads eleven 12 bit values from the serial input and writes them one at a time to each of the serial outputs.

I don't know where you are getting the data to place on the LEDs, but if it's a PC, you could connect the master PIC to the PC's serial port. Probably best to work in multiples of 8 bits here, so just throw away 4 bits in every pair of bytes.

If you are just doing patterns on the LEDs, the master PIC might be able to generate the LED data itself.

You could have a more sophisticated addressing scheme for the LEDs if you want to be able to quickly change one LED state.

Each PIC needs a clock oscillator, but you can program them to take a TTL signal as the clock and just share a single oscillator among them. If you aren't connecting to a PC, you could just use an RC clock because timing would be completely consistent between PICs sharing the clock.

Oh yeah, you'll need a 4 amp power supply to run this lot! (That's 132 x 25mA for the LEDs plus 12 x 5mA for the PIC chips)
 
Andrew, Thanks. It's an nteresting approach. I'm sure it would work, but it seems to me that the PIC's just simulate a serial input latch. The problem is the number of components = cost.

In the meantime I've done some more looking around and I think I have a way to do it, but I'd like some opinions/comments on it.

To reduce the number of components a have to multiplex the leds. So they cant be on all the time and I have to pulse them. So they lose brightness, unless the pulse has enough juice. I understand that leds can typically be pulsed at up to 100mA, 33% of the cycle at low frequenzy (say 1 khz), without frying them.

So 4 leds with each 25% of the cycle, pulsed at 80mA should give me about the same brightness, right:?: 80mA is a lot, but there are some latches that can do that. I've looked at the Allegro A6276. A 16 bit LED driver that can handle 90mA constant current output. With 2 latches I'd have 32 pins, or 28x4=96 leds that I can drive:?:

So, what are the pitfalls:?: Do I need a resistor for every led to regulate the voltage drop:?: Any drivers out there with more lines:?: Can I do brightness control by varying the width of the pulse:?:

Thanks, Herbert
 
Multiplexing is a great idea with this many LEDs.

Pitfall: I think the A6276 can only sink current, not source it. The solution is to use a different i.c. for the current source. The following quote is from
**broken link removed**

---------------------------------------------------------------
Q5: What if I want to multiplex and need source drivers as well as sink drivers?

Multiplexing is possible using a device such as Allegro's UCN5891 8-bit source driver. Please refer to the Constant Current LED Drivers application note (AN29503.1, PDF).
---------------------------------------------------------------

AN29503.1 shows the necessary connections.

Do your sums before you go down this path, though.

If you are building a one-off, the reduction in number of chips in the multiplexed solution may be more than offset by the higher cost of those special driver chips and your time getting it to work.

The 12 chips needed in the PIC solution would fit in quite a small space, since there are no supporting components (apart from supply decoupling capacitors and the clock) and PICs are quite inexpensive. Admittedly, though, the wiring between the PICs and the LEDs could end up being quite a headache unless you can mount the PICs near the LEDs they control.

What is the shape of the LED array in your application?
 
Not sure if I understand the difference between sink and source. There is a lot of basic stuff that I don't know about this. I'm learning though :)

So my long shot simple approach: If I cascade 2 A6276's and use a PIC16F84 to control 32x4 leds, could I use 4 IO lines on the PIC to act as source and select the banks? I only need a few lines for serial data and latch control, so I'd easily have enough IO lines.

Thanks again.
 
Herbert,

The difference between source and sink:

If you connect the anode of an LED to the output of a TLC555 (a CMOS version of the 555), say, with the cathode of the LED going to ground through a resistor, the LED will light when the TLC555 output is high. When the TLC555 output is high it is sourcing current to drive the LED. To do this, internally it has a transistor connected between its output pin and the positive supply voltage. The current capacity of this transistor determines how much the TLC555 can source (it's actually 10mA).

If instead you connect the cathode of the LED to the output of the TLC555 with the anode of the LED going to the positive supply through a resistor, you get an LED that lights only when the TLC555 output is low. In this case the TLC555 must sink current to turn the LED on. To do this, internally it has a transistor connected between its output pin and ground. The current capacity of this transistor determines how much current the TLC555 can sink (it's actually 100mA).

In this simple example, you can see that if you want the LED to run at 20mA, you'd better connect it between the TLC555 output and the positive supply, otherwise you'd risk blowing up the TLC555.

The A6276 has transistors to pull its outputs low, so they can sink considerable current, but there are no transistors to pull the outputs high (I think - I haven't read the datasheet). This is called 'open collector' because the collector of the pull-down transistor is not connected to anything except the output pin.

If you want to multiplex your LEDs you'll connect them in a grid and connect all the anodes to outputs that can source current and all the cathodes to outputs that can sink current.

Then to light a particular LED, you take its anode high (using a current sourcing output) and its cathode low (using a current sinking output).

If you use a 32x4 grid, with 4 columns of cathodes and 32 rows of anodes, you could connect two A6276's to the anodes and a PIC 16F84 to the cathodes, but with the following restriction: only one output of the A6276's is allowed to be low at any instant, because the 16F84 can only source enough current to drive one LED at a time from each output pin.

(Note: it won't hurt to have more than one of the A6276 outputs low because the 25mA from the 16F84 is current limited, but the LED brightness will be proportionately reduced).

So you will be able to have up to 4 LEDs on at any given time. You are going to have a problem getting the display bright enough, because a lit LED will only get 1/32 of 25mA on average.
 
I'm trying to make a similar project (see pic programming) except the only part I'm having trouble is the amount of leads coming from the controller to the leds (got a few feet in between).
 
Hi Herbert and Watty,

Herbert: I had a look at what Watty was talking about, and you might be interested in the following link:

**broken link removed**

which describes a display with 128 LEDs done as a 16x8 matrix.

If you click the Circuits Gallery link at the top of that page, there is another Signboard project that you might also find interesting.

There's also this:

**broken link removed**

which is an 8x8 LED Signboard.

Watty: why not put the controller right near the LEDs? If you don't do this the absolute minimum number of connections between the controller and LEDs will be the square root (rounded up to the nearest integer) of the number of LEDs. If the controller is near the LEDs you'll need only 3 wires: two for power, and one for serial data.
 
Andrew,

I know I'm trying to get the best of 2 worlds here: low part count, without suffering brightness. The first example achieves maximum brightness straight off the controller, but uses a latch for every led. The 2nd uses few parts, but multiplexes 8 leds off the IO pins. I cant imagine that to be possible without significant loss of brightness.

A 128led array with 2V drop and 20mA constant current consumes 5.12W (128 superbright leds generate a lot of light). Not enormous, but a lot more than most chips can deliver. So I need to draw power from somewhere different than the PIC.

I still like my approach of 2x16bit latches to create a 32x4 matrix. I can place the latches close to the leds and have a fairly simple diagram.
Since the latches are sink, I need up to 32x80mA source current --> 2.5A, switched to 4 outputs. I guess that will take some serious transistors.
 
Watty,

Why don't you use 2 pic's? One close to the leds with all the wiring and one where you want to do you programming. Then you're back to three wires, but you still have your pic close to where you want it.
 
Andrew Partridge said:
Hi Herbert and Watty,

Herbert: I had a look at what Watty was talking about, and you might be interested in the following link:

**broken link removed**

which describes a display with 128 LEDs done as a 16x8 matrix.

If you click the Circuits Gallery link at the top of that page, there is another Signboard project that you might also find interesting.

There's also this:

**broken link removed**

which is an 8x8 LED Signboard.

Watty: why not put the controller right near the LEDs? If you don't do this the absolute minimum number of connections between the controller and LEDs will be the square root (rounded up to the nearest integer) of the number of LEDs. If the controller is near the LEDs you'll need only 3 wires: two for power, and one for serial data.

Could you please show me a diagram of this? Thanks
 
Herbert,

I agree: 32 x 4 with 4 beefy discrete PNP transistors as current sources is the way to go. You may need to use driver transistors too, because power transistors usually have a pretty low gain.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top