Measuring 20V signals on an Arduino Uno with a quantizer

By on July 26, 2022
Pin It

As we know, Arduino Uno includes a 10-bit ADC (analog-to-digital converter) inside its ATmega328p, which takes a signal between 0 and 5V and produces a digital value that varies from 0 to 1023. However, attempting to measure any voltage above 5V will cause some less than desirable results, such as creating magic smoke and destroying the microcontroller. To get around this, some makers add a voltage divider that divides the input voltage by a predetermined factor. This solution reduces the resolution of the ADC, as a single step of the digital value corresponds to a greater voltage variation. To solve this problem, the YouTuber known as Techoyaki has come up with a new solution that can measure the entire range of values ​​without reducing the resolution.

The circuit divides the 0V-20V range into four ranges (0V-5V, 5v-10V, 10V-15V and 15V-20V) translating them all into the 0-5V range. After that, these four obtained signals arrive at the Arduino’s four analog inputs, which add up the values ​​to produce the equivalent of an ADC of nearly 12 bits, thus leading to values ​​that fall between 0 and 4092 (1023 x 4).

The circuit is composed of four rail-to-rail operational amplifiers, and various resistors, which allow to limit the voltage obtained in the 0v-5v range and subtract a DC voltage value to effect the translation in the desired range.

More info

About Marco Ventimiglia

Leave a Reply

Your email address will not be published.