Published: 2017-05-01 | Category: [»] Electricity & Electronics.

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

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 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

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

The modulation input is fed through the BNC connector J2. If you wish to reduce the noise of the input, you can solder R18 and R19 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 R18 and R19 from the circuit. U1:B is mounted as an inverting amplifier with a gain of -1 (via R9 and R10) 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. R16, D9 and C8 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 RV2 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 R16 which is only 1 kΩ. This signal is then sent to the analog switch U6 (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 SW2. D8 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 (U1:A) to yield the final modulation signal. However, because we reverted the sign of the modulation input using U1:B, the resulting output will actually be the sum of the offset and the modulation signal fed into the J2 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 R9 and R10) to 1% or better. Failing to do so will provide a command input slightly different than the modulation signal presented at J2.

Finally, the signal is fed into a low pass stage made by R3 and C2 which limits the bandwidth to about 15 kHz. D1 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

The command is first sent to a comparator stage U9:A that is actually a subtractor with gain 10 (resistors R21/R22 and R13/R20). R23 was added to match the impedance of R3. The output of the comparator is sent to a low pass filter made from resistors R2 and capacitor C1 which will be detailed later. The driver Q1 is a simple power transistor BDX53C protected by the diodes D2 and D7 from reverse bias due to potentially negative output of the comparator stage. The LED is connected to the connector J1 and its current is fixed by the collector current of transistor Q1. 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 R2 and damped by C1. 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 R1 which is of low value (0.1Ω typically). This voltage drop is measured by the instrumentation amplifier U2 (AD620A), multiplied by some gain fixed by resistor R5 and sent to the comparator U9: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 U2 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 U2 is Vmax / (R1 * Imax) = 5 / (0.1 * 0.5) = 100. According to the AD620 datasheet, using a resistor R5 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 R1 and R5. 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 R1 or change the resistor R5 to 1 kΩ (more noise). At the inverse, to lower the maximum current to, say 0.1 Amp, you can change R1 to two 1Ω resistors in parallel or change R5 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 RV1 with the resistors R7 and R8 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 U2 (pin 6). Then, adjust RV1 until the output of U2 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 R21/R22 and R13/R20 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 (U2 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.

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 ~105) by replacing it by a subtractor stage. Then, the low pass of effect of R2/C1 prevents the oscillation by decreasing the bandwidth of the direct drive.

To better understand which values of R2/C1 to select, we have to write the transfer equation of the equivalent open-loop of the system which is:

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 R2/C1 and the gain linked to R2 as well as the gain of the transistor hFE≈4000. With R2=10 kΩ and C1=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 R2 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 R5) you will have to increase the value of R2 as well.

Figure 5 – Bode Plot of the open loop for R2=10 kΩ and C1=100 nF

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

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 U3 (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 U8 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 Q1. 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 Q1 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 J1 because this will increase the power losses at Q1 up to 5 Watts.

Experiments and Results

The theoretical gain of the current sense circuit should be 10.3 Volts/Amps with R1=0.1Ω and R5=470Ω. This was confirmed experimentally by shunting the connector J2 with a multimeter in current sensing mode and measuring the voltage output at pin 6 of U2. At 184.7 mAmp (my multimeter is limited to 200 mA), U2 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 RV2 to maximum command, set the oscilloscope in AC mode and measured the noise at pin 6 of U2. 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 (U2 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 J2 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

You can download the Gerber files of the PCB (Figure 8) [∞] here and the bill of material [∞] here. It is a slightly revised version from the one that I use for this post (small fix at U1: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
[⇈] Top of Page

You may also like:

[»] DIY Conductometry

[»] Low Noise, Adjustable Gain, Photodiode Amplifier

[»] Airsoft Electronic Shooting Targets Game

[»] Generic 8th Order Sallen-Key Filter

[»] Working with Pressure Sensors and Load Cells