Controlling a 20W DC LED flood light that has a LED driver circuit inside.

Hello all!

I am trying to control a 12V 20W DC LED flood light using an Arduino and a TIP 122 transistor. The circuit works fine if it is just a 20W chip LED. But the flood light I want to control has an LED driver inside it and I am assuming that it is a constant current driver. What is the best way to control it? and by control, I mean ON/OFF and brightness. Is there anyone who has successfully done it before without any issues like heating up the transistor or getting a flickering output from the LED?

Thanks in advance!

Roop.

Hi Roop. You should post a link to the flood light. But I think you are correct, the circuit inside will be a constant current driver. If the light is not described as "dimmable" (and flood lights in general are not) then the constant current circuit will not respond well to your attempts to dim it and there will be flickering or no light at all.

So to dim the light you will need to replace the built-in constant current circuit with one that is appropriate for the led and is also dimable.

Also, tip122 is an old design and would not be a good choice even if the flood light is described as dimable. A more modern logic-level MOSFET would be more appropriate and less likely to overheat.

Thanks, Paul. That cleared my doubt. I have another question can I still use the tip122 as a switch to just turn the LED flood light ON/OFF without having to open the light up? Could you also suggest a modern logic-level MOSFET suitable for the same?

I know it is a little late but here is the link to the LED Floodlight:

Thanks again.

Roop.

This is how you post a link on this forum, so it can be clicked.

Hi Roop.

No, I would not use tip122 for switching this light. I will try to explain why.

20W @ 12V means that the current flow will be around 20/12=1.6A for this light.

The tip122 is a Darlington, which is two npn bipolar transistors connected together in the same package, to give it a high gain. The down side is that it will drop around 1.5V when switched on.

This means that the voltage available to the light will only be around 10.5V, making it a little dimmer than it could be.

But more importantly, with 1.6A flowing through it, the tip122 will have to dissipate around 1.6*1.5=2.5W of wasted power. Even with a heatsink, it will get hot, and this will shorten its life.

I would recommend a logic-level n-channel MOSFET. There are many available, but the one I usually recommend is stp16nf06l. It is commonly available and comes in a to220 through-hole package.

Stp16nf06l has an on-resistance of less than 0.1 Ohm. So at 1.6A, it will have to dissipate less than 1.6 ^ 2 * 0.1 = 0.25W. That's less than 10% of the dissipation of the tip122. It should not need a heatsink and will get slightly warm but not hot.

I can't think of the exact term for the TIP122 series but "obsolescent" is the closest - "to be used as a replacement part only, not for use in new designs".

It is a "disposals" part, sold off cheap (and dumped in Arduino "starter" kits for unsuspecting beginners).

Thanks much PaulRB can't be explained better! :slight_smile:

Paul__B:
I can't think of the exact term

Deprecated?

Yep.

hello again PaulRB,

I am using the circuit attached to the post. but I replaced the TIP with the STP16NF06L. The STP16NF06L transistor is still getting very hot in a very short time when I turn the LED on using it. Am I doing anyhtng wrong?

circuit diag.PNG

It shouldn't get warm. Something is wrong. Check the voltage on the gate when it is turned on.

What Arduino is it?

The voltage on the gate is 2.4V and it is an Arduini Uno board. The LED I am using is a 20W LED not a 10W. My source voltage is also not 12V but 10V as the battery got drained from testing for a long time.

sairoopd:
The voltage on the gate is 2.4V

That is the problem, I think. 2.4V is only just enough to switch the MOSFET on. To keep its resistance low and keep it cool, you need at least another volt. Why is the gate voltage not 5V, or very close to it? That is the question to answer. Disconnect the Arduino pin from the gate and measure the voltage on the Arduino pin. It should be 5V, or nearly 5V.

You are not attempting to send a pwm signal from that pin? Just pinMode(pin, OUTPUT); digitalWrite(pin, HIGH)?

It was my mistake. I did not change my code from analogWrite to digitalWrite and realized it only after I saw your reply. It is working fine with the Uno. Thanks for taking the time but I have another question if you don't mind. Which MOSFET do you recommend if I want to replace the Arduino with an esp8266(Nodemcu)? Since it has only 3.3v output can I use it with a level shifter? or is there a better MOSFET that works directly with 3.3v?

So far I have found that stp16nf06l works ok with esp8266. I have been using it to switch a pump which draws over 2A @ 12V. However, I am not attempting to control the pump with pwm and the pump is only running for 1 to 2 minutes at a time. The transistor does not get warm. But it may be that I have been lucky so far.

So try it directly with the esp. If there is a problem, a level shifter between the esp and the transistor would be worth trying. You could use 74hc14.