# Introduction

I must say that this circuit really gave me a hard time and required 3 major design changes before settling to something that was working satisfactorily. However, the game was worth the play as this small PCB can replace expensive drivers at a fraction of the price. The circuit is shown in Figure 1. As usual, the Gerber files to reproduce the PCB  can be found at the end of the post.

![Figure 1 – Photography of the circuit](/images/articles/1-amp-power-led-driver-with-modulation-input/photo.jpg)

As the title of the post suggests, the circuit presented here is a power LED driver that can supply currents up to 1 Amp at forward voltages of about ~4 Volts maximum. Typically, it was designed to handle the [Thorlabs](http://www.thorlabs.de) LED sources such as the M625L3 (625 nm center wavelength, 700 mW optical power output at 1 Amp typical). Also, and because a steady LED driver is of little use in optics, the circuit accepts a modulation input signal in the range 0-5 Volts at up to 20 kHz. Small warning still:

**Although the circuit was designed to work with LEDs from optical component suppliers, using the circuit presented here shall be performed at the user own risks. I will assume no responsibility on the potential damages induced by the use or misuse of the information presented here. Power LED are dangerous for the eyes and skin and protection measures should be ensured at any time.**

Also, all the tests were performed here at 0.5 Amp maximum to keep some safety margin. Operations at 1 Amp are theoretical and were not actually tested. Always consult your LED datasheet in terms of maximum forward current and voltage drop before plugging it in the circuit. Finally, please note that the driver here was made to drive LEDs and not lasers. I am currently working on a laser driver as well but it requires many more features to protect the laser from damages due to over-currents, transients and heat shocks.

Now that we are done with the safety warnings, let’s analyse how the circuit is actually working.

# Circuit Design

The overall working principle is shown in Figure 2 and can be split into five distinct blocks: the modulation input, the comparator, the driver, the current sense and the power
supply.

![Figure 2 – Working principle](/images/articles/1-amp-power-led-driver-with-modulation-input/principle.png)

The circuit is initially fed with a modulation input signal in the range 0-5 Volts to which I also add a constant offset through a trimmer just in case I wish to have a constant signal with no modulation. This signal is then clipped in both amplitude and bandwidth and compared to the output of the current sense stage that converts the amount of Amps flowing into the LED to a voltage in the range 0-5 Volts where 5 Volts represents the maximum allowable current. The output of the comparator is then fed into the driver stage to let more or less current to flow into the LED. When the modulation signal is higher than the sensed current, the comparator output a positive signal that allows more current to flow into the LED. When the modulation signal is smaller than the sensed current, the comparator output a negative signal that allows less current to flow into the LED.

Let begins with the modulation input stage. That part of the circuit is shown in Figure 3.

![Figure 3 - Modulation stage of the circuit](/images/articles/1-amp-power-led-driver-with-modulation-input/command.png)

The modulation input is fed through the BNC connector J~2~. If you wish to reduce the noise of the input, you can solder R~18~ and R~19~ resistors which will produce a load of 50Ω (be sure to provide a signal that can handle a 50Ω load). If you are using a high impedance source for the modulation, just remove R~18~ and R~19~ from the circuit. U~1:B~ is mounted as an inverting amplifier with a gain of -1 (via R~9~ and R~10~) such as to revert the sign of the modulation signal. I will come back to this in a minute.

The second part of the circuit (at the top of Figure 3) provides the 0-5 Volts offset to be added to the modulation output. R~16~, D~9~ and C~8~ provides a stable 5 Volts reference using a Zener diode MMSZ5231B (any other 5 Volts Zener can do the job as long as they are in 1206 SMD package) and a capacitor to clean out the signal. This reference is then send to the trimmer RV~2~ to adjust the output from 0 to 5 Volts. Because the trimmer is 100 kΩ, there is very little effect of current limitation due to R~16~ which is only 1 kΩ. This signal is then sent to the analog switch U~6~ (DG469) which allows to select between 0 (ground) and the signal of the trimmer (0-5 Volts) depending on the status of the switch button SW~2~. D~8~ allows to see the status of the button and turns on when the offset input is selected.

Both the output of the inverter stage (modulation input) and the offset is then sent to a subtraction stage (U~1:A~) to yield the final modulation signal. However, because we reverted the sign of the modulation input using U~1:B~, the resulting output will actually be the sum of the offset and the modulation signal fed into the J~2~ connector. I am not sure this is the most straightforward way to implement the addition, but it was working so I decided to keep it like that. Please note that to yield a correct mathematical addition, it is important to match all the resistors (including R~9~ and R~10~) to 1% or better. Failing to do so will provide a command input slightly different than the modulation signal presented at J~2~.

Finally, the signal is fed into a low pass stage made by R~3~ and C~2~ which limits the bandwidth to about 15 kHz. D~1~ also trim the signal to 5 Volts maximum to prevent sending a command that would be above the maximum allowed current of the LED. When testing the circuit, I however got a strange behaviour from this last part because it always trims my signal to about 4.4 Volts instead of 5 Volts. It is the same Zener diode that the one which produces the 5V reference so if you have any idea why this is happening, please share the info with me :-).

