The Direct Answer: What a Servo Motor is Actually Used For
A servo motor is used for precise angular or linear position control in a closed-loop system. Unlike open-loop steppers that blindly count steps and hope the shaft kept up, a servo uses an internal feedback mechanism (a potentiometer in hobby servos, or a magnetic/optical encoder in smart servos) to continuously verify its shaft position and correct errors in real-time.
In embedded systems like Arduino, ESP32, and Raspberry Pi projects, servos are the default choice when you need a joint to move to an exact angle and hold there against a physical load. Common applications include robotic arm joints, pan-tilt camera gimbals, active aerodynamic control surfaces, and RC steering actuation. If your project requires the microcontroller to know the motor successfully reached its target position without adding external limit switches or encoders, a servo is the correct tool.
Servo vs. Stepper vs. Brushed DC: The Selection Matrix
To understand what a servo motor is used for, you must understand where it fails compared to alternatives. Treating a stepper and a servo as interchangeable is a common mistake that leads to stalled joints and burned-out drivers. Here is how they compare under real-world embedded loads.
| Criteria | Hobby/Smart Servo | Stepper Motor (Open-Loop) | Brushed DC + Gearbox |
|---|---|---|---|
| Torque Curve | Maximum torque at zero speed (stall). Drops rapidly at high RPM. | High holding torque, but drops off sharply as speed increases. | Low torque at zero speed. Requires a gearbox to multiply torque for joints. |
| Control Needs | Closed-loop. 50Hz PWM (hobby) or Half-Duplex UART (smart). | Open-loop. Requires step/dir pulse trains and a dedicated chopper driver. | Open-loop. Simple voltage polarity or H-bridge PWM for speed. |
| Position Feedback | Built-in (internal pot or encoder). | None (assumes steps = position). | None (requires external quadrature encoder). |
| Cost (per axis) | $3 (SG90) to $45 (Dynamixel) | $15 (NEMA17) + $10 (A4988 driver) | $8 (motor) + $15 (planetary gearbox) |
Wiring, Terminals, and Signal Protocols
The physical interface of a servo dictates how your microcontroller must drive it. There are two primary architectures you will encounter on the workbench.
Standard PWM Hobby Servos (3-Wire)
These use a simple pulse-width modulation scheme. The ESP32 LEDC peripheral or Arduino Servo.h library handles the timing.
- VCC (Red): Power input. Nominally 4.8V to 6.0V. Never power a servo drawing >500mA directly from the ESP32 5V pin; use a dedicated BEC (Battery Eliminator Circuit) or buck converter.
- GND (Black/Brown): Ground. Must be tied to the microcontroller's ground to establish a common reference for the signal.
- Signal (White/Orange/Yellow): 50Hz PWM signal. A 1000µs pulse commands 0°, a 1500µs pulse commands 90° (center), and a 2000µs pulse commands 180°. Note that ESP32 GPIOs output 3.3V logic; while many modern hobby servos tolerate 3.3V, older 5V-only servos require a logic level shifter.
Smart Serial Servos (e.g., Dynamixel, LewanSoul)
These contain an internal microcontroller, PID loop, and encoder. They communicate via a serial bus.
- VCC & GND: Often higher voltage tolerant (7V to 12V for mid-size models), allowing you to run 3S LiPo packs directly into the servo bus.
- Data (TTL or RS485): Half-duplex serial. Requires only one GPIO pin on your ESP32, but you must use a half-duplex UART configuration or a dedicated communication board (like the Robotis OpenRB-150) to handle the transmit/receive switching.
Sizing Rule of Thumb and Worked Load Example
The most common mistake in embedded motor selection is sizing a servo to its exact stall torque. The sizing rule of thumb is: Calculate the maximum static torque required at the joint, then multiply by a safety factor of 2.0 to 2.5. This accounts for dynamic acceleration forces, mechanical friction, and voltage sag under load.
Worked Load Example:
You are building a robotic arm. The forearm is 150mm (0.15m) long and weighs 100g. It needs to lift a 200g payload at the very tip of the gripper. What size servo do you need for the elbow joint?
- Payload Torque: Force = mass × gravity = 0.2kg × 9.81m/s² = 1.96N. Torque = 1.96N × 0.15m = 0.294 Nm (approx. 3.0 kg-cm).
- Arm Weight Torque: The arm's center of mass is at 75mm (0.075m). Force = 0.1kg × 9.81 = 0.98N. Torque = 0.98N × 0.075m = 0.073 Nm (approx. 0.75 kg-cm).
- Total Static Torque: 3.0 + 0.75 = 3.75 kg-cm.
- Apply Safety Factor: 3.75 kg-cm × 2.0 = 7.5 kg-cm minimum required.
You must select a servo rated for at least 10 kg-cm to ensure reliable operation without operating constantly at the edge of its stall limit.
Failure Signatures: Hum, Overheat, and Stall
Because servos operate in a closed loop, they exhibit distinct failure signatures when the physical load exceeds the electrical capacity or when the control loop degrades. Recognizing these prevents catastrophic hardware failure.
- The "Hum" or Jitter: If the servo vibrates or hums while holding position, the internal control loop is "hunting." This is usually caused by a noisy power supply introducing ripple into the internal potentiometer's voltage divider, or mechanical backlash in the plastic gears causing the feedback to oscillate around the target deadband. Fix: Add a 470µF electrolytic capacitor across the VCC and GND terminals at the servo.
- Overheat (Thermal Shutdown): When a servo holds a heavy static load, the motor is essentially stalled. It draws maximum stall current (often 2A to 3A for a standard hobby servo) but does zero mechanical work. All that electrical energy converts to heat (I²R losses). If held for more than 10-15 seconds, the internal winding insulation can melt, or the plastic gears can warp. Fix: Use a smart servo with configurable torque limits, or design the mechanical linkage to be self-locking (like a lead screw) so the motor can be powered down while holding the load.
- Stall and Gear Stripping: A distinct grinding noise followed by a loss of position. This happens when the external load exceeds the stall torque, forcing the output shaft backward. In hobby servos with nylon gears, this will instantly strip the teeth. Fix: Upgrade to metal-gear variants (e.g., MG996R) or implement software current-limiting if using smart servos.
The Decision Tree: Picking Your Exact Part Number
Stop guessing. Use this decision matrix to terminate your selection process and order the correct hardware for your embedded build.
| Application Requirement | Decision Path | Concrete Part Pick | Approx. Cost |
|---|---|---|---|
| Lightweight pan/tilt, RC car steering, low budget. | Load < 2 kg-cm. Standard PWM is fine. No position readback needed. | TowerPro SG90 (or generic 9g micro servo) | $2 - $4 |
| Robotic arm joints, heavy RC steering, high torque on a budget. | Load 2 - 15 kg-cm. Needs metal gears. Standard PWM. | TowerPro MG996R (Metal gear, 10 kg-cm) | $8 - $12 |
| Multi-joint walking robot, precise gait control, needs daisy-chaining. | Requires serial bus, position readback, PID tuning, and high resolution. | Robotis Dynamixel XL430-W250-T | $45 - $55 |
| Continuous rotation (drive wheels), no absolute position needed. | Standard servo form factor but modified for velocity control. | Parallax Continuous Rotation Servo | $12 - $15 |






