RGB Led Strip (non addressable) isn't lit up with full power

Hi there!

I've been working on a mildly complex project for a few months now, which includes the use of an RGB Led Strip, a very long one.

The colour of the LEDs is controlled through 3 PWM outputs from the Arduino Duemilanove. This signal is amplified through 3 BDX53C transistors (NPN type) on a common emitter layout. The resistors used are placed in the base of the transistors, since the strip already has its own resistors embedded.

Now, the problem is that I'm not getting the full brightness that the LEDs are capable of when the strip is connected to the amplification segment of the circuit, whereas when it's connected directly to the power source, I get full brightness.

Here are a few characteristics of the circuit:

  • Strip length: 7.1 meters (214 individual LEDs) - Datasheet
  • Power supply: 12VDC, 1.5A
  • Transistor BDX53C: 100V, Ic Max current: 8A, Hfe = 750 (Min) - Datasheet

I've done a few current tests, and this is where I get stuck. I've measured 1.3A of the total current when it's connected directly to the power supply, but only about 800mA when it's being controlled by the Arduino. I'm guessing that this is the reason it's not getting to full brightness. I just cannot understand as to why it doesn't go all the way up to 1.3 Amps.

When I'm testing this, I have all three PWM pins at maximum output:

analogWrite(Pin3, 255);
analogWrite(Pin5, 255);
analogWrite(Pin6, 255);

so I suppose it should drive the LEDs output to its maximum (??).

I've also tried using other transistors, such as BDT61C (datasheet), but I get pretty much the same results.

Other tries included removing the resistors that are attached to the base of the transistors, but to no avail.

From what I've read of the way transistors work, is that they allow the passage of an amount of current equal to the value of the current that comes through the base multiplied by the Hfe value (is this right?). If so, even the small amount of current that the Arduino is able to output through its PWM pins should be sufficient to drive the 1.3A necessary for the LEDs to give their full brightness.

Does anyone have any idea of what I'm missing? I've read that I should use an LED driver for these situations, but I wanted to understand, a) what exactly does an LED driver do in this case, and b) what's the difference between an LED driver and what I have.

Also, could this be a limitation of the Arduino?

Well, any help is appreciated, as I've not been able to get ahead for quite some time.

Cheers

An LED driver is typically a constant-current source.. the idea being that thermal runaway on the LED's will overcurrent and burn them out, while a constant-current supply limits how far that thermal problem can go.

So I'm guessing that's a long term situation to deal with. Thanks :slight_smile:

But I'm still not sure as to why I don't get full brightness on the LEDs when they are attached to the amplification circuit. Could it be that the transistors act like a kind on resistor, therefore limiting the current?...

You are losing voltage in your transistors, specifically the collector-to-emitter saturation voltage (Vce(sat)), which for your transistors is listed as being as much as 2V when conducting 3A (so it will be less at 800mA but still not 0). If you have a DMM measure the voltage at the transistor collectors and you will see it's not 0.

You will get better results using logic-level MOSFET's with low Rds(on) values (<=100mOhms or so) instead of BJT transistors.

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

Thanks, RuggedCircuits :slight_smile: I'll try that, as well as getting the constant current IC into the circuit ...