Blog

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.

MG90S ServoKey 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

MG90S Pinout
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

// 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

// 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

// 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

// 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

// 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

// 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)