Stabilization of an electro-optic modulator for quantum communication using a low-cost microcontroller

Author: George Iskander
Mentor: Maria Spiropulu
Co-Mentors: Neil Sinclair, Cristián Peña, Si Xie
Editor: Hana Kim


An electro-optic modulator modifies an optical signal in response to an applied electrical signal. These modulators are essential components for many applications ranging from internet telecommunications to sensing to quantum information science.1 A Mach Zehnder electro-optic modulator is used to vary the intensity of a continuous-wave laser beam in order to produce pulses.2 The amplitude of the pulses is quantified by an extinction ratio (in units of dB),

r = 10 \log_{10} {\frac{I_{on}}{I_{off}}}, (1)

in which the intensity of the output light is I_{on} (I_{off} ) when the modulator is configured to produce maximum (minimum) light intensity. A Mach-Zehnder modulator relies on interferometric stability to achieve a constant extinction ratio, and in-turn a stable pulse amplitude (see Sec. II). Temperature variations of a Mach-Zehnder modulator can lead to variations in r due to phase advances or delays.3 Stabilization against temperature variations is often performed by measuring the output of the modulator and adjusting an applied electrical signal in response.
Here we describe a simple and robust feedback method for controlling the laser intensity from a commercially available 20 GHz-bandwidth Mach-Zehnder electro-optic modulator using a low-cost microcontroller.

Specifically, we program an open-source Arduino UNO R3 microcontroller with a 9 kHz-bandwidth gradient-ascent algorithm to stabilize and maximize r of GHz-bandwidth pulses by detecting light at the modulator output. The algorithm is designed to minimize the average amount of output light using a DC voltage drive to the modulator, an approach that ensures maximum r for low duty cycles. We measure an extinction ratio of 22 dB over several hours, equivalent to the extinction ratio measured over minute-long timescales with manual control of the DC voltage. We also discuss the applicability of our stabilized modulator for generation of high-fidelity time-bin quantum bits (qubits) for quantum communication, in which our extinction ratios the generation of qubits with 99% fidelity.

Operating Principle Of A Mach-Zehnder Modulator

Figure 1. Simplified schematic of a Mach-Zehnder modulator. Black (blue) lines represent optical waveguides (electrodes).

A Mach-Zehnder modulator is an interferometer that features phase control of the light by the electro-optic effect, see Fig. 1.2 Laser light enters the modulator using a fiber optics cable where it is subsequently split into two paths using a 50:50 mode coupler that acts in analogy to a free-space 50:50 beam splitter. The light is guided in an electro-optic material, such as LiNbO3. Each path directs light near an electrode. One electrode is driven with a high-bandwidth (AC) signal while the other features a lowbandwidth (DC) signal. The electric field emitted by an electrode causes a phase variation of the light propagating in the nearby waveguide due to the electro-optic effect, i.e. the index of refraction of the waveguide is dependent upon the applied electrical signal. Light from each path is then combined again on a second 50:50 coupler that features two outputs which direct light into independent optical fibers. The accumulated phase difference between light traversing each path dictates the relative intensity of the light that leaves each output port due to wave interference. Specifically, a linear variation of the relative phase results in a sinusoidally-varying light intensity at each output, see Fig. 2. In the case where the relative phase difference is an integer multiple of \pi(2\pi), all of the light will exit port 1 (2) through constructive (destructive) interference. However, this is never observed due to device imperfections, e.g. the splitting ratio of the couplers is not exactly 50:50. The extinction ratio quantifies the impact of these imperfections by the ratio of light intensities under the constructive and destructive interference conditions.

Figure 2. Light intensity at each output of the modulator. Output 1 (2) is shown in blue (orange) while the relative phase is varied by slowly varying the applied DC voltage. The green line indicates zero optical power. Energy conservation ensures that each \pioutput is out of phase. The extinction ratio is 22 dB and calculated from a fit. The dotted lines indicate Ion and Ioff. The measurement timescale is a few seconds.

A Mach-Zehnder modulator can be used create pulses from a continuous-wave laser input in the following way. First, a slowly-varying voltage is applied to the DC port to determine the voltage for which minimal light is produced at one output. In other words, the plot shown in Fig. 2 is produced and used to determine the DC voltage setting. This voltage is set to counteract the effect of any temperature-induced phase offset as mentioned in Sec. I. Next, a short voltage pulse is applied to the RF port such that its amplitude corresponds to varying the relative phase accumulation between \pi and zero, i.e. we ensure that maximum light intensity is briefly output of one port of the modulator. This results in the production of a short light pulse.

Methods and Setup

