Digital Precision Current Source for Laser Diode


A precision current source is important for laser diode in ECDL configuration. Extra current noise may cause bad line width performance. Some AR-coated laser diodes used in ECDL are also expensive and need proper protection circuit to ensure safety.

This is a digital controlled precision current source, with extremely low current drift, very low current noise, a user friendly interface, I2C bus control, hardware protection. I will discuss several key point in this design.



The core of this current source is similar to the Hall design. However, some improvements are added to the circuit to increase stability , drift performance and noise performance.

An AVR microcontroller takes over all the digital works. I also implement a very considerable idea in this current source to avoid ANY digital clock noise. I programmed the microcontroller that it will automatically turn off its oscillator (aka digital clock) after a period of time with no user interruption. When user turn the rotatory knob, the system will quickly recover its clock and handle the interruption without noticeable delay. This mechanism works really well that no any sign of digital noise can be seen in the current spectrum near clock frequency(16MHz in our system).


If you want a low drift instrument, a low drift standard is the most important components. Here I choose the famous LM399H (from Linear Technology) as my main voltage standard. Its data sheet declaims that it can achieve temperature drift down to 0.5ppm/C. As for DAC, the LTC2756A becomes a economic and high performance choice with 18bit resolution and low temperature drift. Unlike digital current source design (Erickson) which rise the ground of a DAC to arbitrary level, I decide to use ordinary analog subtractor to subtract the DAC output from the input value. There are several considerations. LTC2756A together with its I-V converter is not as low-power designed as some nanoDACs, the floating ground provided by ordinary operational amplifier may not be sufficiently low resistance. And the ground level shift amplifier also brings in ground noise non-uniformly distributed in frequency domain and all kinds of drift.


Not like those high power multi-mode laser diodes, low power single-mode laser diodes are fragile, any surge current kills them. I designed a signal in the circuit to control two relays. These two relays will short the diode and the current source whenever current limit or voltage limit reaches. To avoid the EMI from the relay, a RC damping circuit is introduced.  The error signal simultaneously cuts off main supply and asynchronously clear the DAC (only propagation delay). The protection circuit also lock the system for several seconds to ensure that all the capacitors are  discharged to safe level before reset button is activated.

The protection functions mentioned above are all hardware level protection. I also implement software level protection in microcontroller. Usually when you are doing experiment, the microcontroller runs perfectly and software protection plays a role. The microcontroller will just refuse any action of adding current beyond maximum current. The maximum current is also programmable in software.

User Interface

Fancy OLED display just as the one used in the digital temperature controller.

Adjust resolution is down to 10uA with very good repeatability.


Digital PID TEC temperature controller for DPSSL+SHG experiment

This is a very simple and low cost TEC PID controller. Here is a simple schematic of it.


The controller is based on Arduino (AVR ATMega series 8bit MCU), so I haven’t spend a lot time programming it. The temperature sensor is a very cheap 10K thermistor and direct sampled by AVR’s internal ADC. The DAC part is actually a low-pass filtered PWM. The controller is connected to the computer through a USB-USART adapter.

A photo of the TEC controller is shown below. I use the power stage from my 3A CC driver in the same project as you can see from the photoTEC_controller_photo


I design a simple serial command line interface for system monitoring and parameter adjustment. You can simply type ‘P10’ and press enter to set parameter P to 10 for PID controller. It is same for other command such as ‘I0.5’ for setting I=0.5, ‘D1.24’ for setting D=1.24. The power stage can be turned off with command ‘OFF’ and be turned on again with ‘ON’. system states including output power, target temperature, PID parameters will be continuously updated on the serial interface.