The clamped signal then enters the driver-sense-comparator part of the circuit shown in Figure 4.

![Figure 4 - Driver, sense and comparator stages of the circuit](/images/articles/1-amp-power-led-driver-with-modulation-input/driver.png)

The command is first sent to a comparator stage U~9:A~ that is actually a subtractor with gain 10 (resistors R~21~/R~22~ and R~13~/R~20~). R~23~ was added to match the impedance of R~3~. The output of the comparator is sent to a low pass filter made from resistors R~2~ and capacitor C~1~ which will be detailed later. The driver Q~1~ is a simple power transistor BDX53C protected by the diodes D~2~ and D~7~ from reverse bias due to potentially negative output of the comparator stage. The LED is connected to the connector J~1~ and its current is fixed by the collector current of transistor Q~1~. This collector current is directly proportional to the current flowing through the base of the transistor which is itself proportional to output of the comparator stage divided by R~2~ and damped by C~1~. In a first approximation, the current flowing into the LED is therefore linearly proportional to the output of the comparator stage.

As current flows into the LED, it creates a small voltage drop across the sense resistor R~1~ which is of low value (0.1Ω typically). This voltage drop is measured by the instrumentation amplifier U~2~ (AD620A), multiplied by some gain fixed by resistor R~5~ and sent to the comparator U~9:A~. It is important to select a resistor of a low-enough value for the current sensing such that its voltage drop is negligible in regards to the power rail used to power the LED. Keeping it to a low value also prevents the sensing resistor from heating up due to the Joule effect which would affect its current sensing properties or even destroy it. At 1 Amp, the power dissipated by the resistor is 0.1 Watt which is less than half of its rating. Eventually, several resistors can be soldered in parallel to decrease the power dissipated by each individual one. It is however important not to select a value that would be too low (*e.g.* 0.01 Ω or less) because the voltage drop at 1 Amp would be much lower which would then require a higher gain for the amplifier U~2~ and so higher noise at its output. Also, a low resistors value, the resistance of the solder points and the tracks might become not negligible and will change the current sensing characteristic.

When implementing the circuit, I chose to keep the maximum current at 0.5 Amp for safety reasons. Because the maximum modulation voltage was chosen to be 5 Volts (I used 5 Volts because it is a typical output of microcontrollers such as Arduinos or PICs – but you can change that value if you want to), the gain required for U~2~ is V~max~ / (R~1~ * I~max~) = 5 / (0.1 * 0.5) = 100. According to the AD620 datasheet, using a resistor R~5~ of 470Ω yields a gain of 103 which is close enough to our target. The actual maximum current at 5 Volts will depend on the actual gain of the current sensing and therefore on the exact value of the components R~1~ and R~5~. Here, it was not important to have precisely controlled currents and so I did not implement a gain tuning trimmer for the current sensor. To increase the maximum current to 1 Amp, either solder a second 0.1Ω resistor in parallel to R~1~ or change the resistor R~5~ to 1 kΩ (more noise). At the inverse, to lower the maximum current to, say 0.1 Amp, you can change R~1~ to two 1Ω resistors in parallel or change R~5~ to 100Ω.