The principle of our stabilization scheme is to measure the second output port of the modulator and to apply a slowly-varying voltage to the DC port of the modulator to ensure that the first (second) port features maximum (minimum) light intensity. A key point is that our scheme will always ensure a high-extinction ratio when the modulator is used to generate high-bandwidth pulses at a low rate, i.e. the modulator is operated at a low duty cycle. This is due to the low operating bandwidth of the photodetector and microcontroller, which only responds to the time-averaged light intensity. For low duty cycle operation, the time-averaged intensity is determined mainly by light that is detected when the modulator is set to produce minimum light intensity, i.e. when the modulator produces Ioff.

Our experimental setup and feedback loop is shown in Fig. 3, while a photograph of our Arduino microcontroller setup shown in Fig. 4. Our system utilizes continuous wave laser light of 1536 nm wavelength and power of about 1 mW that is sent into a 20 GHz-bandwidth Mach Zehnder modulator. Light used for stabilization is detected by a low-bandwidth photodetector (i.e. a power meter), while the second output of the modulator is sent to a DC-coupled 20 GHz-bandwidth amplified photodiode and oscilloscope for measurement of extinction ratio and optical pulse amplitudes. The low-bandwidth photodetector outputs a voltage that is proportional to light intensity, and is sent into the Arduino, which interprets the signal, and generates a response signal that is applied to the DC port of the modulator. Light pulses are created by driving the RF port of the modulator with electrical pulses that are generated by an arbitrary waveform generator (AWG). The short-term, or intrinsic, extinction ratio of the modulator is determined by slowly varying the voltage applied to the DC port of the modulator. We measure the output of the modulator with the low-bandwidth photodetector, see Fig. 2, and fit the result with a sinusoidal curve to determine the short-term extinction ratio to be 22 dB, a value that is consistent with factory specifications.

Figure 4. Arduino, left, and its associated PCB, right. The PCB contains the analog-to-digital and digital-to analog conversion components that are necessary for interfacing with the low-bandwidth photodetector and the modulator.

We employ a gradient ascent algorithm to lock the modulator to a phase that corresponds to maximum light detected by the low-bandwidth photodetector, see Fig. 2. The voltage x^* corresponding to the peak is a critical point of the response function R(x). For small deviations (\epsilon) around the peak we have \frac{dR}{dx} (x^* - \epsilon) >0 and \frac{dR}{dx} (x^* + \epsilon) <0. Using this feature of the response function, the Arduino will find and lock to the maximum with the following procedure. The Arduino initializes by generating an initial voltage V. It applies a small increase to this voltage, so that the total voltage applied is V + V_{\delta}. It records the corresponding light intensity output from the modulator I^+. Then, it applies a small decrease such that the voltage applied is V - V_{\delta}. It records the intensity I^-. A check is performed to determine which is greater: either I^+ or I^-. If I^+> I^-, then V corresponds to a part of the response curve in which the slope is positive, and consequently V is less than the voltage that is needed to lock to the maximum. In response, the Arduino increases the voltage it applies. Conversely, if I^+ < I^-, then V corresponds to a part of the response curve that has a negative slope. In turn, the Arduino decreases the applied voltage. The procedure iterates at a rate of about 9 kHz until the maximum is found.

Gradient ascent is chosen due to its versatility in locating an optimum without defining a setpoint, compared to, e.g., often-used PID (proportional-integral-derivative) algorithms. We note that a gradient ascent algorithm is known to create oscillations in a small region about the maximum, since the program does not stop iterating. However, the sinusoidal response near each maximum and minimum is sufficiently small and, since V_{\delta} is also small, any oscillations are negligible.

To benchmark our results, we compare the performance of our Arduino-based (cost 50 USD) system to the unstabilized system and to a commercially-available feedback controller from YYLabs (cost 1000 USD). The YYLabs controller utilizes a PID algorithm and pilot tone frequencies.4

Results and Analysis

If no voltage is applied to any port of the modulator, we observe the output of the modulator to vary over several minutes, see Fig. 5.

Figure 5. Intensity of the output of the modulator without any applied voltage. The intensity is measured with the low-bandwidth photodetector and Arduino digital-to-analog converter. Fluctuations are measured out of the 216 bits available on the Arduino.

With the gradient ascent algorithm engaged, the extinction ratio is maximized and is stable over several hours. We measure the output intensity I_{off} of the second arm using an oscilloscope. Using I_{on} as determined from Fig. 2 and Eq. 1, we calculate an extinction ratio of 22.05 ± 0.13 dB. To confirm this result, we generate a 100 ps-duration pulse every 100 ns using our AWG and, with the feedback engaged, measure an extinction ratio of 22 dB, see Fig. 6.

