How can a TLC5940 work w/ Common Cathode RGB LEDs?

Hello World,

How can a TLC5940 work with Common Cathode RGB LEDs or is there another driver that works fine to? Can anybody help me with this??

Thnx,

Michel

Just a thought, maybe it wont work as I'm not really an electronic guru. Why not use transistors for each output ? Let's say that you connect your transistor's Emitter to the output of the TLC, the Base to VCC, your led's cathode to ground and the Led's anode to the Collector of the transistor.... (sorry, the circle on the right is VCC, the stroke is GND, gotta redraw this symbol ^^)

Would it work ?

I tested this circuit. As i thinked, it doesn't work ^^ You got to find away to inverse the output from the TLC. It outputs negative voltage, so you need to convert it to a positive voltage to be able to use common cathode. I'm searching for it myself, as I have a bunch of common cathode RGB leds.

I tested this circuit. As i thinked, it doesn't work ^^ You got to find away to inverse the output from the TLC. It outputs negative voltage, so you need to convert it to a positive voltage to be able to use common cathode. I'm searching for it myself, as I have a bunch of common cathode RGB leds.

Thnx, but noone knows how...hahaha I'll hope I have some answers this week!

I'm sorry but that schematic is total pants, the transistors aren't doing anything.

Simply connect the common anode to ground, then connect each cathode through it's own resistor (start with 200R) to each of the PWM output pins.

If you want to use the TLC5940 see:- http://www.arduino.cc/playground/Learning/TLC5940

But this chip will not work with common cathode devices. Nor can you make it do.

Yeah, I know it doesn't work, I'm bad at pure electronics stuff so that was just an idea. Tested and discarded ^^

I’m sorry but that schematic is total pants, the transistors aren’t doing anything.

Simply connect the common anode to ground, then connect each cathode through it’s own resistor (start with 200R) to each of the PWM output pins.

If you want to use the TLC5940 see:-
http://www.arduino.cc/playground/Learning/TLC5940

But this chip will not work with common cathode devices. Nor can you make it do.

Please tell me which driver do work with common cathodes??

Well just look This is what I found on the Farnell site. http://uk.farnell.com/jsp/search/browse.jsp;jsessionid=1LLRJEQQTZC0OCQLCIPJKBQ?N=0&Ntk=gensearch_001|gensearch_001&Ntt=led+drivers|cathode&Ntx=&_requestid=334313

Yeah, but those chips don’t use PWM on their output pins so you can’t set different intensity on each led. That’s why were struggling with the TLC5940.
Ok, just buy common anode leds, but it’s also a personnal challenge (and a way to learn) how to drive common cathodes with this chip.

Well just look This is what I found on the Farnell site. http://uk.farnell.com/jsp/search/browse.jsp;jsessionid=1LLRJEQQTZC0OCQLCIPJKBQ?N=0&Ntk=gensearch_001|gensearch_001&Ntt=led+drivers|cathode&Ntx=&_requestid=334313

Thnx...I now ordered 4 max7221's and 6 TLC5940's. I also ordered 70 common anode RGB leds.

On another thread, macegr said :

I used common-cathode RGB LEDs and a p-channel MOSFET to power each red, green, and blue anode rail.

With a TLC5940...

Yes but that would mean :-

  1. You have to synchronises the FET switching to the scanning rate.
  2. All three colours will be the same brightens so no colour blending.

You can send a new command to the TLC5940 before it has to switch to the next color. This means you do get brightness control of each color of each LED. However, the brightness is 1/3 normal unless you want to risk burning out the LEDs by increasing the maximum current.

I don't think you could do that fast enough.

Well, you can. That what "I've done it" means.

Well, you can. That what "I've done it" means.

So where does it say "I've done it" in the previous post?

You can send a new command to the TLC5940 before it has to switch to the next color. This means you do get brightness control of each color of each LED. However, the brightness is 1/3 normal unless you want to risk burning out the LEDs by increasing the maximum current.

Is there any time to do anything else? What refresh rate can you get?

Plenty of time. Use timer interrupts. For flicker-free operation let's assume you want to update R G B at 100Hz. That's 300 updates per second. The TLC5940 requires 192 bits per update. So if you didn't need to do anything else, you could get by with a shift clock speed of 57600 clocks per second. I don't know how fast the Arduino shiftout speed is; I did this on an ATTiny and used the USI to achieve nearly 5MHz shift clock. That means doing one update of a TLC5940 took about 0.04 milliseconds. So over the course of one second of CPU time, the TLC5940 require 300*0.04 or 12 milliseconds. As the shiftout routine gets slower, the proportion of CPU time increases.

That's not the real problem...it's the BLANK signal. You have to hit that once every 4096 clocks. And if you LATCH in the middle of a PWM cycle, you might see odd flickering. So you want to sync everything up. I ran the TLC5940 right off the main oscillator and set an interrupt for every 4096 system clocks. I would update the TLC5940 once every fifth BLANK strobe. I did the shiftout routines during that period, and hit the LATCH as soon as it was time for the next cycle, and switched the FET that controlled the appropriate color channel. It should be possible on an Arduino since it's just an AVR with some libraries.

Just so anyone reading this post later has the details. You can run common cathode RGBs with the TLC5940 if you multiplex.

See this post for details on a project that uses the multiplexing technique.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1266369410

I was able to make it work easy on a breadboard with three npn's.