SG90 vs SG92R vs MG90S: Which Micro Servo Should You Buy?

The SG90, SG92R and MG90S look almost identical and fit the same kinds of projects. What really separates them is the gear material, the rotation option and how much abuse the project will give them. This guide compares the three, explains 90, 180 and 360 degree versions, and covers powering servos properly so your board does not reset.

In this guide
  1. The quick answer
  2. SG90 vs SG92R vs MG90S compared
  3. Plastic, reinforced or metal gears
  4. 90, 180 or 360 degrees
  5. Powering servos properly
  6. Example code for each version
  7. Running several servos
  8. Troubleshooting
  9. Frequently asked questions

The quick answer

Your project Choose
Learning, classroom kits, light pointers and flags SG90, 180°
Small robot arm, gripper or walking robot joint SG92R or MG90S
RC steering, or anything that takes knocks and crashes MG90S, 180°
Latch, flap or lever that only needs a short arc SG90 90° or SG92R
Small drive wheels or a turntable SG90 360° or MG90S 360°
Cheapest way to try a servo SG90

SG90 vs SG92R vs MG90S compared

These are the typical figures from our product records. Treat torque and speed as rough guides, because they vary between units and with supply voltage.

SG90 SG92R MG90S
Gears Plastic Carbon-fibre reinforced nylon Metal
Versions 90°, 180° and 360° 90° positional only 180° and 360°
Typical stall torque About 1.6 kgf·cm at 4.8V, 1.8 at 6V About 2.2 to 2.5 kgf·cm at 4.8V About 1.8 kgf·cm at 6V
Weight About 9g About 9.2g About 12g
Supply 4.8 to 6V 4.8 to 6V 4.8 to 6V
Wires Brown GND, red power, orange signal, on a 3-pin servo plug
Price from $4.49 $4.99 $5.49
SG90 micro servo wiring: brown to negative supply, red to positive supply and orange to the PWM signal
All three servos use the same wire colours: brown ground, red power and orange signal.

Metal gears are about toughness, not a big jump in torque. On our figures, the MG90S and SG92R sit in the same torque range as the SG90. What the metal gears give you is resistance to stripped teeth when a linkage is jammed, knocked or crashed.

Plastic, reinforced or metal gears

A servo's gears take the full shock whenever the output arm is forced, for example when a robot falls over, an RC car hits a kerb or a gripper closes on something solid.

  • SG90, plastic: light and cheap, and perfectly fine for pointers, flags, light linkages and learning. The teeth can strip if the arm is forced or the servo stalls against a hard stop for long.
  • SG92R, reinforced nylon: the same small body as the SG90, with tougher gears and more holding torque. A good step up for small robot joints and grippers where plastic gears wear out.
  • MG90S, metal: the most tolerant of shock loads. It is slightly heavier. Choose it for RC steering, bumpy mobile robots or any mechanism that may be forced by hand.

All three have a small DC motor inside, so none of them is suited to lifting heavy loads. If your arm or mechanism struggles, shorten the lever, add a counterbalance or move up to a larger servo class.

90, 180 or 360 degrees

Version What the signal controls Holds a position? Good for
90° Angle, across a shorter arc Yes Latches, flaps, short levers
180° Angle, across the full sweep Yes Arms, grippers, steering, pan and tilt
360° continuous Speed and direction No Drive wheels, turntables, winding

A 360° servo is not a 180° servo with more range. It loses its position feedback, so write(90) means stop rather than the middle, values towards 0 turn one way and values towards 180 turn the other. It cannot return to a set angle.

On our 90° SG90 and the SG92R, the useful travel is usually reached with write(90) to write(180). Test the end points before fitting the horn to a mechanism.

Powering servos properly

A servo draws little current while idle but a lot when it starts, moves under load or stalls. Our SG90 records list about 100 to 250mA while running and up to about 700mA when stalled. That surge is the most common reason an Arduino or ESP32 resets or behaves strangely as soon as a servo moves.

  1. One unloaded servo: you can test it from the board's 5V pin while the board is on USB.
  2. A loaded servo, or more than one: power the servos from a separate regulated 5V to 6V supply, such as a suitable 5V adapter or a 4 x AA pack.
  3. Always share the ground. Connect the servo supply negative to the Arduino or ESP32 GND. Without a common ground, the signal has no reference and the servo twitches or ignores it.
  4. Add a capacitor. An electrolytic capacitor of a few hundred microfarads across the servo supply, close to the servos, helps absorb start-up surges.
  5. Never power servos from the ESP32 3.3V pin. The servos need 4.8 to 6V. A 3.3V signal is fine, but the power must come from a 5V source.

