If you need precise angular control (typically 0–180°) with high holding torque at low speeds, a standard RC-style servo is your baseline. If your project demands continuous rotation with absolute position feedback, you must step up to a smart serial bus servo. The direct answer for 90% of hobbyist robotic arms, camera gimbals, and steering mechanisms is a metal-gear standard servo driven by an external I2C PWM controller. Never attempt to run high-torque servos directly from an Arduino's onboard 5V pin; you will brownout the microcontroller and potentially damage the USB port.

Servo vs. Stepper vs. DC: Picking the Right Motor

A common mistake on the workbench is treating stepper motors and servos as interchangeable. They are not. A stepper motor moves in discrete steps and holds position via magnetic detent, but it loses torque rapidly at higher RPMs and draws maximum current even when stationary. A servo uses a closed-loop feedback system (an internal potentiometer or magnetic encoder) to correct its position, drawing high current only when actively moving or fighting a physical load.

Motor Type Comparison for Microcontroller Projects
Motor Type Torque Curve Control Needs Cost (2026) Best Load Profile
Standard RC Servo Peak torque at stall/low speed; drops off quickly past 60 RPM. 50Hz PWM signal (1000-2000µs pulse width). $2 – $25 Robotic joints, steering linkages, camera panning (0-180°).
Smart Serial Servo High holding torque; built-in PID controller manages load dynamically. UART/TTL or RS485 serial bus (e.g., LewanSoul protocol). $20 – $60 Multi-joint walking robots requiring real-time position/temperature telemetry.
Stepper Motor High torque at zero speed; severe torque drop-off at high RPM. Step/Direction pulses via dedicated driver (A4988, TMC2209). $10 – $40 3D printer axes, CNC routers, precise linear actuators.
Brushed DC Motor Linear torque-speed curve; zero holding torque without a gearbox. H-Bridge (L298N, TB6612FNG) for speed and direction. $3 – $15 Drive wheels, conveyor belts, continuous high-speed rotation.

Wiring, Terminals, and Power Delivery

Standard hobby servos use a 3-pin JST connector. The pinout is almost universally standardized, but the wire colors vary slightly by manufacturer. You must identify these correctly before applying power.

  • Ground (GND): Usually Brown or Black. Must be tied to the Arduino's GND and the external power supply's GND to establish a common logic reference.
  • Power (VCC): Usually Red. Standard servos expect 4.8V to 6.0V. High-voltage (HV) servos can handle 7.4V to 8.4V (2S LiPo).
  • Signal (PWM): Usually Orange, Yellow, or White. Requires a 50Hz PWM signal. While 3.3V logic (ESP32, Raspberry Pi Pico) can sometimes trigger a 5V servo, it is out of spec; use a logic level shifter or a 3.3V-compatible servo for reliable operation.
Callout Tip: The Driver Demands
The Arduino's Servo library uses hardware timers to generate the 50Hz PWM signal. If you are driving 1 or 2 micro servos (like the 9g SG90), you can wire the signal pin directly to the Arduino. However, if you are driving 3 or more servos, or any high-torque metal-gear servo, you must use an external driver like the PCA9685 I2C PWM board. This offloads the timing from the microcontroller and provides a dedicated power rail for the motors, preventing logic brownouts.

Sizing Rule of Thumb and Worked Load Example

Hobby servo torque is rated in kilogram-centimeters (kg-cm) or ounce-inches (oz-in) at stall. This is the maximum force the servo can hold at a specific distance from the output shaft center before it slips or strips its gears. The golden rule of thumb: Calculate your worst-case static load torque, then apply a 2.5x safety factor to account for dynamic acceleration, vibration, and gear inefficiency.

Worked Load Example: Robotic Arm Shoulder Joint

Suppose you are building a robotic arm. The forearm and payload weigh 200g (0.2 kg), and the center of mass is 15 cm away from the shoulder joint servo shaft.

  1. Calculate Static Torque: Torque = Force × Distance.
    0.2 kg × 15 cm = 3.0 kg-cm.
  2. Apply Safety Factor: 3.0 kg-cm × 2.5 (dynamic multiplier) = 7.5 kg-cm required minimum rating.
  3. Select the Motor: A standard MG996R (rated ~13 kg-cm, approx. $8) will handle this comfortably. If the payload increases to 400g, the requirement jumps to 15 kg-cm, forcing an upgrade to a DS3218 (rated 20 kg-cm, approx. $18) or a serial bus servo.
