The Direct Answer: Testing an Arduino Servo Circuit

To successfully perform a servo test with an Arduino, you must verify three parameters: power supply voltage under mechanical load, stall current draw, and the 50Hz PWM control signal. A healthy 5V servo circuit will maintain at least 4.5V at the servo terminals while drawing up to 650mA (for a micro SG90) or 2.5A (for a standard MG996R) during a stall. If your Arduino resets during a sweep, or the servo jitters, the issue is almost always a voltage brownout caused by inadequate power delivery or high-resistance breadboard connections, not a faulty microcontroller.

This guide walks you through the exact bench procedures to isolate servo faults using a digital multimeter (DMM), distinguishing between a dead servo, a weak power supply, and a corrupted PWM signal.

Multimeter Setup and Probe Placement

Servos are low-voltage DC devices, but they are frequently powered by wall-mounted switching adapters or multi-cell lithium packs. When measuring the DC output of a mains-powered adapter, your meter must be rated for CAT II 600V to safely handle transient spikes from the AC side. For internal breadboard measurements, CAT I is sufficient.

⚠️ Safety & Equipment Note: Never measure current (amps) in parallel with a voltage source. Doing so will blow your multimeter's internal fuse or destroy the meter. Always break the circuit and place the meter in series when measuring current. For LiPo-powered high-torque servo setups, ensure your pack has a BMS to prevent thermal runaway during repeated stall testing.

Meter Setup Block

  • Dial Position (Voltage): DC Voltage (V⎓). Set to auto-range or manual 20V DC.
  • Dial Position (Current): DC Current (A⎓). Set to the 10A range. Servo stall currents easily exceed the 400mA limit of the standard mA jack.
  • Lead Jacks (Voltage): Black to COM, Red to VΩmA.
  • Lead Jacks (Current): Black to COM, Red to 10A (or 20A) high-current jack.

Probe Placement per Test Point

  1. Power Supply Verification: Place the red probe on the positive rail of your breadboard or the VCC pin of the servo connector. Place the black probe on the GND rail. Do not measure at the Arduino's 5V pin; you must measure at the load to capture voltage drop across the wires.
  2. Stall Current Measurement: Disconnect the servo's VCC wire from the power rail. Place the red probe on the power rail and the black probe on the servo's VCC wire. The meter now acts as a bridge, forcing all current through the shunt resistor.
  3. PWM Signal (Voltage Mode): Red probe on the Arduino digital output pin (e.g., Pin 9) or the servo signal wire. Black probe on GND. (Note: See the misleading readings section below for why standard DMMs struggle here).

Expected Readings: Good vs. Bad Values

The following table assumes a standard 50Hz PWM signal generated by the Arduino Servo Library and a nominal 5.0V to 6.0V power supply. Values are based on bench testing of common hobby servos.

Parameter SG90 (9g Micro) MG996R (Standard Metal Gear) DS3218 (20kg High Torque) Fail State / Bad Reading
Idle Voltage 4.9V - 5.1V 4.9V - 6.0V 4.9V - 8.4V < 4.5V (Indicates weak supply or high line resistance)
Loaded/Stall Voltage > 4.5V > 4.7V > 5.0V Drops below 4.2V (Causes Arduino brownout or servo jitter)
Idle Current 10mA - 50mA 100mA - 250mA 150mA - 300mA > 500mA idle (Internal potentiometer fault or stripped gears)
Stall Current 650mA - 800mA 2.0A - 2.5A 3.0A - 4.5A 0A (Open circuit/burned motor) or >120% spec (Shorted windings)
PWM Frequency 50Hz (20ms period) < 45Hz or > 55Hz (Servo will twitch or fail to hold position)

Common Mistakes That Give Misleading Readings

When troubleshooting embedded actuators, the physical test setup often lies to you. Here are the three most common measurement traps and how to avoid them.

1. The Breadboard Voltage Drop Illusion

