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.