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.

Stepper Motor Controller for Scanning Raman Spectrometer

We have a fairly old Raman spectrometer (from 1980s) in modern physics laboratory. The model is SPEX1403 with spectral resolution 0.15cm^-1. This is not a modern CCD spectrometer which just readout all the pixels to get the spectrum in a second. This spectrometer need to rely on a stepper motor moving gratings scanning across the desirable spectrum range.

IMG_4216 4
SPEX1403 Spectrometer


However, the controller of this spectrometer is too old and finally fails. Thanks to the carefully protection and maintenance of professors, the optical and mechanical parts of the spectrometer are still working smoothly. Instead of throwing it away, I decided to design a new generation of controller to give it a second life.

IMG_4222 3
Specontrol for SPEX1403/4

I choose STM32 as the microcontroller, using USB CDC (AKA: Virtual COM Port, VCP) as the communication interface. The system is really simple and mostly bases on a piece of cheap STM32F3-Discovery board.

I also rewrite the LabVIEW driver for this homemade controller.

IMG_4223 3
Experiment Setup

Low noise power supply for everything

This is a linear power supply, which consists of several floating power regulators and LDO controllers. It will provide almost all the power you need to drive an ECDL.

Looks, strong!lnps

I even write a program on STM32 to monitor the power supply. The monitor is equipped with a touchscreen! (Everyone deserves a touchscreen nowadays, right?…)lnps_monitor