Breadboard contact resistance is typically 0.1Ω to 0.5Ω per junction. If you power an MG996R through breadboard tracks and it stalls, drawing 2.5A, Ohm's Law dictates a voltage drop of up to 1.25V (0.5Ω × 2.5A) just across the breadboard contacts. Your power supply might be outputting a perfect 5.0V, but the servo only sees 3.75V. The fix: Always use thick (18 AWG or larger) silicone wire directly from the power supply to the servo's VCC and GND pins, bypassing the breadboard for power delivery.

2. The "No-Load" Current Trap

Measuring current while the servo arm is spinning freely in the air only shows you the idle current (often less than 200mA). This will not tell you if your power supply can handle the stall current. To properly test the power delivery, you must physically obstruct the servo horn with your fingers or a mechanical stop while reading the meter. If the voltage sags below 4.5V during this physical obstruction, your power supply or wiring is inadequate.

3. DMM PWM Averaging (The "Dead Signal" False Positive)

If you put a standard digital multimeter in DC Voltage mode and probe the Arduino's PWM signal pin, the meter will display the average voltage, not the peak voltage. A 50Hz PWM signal with a 1.5ms pulse width (7.5% duty cycle) on a 5V logic pin will read as roughly 0.37V DC on a multimeter. Many beginners see this low number, assume the Arduino pin is dead, and replace the microcontroller. To accurately measure the 1-2ms pulse width, you need an oscilloscope or a $10 USB logic analyzer (like a Saleae clone) running PulseView/Sigrok. If you must use a DMM, it needs a dedicated Frequency (Hz) and Duty Cycle (%) mode, though cheap meters often fail to trigger accurately on narrow 1ms pulses.

Pro-Tip for Field Testing: If you don't have a scope on the bench, use the RC servo testing guidelines and swap the Arduino for a standalone $8 PWM servo tester. If the servo centers and sweeps smoothly on the tester, your Arduino code or logic-level shifting is the culprit, not the hardware.

Servo Test Arduino FAQ

Why does my Arduino reset when I run the servo test code?

This is a classic brownout. The Arduino Uno's onboard 5V linear regulator or your PC's USB port is typically limited to 500mA. When a standard servo like the MG996R starts moving under load, it can draw 1.5A to 2.5A. This massive current draw pulls the USB voltage down to 4.0V or lower, triggering the Arduino's ATmega328P brownout detection (BOD) circuit, which instantly resets the board. The solution is to power the servo from a separate 5V/3A buck converter or bench supply, ensuring the servo GND is tied directly to the Arduino GND to maintain a common reference plane.

Can I test a servo PWM signal with a standard multimeter?

Not reliably. While a high-end Fluke or Brymen meter with a fast-sampling duty cycle function might capture the 50Hz frequency and 5-10% duty cycle, standard $30 multimeters will either display erratic numbers or just show the averaged DC voltage (0.2V - 0.5V). For verifying the 1000µs to 2000µs pulse width required by the Arduino Servo library, a cheap 24MHz USB logic analyzer connected to a laptop is vastly superior and more accurate than a handheld DMM.

What is the safe CAT rating for testing Arduino servo circuits?

When probing the low-voltage DC side of your breadboard or battery pack, a CAT I rated meter is perfectly safe. However, if you are probing the DC output terminals of a wall-mounted switching power supply (the "brick" that plugs into the wall), you should use a CAT II 600V rated meter. This ensures the meter can safely dissipate transient energy spikes that might cross the transformer's isolation barrier from the AC mains side. For more on meter safety categories, refer to the Fluke measurement categories guide.

How do I know if the servo's internal potentiometer is broken?

The internal potentiometer provides position feedback to the servo's control board. If it is damaged or has a dead spot, the servo will exhibit "hunting" (continuously jittering back and forth around the target angle) or will spin continuously like a DC motor. To test this without opening the casing, command the Arduino to hold a static position (e.g., myservo.write(90);). If the multimeter shows the current draw rapidly spiking and dropping in a rhythmic pattern (e.g., oscillating between 50mA and 800mA every half-second) while the horn vibrates, the feedback loop is broken. The potentiometer wiper is likely worn out or the gear train is stripped.