Methods to bias/power 3W LEDs


I am making a prototype Uno LED light controller to drive/monitor an array of 3W LEDs to provide lighting for an indoor grow light.

I plan to use some cannabilized 12V power supplies from old computers to power the arduino and LEDs (Arduino for on/off power according to desired photoperiod, maybe irrigation later....).

The LEDs are “full-spectrum, 3W” LEDs mounted on chips (or small PCBs with soldering lands on them). There is VERY little documentation with the LEDs other than there is an “apparently nominal” voltage rating of 3.2 volts printed on the package. I have no other documentation on these LEDs.
I have been experimenting with them by driving (3) of these LEDs in series, and biasing the current through the string with a single, IRF510 MOSFET, with the LEDs connected in series in the drain circuit. So the circuit is just: Vcc connected to the 3-LED string (series), connected to the IRF510 MOSFET drain, with the source lead grounded.....that’s it.

The issue is: How to best bias the Mosfet string (and I plan to use a LOT of these 3-LED strings) using the Arduino to turn each string on/off using shift registers. I know I could set up a feedback loop to monitor the current in each string, but I want this to be simple and relatively cheap.

Plan A: Just use some plain old JFETs in parallel and short the gate-to-source on each of them to act as a constant current source. The ones I have been using are good for about 50 mA each so I have been using 4 to 5 of them in parallel to provide enough current to light the LEDs without them getting warm at all. This is putting about 200-225 mA through the string without anything warming up at all. I am quite sure that they could handle more current, but I am still experimenting and I want to stress the LEDs at little as possible while still emitting “substantial” light.

This method DOES keep the LED currents stable and constant, the only issue is that I have to make hardware changes to change the LED currents/illumination. I anticipate making changes to the drive current for each string to try and find a “sweet-spot” of illumination/heat-generation/LED longevity.

Plan B: Use a single IRF510 MOSFET (or another type) to bias each string. Right now I am just using a variable resistor in a voltage divider to bias the gate of the MOSFET to the desired Drain-Source current. The problem here is that I can’t control the current very precisely (it drifts up and down...I am using a Fluke 77 to monitor the current DIRECTLY).

I like the MOSFET-controlled idea in that it keeps the parts count down and could more easily evolve into something more elaborate with some feedback control with some additional circuitry, but for now I am just trying to get the LED currents stable using the MOSFET.

Thanks for any ideas!.....

The only way to get a constant LED current is to use constant current LED drivers.
Then you also don't need the mosfets.

Meanwell has LDD-700 LED drivers (700mA = 2watt per LED) that can drive a string of LEDs.
e.g. three LEDs in series on a 12volt supply, or six LEDs in series on a 24volt supply.

Those drivers can be turned on/off or dimmed with an Arduino PWM pin.
Or 16 drivers can be PWM-ed with an Adafruit PCA9685 breakout board.

Homegrown 16-channel CC LED driver, 1.5watt/LED (<= 96 LEDs), with PCA9685 12-bit PWM dimming and WiFi control (ESP-12F underneath). Only needs a supply and the LEDs.

Isn’t there some way to make the MOSFETs into constant-current supplies, like with a zener or something in the gate circuit to provide a steady bias? The old JFETs were cool in that you can just short the gate to the source and voila!, constant-current source…

Also you say that the current supplies you quote are 700mA, so the individual LEDs are connected in parallel to divide the current by 3? (700/3 ~ 233 mA)?

That looks like a sweet you know if there is a lot of RF noise with the PWM of the LEDs? Not trying to be a negative ninny.....

Can you give me any particulars on that design? It looks like exactly what I’m trying to do but without the WIFI control! :slight_smile:

tentoes1962: you know if there is a lot of RF noise with the PWM of the LEDs? Not trying to be a negative ninny.....

I use Cat-6 (twisted pair) between the driver and LEDs.
Can't hear/see any interference on FM radio or TV.
Not sure if you would use a sensitive ham radio setup.

Can you give me any particulars on that design? It looks like exactly what I’m trying to do but without the WIFI control! :slight_smile:

Just as I explained.
16 CC LED drivers, controlled by a PCA9685 PWM chip, connected with I2C to an Arduino.
If you want to do it on the cheap, get a PCA9685 breakout board from ebay, and these type of LED drivers.
Make sure you get the ones with the current you need (~330mA = 1watt, ~660mA = 2watt).

Thanks Leo!

Can you tell me the calculus used to determine the correct mA rating for a particular LED? I have “3W” LEDs, so from the post I suppose that I should get at least “700 mA-rated” drivers, which I understand to mean that when the PWM signal goes high then the instantaneous current will be about 700 mA and the duty cycle determines the average brightness.

When I put 300 mA (steady DC) into these, they heat up quickly. Just wanting to understand......thanks!

Current should be about 1Amp (1000mA) for 3watt LEDs.
But most CC LED drivers are set for ~700mA (just over 2watt), to be on the safe side.

A low value current sense resistor on the driver sets the current.
Formula is usually 100/R (in mA).
So a 0.3ohm resistor (common) = 100/0.3 = 333mA
700mA drivers could have two 0.3ohm resistors in parallel (~666mA).
You can remove one if you want to drop that to 333mA.