Finally, the AD620 chip may have some output voltage offset that is good to compensate. If you don’t, then you may have a small current flowing into your LED when the command input is at zero or, at the opposite, require a non-zero value of command to reach zero current in your LED. To compensate the offset, I have used the trimmer RV~1~ with the resistors R~7~ and R~8~ to create an offset voltage tuneable to ±2 Volts. To adjust the trimmer, put the command to zero (no modulation) and monitor the output of U~2~ (pin 6). Then, adjust RV~1~ until the output of U~2~ is zero. I would now recommend changing R7 and R8 to larger values, such as 220 kΩ and to use a multi-turn trimmer because such offset limits are way too high compared to the maximum theoretical offset of the AD620 (I think I messed the µV with mV in the initial design…!).

Before moving on to the power supply, I have to make some comments about the feedback action of the comparator.

You may have seen some current driver that directly connects the current sense to the comparator stage without the resistors R~21~/R~22~ and R~13~/R~20~ and you may be tempted to that here. I did it first and although this was simulating fine in PSPICE, it was a disaster when I made the first PCB. In practice, such circuit will immediately become unstable and oscillates. This is due to the bandwidth of the feedback line being lower than the bandwidth of the drive (U~2~ is limited 120 kHz at a gain 100 according to its datasheet). When this happens, the feedback loop becomes unstable and the circuit start to oscillate. I assume PSPICE either over dampen its simulation or that my version does not have a correct model of the AD620 IC. Note that it is not the first time that I have issues with oscillations in PSPICE as I have shown [here](/article/sine-wave-oscillator/).

To avoid oscillations, we must therefore force the bandwidth of the driver to be less than that of the feedback loop. To do that, I have set a gain of 10 at the comparator (instead of the high gain of the op amp of ~10^5^) by replacing it by a subtractor stage. Then, the low pass of effect of R~2~/C~1~ prevents the oscillation by decreasing the bandwidth of the direct drive.

To better understand which values of R~2~/C~1~ to select, we have to write the transfer equation of the equivalent open-loop of the system which is:

![](/images/articles/1-amp-power-led-driver-with-modulation-input/image006.png)

The first term is the feedback of gain 103 and bandwidth 120 kHz. The second term is the gain 10 and bandwidth 3 MHz/10 of the comparator. The third term is the low pass made by R~2~/C~1~ and the gain linked to R~2~ as well as the gain of the transistor h~FE~≈4000. With R~2~=10 kΩ and C~1~=100 nF we obtain the Bode plot of Figure 5. To be stable, the gain at 180° phase shift must be below 0 dB which is the case here. There is however very little margin and if you prefer you may increase R~2~ to 22 kΩ if you notice that your circuit is oscillating. This will however be done at the expense of the modulation bandwidth. Also, if you decide to increase the gain of the current sense (resistor R~5~) you will have to increase the value of R~2~ as well.

![Figure 5 – Bode Plot of the open loop for R2=10 kΩ and C1=100 nF](/images/articles/1-amp-power-led-driver-with-modulation-input/gainmargin.png)

Let us now discuss the last part of the circuit which is the power supply shown in Figure 6.

![Figure 6 - Power supply part of the circuit](/images/articles/1-amp-power-led-driver-with-modulation-input/powersupply.png)

The power supply requires an input of 15 Vdc, 1.5 Amp or more, from which it produces a -15 Volts, unregulated, voltage using the switching inverter U~3~ (TC962). The positive and negative power rails are then cleaned using linear voltage regulators MC78M12 and MC79M12 to a low noise ±12 Volts supply which are used by all the ICs. As usual, there are decoupling 100 nF capacitors close to each IC to remove as much noise as possible. The particularity of this power supply is the voltage regulator U~8~ which is a switched version of the 7805 regulator (reference V7805-1000R). Its role is to produce a +5 Volts output with high efficiency to power the LED. To understand why we need to use a switched version of the 7805 we have to look at the power losses of the circuit.