Figure 6. Oscilloscope screenshot of a light pulse produced using our Arduino-stabilized 20 GHz Mach-Zehnder modulator. Photodetector is negatively coupled. Ripples are due to capacitive overshoot.

We repeat the procedure using the YYLabs controller, measuring a lesser extinction ratio of 20.5 ± 0.4 dB. Error is due to the limited resolution of the Arduino analog-to-digital and digital-to-analog converters.

Towards Generation of Quantum Bits for Quantum Communication

One application of our modulator setup is to generate qubits for quantum communication.5,6 Among the different ways a qubit may be encoded into light, one method involves the possibility of a photon arriving early, late, or in coherent superpositions of early and late, with respect to a pre-defined time. This so-called time-bin qubit.7 can be created by temporal (and phase) modulation of laser light that is attenuated to the single photon level.8 Specifically, an early time-bin qubit state corresponds to a photon arriving earlier than if the late time-bin qubit state is encoded, see Fig. 7. Note that, strictly speaking, this approach generates a quasi-qubit due to a non-zero two-photon probability from Poissonian statistics of laser light, an effect that can be accounted for in experiments.9

Figure 7. Temporal distribution of probability amplitudes (red) for early and late time-bin qubit states. (a, b) An ideal time-bin qubit corresponds to the case in which the probability amplitude is well-localized in time. (c, d) A low extinction ratio gives rise to a non-zero probability amplitude at all times, e.g. late when early is desired, or vice versa.

The quality of qubit generation is determined by a measurement fidelity F =  \psi_{\parallel}/( \psi_{\parallel} + \psi_{\perp}), in which \psi_{\parallel(\perp)} refers to the measurement basis oriented parallel (orthogonal) to the state that is intended to be generated. For time-bin qubit states that are encoded into early (late) states, the extinction ratio is r =10 \log_{10} {[F_{e(l)}/(1-F_{e(l)})]} if no other imperfections are present. See Fig. 7 and its caption. A similar calculation can be performed for early and late superposition states. Therefore, an extinction ratio that is maximal and constant over the duration of an experiment will produce time-bin qubits of the highest fidelity. Our Arduino system suggests F = 0.9938 \pm 0.002 for early and late qubit states, which is sufficient for quantum communication experiments.6 We also note that in addition to high fidelity, the compact and low-cost design of our feedback system makes it ideal for operating a Mach-Zehnder modulator outside of the laboratory environment (i.e. in a remote location) for real-world quantum communication experiments.9


We stabilize the intensity of the output of a high-bandwidth Mach-Zehnder electro-optic modulator by using a gradient-ascent algorithm encoded into an Arduino. We measure an extinction ratio of 22 dB over several hours, consistent with the specifications of the modulator. Our result is also consistent with the extinction ratio we measure over minute-long timescales using manual tuning. Our system, which costs approximately 50 USD improves over the performance of a YYLabs commercial feedback controller, which costs 1000 USD. Finally, we predict our system to generate early and late time-bin qubits of fidelity 0.9938 \pm 0.002, which is suitable for several quantum communication tasks, such as quantum key distribution or quantum teleportation.6,9

Further work involves exploring other feedback algorithms, such as PI control,10 which would require linearization of the response, dithering and lock-in demodulation, finer-resolution gradient-ascent, or using a detector with higher dynamic range, such as a superconducting nanowire.11 Additionally, other low-cost open-source microcontrollers warrant research, such as the more extensible, yet more complex, Raspberry Pi.


We thank Jason Trevor and Dr. Yewon Gim for their experimental assistance. G.I. acknowledges support by the WAVE Fellows program and Southern California Edison, N.S. and C.P. acknowledge support by the Alliance for Quantum Technologies’ Intelligent Quantum Networks and Technologies research program. This work is partially supported by the DOE/HEP QuantISED program grant, Quantum Communication Channels for Fundamental Physics, award number DE-SC0019219.


