I have a project which requires me to drive a 100W LED (32V, 3A, CC). The only catch being, is that dimming control is required via Arduino. I couldn't find a conclusive method of doing this via internet research, but I have hypothesis'd some methods. Please let me know which one would be best, or if there is another way.

  1. Replace the (voltage trimmer) pot on a buck/boost board with a 10k digital potentiometer.

  2. Using a MOSFET circuit to drive the LED, controlled by the 0-5V feed from the Arduino.

  3. Using 3 "LDD-1000H" drivers (1A each, accepts PWM dimming) in parallel .

  4. Something completely different!

  • 4
    \$\begingroup\$ 5. Find a proper LED driver with PWM dimming, made for your voltage and current range. \$\endgroup\$
    – JRE
    Jan 27, 2019 at 9:44
  • \$\begingroup\$ @rr1303 we would take the sqrt() if we were driving a constant resistance load, but a LED is nearer to constant voltage, therefore we take the PWM linearly to control LED power. \$\endgroup\$
    – Neil_UK
    Jan 27, 2019 at 11:35
  • \$\begingroup\$ @rr1303 As Neil said, your suggestion is incorrect. The voltage across the LED is relatively constant so average brightness is proportional to average current which is directly proportional to PWM duty factor. \$\endgroup\$ Jan 27, 2019 at 12:07
  • \$\begingroup\$ You must remember to never design by “implementation specific” options a design by specs. Choose your requirements and acceptance criteria wisely. E.g. all in/outs linear or logarithmic for 128 steps or 1024 steps or 16bit resolution , then rate control, flash pulse, strobe, temp rise , passive cool, size, cost, R&D time! Make or Buy. .. get the idea? Without spec you can never make a perfect design which only means meet or exceed written specs. \$\endgroup\$ Jan 28, 2019 at 3:43

1 Answer 1


To "properly" drive an LED you must use constant current drive. If you attempt constant voltage drive you will at best obtain approximate power control and at worst will destroy the LED and/or shorten its functional lifetime.

Your option 1 is effectively a voltage control method so is unsuitable.

Your option 3 - "Using 3 "LDD-1000H" drivers (1A each, accepts PWM dimming) in parallel ." MAY work OK but the control loops of the 3 drivers MAY interact. It may work better if you drive 2 at full output (nominal 1A each) and PWM control the 3rd.

Your option 2 "Using a MOSFET circuit to drive the LED, controlled by the 0-5V feed from the Arduino." is acceptable in principle but implies that the MOSFET is a linear driver - so power dissipation in the MOSFET may be high.

A variant of 1 & 3 would work. ie - Operate the LED in the drain of an N channel MOSFET. - Place a current sense resistor behind source and ground. - Filter the source voltage with an RC filter and feed this voltage to an Arduino ADC input as an indication of current.

Then either

-Use a suitable series R in FET V+ circuit and PWM the FET, monitor source current and vary PWM ratio to adjust current or
- Use a comparator to PWM drive the FET. Feed comparator with smoothed Vsource-resistor and V_control_Arduino (a say 5V control signal divided down to match the sense resistor voltage. LED current is controlled by varying the control voltage fed to the comparmator.

Above I mention a series resistor in the Drain circuit. This limits Imax. You effectively have a buck converter without the inductor. Adding an inductor and catch diode turns this into a buck converter. .

  • \$\begingroup\$ Many thanks for your breakdowns & your solution! I'm afraid that I am ~ fresh to electronics, and your solution confused me slightly. Regards 1), I have seen videos on YouTube of people using Step up modules with CC + CV trim pots. Such as goo.gl/UsWKQm. They would add an analogue pot in series with the CV trim pot to dim the LED. Unless I'm mistaken, if the current is kept constant at 3A, and the voltage changes via the CV pot, this is still a CC driver? Is there a particular reason why I can't use a digital potentiometer with the board above to adjust voltage? \$\endgroup\$
    – BaseThree
    Jan 28, 2019 at 8:57
  • 1
    \$\begingroup\$ @BaseThree You tube is a marvellous place to see new things. Some of them are useful :-). A power supply may have CC & CV controls BUT only one of them can control operation at a time. The change over point occurs when I from CC and V from CC match what the load wants. ie Rload = V/I = CV/CC. ie if you set CV to say 25V and CC to 5A then when Rload = V/I = 25/5 = 5 Ohms then the supply will be on the CC/CV boundary If you decrease load resistance then it will try to draw more than 5A, CC=5A will take over control and V will drop to whatever makes the load draw 5A. ... \$\endgroup\$
    – Russell McMahon
    Jan 31, 2019 at 3:07
  • \$\begingroup\$ @BaseThree ... If you increase load resistance when at the CC/CV 25V/5A point then the voltage will try to rise but CV will hold the voltage at 25V and I will decrease to match whatever is required to maintain 25V max. || SO if you WANT say 3A and set CC to 3A then you can twiddle the CV pot as desired. If I is less than 3A then the CV pot will have effect. But if CV is dialled up such that I would be > 3A then CC will cut in and V will not invcease. \$\endgroup\$
    – Russell McMahon
    Jan 31, 2019 at 3:10
  • \$\begingroup\$ @BaseThree Your cited CC CV module allows 0-8A CC adjustment and 5-30V CV adjustment. LEDs should be CC controlled so - if you want 3A, set CC to 3A and set CV to max (which is below LED max spec in this case. CC will dominate. In this case , if you are unlucky and LED needs say 31V you will get 30V (CV max) and a bit less thanm 3A. THems the breaks. - you need a 32V + supply BUT it will be so close as not to matter. | HOWEVER, your 3 strings in parallel are 'a problem'. ... \$\endgroup\$
    – Russell McMahon
    Jan 31, 2019 at 3:20
  • \$\begingroup\$ Notionally you MAY get one string taking substantially more current at a given voltage than the others so instead of getting 1 1 1 A you may get eg 1.3 0.9 0.8A when CC is set to 3A. A workaround is to add a series resistor per string that drops say 1V at full current - in this case 1A per string, so Rseries = V/I = 1V/1A = 1 Ohm. Now, if one string draws somewhat more I it's series R wll drop more voltage and help balance things out. When Rseries approaches infinity you are making a new CC source but need infinite V to drive it. \$\endgroup\$
    – Russell McMahon
    Jan 31, 2019 at 3:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.