Noise of a current source

Precision current sources are critical electronics in atomic physics. They can serve as power supply for diode lasers or drive a coil to generate a precise magnetic field. We sometimes need to have the load grounded in experiments to prevent short-circuit on the conductive optical table. This demand is often achieved by using an instrumentation amplifier(INA). The current flow through a sensing resistor and the voltage drop on that resistor is sampled by INA and feedback to the output stage. We find AD8429 from Analog Devices a great INA choice for a bi-polar current source with the input noise density as low as 1nV/\sqrt{Hz}.

When facing with extremely noise sensitive application, we should have a second look at our design. In our old design, the Gain=1 is set without gain setting resistor attached. This seemed very convenient because we do not want gain drift. The mismatch of the temperature coefficient of the on-chip resistors and the external gain setting resistor will sure cause terrible gain drift. In fact, the total input referred noise of an INA should include the output noise part attenuated from the feedback network. The AD8429 has a very decent input noise density 1nV/\sqrt{Hz}, but a relative higher output noise density 45nV/\sqrt{Hz}. When the INA runs at Gain=1, the total input referred noise is dominated by the unattenuated output noise of the chip. The result is nearly  45nV/\sqrt{Hz} noise density on the input after RMS summing of the two kinds of noise!

An easy way to fix this is to increase the gain of the INA. In our configuration, a 200m\Omega current sensing resistor is used under the maximum current 5A(1V voltage drop). If we can amplifier that to 10V, which is still inside the rail of the INA, the output noise contribution will also be greatly reduced to 1/10. However, it is difficult to just place a resistor on that chip due to the temperature drift mentioned before. Instead, I find AD8228, which has a pair of internal matched gain setting resistors, providing Gain=10 and Gain=100 through simply opening or shorting the gain setting pins. For its fixed gain, the noise density of AD8228 referred in the datasheet includes the output noise contribution on the input noise. This means that the 15nV/\sqrt{Hz} should be the final input referred noise density of AD8228 under Gain=10 setting. Definitely much better than 45nV/\sqrt{Hz}!

Digital Temperature Control

Temperature control again 🙂

We have been customed to fully analog controlled temperature controllers like those made by Toptica in the past. The parameters(proportion, integral time, etc) of those controllers should be adjusted with the assist of an oscilloscope. You cannot use those experience formula because you cannot set a multi-turn potentiometer to 1/2.2 value. And if you don’t have an expensive monitor module, you don’t even know the temperature set point! How can these modules be used in an experiment?

In order to address this problem, I decide to make this digital version temperature controller.

Here is the photo of my final controller.


This temperature controller is designed to be compatible with three kinds of common temperature sensors – NTC sensor, PT100 RTD sensor, Thermocouple. With this powerful design, the controller can manage temperature from as low  as several kelvin to a thousand degree celsius.

Three analog frond ends provide adequate working condition for the sensors as well as amplify the signal and scale them to fit into ADC’s input range.

The ADC in this project is AD7793, a low cost two channels (if you use external reference as I did) 24bit delta-sigma ADC, connected to the main processor through high speed SPI protocol. The ADC is running on a 64kHz clock generated by main processor’s timer. The main processor’s PID calculation and output refresh is synchronized by the ADC’s ready signal.

Digital PID for temperature is never a tricky problem for those high speed micro controllers. I even use double precision float type for all variables and the controller still works great. 72MHz/90DMIPS is a monster for the tiny task!

The DAC is AD5689, a two channels 16bit DAC, is definitely sufficient to drive any TEC or heater. A instrumental amplifier shift the middle level to zero voltage and drive a push-pull output stage with feedback to provide a maximum of 25W power.

The output is monitored all the time, you can check the output voltage, output current, output power as needed. Warning functions such as sensor fault, output short circuit, output over current, output open circuit, can be easily implemented in this hardware design.

Based on my OLED driver and graphic library written years ago, I can quickly developed the firmware for this controller with gorgeous OLED display and fancy user interface.


The interaction can be done through a couple of buttons and a rotatory encoder, which definitely provide a smooth user experience.

I have tested this controller under many circumstance, vacuum chamber, ECDL housing for example. With proper heat insulation  design and careful PID adjustment, <1mK temperature stability can be easily achieved with NTC sensor near room temperature.

This controller has been successfully deployed into my ECDL project, and helped a great deal pushing a 690nm laser diode for a 698nm output, which will be used in Sr experiment in the future.

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.


Temperature Control for everything!

We love semiconductors!

What about their thermal coefficient? Most semiconductor components may show exponential response to temperature change, result in a large temperature drift. Although the air temperature in lab can be held at a nearly constant value, this may not be precision enough.

Traditional precision PID based temperature controllers are designed with a controller box and TEC chips and sensors. For every component you want to apply temperature control, you need a area reserved for that big controller.

That’s why I start this project – the Project TTC (Tiny Temperature Controller), aiming to design a switching noise free precision temperature controller, small enough to be placed near the TEC chips. The PCB designing stage is finished now, with a 43mm*23mm*4mm size. You can just weld the standard 40mm*40mm TEC beside it, making a 63mm*43mm rectangular tiny temperature controller.

the TTC itself



Modest electronics self heatingSeekwareBlendModeNone