The motor is driven at a fixed speed of approximately three revolutions per second, using the electronic speed controller. (The exact speed is not important). Data acquisition and analysis are carried out on a 32-bit Teensy 4.0 microcontroller, using its two ADCs to read the amplified photodiodes and its Floating Point Unit for numerical analysis. A circuit diagram is shown in Fig. . The ADCs are operated with a sample time of 1 ms at 12-bit resolution, providing an acceptable trade-off between time resolution and noise. The LFC signal is monitored by counting pulses in consecutive 1-ms measurement periods, and the counts are smoothed using an exponential filter with a time constant of 0.1 s. Both ADC signals are divided by the filtered counts prior to signal processing. The phase difference is updated internally once per sample using the sDFT-based algorithm. The phase-difference is filtered using an exponential filter of time constant 5 s, and a decimated value of the filtered phase-difference is output over the USB interface of the microcontroller every 10 ms. Source code for the microcontroller firmware is provided in the Supporting Information. An optional GUI-based Python program (see Fig. ) is used to control the polarimeter and display the measured rotation angle.