# Electronic components: Servo Motors

> Learn how a servo motor like the SG90 rotates to any angle within 180 degrees, controlled by the pulse width on its signal wire, then driven from Arduino.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-03-18 | Topics: [Arduino](https://flaviocopes.com/tags/electronics/) | Canonical: https://flaviocopes.com/electronics-components-servo-motors/

A servo motor is a motor that can programmed to rotate to a position spanning over 180 degrees.

![Diagram showing servo motor rotation range from 0 to 180 degrees with curved arrows indicating the sweep motion](https://flaviocopes.com/images/electronics-components-servo-motors/Immagine_PNG-35E7F0FE7464-1.png)

It can be used for many useful applications that involve movement. They come in many different sizes.

Common ones for what we do (Arduino, battery powered applications) are called _micro servo_ or _RC servo_, like the SG90:

![Blue SG90 micro servo motor with white horn attached and colored wires on a wooden surface](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3567.jpg)

and the MG90S:

![Close-up of black MG90S TowerPro micro servo showing the pink and black product label](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3562.jpg)

Those 2 I mentioned work in the same way.

You can see a bunch of MG90S mounted on a mechanical arm here:

![Black robotic arm assembly with multiple MG90S servos mounted on base with Arduino board and colorful wires](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3566.jpg)

![Close-up view of robotic arm showing multiple MG90S servos, Arduino board, and detailed wiring connections](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3564.jpg)

A servo will likely come with several different horns you can attach to it, like these 3 ones I got:

![Blue SG90 servo with three white plastic horn attachments and mounting screws laid out on wooden surface](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3561.jpg)

You can choose the one to use depending on the thing you need to do with it:

![Blue SG90 servo with white cross-shaped horn attached and screwdriver nearby for assembly demonstration](https://flaviocopes.com/images/electronics-components-servo-motors/IMG_3568.jpg)

We have 3 wires coming out of their box: the brown cable is negative (0V), red is positive (5V), and the orange wire is the signal.

A servo motor is controlled by sending an electrical pulse on the signal wire.

The pulse width will determine the rotation of the motor.

In particular:

- 1ms pulse will make the servo rotate to 0°
- 1.5ms pulse will make the servo rotate to 90°
- 2ms pulse will make the servo rotate to 180°

![Diagram showing relationship between pulse width and servo position: 1ms for 0°, 1.5ms for 90°, 2ms for 180°](https://flaviocopes.com/images/electronics-components-servo-motors/Immagine_PNG-3F082F65147B-1.png)

All values in between 1ms and 2ms will cause a rotation relative to that value.

As we'll see in the projects, using Arduino we will us a library that abstracts this low level signal pulse for us, so we can simply say which angle from 0° to 180° we want it to rotate to.
