# How to drive a 10 Watt LED from an Arduino?

I wired a circuit using the NPN transistor 2N2222.

An active HIGH is maintained at Arduino Pin 7 connected to the base of the transistor. The LED lights up but the brightness is considerably lower than when powered by a 9V battery directly. From the datasheet of 2N2222, I learnt that it can handle a max collector current of upto 1A. So why doesn't the LED glow brightly when the transistor is in saturation?

• Is the transistor in saturation? Measure the voltage between emitter and collector - if in saturation, it will be about 0.3 volts. – Peter Bennett Apr 1 '18 at 15:36
• @PeterBennett Alright. – sixter Apr 1 '18 at 15:38
• Data sheets often display maximum limits prominently. Yes, a 2N2222 can pass 1A briefly, or if cooled. Use a more robust transistor. – glen_geek Apr 1 '18 at 16:19
• Most likely it's the "9V battery" that's the problem, if you mean those little ones. But don't blame it - thank it for saving your LED, since I can't see a current limiting resistor in your schematic. – Brian Drummond Apr 1 '18 at 16:41
• @BrianDrummond But like I mentioned, the LED is super bright when it is directly connected to the same 9V source. About the current limiting transistor, I had one in my circuit. Forgot to add it in the schematic. – sixter Apr 1 '18 at 16:44

You will need something in a TO-220 package, or similar. The D44H11 has relatively high current gain even in saturation and a very low saturation voltage when $\beta_\text{SAT}=10$. Here's Figure 5 from the OnSemi datasheet:

I've circled the region related to operating at $1\:\text{A}$. You can see that the typical "ON (saturation) voltage" is well under $100\:\text{mV}$. This just means that when operating as a switch, it will diminish your power supply voltage. But only very slightly. Which means most of the voltage will be able to appear across the current limited load you have. And that's good.

Another helpful curve is Figure 7:

This helps you estimate the worst-case voltage required by the base-emitter junction. Here, you can see that even when rather cold it is perhaps not much higher than $900\:\text{mV}$ but that also with heating it might be more like $600\:\text{mV}$. This range helps you work out an appropriate base resistor value to use or, alternately if you have to expand the circuit somewhat to make it work with the Arduino, it feeds into the rest of that design.

This gets to the point now where a question arises about directly using the Arduino pin to drive the base of such a transistor. (Sure, the TO-220 D44H11 can certainly handle the current. But can the Arduino handle driving it directly?) Thinking conservatively about the BJT as a switch, you'd be supplying $\frac{1\:\text{A}}{\beta=10}=100\:\text{mA}$ to the base. (You can see this ratio showing in Figure 5 and also in Figure 7 in the upper left corner of each image.) The Arduino pin simply won't do that by itself. No chance.

So you must (1) compromise towards simply driving the BJT almost directly from the pin and just using what you can get (which isn't good for the Arduino and is beyond its design specs but in a pinch might be serviceable with the D44H11); (2) hook up multiple I/O pins from the Arduino so that they might hopefully add up to that much current (but this still might exceed the specs for an entire port for the Arduino and still therefore not be good for the MCU); or (3) consider additional circuitry (or a MOSFET) to address the problem.

A good design would probably head in the direction of (3) above and add some circuitry or else use a MOSFET with an appropriate threshold voltage and drain current rating. But before a good design can be considered (either way) one also needs to know how fast you expect the circuit to operate. Very high frequencies have special considerations that must be dealt with. With BJTs, there is charge storage removal issues related to saturation, for example. With MOSFETs there is the gate charge, for another example. So nothing much more can be done without a clear idea (within, say, an order of magnitude) of what kind of frequencies and the duty cycle dynamic range you might be considering for operation. So I have to leave this here until that information is forthcoming.

For example: Do you intend on using this for very slow operation? Or do you expect to operate this under a fast PWM with varying duty cycle settings?

Given the high current you are switching and the fact that you've indicated relatively slow switching (which makes it easier to deal with), the circuit breaks up into two parts: the power BJT and the driver BJT. The power BJT will have to operate as a switch, because that's what it is there for. But the driver BJT can either be operated as another (lower current) switch or else it can be operated as an emitter follower to provide the current drive required by the power BJT.

The BJT-as-emitter-follower driver would be nice, as it greatly lightens the load on your Arduino I/O pin. But, unfortunately in this particular case, it exposes the driver BJT to significant heating and that would mean a larger driver BJT. The BJT-as-switch driver keeps the driver BJT cool, but requires 10X the drive current from the I/O pin and also unfortunately throws significant heating into a resistor.

(You really can't win the dissipation battle, since the base current needed to drive the high-side PNP power switch has to come from ground and that is going to be $\ge 8\:\text{V}$ away. That has to be dissipated somewhere. The only question is where.)

Let's take a shot at this:

simulate this circuit – Schematic created using CircuitLab

Assuming an I/O voltage of, say, $4.8\:\text{V}$, $Q_2$'s collector current (when you pull the pin HI) will be about $\frac{4\:\text{V}}{82\:\Omega}\approx 50\:\text{mA}$. The I/O pin will have to supply about $\frac{50\:\text{mA}}{\beta=100}=500\:\mu\text{A}$ which is pretty easy and means that the expectation of $4.8\:\text{V}$ at its HI output is more than reasonable. This $Q_2$ emitter current means that the dissipation in $R_1$ will be $200\:\text{mW}$. (It is inconsequential in $R_2$.) The dissipation in $Q_2$ will be about $\left(8\:\text{V}-4\:\text{V}\right)\cdot 50\:\text{mA}\approx 200\:\text{mW}$.

(This assumes that $Q_1$ can be sufficiently saturated when targeting $\beta=20$.)

When ON and active, the dissipation in $Q_1$ will be about $200\:\text{mV}\cdot 1\:\text{A}\approx 200\:\text{mW}$. With TO-92 packaging, this means about $40\:^\circ C$ above ambient if you just keep it on 100% of the time. If you don't, it may be less. With TO-220 packaging, or any of a variety of other SMT packages, the temperature rise will probably be a fair bit less.

• Thanks for the informative answer. I will be switching the LED with 50ms delays in between. That'd be about 20Hz, I guess. – sixter Apr 2 '18 at 0:03
• @sixter That is very slow. So that means there are "lots of ways" to go. I'll write up one. Does the Arduino you have present 3.3V at the output? Or 5.0V? (I never remember.) – jonk Apr 2 '18 at 0:43
• @sixter Do you prefer a TO-220 BJT + 2 W power resistor? Or two TO-220 BJTs? It's "who cares" to me. But it may matter to you. Which would you prefer? – jonk Apr 2 '18 at 0:58
• That'd be 5.0V. In between, I happen to have an H-Bridge motor driver IC with me. Can I drive the LED using that? – sixter Apr 2 '18 at 0:58
• Two TO-220's I guess. – sixter Apr 2 '18 at 1:00

The only 800mA is the highest current that can be handled by 2N2222 NPN transistor. In order to handle 1A in a circuit, you need a different transistor other than this which can handle 1A current. Mostly using mosfet for switching actions is preferable. The circuit for High Power LED switching using Mosfet

simulate this circuit – Schematic created using CircuitLab

10W is an allowable operating value of IRLZ44N's Power dissipation. When you see the datasheet it is evident that it can handle 1A very easily and the same for power dissipation. Here is the snap of it.

Also, it is suggested that seeing characteristics graph in the datasheet is a good thing to confirm that the parameters we have for our circuit are in a limit.