When an Arduino accelerometer refuses to output data or returns erratic values, the fault usually lies in the physical layer: a starved power rail, a missing I2C pull-up resistor, or a floating ground. Before you waste hours rewriting I2C libraries or swapping out microcontrollers, you need to verify the hardware with a digital multimeter (DMM). Testing an Arduino accelerometer requires checking DC bias voltages on analog output pins (like the ADXL335) or verifying idle bus states on digital sensors (like the MPU-6050). This guide provides the exact meter settings, probe placements, and expected voltage tables you need to isolate the fault at the workbench.
Meter Setup, Safety Categories, and Probe Basics
Accelerometer breakout boards operate at low-voltage DC, but the power supplies feeding them connect to the mains. Understanding your multimeter's safety category (CAT rating) and setting it up correctly prevents both blown meter fuses and misleading readings.
Meter Setup Block
- Dial Position: DC Volts (V⎓). Do not use AC Volts, as the DMM's internal AC coupling capacitor will block the DC bias and read 0.00V.
- Lead Jacks: Black lead in COM, Red lead in the V/Ω/Hz jack. (Never use the Amps/mA jack for voltage probing; this creates a dead short and will blow the meter's internal fuse).
- Range: Auto-ranging is fine for initial checks. If your meter is manual-ranging, set it to the 2V or 20V DC range to maximize resolution for 3.3V and 5.0V logic levels.
- Special Modes: Enable the Min/Max hold feature if you are trying to catch voltage droops when the accelerometer draws peak current during a measurement cycle.
Expected Readings: Analog vs. I2C Accelerometers
The most critical step in testing an Arduino accelerometer is knowing what a "good" reading looks like numerically before you even touch the probes to the board. Analog accelerometers output a voltage proportional to gravitational force (G), while digital I2C accelerometers output static high/low voltages on their communication lines when idle.
Below is the reference table for the two most common breakout boards: the analog ADXL335 and the digital I2C MPU-6050. These values assume the sensor is resting flat on a workbench (Z-axis pointing straight up, experiencing +1G; X and Y axes parallel to the bench, experiencing 0G).
| Sensor Model | Test Point | Expected "Good" Reading | Expected "Bad" Reading (Fault) | Underlying Physics / Logic |
|---|---|---|---|---|
| ADXL335 (Analog) | VCC Pin | 3.25V to 3.35V | < 3.0V or > 3.6V | Sensor requires a regulated 3.3V supply. 5V will destroy the MEMS die. |
| ADXL335 (Analog) | X-OUT (0G) | 1.65V (± 0.05V) | 0.00V, 3.3V, or floating | Zero-G bias is exactly VCC/2. X-axis is perpendicular to gravity. |
| ADXL335 (Analog) | Y-OUT (0G) | 1.65V (± 0.05V) | 0.00V, 3.3V, or floating | Zero-G bias is VCC/2. Y-axis is perpendicular to gravity. |
| ADXL335 (Analog) | Z-OUT (+1G) | 1.98V (± 0.05V) | 1.65V (means Z is not up) | Z-axis feels 1G. Sensitivity is 330mV/G. 1.65V + 0.33V = 1.98V. |
| MPU-6050 (I2C) | VCC (Breakout) | 4.8V to 5.1V | < 4.5V | Breakout includes an LDO. Raw IC needs 3.3V, but board handles 5V. |
| MPU-6050 (I2C) | SDA / SCL (Idle) | 4.9V to 5.0V | 0.00V to 1.5V | I2C lines are open-drain and require pull-up resistors to VCC when idle. |
Step-by-Step Probe Placement and Verification
Getting the right numbers requires stable probe placement. Breadboard contacts are notoriously finicky, and a slipping probe can short VCC to GND, instantly killing your Arduino's voltage regulator or the sensor itself.
1. Verifying the Power Rail and Ground Reference
- Black Probe (Ground Reference): Place the black probe firmly on the Arduino's GND pin or the breadboard's negative power rail. Do not rely on the USB shield for ground; use a dedicated GND pin.
- Red Probe (VCC): Touch the red probe to the accelerometer's VCC or VIN pin.
- For ADXL335: You must read between 3.25V and 3.35V. If you are feeding it from the Arduino's 5V pin, you are overvolting it. Move the jumper to the 3.3V pin immediately.
- For MPU-6050: Read the VCC pin on the breakout board. If it reads ~5V, the onboard LDO is stepping it down to 3.3V for the IC. If it reads 0V, check your breadboard power rails for a split-rail disconnect.
2. Probing Analog Output Pins (ADXL335)
- Keep the black probe on the ground rail.
- Touch the red probe to the X-OUT pin. With the board flat, you should read exactly half of your VCC (1.65V).
- Dynamic Test: Slowly tilt the board 90 degrees so the X-axis points straight up. The voltage should smoothly climb to ~1.98V. Tilt it 90 degrees the other way (pointing down), and it should drop to ~1.32V (1.65V - 0.33V).
- Repeat for Y-OUT and Z-OUT. If any axis reads a hard 0.00V or 3.3V, the internal MEMS suspension for that axis is likely shattered from a physical drop, or the trace is broken.
3. Probing I2C Bus Lines (MPU-6050 / LIS3DH)
- Keep the black probe on GND.
- Touch the red probe to the SDA pin, then the SCL pin.
- When the Arduino is powered but not actively polling the sensor (or if the code hasn't started yet), both pins should read high (pulled up to VCC, typically 4.9V on a 5V system).
- If you read ~2.5V, the Arduino is actively clocking data and your DMM is averaging the high/low pulses. This is normal during operation.
- If you read 0.00V or near-zero, you are missing pull-up resistors, or a device on the bus is holding the line low (a bus lockup condition).
Common Mistakes That Give Misleading Readings
When testing embedded sensors, the measurement tool itself can introduce errors if you don't account for its internal circuitry. Here are the most frequent bench mistakes that lead to false diagnostics.
Mistake 1: Missing I2C Pull-Up Resistors
The I2C protocol uses open-drain outputs. The sensor can pull the SDA/SCL lines to ground, but it cannot drive them high. If your MPU-6050 breakout board lacks onboard pull-ups (common on cheap clone boards) and you haven't enabled the Arduino's internal pull-ups via code, the lines will float. A DMM might read a random 1.2V or 0.4V, leading you to believe the sensor is outputting data when it's actually just picking up ambient EMI. The fix: Measure the idle voltage. If it's not within 0.2V of VCC, add 4.7kΩ physical pull-up resistors between SDA/SCL and VCC.
Mistake 2: DMM Low-Pass Filtering Hiding Clock Pulses
Standard multimeters sample voltage a few times per second and apply a low-pass filter to stabilize the display. If you probe the SCL (clock) line while the Arduino is running at 400kHz Fast I2C, the DMM will simply average the 5V highs and 0V lows, displaying ~2.5V. A novice might think the bus is stuck halfway between logic levels due to a short circuit. The fix: To verify I2C activity with a DMM, switch to the AC Volts (V~) setting or Frequency (Hz) setting. If you read a frequency near 100kHz or 400kHz, the bus is clocking. For true signal integrity verification, you must switch to an oscilloscope or a dedicated logic analyzer.
Mistake 3: Loading the Analog Output with a Low-Impedance Meter
While most modern DMMs have an input impedance of 10MΩ (which won't load down the ADXL335's 32kΩ output impedance), older or cheaper analog meters might have an impedance as low as 20kΩ per volt. If you use a low-impedance meter, it forms a voltage divider with the sensor's internal output stage, pulling your 1.65V zero-G bias down to 1.4V or lower. Always check your meter's datasheet for input impedance; if it's under 1MΩ, buffer the analog signal with an op-amp voltage follower before measuring.
Mistake 4: Ignoring the Reference Voltage (VREF) Pin
Some advanced analog accelerometers feature a dedicated VREF pin that dictates the scaling of the analog outputs. If you probe the X/Y/Z pins and the voltages are stable but mathematically incorrect (e.g., Z-axis reads 2.5V instead of 1.98V on a 3.3V system), check the VREF pin. If VREF is accidentally tied to 5V instead of 3.3V, the internal scaling shifts. Always verify VREF matches your Arduino's analog reference (AREF) voltage to ensure the ADC reads the physical G-forces accurately.






