Blogs
MG90S Mini Digital 180° Servo
MG90S Mini Digital 180° Servo
Metal Gear, 2.2kg·cm Torque for RC and Robotics
Introduction
The MG90S is a compact digital servo featuring metal gears that provides 2.2kg·cm of torque at 4.8V. With 180° rotation and precise digital control, it’s ideal for RC models, robotics, and automation projects requiring reliable angular positioning.
Key Features
Metal Gears
Durable all-metal gear train
High Torque
2.2kg·cm (4.8V) / 2.4kg·cm (6V)
Digital Control
Faster response than analog servos
Compact Size
22.8×12.2×28.5mm (W×H×D)
Technical Specifications
Operating Voltage | 4.8V – 6.0V DC |
---|---|
Rotation Angle | 180° (±90° from center) |
Stall Torque | 2.2kg·cm (4.8V), 2.4kg·cm (6V) |
Operating Speed | 0.10s/60° (4.8V), 0.08s/60° (6V) |
Gear Type | Full metal gears |
Control Signal | PWM (50Hz, 900-2100μs pulse) |
Current Draw | 100-250mA (operating), 5mA (idle) |
Weight | 13.4g |
Pin Configuration

Wire Color | Function | Arduino Connection |
---|---|---|
Brown | Ground | GND |
Red | Power (4.8V-6V) | 5V (with current limit) |
Orange/Yellow | Signal | D9 (PWM pin) |
Note: For multiple servos, use a separate power supply with common ground
Wiring with Arduino
1 2 3 4 5 6 7 8 9 |
// Basic Connections: // Brown → GND // Red → 5V (for testing) or external 5V-6V supply // Orange → D9 (PWM pin) // For multiple servos: // - Use external power supply (5V-6V) // - Connect all grounds together // - Use servo library with different PWM pins |
Important: Arduino’s 5V regulator may overheat with multiple servos – use external power for more than 1-2 servos
Basic Control Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// MG90S Servo Basic Example #include <Servo.h> Servo myservo; const int servoPin = 9; void setup() { myservo.attach(servoPin); } void loop() { // Move to 0° position myservo.write(0); delay(1000); // Move to 90° position (center) myservo.write(90); delay(1000); // Move to 180° position myservo.write(180); delay(1000); } |
Advanced Features
Precise Microsecond Control
1 2 3 4 5 6 |
// More precise control with microseconds void setAngle(int angle) { int pulseWidth = map(angle, 0, 180, 500, 2500); myservo.writeMicroseconds(pulseWidth); } // MG90S typically uses 900-2100μs range |
Smooth Movement
1 2 3 4 5 6 7 |
// Smooth transition between positions void smoothMove(int start, int end, int speed) { for (int pos = start; pos <= end; pos += 1) { myservo.write(pos); delay(speed); } } |
Multiple Servos
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Control multiple servos Servo servo1, servo2; void setup() { servo1.attach(9); servo2.attach(10); } void loop() { servo1.write(45); servo2.write(135); delay(1000); } |
External Power
1 2 3 4 5 |
// Proper external power wiring: // 1. Connect servo power to external supply (5V-6V) // 2. Connect Arduino GND to external supply GND // 3. Only connect signal wire to Arduino // 4. Add capacitor (100-1000μF) across power lines |
Troubleshooting
Servo Not Moving
- Check power supply (4.8V minimum)
- Verify all connections
- Ensure PWM signal is correct (900-2100μs)
Jittery Movement
- Add decoupling capacitor near servo
- Use stable power supply
- Check for mechanical binding
Overheating
- Reduce load on servo
- Avoid continuous stall condition
- Check for proper voltage (not exceeding 6V)