Looking for recommendation of LED driver with individual LED PWM control (not /
T&E Engineer
Posts: 1,396
I'm starting to look into designing a single color LED module perhaps 16x8 (and later RGB). It is not going to be matrixed based just individual outputs of 16 LEDs or so. The biggest problem I have had to deal with is with SPI based·LED driver chips that do not have PWM control built in. Figureing out from the manufacturer from·how to create PWM (e.g. 256 shades) from /OE on these cascaded chips (e.g. 16 outputs per chip in a·16x8 module would be 8 chips·for 128 LEDs) - has been extremely difficult to implement. I can only get the 'entire' 128 LEDs to shade and NOT individual LEDs via the SPI interface.
I have looked at datasheets from Allegro, Toshiba, and MBlock (china). However, today I saw the TLC59116 from Texas Instruments. This is I2C based not SPI and states in their datasheet that PWM is individually programmable per LED output. This sounds very promising.
http://focus.ti.com/lit/ds/symlink/tlc59116.pdf
http://focus.ti.com/docs/prod/folders/print/tlc59116.html
Has anyone worked with this TLC59116 or have any other recommendations?
Thanks.
I have looked at datasheets from Allegro, Toshiba, and MBlock (china). However, today I saw the TLC59116 from Texas Instruments. This is I2C based not SPI and states in their datasheet that PWM is individually programmable per LED output. This sounds very promising.
http://focus.ti.com/lit/ds/symlink/tlc59116.pdf
http://focus.ti.com/docs/prod/folders/print/tlc59116.html
Has anyone worked with this TLC59116 or have any other recommendations?
Thanks.
Comments
http://focus.ti.com/lit/ds/symlink/tlc5940.pdf
It's also worth noting that Timothy Swieter created a driver for it (you can get it from his site at www.BrillDea.com·under LED painter) and I've ported that driver to PASM if you want it.
Jason
Post Edited (JasonDorie) : 4/6/2009 7:29:45 PM GMT
-Phil
-Phil
-Phil
Attached is a short movie that shows the program in action.
For your application, you'd use 24 pins for 8x16 pixels and drive them through transistors, so you could have more current. You would be able to attain at least a 62Hz PWM rate, which would still be flicker-free. If you could settle for a 7-bit PWM, that rate would double to 124Hz or more.
-Phil
However, I found the NXP (Philips) PCA9535 which is I2C and almost identical to the TI chip TLC59116. But the NXP PCA9535 can connect up to 126 I2C devices while the TI TLC59116 can only connect up to 14 I2C devices. Hmm.
Since the PCA9635 can handle up to 126 I2C devices (e.g. additional PCA9635 LED drivers), this accounts for about (16x126 = 2016 LEDs). For an RGB version of my 16x8 LED module, it would have 128 * 3 LEDs = 384 LEDs. So that means I can have ~5 16x8 module (e.g. 2016/384 = 5.25 or ~5). OK so that means I can only have 5 modules left and right for my columns for RGB. I was thinking that for Rows of modules I would just use more ports on my AVR controller for the SCL and SDA lines for a separate I2C bus per module row.
However only having 5 (16x8) modules for columns (eg left and right), it would not be enough for a large sign.
So my question is, How does one get around this limitation on the I2C bus?
Can a multiplexor be used for I2C? Any recommendations for this NXP part?
Should I just stick with SPI and clock the data out in an unlimited fashion. I like being able to control a specific LED output that can be easily done with I2C with PWM?
-Phil
TI TLC5940 as Jason pointed out. I have used this a lot and find it easy to use, the interface is SPI like with an added gray scale clock. Just clock out the data and you are done. focus.ti.com/docs/prod/folders/print/tlc5940.html
TI TLC5946 This is similar to the above, but you don't have to have a high voltage to adjust the gray scale of the device. I have a couple ideas cooking that may use this. focus.ti.com/docs/prod/folders/print/tlc5946.html
Allegro A6281 This is a way cool IC with three channels of LED control at 10 bits with the PWM function built in. The IC are daisy chainable like other IC, but the best part of this IC is that it operates on the LED voltage supply - in other words no need for an LED supply and a logic supply with this IC. Unforntunately this IC is in very small packages. I have a product coming out next week that uses this IC. www.allegromicro.com/en/Products/Part_Numbers/6281/
I have used the PCA9535/PCA9555 as general purpose I/O expansion devices. I have tried to do LED dimming with this, just blinking and it works OK. You would really need a high speed driver to PWM the LEDs using I2C.
Oh yes, I agree with Phil too on using the Propeller as the LED driver. That is another product designed that I hope to have ready by middle of May or first of June.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com
Do you know of any that are 24 bit? (e.g. Red 8, Blue 8, Green 8). Am I looking at this wrong?·These are all 8 or 16 bit and I want to be able to incorporate video data?
I like the Allegro A6281 which I believe would have 10 bits of PWM per channel (over 1B colors?)
Post Edited (T&E Engineer) : 4/10/2009 12:43:38 PM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com
Jason
http://forums.parallax.com/showthread.php?p=798821
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com
Another factor is the footprint for ExpressPCB. I don't see any of the surface mount parts listed. What design tool do you all use. I am starting to like the Allegro and the TI (SPI) parts more and more.
So if you have 10 or 12 bits or PWM and only need 8 bits do you just not use the remaining bits or write the code in to utilize it anyway (e.g. won't hurt)?
BTW: As I have already invested quite a bit into this ... I will probably design this·with my new MikroElektronika BigAVR2·board in MikroPro C. It·uses an ATmega2560 so there is plenty of horsepower to do this.
Thanks again!
Post Edited (T&E Engineer) : 4/13/2009 11:38:51 AM GMT
I use Eagle myself, so I can't say what footprints are in ExpressPCB, but surely they would have some SMT parts like SSOP or TSSOP. If you are leaning towards the TI route, consider the TLC5946, if you can manage the surface mount package. With the TLC5946 you can adjust the dot correction with logic levels, if needed.
As far as the bits count you are asking about, I have done it both ways. Sometimes I scale the input value to the register, but most times if I don't require the control I simply pad the number with zeros. For instance if I only need 8-bits and there is 10-bits available I will put 2-bits on the end. It remove a little control at the low-end, but may not be needed depending on your design.
Oh yeah - plenty of horsepower in the ATmega2560.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com