In Opol, the two laser beams are derived from a single source-beam, using the optical layout shown in Fig. . The beam from a laser diode is successively directed through a 1-mm beamcleaning aperture (A) and two beam-splitting glass slides (BS1, BS2), which are both oriented at 45° to the beam axis. The reflected beam from the first slide BS1 -which we refer to as the object beam O -strikes a beam-steering mirror M1, and then passes successively through a vertically oriented polariser P1, an optical cell, and the centre of a (motor-mounted) rotating polariser P3, before finally striking an amplified photodiode AP1. The light reflected from the second beam-splitter BS2 -which we refer to as the reference beam R -strikes a second beam-steering mirror M2, and then passes successively through a vertically oriented polariser P2 and the centre of the rotating polariser P3, before striking a second amplified photodiode AP2. The voltage signals from AP1 and AP2 are simultaneously read by separate analogue input pins on the microcontroller, using its two built-in analogue to digital converters (ADCs). Optionally, a third glass-slide beam-splitter BS3 may be placed in front of the aperture A to generate a monitor beam M that strikes a third photodetector. Since the microcontroller's two ADCs are already occupied by the O and R channels, we use a lightto-frequency converter (LFC) to measure M, and we read the resulting digital pulse train using a digital input pin of the microcontroller. The object and reference signals are divided by the measured laser intensity prior to data analysis to correct for any drift in the laser intensity. Data analysis is carried out within the microcontroller, avoiding the requirement for extra external circuitry.