Description
🤖 SG90 Servo Motor – Micro Servo for Robotics and RC Applications
The SG90 Micro Servo Motor is a compact, lightweight, and affordable servo motor widely used in robotics, RC models, and DIY projects. This analog servo provides precise angular control with 180-degree rotation capability, making it perfect for applications requiring accurate positioning such as robot arms, camera gimbals, RC vehicles, and hobby projects. With its standard 3-wire interface and universal mounting accessories, the SG90 is compatible with Arduino, Raspberry Pi, and most microcontroller platforms.
✨ Key Highlights
- 📐 Compact Size – Ultra-small form factor: 22.2mm x 11.8mm x 31mm
- 🔄 180° Rotation – Precise angular positioning from 0° to 180°
- ⚡ 4.8V – 6V Operation – Standard servo voltage range
- 💪 1.8kg·cm Torque @ 4.8V – Sufficient power for lightweight applications
- ⚙️ Analog Control – Standard PWM signal (50Hz, 1-2ms pulse width)
- 📱 Arduino Compatible – Works with Servo library out-of-the-box
- 🔧 Complete Accessories – Mounting hardware and servo horns included
- ⚖️ Lightweight – Only 9 grams, perfect for small robots
- 🎯 Good Precision – Accurate positioning for hobby applications
- 💰 Cost Effective – Best price-to-performance ratio
📊 Technical Specifications
| Specification |
Details |
| 🏷️ Model Number |
SG90 (Tower Pro or equivalent) |
| 🔧 Servo Type |
Analog Micro Servo |
| ⚡ Operating Voltage |
4.8V – 6V DC |
| 🔋 Recommended Voltage |
5V DC (standard) |
| 💡 No-Load Current |
~170mA @ 4.8V / ~220mA @ 6V |
| ⚙️ Stall Current (Max) |
~650mA @ 4.8V / ~800mA @ 6V |
| 💪 Torque @ 4.8V |
1.8kg·cm (25oz·in) |
| 💪 Torque @ 6V |
2.2kg·cm (31oz·in) |
| 🔄 Rotation Range |
0° to 180° (approximately) |
| ⏱️ Speed @ 4.8V |
0.12 sec/60° (no load) |
| ⏱️ Speed @ 6V |
0.10 sec/60° (no load) |
| 📡 Control Signal |
PWM (Pulse Width Modulation) |
| 🔊 PWM Frequency |
50Hz (20ms period) |
| 📏 Pulse Width Range |
1ms (0°) to 2ms (180°), 1.5ms (90° center) |
| 🎯 Neutral Position |
1.5ms pulse width (90°) |
| 🔌 Connector Type |
Standard 3-pin servo connector (female) |
| 📏 Wire Length |
~250mm (25cm) |
| ⚙️ Gear Type |
Plastic gears (Nylon) |
| 🔩 Output Shaft |
Spline shaft (standard servo horn compatible) |
| 🌡️ Operating Temperature |
0°C to +55°C |
| 📐 Dimensions (L x W x H) |
22.2mm x 11.8mm x 31mm (including mounting tabs) |
| ⚖️ Weight |
~9g (0.3oz) |
| 🔧 Mounting Holes |
2x mounting tabs with holes |
| 🔩 Mounting Screw Size |
M2 screws (included) |
🔌 Wire Color & Pin Configuration
| Wire Color |
Function |
Connection |
| Brown (or Black) |
Ground (GND) |
Connect to power supply ground / Arduino GND |
| Red |
Power (VCC) |
Connect to +5V (4.8V-6V) power supply |
| Orange (or Yellow/White) |
Control Signal (PWM) |
Connect to MCU PWM pin (Arduino D9, D10, etc.) |
📏 PWM Pulse Width to Angle Mapping
| Angle Position |
Pulse Width |
Duty Cycle @ 50Hz |
| 0° (Minimum) |
1.0ms (1000µs) |
~5% |
| 45° |
1.25ms (1250µs) |
~6.25% |
| 90° (Center) |
1.5ms (1500µs) |
~7.5% |
| 135° |
1.75ms (1750µs) |
~8.75% |
| 180° (Maximum) |
2.0ms (2000µs) |
~10% |
🎯 Perfect For
| Application |
Description |
| 🤖 Robot Arms |
Lightweight robotic arm joints, small grippers, pan-tilt mechanisms |
| 🚗 RC Vehicles |
Steering control for small RC cars, boats, aircraft rudders |
| ✈️ RC Aircraft |
Control surfaces (ailerons, elevators, rudders) for small planes |
| 📷 Camera Gimbals |
Pan-tilt camera mounts, FPV camera stabilization |
| 🎓 Educational Projects |
Arduino learning, robotics workshops, STEM education |
| 🎨 Art Installations |
Kinetic art, interactive displays, moving sculptures |
| 🏠 Home Automation |
Automated blinds, valve control, door locks |
| 🎮 Animatronics |
Small animated figures, puppet control, facial expressions |
| 🔬 Lab Equipment |
Sample positioning, automated testing, optical alignment |
| 🎯 Hobby Projects |
DIY makers, prototype development, Arduino experiments |
| 🌱 Garden Automation |
Automated plant watering direction control |
| 📡 Antenna Positioning |
Small antenna rotators, directional control |
📦 Package Contents
- ✅ 1x SG90 Micro Servo Motor
- ✅ 4x Servo Horns (various shapes: single arm, cross, double arm, star)
- ✅ 4x Mounting Screws (M2 for servo horns)
- ✅ 2x Mounting Brackets/Tabs (if separate)
- ✅ 25cm 3-wire cable with connector
- ⚠️ Note: Servo horn screws are small – handle carefully
- ⚠️ Note: Power supply NOT included (5V recommended)
- ⚠️ Note: Servo extension cables sold separately
💻 Arduino Code Examples
Basic Servo Sweep (Using Servo Library)
| Code Snippet |
#include <Servo.h>
Servo myServo; // Create servo object
void setup() {
myServo.attach(9); // Attach servo to pin 9
Serial.begin(9600);
Serial.println("SG90 Servo Test");
}
void loop() {
// Sweep from 0° to 180°
for (int angle = 0; angle <= 180; angle++) {
myServo.write(angle);
delay(15); // Wait for servo to reach position
}
// Sweep back from 180° to 0°
for (int angle = 180; angle >= 0; angle--) {
myServo.write(angle);
delay(15);
}
}
|
Precise Angle Control
| Code Snippet |
#include <Servo.h>
Servo myServo;
const int SERVO_PIN = 9;
void setup() {
myServo.attach(SERVO_PIN);
Serial.begin(9600);
Serial.println("Enter angle (0-180):");
}
void loop() {
if (Serial.available() > 0) {
int angle = Serial.parseInt();
// Constrain angle to valid range
angle = constrain(angle, 0, 180);
myServo.write(angle);
Serial.print("Servo moved to: ");
Serial.print(angle);
Serial.println("°");
}
}
|
Multiple Servo Control
| Code Snippet |
#include <Servo.h>
Servo servo1, servo2, servo3;
void setup() {
servo1.attach(9); // Base rotation
servo2.attach(10); // Shoulder
servo3.attach(11); // Gripper
// Initialize to center positions
servo1.write(90);
servo2.write(90);
servo3.write(90);
}
void loop() {
// Example: Simple robot arm sequence
// Move to position 1
servo1.write(45);
servo2.write(60);
servo3.write(30); // Open gripper
delay(1000);
// Close gripper
servo3.write(90);
delay(500);
// Move to position 2
servo1.write(135);
servo2.write(120);
delay(1000);
// Release
servo3.write(30);
delay(500);
// Return to center
servo1.write(90);
servo2.write(90);
delay(1000);
}
|
ESP32 Servo Control (Without Library)
| Code Snippet |
// ESP32 native PWM control (no Servo library needed)
const int SERVO_PIN = 16;
const int FREQ = 50; // 50Hz for servos
const int CHANNEL = 0;
const int RESOLUTION = 16; // 16-bit resolution
void setup() {
ledcSetup(CHANNEL, FREQ, RESOLUTION);
ledcAttachPin(SERVO_PIN, CHANNEL);
}
void setServoAngle(int angle) {
// Map angle (0-180) to duty cycle
// 1ms = 3276, 2ms = 6553 (for 16-bit @ 50Hz)
int dutyCycle = map(angle, 0, 180, 3276, 6553);
ledcWrite(CHANNEL, dutyCycle);
}
void loop() {
setServoAngle(0);
delay(1000);
setServoAngle(90);
delay(1000);
setServoAngle(180);
delay(1000);
}
|
✅ Advantages of SG90 Servo
| Feature |
Benefit |
| 📐 Compact Size |
22.2×11.8x31mm – perfect for space-constrained projects |
| ⚖️ Lightweight |
Only 9g – ideal for flying drones and small robots |
| 💰 Very Affordable |
Best cost-to-performance ratio in micro servo category |
| 📱 Arduino Compatible |
Works directly with Arduino Servo library |
| 🔌 Standard Interface |
Universal 3-pin connector compatible with most systems |
| 💪 Adequate Torque |
1.8kg·cm sufficient for lightweight applications |
| 🔄 180° Rotation |
Wide angular range for versatile positioning |
| 🔧 Accessories Included |
Multiple servo horns and mounting hardware |
| 🌐 Widely Available |
Easy to source globally, good community support |
| 🎓 Beginner Friendly |
Simple to use, extensive tutorials available |
⚠️ Important Usage Notes & Limitations
- ⚡ Power supply critical – Use dedicated 5V PSU, NOT Arduino 5V pin for power
- 🔌 Common ground required – Servo GND and Arduino GND must connect
- 💪 Torque limitation – 1.8kg·cm is modest; not suitable for heavy loads
- ⚙️ Plastic gears – Can strip under excessive load or shock
- 🔄 Not continuous rotation – Standard SG90 is positional servo (0-180°)
- 🔊 Can be noisy – Produces audible buzzing, especially when holding position
- 🎯 Dead band – Small position tolerance (±3-5°), not high-precision
- ⏱️ Response time – 0.12s/60° is moderate speed, not for high-speed applications
- 🌡️ Temperature sensitive – Performance degrades above 50°C
- 🔋 Current spikes – Can draw 650mA+ under stall, use adequate PSU
- 📏 Calibration variation – Individual servos may have slightly different 0° positions
- ⚠️ Quality varies – Chinese clones may have inconsistent quality
🔋 Power Supply Requirements
| Number of Servos |
Minimum PSU Current |
Recommended PSU |
| 1 Servo |
500mA @ 5V |
1A @ 5V (USB charger) |
| 2-3 Servos |
1A @ 5V |
2A @ 5V (wall adapter) |
| 4-6 Servos |
2A @ 5V |
3A @ 5V regulated PSU |
| 7+ Servos |
3A+ @ 5V |
5A @ 5V switching PSU |
| ⚠️ Note: NEVER power servos directly from Arduino 5V pin – use external PSU |
🔍 Troubleshooting Guide
| Problem |
Possible Cause |
Solution |
| Servo Doesn’t Move |
No power or wrong wiring |
✅ Check red wire to +5V, brown to GND, verify connections |
| Servo Jitters/Shakes |
Insufficient power or bad PWM signal |
✅ Use external 5V PSU (2A), check common ground, verify PWM frequency |
| Arduino Resets When Servo Moves |
Powering servo from Arduino 5V pin |
✅ Use separate 5V PSU for servo, connect grounds together |
| Servo Doesn’t Reach Full Range |
Mechanical obstruction or calibration |
✅ Remove servo horn, check for binding, recalibrate with myServo.write() |
| Servo Gets Hot |
Stalling against obstacle or overvoltage |
✅ Remove obstruction, verify 5V (not 6V+), add cooling time |
| Inconsistent Positioning |
Worn gears or damaged potentiometer |
✅ Check for gear damage, replace servo if internal components worn |
| Servo Horn Loose |
Stripped spline or loose screw |
✅ Tighten mounting screw, replace horn if stripped |
| Buzzing Noise |
Normal operation or voltage fluctuation |
✅ Add 100µF capacitor across servo power, use regulated PSU |
💡 Pro Tips for SG90 Usage
- 🔋 Dedicated power supply – Always use external 5V PSU, never Arduino 5V pin
- 📏 Add capacitor – 100-470µF across servo power lines reduces noise/jitter
- ⚙️ Gentle operation – Avoid forcing servo beyond limits to prevent gear stripping
- 🔧 Test before installation – Verify servo operation before mounting in project
- 📐 Center before attaching horn – Set to 90° with code, then attach horn
- 🔩 Don’t overtighten – Horn screw can strip plastic gears if too tight
- 💾 Smooth movements – Use incremental angle changes for smoother motion
- ⏱️ Add delays – Give servo 15-20ms to reach position before next command
- 🛡️ Protect from dust – Seal servo in dusty environments to prevent gear contamination
- 🔄 Limit range in code – Constrain to 10-170° if hitting mechanical limits
- 📊 Monitor current – High current indicates stalling or obstruction
- 🎯 Calibrate individually – Each servo may need slight angle adjustment
🆚 SG90 vs Metal Gear Servos
| Feature |
SG90 (Plastic Gear) |
MG90S (Metal Gear) |
| Torque @ 4.8V |
1.8kg·cm |
2.2kg·cm |
| Gear Material |
Plastic (Nylon) |
Metal (Steel/Brass) |
| Durability |
⭐⭐⭐ Good |
⭐⭐⭐⭐⭐ Excellent |
| Weight |
9g (lighter) |
13.4g (heavier) |
| Noise Level |
⭐⭐⭐ Moderate |
⭐⭐ Noisier |
| Price |
💰 Very Low |
💰💰 2-3x more expensive |
| Best For |
Lightweight, low-stress applications |
Heavy-duty, continuous operation |
🎓 Example Projects
| Project |
Servos Needed |
Description |
| 2-Axis Camera Gimbal |
2x SG90 |
Pan-tilt mechanism for smartphone or small camera |
| 4-DOF Robot Arm |
4x SG90 |
Base, shoulder, elbow, gripper control |
| RC Car Steering |
1x SG90 |
Front wheel steering mechanism |
| Hexapod Robot |
12-18x SG90 |
6-legged walking robot (2-3 servos per leg) |
| Automated Blinds |
1x SG90 |
Open/close small window blinds |
| Solar Panel Tracker |
2x SG90 |
2-axis sun tracking for small panels |
🔧 Servo Horn Types & Uses
| Horn Type |
Description |
Best Use |
| Single Arm |
Straight arm with mounting holes |
Linear linkages, simple levers, RC car steering |
| Double Arm |
Two opposing arms |
Balanced loads, push-pull mechanisms |
| Cross (4-Point) |
Four arms at 90° angles |
Robot joints, multi-directional control |
| Round Disc |
Circular disc with multiple holes |
Wheels, gears, rotary platforms |
| Star (6-Point) |
Six arms radiating from center |
Complex linkages, hexapod legs |
🛡️ Warranty & Support
✅ Genuine or high-quality compatible SG90 micro servo
✅ 180° rotation range with accurate positioning
✅ 1.8kg·cm torque @ 4.8V for lightweight applications
✅ Standard 3-wire interface (brown-red-orange)
✅ Complete accessory kit (4 horns, screws, mounting hardware)
✅ Compatible with Arduino Servo library
✅ Works with 3.3V and 5V logic levels
✅ Compact 22.2×11.8x31mm form factor
✅ Lightweight 9g design
✅ Pre-tested before shipping
✅ Technical documentation and example code
✅ Fast replacement for defective units
⚠️ Important: Always use external 5V power supply (NOT Arduino 5V pin) to avoid brownouts and damage. Connect common ground between servo and microcontroller. Plastic gears are suitable for light loads only – avoid excessive force. Normal operating current 170mA, stall current up to 650mA – ensure adequate power supply capacity.