Common Hobby Servo Spec Sheet (2026 Pricing & Ratings)
Model Stall Torque (at 5V) Speed (60°) Gear Material Avg. Cost
SG90 1.8 kg-cm 0.10s Plastic $2.00
MG90S 2.2 kg-cm 0.08s Metal $4.50
MG996R 13.0 kg-cm 0.17s Metal $8.00
DS3218 20.0 kg-cm 0.16s Metal $18.00
LewanSoul LX-16A 17.0 kg-cm 0.13s Metal (Serial Bus) $25.00

Failure Signatures: Diagnosing Hums, Stalls, and Jitters

Servos fail in highly specific ways that tell you exactly what is wrong with your circuit or mechanical linkage. Do not ignore these signatures; a stalled servo can draw 2A+ continuously and melt your wiring harness.

  • The 'Hum' Without Movement: If the servo emits a loud buzzing sound but the shaft doesn't move, you have either a mechanical bind (the load exceeds the gear's physical limit) or severe voltage sag. The internal H-bridge is trying to drive the motor, but the voltage is dropping below the control IC's logic threshold (usually ~3.5V). Fix: Check for physical obstructions, then measure the VCC rail under load with a multimeter. If it drops below 4.5V, your power supply or BEC (Battery Eliminator Circuit) is undersized.
  • Overheating and Thermal Shutdown: Standard servos are not designed to hold a heavy static load indefinitely. If you command a servo to push against a hard stop or hold a heavy weight at a 90° angle for more than 30 seconds, the internal motor will overheat, potentially melting the plastic casing or burning out the motor windings. Fix: Use a mechanical linkage that naturally locks (like a toggle joint) for static holding, or switch to a stepper motor with a worm gear.
  • Position Jitter (The 'Tremor'): The servo rapidly oscillates 1-2 degrees around the target position. This is almost always a signal integrity issue. It happens when you share a long ground wire with high-current DC motors, or when using an unregulated power supply with high AC ripple. Fix: Implement a star-ground topology where the servo power ground and Arduino logic ground meet at a single physical point. Add a 100µF electrolytic capacitor across the VCC and GND rails near the servo.

Arduino Servo Motors FAQ

Why do my Arduino servo motors jitter when I add an ultrasonic sensor or NeoPixels?

This is caused by PWM timer conflicts and interrupt latency. The Arduino Servo library relies on Timer1. If you add libraries that also use Timer1 (like certain IR receivers or specific NeoPixel implementations using bit-banging), the 50Hz PWM signal gets interrupted, causing the servo to lose its pulse width reference and jitter. The definitive fix is to offload servo control to a hardware I2C driver like the PCA9685, which generates its own independent PWM signals regardless of what the Arduino's main CPU is doing.

Can I power multiple Arduino servo motors directly from the USB cable?

No. A standard USB 2.0 port is limited to 500mA, and USB 3.0 is limited to 900mA. A single MG996R servo can draw 1.5A to 2.5A during stall or rapid direction changes. Drawing this current through the Arduino's USB port and onboard polyfuse will cause an immediate voltage drop, resetting the ATmega328P microcontroller (brownout) and potentially damaging your computer's USB motherboard header. Always use an external 5V power supply rated for at least 1A per standard servo, or 2.5A per high-torque servo.

What is the difference between 180-degree and 360-degree Arduino servo motors?

A standard 180-degree servo contains an internal potentiometer linked to the output shaft. The control board reads this potentiometer to know the exact physical angle and stops the motor when it matches your commanded pulse width (e.g., 1500µs = 90°). A '360-degree' or continuous rotation servo has had this potentiometer physically disconnected or replaced with a fixed resistor. It no longer knows its absolute position; instead, the pulse width dictates speed and direction (1500µs = stop, 2000µs = full speed forward, 1000µs = full speed reverse). If you need continuous rotation with position tracking, you must use a smart serial servo with a magnetic encoder, not a modified RC servo.