[1]  E. L. Wooten, K. M. Kissa, A. Yi-Yan, E. J. Murphy, D. A. Lafaw, P. F. Hallemeier, D. Maack, D. V. Attanasio, D. J. Fritz, G. J. McBrien, and D. E. Bossi, “A review of lithium niobate modulators for fiber-optic communications systems,” IEEE Journal of Selected Topics in Quantum Electronics 6, 69–82 (2000).
[2] Tetsuya Kawanishi, “Integrated mach–zehnder interferometer-based modulators for advanced modulation formats,” in High Spectral Density Optical Communication Technologies, edited by Masataka Nakazawa, Kazuro Kikuchi, and Tetsuya Miyazaki (Springer Berlin Heidelberg, Berlin, Heidelberg, 2010) pp. 273–286. 
[3]  J. D. Zook, D. Chen, and G. N. Otto, “Temperature dependence and model of the electro-optic effect in linbo3,” Applied Physics Letters 11, 159–161 (1967),
[4]  E. I. Ackerman and C. H. Cox, “Effect of pilot tone-based modulator bias control on external modulation link performance,” in International Topical Meeting on Microwave Photonics MWP 2000 (Cat. No.00EX430) (2000) pp. 121– 124.
[5]  J. Brendel, N. Gisin, W. Tittel, and H. Zbinden, “Pulsed Energy-Time Entangled Twin-Photon Source for Quantum Communication,” Physical Review Letters 82, 2594–2597 (1999).
[6]  Nicolas Gisin, Gregoire Ribordy, Wolfgang Tittel, and Hugo Zbinden, “Quantum cryptography,” Rev. Mod. Phys. 74, 145–195 (2002). http://doi.org10.1103/RevModPhys.74.145.
[7]  I. Marcikic, H. de Riedmatten, W. Tittel, V. Scarani, H. Zbinden, and N. Gisin, “Time-bin entangled qubits for quantum communication created by femtosecond pulses,” Physical Review A – Atomic, Molecular, and Optical Physics 66, 6 (2002).
[8]  Wolfgang Tittel and Gregor Weihs, “Photonic entanglement for fundamental tests and quantum communication,” Quantum Information & Computation 1, 3–56 (2001).
[9] Raju Valivarthi, Marcelli Grimau Puigibert, Qiang Zhou, Gabriel H. Aguilar, Varun B. Verma, Francesco Marsili, Matthew D. Shaw, Sae Woo Nam, Daniel Oblak, and Wolfgang Tittel, “Quantum teleportation across a metropolitan fibre network,” Nature Photonics 10, 676–680 (2016).
[10] L. R. Hofer, D. B. Schaeffer, C. G. Constantin, and C. Niemann, “Bias Voltage Control in Pulsed Applications for MachZehnder Electrooptic Intensity Modulators,” IEEE Transactions on Control Systems Technology 25, 1890–1895 (2017).
[11] F. Marsili, V. B. Verma, J. A. Stern, S. Harrington, A. E. Lita, T. Gerrits, I. Vayshenker, B. Baek, M. D. Shaw, R. P. Mirin, and S. W. Nam, “Detecting single infrared photons with 93% system efficiency,” Nature Photonics 7, 210 EP – (2013).


The Arduino control loop makes use of the following hardware: the Arduino UNO R3, Adafruit MCP4725 12-bit digital-to-analog converter (DAC), and Adafruit ADS1115 16-bit analog-to-digital converter (ADC).

Without the ADC and DAC, the analog input precision of the Arduino is limited to 10 bits, and analog output is not possible. To circumvent these limitations, the DAC is used to enable analog output, and the ADC is used to increase input precision. These two devices are breakout boards which utilize the I2C communication protocol.

The code libraries used include the ADC and DAC libraries from Adafruit, the ResponsiveAnalogRead library (RAR), and the Wire library. RAR implements exponential moving averages to reduce input noise from the ADC. The Wire library allows for I2C communication with the
breakout boards.

The following circuit diagram shows how the boards connect to the Arduino.

Note that the VOUT pin on the MCP4725 connects to the intensity modulator, and any one of AIN pins on the ADS1115 can be connected to the output of the low-bandwidth photodetector. For this code and project, we use pin 0 (AIN0).

The code running on the Arduino is as follows:

#include <ResponsiveAnalogRead.h>
#include <Adafruit_MCP4725.h>
#include <Adafruit_ADS1015.h>
#include <Wire.h>
Adafruit_ADS1115 adc;
Adafruit_MCP4725 dac;
ResponsiveAnalogRead analog(0, true);
double vStep = 5.0;
double vLess;
double vMore;
double voltage = 0;
int i;
void setup() {
void loop() {
dac.setVoltage(voltage - vStep, false);
vLess = adc.readADC_SingleEnded(0);
vLess = (analog.getValue()/8.0);
dac.setVoltage(voltage + vStep, false);
vMore = adc.readADC_SingleEnded(0);
vMore = (analog.getValue()/8.0);
if(vMore > vLess) {
voltage += vStep;
if(vMore < vLess) {
voltage -= vStep;

The variable ”vStep” encodes the step-size of the voltage. Trial-and-error may be needed to determine a suitable value. Too small of a value, and increasing or decreasing the output voltage by the step size will produce no voltage change. Too large of a value, and oscillations will be observed around the maximum.

Note that the ADC maps voltages from [0V, 5V] to [−215, 215]. The output precision of the Arduino is limited to 12-bits, so in order to simplify calculations, any readings the Arduino makes of the power measurements are divided by 8 so that all calculation is performed over 12-bits.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s