Bob Peterson


Python control code for Thorlabs Elliptec motorized mounts


Historically, most optics experiments have been immune to automation: a graduate student will physically turn knobs and dials to tune up an experiment, and to change parameters when taking data. Motorized, computer controlled rotation mounts for waveplates were exorbitantly expensive—many thousands of dollars for a single mount. For reference, three waveplates are required to perform an arbitrary operation in polarization space. With newer motorized mounts costing "only" several hundred dollars apiece, labs can afford to automate significant portions of their experiments, with a corresponding payoff in complexity and speed. This library wraps the serial commands to control our current preferred motor in a Python API, with useful affordances like management of calibration offsets, workarounds for observed bugs, and management of multiple controllers. Ongoing work is focused on a simple configuration file to keep track of details like controller serial numbers, waveplate calibration offsets, and so on, which are in practice scattered across scripts often not even under version control. This config file is paired with an easy way to extend an abstract API to other models of motorized rotation mounts and translation stages a lab might have on hand (and already have control code for).

Motorized waveplates in an optical setup
Motorized waveplates in an optical setup, controlled with this code