Electronics > Projects, Designs, and Technical Stuff

color led matrix help


Hi guys,

I want to control 144 RGB smt leds in a 12 x 12 matrix.  I have already done some initial testing on the leds (rated at 25mA continuous per color, 100mA peak for <0.1mS 10% duty cycle).  If I run them at 1/12 duty cycle and 100mA per led they seem to be bright enough for my purpose.

Since each led is really three, the rows will need control of 36 led elements and the 12 rows will be swept.  48 control lines would be needed for a brute force method, and a lot of pwm for intensity control.

One solution I have found would be to use a chip like the Texas Instruments TLC5940.  This chip can drive up to 16 leds with pwm control of each led and sink 120mA.  The interface to the chip is serial.  I would need three of these to cover the 12 leds in full color.  An atmel microcontroller would send the data to this chip for each of the 12 rows.  Pretty basic stuff.

The question I have is do any of you know of a somewhat cheaper/simpler chip?  Something like a serial shift register with output enable that could drive 100mA per output?  I believe there are enough processor cycles in the atmel that I really don't *have* to have the TI chip doing the PWM (and the long data needed to be sent across the serial line to set this PWM).  Or I could do most of this in a CPLD, but I would still need the high current drivers, which starts to make the TI chip more attractive again.  Suggestions?

the UCN5841 8 bit shift registers i used in my 8 digit displays have internal darlington drivers and backEMF diodes and will drive 500+mA per line
the LEDs need to be common anode though
the register also has output enable and separate power ground

You can use 4->16 decoders to enable lines/columns of your leds with a small number of digital mcu outputs.

You just have to watch the mcu speed, as you start to need very fast code very quickly as the number of leds grows.

If you want to do PWM dimming, a dedicated internal-PWM driver like the TLC5940 is the only way to go. You just can't do enough PWM in software for more than about 8x8x8 bits at decent framrates, even in optimised assembler.
Bear in mind that as well as PWM, it also handles controlling the LED current.
1/12th mux at 100mA will be a bit heavy in terms of driver dissipation and required row rate to avoid flicker - for 12x12 I'd be inclined to do it as 6x24 to spread the load over more drivers and halve the row rate.

For drivers I prefer the Macroblock MBI5031 - it uses fewer control lines between chips (4) by using the latch pulse width to select different modes, and also has a 'scrambled PWM' mode that runs the PWM at 64x the corresponding freq on a 5940, distributing the bottom 6 bits of the PWM evenly over the pulses, vastly reducing flicker and surge current. Doesn't do quite as much output current as the 5940 but functionality is nicer, and costs a lot less.

thanks for the help guys. I think I have decided the Allegro A6282 16 channel led current controlled driver chips with serial input.  They don't do PWM, but that is fine because I really wanted to do that in the Atmel anyway.  I only need 4 bit intensity for each color and it should work fine running 24 x 6 RGB leds (so 72 x 6 led elements) using several of these chips.  They can output 50mA per channel and I did some testing at 1/6 duty cycle and the led output was actually brighter at 1/6 duty, 50mA than 1/12 duty 100mA (some non-linear thing going on there I guess).  The nice thing is they are only $1.30 in quantity 100...significantly cheaper than the pwm chips.


[0] Message Index

There was an error while thanking
Go to full version