Typical power LEDs have forward voltage drops of about 3-4 Volts and require input currents up to 1 Amp. This means that if we use directly the unregulated +15 Volts input from the power supply, we would have a ~11 Volts drop at the capacitor-emitter junction of the transistor Q~1~. At 1 amp, this represents 11 Watts of electrical power to dissipate which will make our transistor heat quite a lot. To reduce the power losses at the capacitor-emitter junction, we need to lower the unregulated voltage that feeds the LED to something closer to the maximum forward voltage of our LED (about 4 Volts). I have chosen here to lower the voltage to +5 Volts. However, if we use a conventional 7805 regulator, we move the problem to the 7805 regulator itself because it will have to deal with a 15-5=10 Volts drop at 1 Amp which still makes a lot of power to dissipate. To alleviate the problem, I have used a switched version of the 7805 regulator which does not have the same heat dissipation issue because of their different voltage regulation scheme. With a regulator such as the V7805-1000R, our circuit can handle currents of up to 1 Amp with very little power losses. The typical heat losses at Q~1~ will be between 1 and 2 Watts, depending on the LED used.

Still, to prevent any heating issues, I have foreseen the place to put a heat sink to connect to the BDX53C transistors. It should be however not mandatory and you are free to skip it if you prefer to unless you operate the circuit at 1 Amp where I would recommend to use the heat sink. Just be sure to check the expected heat losses by looking at the forward voltage drop of the LED that you are using in this case. Also, do not use other elements or shortcut the connector J~1~ because this will increase the power losses at Q~1~ up to 5 Watts.

# Experiments and Results

The theoretical gain of the current sense circuit should be 10.3 Volts/Amps with R~1~=0.1Ω and R~5~=470Ω. This was confirmed experimentally by shunting the connector J~2~ with a multimeter in current sensing mode and measuring the voltage output at pin 6 of U~2~. At 184.7 mAmp (my multimeter is limited to 200 mA), U~2~ showed an output of 1.797 Volts which makes a gain of 9.73 Volts/Amp (5% error on theoretical gain). This is well within the expected error range knowing that I have used 5% resistors. Also, I do not know what is the error of the multimeter so the important thing to note here is that there is no significant difference between the theoretical value and the experimental one.

To measure the noise of the circuit at the current sense, I have set the trimmer RV~2~ to maximum command, set the oscilloscope in AC mode and measured the noise at pin 6 of U~2~. At 100 MHz bandwidth, the noise was 6.641 mVrms which makes an equivalent 0.6 mAmp. At 400 mAmp drive, this is about 0.2% noise content. Compared to Thorlabs LEDD1B, it is about 10 times better since this last one has ripple current of about 8 mAmp.

The bandwidth of the modulation was measured using a sine wave generator (Protek 9205) and looking at the current sense output (U~2~ pin 6) until the signal starts dropping. I have measured a maximum frequency of 20 kHz with a -3 dB attenuation. Please note that there will be some phase shift also at that limit frequency. I would recommend to operate the circuit at maximum 1 kHz modulation if you do not want any nasty effects.

Finally, I have checked the temperature profile at steady state with the heat sink on when shunting J~2~ at 0.5 Amp and the results can be seen in Figure 7. As can be seen, the temperature does not exceed 50°C which makes the circuit safe to use.

![Figure 7 - Temperature profile with a heat sink when shunting J2](/images/articles/1-amp-power-led-driver-with-modulation-input/flir.jpg)

# Resources

You can download the Gerber files of the PCB (Figure 8) [here](http://www.thepulsar.be/files/leddriver-rev2.zip) and the bill of material [here](http://www.thepulsar.be/files/leddriver-rev2-bom.pdf). It is a slightly revised version from the one that I use for this post (small fix at U~1:B~ that I previously had incorrectly cabled as non-inverting amplifier) but it should work just fine this time.

![Figure 8 - PCB of the circuit](/images/articles/1-amp-power-led-driver-with-modulation-input/pcb.png)