I suppose you use LEDs mounted on a star base.
Or COB LEDs (COB = chip-on-board, many strings/groups of 1watt LEDs).

They should be mounted on a heatsink (sheet of aluminium) with thermal paste (or thermal glue) if you push more than ~0.5watt into them.

If you PWM the LEDs they still get intermittend full current, but the duty cycle affects percieved brightness and average current (heat).

Thank you Leo. The ones I am using are rated as “3 watt LEDs” on a star-shaped base. I was hoping to not have to do much in the way of active cooling, but I am resigning myself that that is not going to be possible.

I am planning to mount them to either some brass flat stock, or to try and experiment with some carbon-fiber square-stock. I understand that carbon fiber is a pretty good heat conductor so I was just going to thermal paste the LEDs to the carbon fiber....any recommendations or concerns?

Thanks so much for the help Leo....

You need something to fix the LEDs with (screws/rivets) if you use thermal paste.
Thermal adhesive might be easier.
No experience with the thermal properties of carbon fibre.
I use my boards mainly for downlights (no cooling problems).


So I purchased some Ebay PCA9685 boards and I am not hopeful that these boards will be able to supply SIXTEEN, 600 mA, PWM LED circuits simultaneously.

First of all, there is a silkscreen note on the PCA9685 board that says: “V+: 6V Max”. This is the supply voltage for the intended purpose of supplying power to servos and NOT LEDs. I am afraid that I will still have to drive the 3 LED series string with a MOSFET, because 6 Volts will not drive a series of 3, 3-watt LEDs.

The LED drivers (See photos attached) have two input pins and two output pins, so they are expecting a large, PWM signal of over ~9 volts to be able to drive 3, series-connected LEDs (each LED needs about 3.1 to 3.2 volt to be properly driven). Are there other driver boards that have separate, PWM AND power inputs?

Thanks everyone!..Any help is appreciated…


You can not drive a 3W led with one of these boards. It can not supply enough current. While 6V is the voltage that destroys them you should only run them on 5V maximum.

Yes I understand that by themselves, the PCA9685 cannot drive the LEDs, but I had hoped that it WOULD drive the Constant-Current driver (see attached photos). When I bought these drivers I assumed that they would have SEPARATE PWM and power (DC) inputs, but these do not.

Maybe I spun a wheel off of my tricycle in ordering these.

Yes this is my fault.....there are no PWM inputs on these..........

.......all is LOST!!!!!!!

Na I guess I should pay better attention! Hey I was just trying to blame this on someone!!!! :slight_smile:

I' affraid you didn't understand all of it, but we can fix that.

I assume you use an Uno.

Connect that PCA board with four wires to the Uno.
VCC (logic) to 5volt
SCL to A5
SDA to A4

Don't connect anything else to the PCA board (no 12volt).
The Arduino will power the PCA.

The green block, the red pins, and the V+ connectors are all for servos. Ignore them.

I see you have ordered small CC LED driver boards with PT4115 chips. not the boards I linked to.
Those small boards need to be modded before you can use them.

How good are you with a soldering iron.
There is an article floating on the web about modding those boards.
I will try to find it, otherwise I will talk you through it.

Hey thanks for the help Leo.....Right now My wife and I are temporarily in an apartment and I am limited in what I can do.....I can solder but I wouldn’t say I’m a pro...I was an ET in the Navy. I don’t mind learning something new though. I have begun the process of returning these CC boards to be replaced with ones that have the PWM inputs.

Still I would like to know more about this Leo and thanks again!

I did a quick search for the PT4115 chip and it looks like if you add a 100k pot with the wiper arm going into the “DIM” pin of the 4115 with the PWM signal from the PCA board....and also a capacitor to isolate the DCs from the PCA and the 4115....or is there more?

Still I would like to know more about this

Both boards are basically the same.
The small board has the PT4115 in a smaller package, and it has a bridge rectifier added because it is meant to go inside a LED relacement for a 12volt AC powered halogen bulb.
If you want to use them, you need to remove the four diodes in a row (the bridge rectifier), and solder two power leads (or pins) directly to the capacitor + and -.
The two "halogen light" prongs can also be removed.
The last thing is adding a dim wire to the dim pin of the PT4115 (the dim wire goes to the PCA9685 PWM output).
PCA9685 ground has to be common with LED power supply (you can also use a ground wire between LED driver ground and the PCA ground pin strip).
This Youtube video shows how to use pins and vero board instead of wires.

Another option is the PicoBuck LED Driver from Sparkfun (three drivers in one, with 330/660mA selection).
"IN1 IN2 IN3 GND" goes to three PWM outputs and the ground strip of the PCA9685.
VIN is the supply, and the OUTs go to the LEDs.

Thanks Leo! You are a great resource for me...I will try the mods to the existing boards I have.

The board layout is different on the boards that I have (see pics), from the ones in the video.

I will try to figure out the layout on my boards to make the mods they describe in the video…Thanks


So I looked at the attached data sheet on the 4115 chip. In the PDF document there is a “typical application” schematic that is probably the same circuit, just different board layouts. If this is so, then I don’t think it will be necessary to remove the bridge rectifier diodes, because with the DC power applied, they will be reversed-biased all the time.
…or maybe I am missing something…
PT4115E.pdf (1.04 MB)