Do not push a servo arm by hand while it is powered. The servo fights back at full current, and forcing it is the quickest way to strip gears or overheat the motor. Unplug it first, or send it a new position in code.

Example code for each version

180° sweep on Arduino

#include <Servo.h>

Servo myServo;

void setup() {
  myServo.attach(9);   // orange signal wire to D9
}

void loop() {
  for (int angle = 0; angle <= 180; angle += 2) {
    myServo.write(angle);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle -= 2) {
    myServo.write(angle);
    delay(15);
  }
}

The Arduino Servo library uses default pulse limits of 544 to 2400 microseconds. If your servo does not quite reach its full travel, try myServo.attach(9, 500, 2500);, but stop at once if it buzzes against an end stop.

360° continuous rotation

myServo.write(90);    // stop (adjust slightly if it creeps)
delay(1000);
myServo.write(60);    // turn one way at moderate speed
delay(2000);
myServo.write(120);   // turn the other way
delay(2000);

If the servo creeps at write(90), try 88 to 92 until it stops, then use that value as your stop point.

On an ESP32

The standard Arduino Servo library does not support ESP32 boards. Install the ESP32Servo library, include <ESP32Servo.h> and use the same attach() and write() calls. The servo still needs 5V power, and a 3.3V signal from the ESP32 is fine. Our MG90S wiring guide walks through both boards step by step.

Running several servos

  • Each servo needs its own signal pin if it moves independently.
  • Breakout boards keep wiring tidy. The Nano IO expansion shield gives each pin a ground, power and signal header in servo order, and has a separate supply input for servo power.
  • A Y cable shares one signal. A servo Y cable drives two servos with the same command. It cannot reverse one or control them separately.
  • Add up the peak current. Several servos starting together can easily exceed 1A. Size the supply for that, not for the idle current.
  • On an Uno, the Servo library disables PWM on pins 9 and 10 while it is in use, so you cannot use analogWrite() on those pins at the same time.

Troubleshooting

Symptom Likely cause and fix
Board resets or USB disconnects when the servo moves Power surge. Use a separate servo supply with a shared ground, and add a capacitor.
Servo twitches or jitters at rest Missing common ground, a noisy supply or long signal wires. Check GND first.
Servo does nothing Plug reversed, signal on the wrong pin, or no power. Brown goes to ground.
Buzzes and gets warm at one end It is pushing against its end stop. Narrow the range in code.
Only moves about half as far as expected You have a 90° version, or the pulse range is narrow. Check the version, then try attach(pin, 500, 2500).
360° servo will not stop The stop point differs slightly from 90. Adjust in small steps.
Grinding noise, arm slips under load Stripped gear teeth. Replace the servo, and use an SG92R or MG90S for that job.
Nothing works on an ESP32 Use the ESP32Servo library and power the servo from 5V, not 3.3V.

Frequently asked questions

Is the MG90S a drop-in replacement for the SG90?

For most projects, yes. It uses the same 3-wire plug and control signal and is a very similar size. It is a little heavier, and its mounting dimensions differ slightly, so check the product dimensions if it has to fit a tight printed bracket.

Can I power a servo from the Arduino 5V pin?

One small servo with no load is fine for testing on USB. For a loaded servo or several servos, use a separate 5V to 6V supply and join the grounds.

Can a 360° servo go to a specific angle?

No. A continuous rotation servo only controls speed and direction. For a set angle, choose a 90° or 180° version.

Can I turn a 180° servo into a 360° servo?

It is possible by opening the servo and removing the end stop and feedback, but it is fiddly and permanent. Buying the 360° version is simpler and far more reliable.

Why is my servo only moving 90 degrees?

Either it is a 90° version, or your code only sends a narrow range. Check which version you bought, then test write(0) to write(180) with no horn fitted.

Do servos work with 3.3V boards like the ESP32?

Yes, for the signal. Power the servo from 5V, share the ground, and use the ESP32Servo library.

Reference material checked: the Arduino Servo library documentation for attach() defaults and continuous rotation behaviour, and the ESP32Servo library documentation. Torque, weight, supply, current and rotation figures are the typical values in NZN's product records for each servo.

Arduino Servo library reference | ESP32Servo library

Pick the gears for the job, then power it properly

Choose SG90 for light work, SG92R for small joints and MG90S for anything that gets knocked about. Then give the servos their own 5V supply with a shared ground.

Browse servo motors

Practical help from New Zealand

Still stuck? Send us a photo.

Tell us what you’re building and what the circuit is doing. Our small NZ team knows these parts and can help you spot a wiring problem or choose what you need next.

Ask NZN for help Browse more guides