How “Rotation per Pulse” Specification Works in Digital Micro Servos
If you’ve ever ripped open a tiny 9g plastic gearbox, stared at the three wires (orange, red, brown), and wondered why the datasheet says “0.1ms pulse = 0°” and “0.5ms pulse = 180°” — you’re not alone. The real magic (and confusion) lives in a spec called Rotation per Pulse (RPP). Unlike stepper motors, where one pulse equals one fixed angular step, a digital micro servo uses pulses as timing references, not step counts. But here’s the kicker: in the world of digital servos, the phrase “rotation per pulse” is often misused, misunderstood, or simply hidden behind marketing fluff. Let’s tear it apart.
The Core Concept: Pulse Width, Not Pulse Count
First, kill the stepper mindset. A micro servo does not rotate a fixed number of degrees per pulse. Instead, it rotates to a target angle based on the width (duration) of a repeating pulse. The typical hobby servo uses a 50Hz refresh rate, meaning a pulse arrives every 20 milliseconds. The width of that pulse — usually between 500µs and 2500µs — maps linearly to the output shaft angle.
So when someone says “rotation per pulse,” they actually mean “rotation per pulse-width change.” For example:
- 500µs → 0°
- 1500µs → 90° (neutral)
- 2500µs → 180°
But digital micro servos (like the SG90, MG90S, or the newer digital ones with 16-bit processors) handle this differently from analog servos. That’s where the spec gets spicy.
Why Digital Changes the Game
Analog servos use a simple comparator chip. The incoming pulse width is compared to a feedback potentiometer voltage. If they don’t match, the motor turns until they do. Simple, but slow and jittery.
Digital micro servos, on the other hand, sample the incoming pulse at a much higher frequency — often 300Hz to 500Hz internal update rate, even if the external signal is still 50Hz. They use a microcontroller to read the pulse width, then drive the motor with a PWM signal at a higher frequency (e.g., 30kHz) for smoother torque. This means the “rotation per pulse” is not just about the external pulse; it’s about how the internal firmware interprets that pulse and then subdivides the movement into micro-steps.
The Hidden Sub-Step Resolution
Here’s the part most hobbyists miss: the deadband and resolution of a digital servo are far better than analog. A typical analog servo has a deadband of 5µs to 10µs, meaning a pulse width change smaller than that produces no movement. A digital micro servo can have a deadband of 1µs or less. So the “rotation per pulse” spec is really a measure of minimum incremental angular change per unit of pulse width change.
Let’s do the math:
- Usable pulse range: 500µs to 2500µs = 2000µs span
- Angular range: 180°
- So: 180° / 2000µs = 0.09° per 1µs pulse change
That means if your controller can output a 1µs change in pulse width, a digital micro servo can theoretically rotate 0.09°. But the actual spec sheet might say “0.1° per 1µs” — close enough. This is your true rotation per pulse.
Sub-Title: The 16-Bit vs 8-Bit Microcontroller Effect
Not all digital micro servos are created equal. The internal microcontroller’s timer resolution dictates how finely it can measure the incoming pulse. An 8-bit timer (common in cheap SG90 clones) can only divide a 20ms period into 256 counts. That’s about 78µs per count — terrible. But those cheap servos don’t actually use digital processing; they’re analog with a digital label.
A true digital micro servo uses a 16-bit timer, which gives 65536 counts over 20ms. That’s about 0.3µs per count. Now the rotation per pulse becomes:
- 0.3µs × 0.09°/µs = 0.027° per timer count
That’s sub-tenth-of-a-degree precision. You won’t feel it, but a camera gimbal or a robotic finger will.
The Refresh Rate Trap
Here’s a trap: many digital micro servos do not require a 50Hz refresh. Some accept up to 500Hz (2ms period). If you send a 1500µs pulse at 500Hz, the pulse occupies 75% of the period. The servo’s internal firmware must handle that. If it does, you get faster response. But the rotation per pulse spec doesn’t change — it’s still the same angular mapping. What changes is latency and torque ripple.
So when you see a spec like “0.1ms pulse = 0°, 0.5ms pulse = 180°” on a digital micro servo, it’s actually using a narrower pulse range than the standard 1ms to 2ms. For example, some digital servos use 500µs to 2500µs, but others use 400µs to 2000µs. That changes the rotation per pulse:
- 180° / (2000µs - 400µs) = 180° / 1600µs = 0.1125° per µs
Slightly finer. But the catch: your controller must be able to generate that exact pulse width without jitter. A generic Arduino delayMicroseconds() has about ±2µs jitter, which at 0.1125°/µs gives ±0.225° error. That’s fine for a toy, but not for a precision pan-tilt system.
Sub-Title: How to Actually Read a Digital Micro Servo Datasheet
Let’s dissect a typical datasheet for a digital micro servo (say, the DS3218 or the Miuzei MG90D). The spec table might look like this:
- Control System: Digital PWM
- Pulse Width Range: 500µs ~ 2500µs
- Operating Angle: 180° ± 5°
- Deadband: 1µs
- Rotation per Pulse: 0.09° / µs (calculated, not stated)
You’ll rarely see “rotation per pulse” written explicitly. Instead, you’ll see “Deadband: 1µs” and “Resolution: 0.09°”. That’s your RPP. If the datasheet says “0.1ms pulse = 0°, 0.5ms pulse = 180°,” they’re using a shorthand where the pulse range is 400µs to 2000µs. Don’t assume it’s the same as your other servos.
The Feedback Potentiometer and Its Nonlinearity
Here’s a dirty secret: the rotation per pulse is not perfectly linear across the full 180°. The feedback pot inside a micro servo is a cheap carbon track, and its resistance vs. angle curve can be off by 2-3%. That means at 0° you might get 0.09°/µs, but at 90° you might get 0.11°/µs. Digital servos try to correct this with a firmware lookup table, but cheap ones don’t.
If you’re building a robot arm and need repeatable positioning, you should calibrate the servo manually. Send a pulse width, measure the actual angle with a protractor or encoder, and build your own mapping table. That’s the only way to get true rotation per pulse accuracy.
Sub-Title: The Role of Pulse Timing Jitter in Real-World Performance
Now let’s talk about the elephant in the room: jitter. Your microcontroller sends a pulse every 20ms. But if your code has interrupts or you’re using delay(), the pulse width can vary by ±5µs. On a digital micro servo with a 1µs deadband, that jitter translates into constant micro-oscillations. The servo will buzz and draw more current.
To get stable rotation per pulse, you need:
- A hardware PWM timer (not software delays)
- A stable power supply (5V ± 0.1V)
- A signal isolator if using long wires (over 30cm)
For example, on an STM32 or ESP32, use the LEDC or MCPWM peripheral to generate a 50Hz signal with 16-bit resolution. Set the duty cycle to (pulse_width / 20ms) * 65535. For a 1500µs pulse, that’s (1500 / 20000) * 65535 = 4915. That gives you a resolution of 0.0003° per bit — far beyond the servo’s mechanical capability. But it ensures that the servo’s internal deadband is the only limiting factor.
The “Pulse Stretch” Trick for Digital Servos
Some advanced digital micro servos (like those used in robotics competitions) support a feature called “pulse stretch” or “overdrive”. If you send a pulse wider than 2500µs, the servo interprets it as “go to max speed in that direction” rather than “go to a specific angle.” This is not rotation per pulse — it’s rotation per second at full throttle. But it’s often confused because the datasheet might say “pulse width 500-2500µs for angle, 2500-3000µs for speed control.” The rotation per pulse spec becomes meaningless in this mode because the servo ignores the absolute width and just goes full speed.
Sub-Title: How to Measure Rotation per Pulse Yourself
If you don’t trust the datasheet, here’s a quick bench test:
- Mount a 10cm long pointer (like a toothpick) on the servo horn.
- Point it at a protractor or use a laser pointer on a wall 2 meters away.
- Send a 1000µs pulse. Record the angle.
- Send a 1100µs pulse. Record the angle.
- Difference in angle / 100µs = your actual rotation per pulse (in °/µs).
Repeat at 1500µs and 2000µs. You’ll likely see a variation of ±0.02°/µs. That’s normal. If you see a variation of ±0.1°/µs, the servo is either broken or it’s not a true digital servo.
The Impact of Load on Rotation per Pulse
Here’s a subtle but critical point: rotation per pulse is a no-load spec. When you attach a load (like a robotic arm), the servo’s internal PID loop has to fight inertia and friction. The actual angular change per pulse will be slightly less, and there will be a small overshoot. Digital servos handle this better because their high-frequency PWM (e.g., 30kHz) allows for faster torque correction. But if you stall the servo, the pulse-to-angle mapping drifts.
For example, a MG90S digital micro servo at 5V and 0.5kg·cm load might have a rotation per pulse of 0.085°/µs instead of 0.09°/µs. That’s a 5% error. If you’re doing open-loop positioning, that’s unacceptable. You need a closed-loop servo (with an external encoder) for that.
Sub-Title: Why “Rotation per Pulse” Doesn’t Matter for Most Hobbyists
Let’s be honest: if you’re building a pan-tilt camera mount, a small robot arm, or a RC car steering linkage, you don’t need 0.02° precision. You need repeatability — the ability to return to the same angle when given the same pulse. Digital micro servos excel at this because their deadband is tiny (1µs vs 5µs for analog). So even if the absolute rotation per pulse is slightly nonlinear, the relative movement is consistent.
But if you’re designing a continuous rotation servo (like the FS90R), the spec changes entirely. A continuous rotation servo doesn’t have a rotation per pulse — it has a speed per pulse. For example, 1500µs = stopped, 1000µs = full speed clockwise, 2000µs = full speed counterclockwise. The “pulse” now controls velocity, not position. So don’t mix those up.
The Future: Closed-Loop Digital Micro Servos with Feedback
The latest trend in micro servos (like the FEETECH FS90 with encoder, or the Dynamixel XL330) is to include a magnetic encoder on the output shaft. These servos report their actual angle back to the controller via a serial bus (UART or TTL). In that case, “rotation per pulse” becomes irrelevant — you just send a target angle (e.g., 45°) and the servo’s internal PID loop handles the rest. The pulse width is only used for compatibility mode.
But for 99% of the cheap digital micro servos you’ll buy on Amazon or AliExpress, the spec is still pulse-width-based. And the “rotation per pulse” is a derived value, not a direct measurement. So when you see that spec, ask yourself: What’s the deadband? What’s the refresh rate? What’s the power supply voltage? Only then does the number make sense.
Sub-Title: Practical Code Example for Precise Pulse Generation
Here’s a quick ESP32 Arduino snippet that uses hardware PWM to get stable rotation per pulse:
cpp
include <esp32-hal-ledc.h> define SERVO_PIN 13 define PWM_FREQ 50 define PWM_RES 16
define PWM_FREQ 50 define PWM_RES 16
void setServoAngle(int angle) { // Map angle (0-180) to pulse width (500-2500us) int pulseus = map(angle, 0, 180, 500, 2500); // Convert to duty cycle (16-bit) uint32t duty = (pulse_us * 65535) / 20000; ledcWrite(0, duty); }
void setup() { ledcSetup(0, PWMFREQ, PWMRES); ledcAttachPin(SERVO_PIN, 0); }
void loop() { setServoAngle(0); // 500us pulse delay(1000); setServoAngle(90); // 1500us pulse delay(1000); setServoAngle(180); // 2500us pulse delay(1000); }
This gives you a jitter-free pulse width with a resolution of about 0.3µs. The rotation per pulse will be exactly what the servo’s deadband allows — nothing more, nothing less.
Sub-Title: The Bottom Line on Rotation per Pulse
So here’s the takeaway:
- Rotation per pulse is not a fixed number. It’s a ratio of angular travel per microsecond of pulse width change.
- Digital micro servos have a smaller deadband and higher internal PWM frequency, making that ratio more precise and responsive.
- The spec is load-dependent and temperature-dependent. Don’t trust it for closed-loop applications.
- Always measure it yourself if you need sub-degree accuracy.
Next time you pick up a digital micro servo and see “0.1ms pulse = 0°” on the box, remember: that’s just the anchor point. The real story is in the deadband, the timer resolution, and the quality of your signal generation. And now you know exactly how to read between the lines.
Copyright Statement:
Author: Micro Servo Motor
Link: https://microservomotor.com/common-specifications-and-parameters/micro-servo-rotation-per-pulse.htm
Source: Micro Servo Motor
The copyright of this article belongs to the author. Reproduction is not allowed without permission.
Recommended Blog
- Maximum Angle Travel: Beyond 180°, Continuous, or Special Builds
- Speed of Reversal: How Quickly Servo Reverses Direction at Spec Limits
- Specification of Push / Pull Torque at Different Angles
- Specification of Motor Type: Brushed, Brushless, Coreless etc.
- Specification Declared Speed (s/60°) vs Real Time Tests
- Brush vs Coreless Motor: How Motor Type Affects Spec Sheets
- Voltage Drop at Wire Leads: Spec vs Real-World Conditions
- Specification of Connector Types (JR, Futaba, Molex etc.)
- Specification of “Creeping” or Non-Holding Torque when Power Removed
- Operating Voltage Ranges for Micro Servos Explained
About Us
- Lucas Bennett
- Welcome to my blog!
Hot Blog
- How to Build a Remote-Controlled Car with Telemetry Sensors
- Micro Servo Motor Buying Guide: What to Look for and Where to Buy
- How to Build a Remote-Controlled Car with a Rack and Pinion Steering System
- How to Select Micro Servos for RC Airplanes & Park Flyers
- Choosing the Right Micro Servo Motor Based on Price and Performance
- Designing a Micro Servo Robotic Arm for Military Applications
- What Voltage and Power Do Micro Servo Motors Require?
- High Precision Micro Servos for Scale RC Airplanes
- Hobby-Grade vs Industrial-Grade Micro Servos
- Micro Servo Motor Latency Issues in Real-Time Robot Control
Latest Blog
- How “Rotation per Pulse” Specification Works in Digital Micro Servos
- Durability: Can Micro Servos Match Standard Servos?
- Future Applications of Micro Servo Motors in Healthcare
- How to Maintain and Upgrade Your RC Car's Suspension Travel
- Maximum Angle Travel: Beyond 180°, Continuous, or Special Builds
- Why MOOG Leads the Pack in Micro Servo Motor Innovation
- Troubleshooting Signal Loss in RC Cars
- Micro Servo Motors and Sensor Fusion in Robot Feedback Systems
- Micro Servo Motors in Underwater Robots: Waterproofing and Sealing
- Best Micro Servo Motors for Camera Gimbals: A Price Guide
- How Gear Materials Affect Servo Motor Power Consumption
- Speed of Reversal: How Quickly Servo Reverses Direction at Spec Limits
- Micro Servo Motor Price Comparison: Which Brands Offer the Best Deals?
- The Role of Thermal Management in Motor Upgrades
- Low Voltage Micro Servos: Battery-Powered Considerations
- How to Use Raspberry Pi to Control Servo Motors in CNC Machines
- Getting Started with Micro Servo Motors and Raspberry Pi
- Smart Shelf Displays using Servo-Controlled Tilt Mechanics
- Micro Servo Motor Price Comparison: Which Brands Offer the Best Deals?
- Micro Servo Motors in Precision Positioning Systems: Innovations and Trends