/cold-control

GUI for cold-atom physics experiments.

Primary LanguageC++

cold-control

This is the GUI used to control all aspects of the atomic cavity-QED physics experiments in out lab. These styles of experiment tend to invlove many different instruments, all of which need to be managed in a coherent way. The aim of this GUI is to provide an intuative interface to this system, where the user can focus on the desired experiment(s) without having to explicity consider how this is implemented on a hardware level. This repository of course serves as a resource for myself and future group members to extend this work, but unfortunately an outside user can not expect to simply plug-and-play the GUI as it is specifically tailored to the set-up we have. That said, if anyone has stumbled upon this when looking to implement some of the contained functionality into their own set-up, I would hope that the modular nature of the code is such that this can provide a reasonable starting point.

For a flavor of the work this underpins see the Atom-Photon connection group website or the specific work this experiment has produced can be found in the follwing publications:

Overview of the functionality

The below is not an exhaustive list and neglects most specfics, however it hopefully provides a pointer to the relevant code underlying the core functionality provided by cold-control.

  • A TkInter based interface for the experiment is run from Root_UI.
  • DAQ cards write static voltages and play preceisely timed sequences to execute the experiment. To this end the DAQ (for the hardware interface) and DAQ_UI (for the GUI interface) modules contain the functionality to synchronise and control multiple ADLINK-2502 DAQ cards. A calibration between these voltages and the functionality they control is also supported - for example an acousto-optic modulator (AOM) that controls the power and frequecny of a given laser-line is far better interfaced with by requesting the desired power and frequency, rather than manually chaging the voltage that drives it. Calibration is separate from the GUI and provides some simple scripts to generate the required calibration files, using the readout of a ThorlabsPM100 power-meter, for AOMs driven by either the arbitrary waveform generator (AWG) or the DAQ cards
  • The data handling and an interface for custom sequences played on the DAQ cards to control a given experimental run are provided by Sequence and Sequence_UI.
  • Controlling all other aspects of the experimental run (automated staging of multiple experiments, data aquisition, on-the-fly analysis etc) are provided by the ExperimentalRunner and Experimental_UI.
  • The camera used to view the experiment and take absorbition images of the atomic cloud is viewed through the Camera_UI.
  • A simple text-window for writing, saving and loading a daily labbook is provided by Labbook_UI. This is not fancy but, take it from me, you'll be thankful you made those notes of what you were actually doing when it comes to writing everything up!
  • The instruments folder contains python wrappers to talk to various devices including: