
Laser Controller for Cold Atom Trapping
Date of Project Completion: 2026-6-10
Tags: Python, C++, Controls, Physics Research, Circuit Design
A part of the Kat Gillen Cold Atom Research Group, a digital laser controller was developed to automatically calibrate and correct the wavelength of a laser. Two photodiodes track the polarized response of a sample of rubidium-87 to the laser light, and this response is monitored and collected by a custom circuit connected to an Arduino Due. The Due then sends the response datasets to a Python program, which in turn sends commands to the laser power supply and a custom-built device used to fine-tune the wavelength. The result is a system capable of using large response datasets to calibrate the laser by locating a "good" signal, while simultaneously managing user control, allowing for the wavelength to be tuned with a level of precision of 0.01 nanometers.
My complete thesis detailing the project can be found here.
Objective
Atom trapping using lasers requires the ability to tune the laser's wavelength to with a very fine level of precision. This is complicated by the fact that the wavelength has a tendency to drift due to minute factors such as temperature. There are so many factors involved in the calibration, in fact, that tuning the laser to a specific wavelength is not a reliable way to get the correct response. Instead, the control needs to be based on the response of rubidium to be calibrated correctly.
This is a high level overview of the hardware of the controller. We have the open diode laser:

780nm Laser used in experiments.
As well as the splitter that separates the polarized light, and the two photodiodes measure the signal:

Beamsplitter and photodiodes.
And a graph of that target response signal captured on a scope:

Hastily taken photo of oscilloscope output showing the desired response appearing twice.