The Verdict: Bypass the Internal 10-Bit ADC
If you want to use an Arduino as a multimeter for anything beyond flashing an LED when a battery drops below 3.3V, you must bypass the microcontroller's internal analog-to-digital converter (ADC). The ATmega328P on an Arduino Uno features a 10-bit ADC, yielding a maximum resolution of roughly 4.88mV per step (assuming a perfect 5.00V reference). In reality, non-linearity and USB voltage sag push that error margin to ±20mV or worse. That is unacceptable for bench diagnostics.
To build a functional, precision Arduino-based measurement rig, you need an external 16-bit I2C ADC. The industry standard for this is the Texas Instruments ADS1115 (commonly sold on breakouts like the Adafruit 1085). It offers 16-bit resolution, a programmable gain amplifier (PGA), and a programmable sampling rate up to 860 samples per second (SPS). When paired with an Arduino Nano or Uno, it transforms the board from a crude voltage detector into a highly capable data-logging multimeter.
Meter Setup & Probe Placement for the Arduino Rig
When validating a custom Arduino measurement rig, you must simultaneously set up a reference bench Digital Multimeter (DMM) to verify your ADC readings. Here is the exact setup block for both tools.
Reference DMM Setup Block
- Dial Position: DCV (Direct Current Voltage) for steady-state, or mV AC for ripple.
- Lead Jacks: Black lead to COM, Red lead to V/Ω.
- Range: Auto-range enabled, or manual 2V/20V range for maximum digit resolution.
Arduino ADS1115 Rig Setup Block
- VDD: Connect to the Arduino 3.3V pin (not 5V) to utilize the cleaner, lower-noise 3.3V regulator as your logic and pull-up reference.
- GND: Connect to Arduino GND.
- SDA/SCL: Connect to A4/A5 (Uno/Nano) or dedicated SDA/SCL pins on newer boards.
- Probe Jacks: Red probe tip to A0 (Positive), Black probe tip to A1 (Negative) to utilize the ADS1115's internal differential measurement mode, which rejects common-mode noise.
Probe Placement per Test Point
Voltage Measurement: Place probes in parallel across the Device Under Test (DUT) output terminals. Ensure the black probe references the exact ground plane of the DUT, not a distant ground point on the breadboard, to avoid measuring voltage drop across the breadboard's internal contact resistance.
Current Measurement (Shunt): Never put the ADS1115 in series with the load. Instead, place a precision shunt resistor (e.g., a 50mΩ 1% tolerance power resistor) in series with the load's ground path. Place your red and black probes directly across the shunt resistor's leads using a Kelvin (4-wire) connection technique. This measures the millivolt drop without including the voltage drop of the probe wires themselves.
Expected Readings & Misleading Measurement Mistakes
When testing a standard 12V-to-5V DC-DC buck converter under a 1A resistive load, your Arduino serial monitor (logging via the ADS1115) and your reference DMM should agree within 0.1%. Below is the expected reading table for a healthy circuit.
| Parameter | Expected Reading (Good) | Failing Reading (Bad) | ADS1115 PGA Setting |
|---|---|---|---|
| Output Voltage (DC) | 4.95V – 5.05V | < 4.80V or > 5.20V | ±6.144V (Default) |
| Voltage Ripple (AC) | < 30mV RMS | > 50mV RMS | ±0.256V (High Gain) |
| Current Shunt (50mΩ @ 1A) | 49mV – 51mV | < 45mV or > 55mV | ±0.256V (High Gain) |
Mistakes That Give Misleading Readings
- Relying on USB VCC for VREF: If you use the Arduino's internal ADC and assume VREF is exactly 5.00V, you will get wrong readings. A standard PC USB port sags to 4.6V under load. A 4.6V reference shifts a nominal 5.0V reading down to 4.6V on the serial monitor. Always use an external precision voltage reference or the ADS1115's internal 2.048V/4.096V reference.
- Clipping the PGA: The ADS1115 has an internal Programmable Gain Amplifier. If you leave it on the default ±6.144V full-scale range (FSR) but try to measure a 50mV shunt drop, your resolution is wasted (roughly 0.18mV per step). You must dynamically switch the PGA to the ±0.256V range in your code to achieve 7.8µV resolution for current shunts. If you forget to switch back and measure a 5V rail, you will clip the ADC and read a flat 0.256V.
- Ignoring Common-Mode Voltage: If you measure a high-side current shunt (placed between the positive supply and the load) using single-ended mode (A0 to GND), the ADS1115 will read the full 12V rail, instantly exceeding its absolute maximum rating of VDD + 0.3V and permanently bricking the chip. Always use differential mode (A0 to A1) for shunts.
Safety Categories: Where the Arduino Rig is Forbidden
An Arduino and an ADS1115 breakout board have no safety isolation. They are strictly unrated (CAT None). The IEC 61010-1 standard defines Measurement Categories (CAT I through CAT IV) based on the energy available at the measurement point. Commercial multimeters use physical isolation barriers, high-energy fuses (like HRC sand-filled fuses), and spark gaps to protect the user from arc flashes.
Decision Tree: Arduino Data Logger vs. Bench DMM
Choosing between a custom Arduino measurement rig and a commercial bench multimeter depends entirely on your sampling requirements, isolation needs, and budget. Use the decision path below to select the right tool for your bench.
| Measurement Condition | Required Tool | Why This Tool Wins |
|---|---|---|
| Need to log 1000 voltage samples/sec to an SD card for thermal profiling. | Arduino + ADS1115 | DMMs max out at 2-5 readings/sec over RS-232/USB. The ADS1115 hits 860 SPS natively via I2C. |
| Need to measure True RMS AC voltage at 60Hz. | Bench DMM (e.g., Fluke 87V) | Arduino ADCs sample DC or raw AC; calculating True RMS in software at high frequencies taxes the ATmega328P and introduces math errors. |
| Need to troubleshoot a 120VAC wall outlet or HVAC control board. | CAT III DMM (e.g., Fluke 117) | Arduino has zero isolation. Mains voltage will destroy the board and pose a lethal shock hazard. |
| Need to trigger a relay when a LiPo cell drops below 3.2V. | Arduino Internal 10-bit ADC | 4.88mV resolution is perfectly adequate for a 3.2V threshold trip. No external hardware needed. |
| Need 4.5-digit precision (0.0001V) for calibrating voltage references. | Bench DMM (e.g., Keysight 34461A) | The ADS1115 has ±1 LSB offset error and gain drift over temperature. It cannot hold 4.5-digit calibration accuracy. |
The Default Pick
If you are building a custom test jig, an automated battery cycler, or a solar charge controller telemetry system operating under 24V DC, the default pick is an Arduino Nano paired with the Adafruit ADS1115 Breakout (Part # ADA1085). It costs under $15 total, provides 16-bit differential measurement, and easily logs data via MQTT to a local Raspberry Pi server. For general-purpose, walk-around bench troubleshooting where isolation and speed matter more than data logging, keep a Fluke 117 in your tool belt. Do not attempt to make the Arduino do a job it was never engineered to survive.
For deeper technical specifications on configuring the PGA and I2C registers, consult the Texas Instruments ADS1115 Product Page and the All About Circuits guide on ADC resolution.






