Skip to content

Analog Inputs

What It Does

Read analog input signals with microcontrollers like the Arduino.

Conditioning

DANGER

Depending on your Arduino / MCU type you need to worry about different voltages. Teensies use 3.3V for instance, and thus the 5V in the circuits below should be replaced with 3.3V.

If you want to read external analog input levels with your Arduino / MCU, you need to be sure that:

  • Incomming voltages are conditioned well so they do not destroy the device.
  • Incomming voltages are clear so they get interpreted correctly.

Minimal analog read

An input conditioner circuit to protect the Arduino from external voltages while reading analog signals.

With attenuator

Bipolar signals

The previous circuits don't allow to read bipolar signals and signals that are larger than +5V. The circuit below scales down the incomming signal and offsets it so the MCU can read the full signal without clipping / losing information.

  • Notice this circuit is optimized for 3.3V MCU's. This design is from Mutable Instruments.
  • Notice the op-amp is powered single rail at 3.3V.
  • For this circuit often the MCP600x is used.
  • Notice you have to invert the signal in software.

Unipolar signals

The following circuit is optimized for input signals between 0V and +10V.

  • Notice you have to invert the signal in software.

Bipolar with bias

The following circuit is optimized for input signals between -5V and +5V. It also gives the user the ability to offset the signal.

Bipolar and unipolar

Previous circuits show that bipolar signals need to get scaled down for the MCU to read fully. Unfortunately this scaling down also decreases the resolution at the ADC 😖. For smaller and unipolar signals you don't want this extra scaling down. The circuit below lets you switch between both options.

  • Notice the logic to change the scaling and offset.