SG90 servo (Part 1)

Part 1

Many robotic applications feature servo-motors. Most from these servos are used as is, sweeping a +/- 90° angle from an idle position. To the cost of few mods and two SMD resistors, a standard servo can be converted to a continuous rotation mode. I will cover this mod later on.

What makes servos very popular is the easiness of wiring and driving. Each servo features a
ribbon cable with three wires:

  • Black or Brown: Ground
  • Red: Vcc (be careful and check servo specifications)
  • White or Orange: Signal

In this serie of posts, the SG90 will be used as an exemple, the justification of this choice being that it is small, light, cheap and available from many vendors


Here are its main specifications:

  • Weight: 9 g
  • Dimension: 22.2 x 11.8 x 31 mm
  • Stall torque: 1.8 daN·cm
  • Operating speed: 0.1 s/60 degree
  • Operating voltage: 5 V typical (3 V to 6 V in some cases)
  • Dead band width: 10 µs
  • Temperature range: 0 ºC – 55 ºC

Although some size specification exist, I encourage you to get the servos in hands before drawing the plans of their mainframe as the dimensions of the servos may vary.


Driving the servo is quite easy. It consists in periodically a positive pulse to the signal pin of the servo. The angle depends on the the pulse width:

  • 1.0 ms pulse width -> – 90 degrees
  • 1.5 ms pulse width -> 0 degree, center position
  • 2.0 ms pulse width -> + 90 degrees

Physically speaking, a servo is made of mechanical, electric and electronic components.

A small DC motor drives a 4 gears train which last wheel is bound to a potentiometer. This potentiometer sends the feed back position signal to the electronic board which compares this feedback signal to the input signal and drives the DC motor according to the difference between the two signals. The heart of the electronic section is the small versatile AA51880 chip from Agamem Microelectronics Inc. > AA51880 datasheet <

The amazing thing about this chip is that it can drive low current DC motor or higher DC motors with 2 or 4 additional transistors (BJT or MOSFET). Next picture illustrates the board as it is fitted to th SG-90 with two 0 Ohm jumper resistors on the footprints which may receive SMD sot-3 transistors on one side and two more plus their biasing resistors on the other side:



This introduction would not be complete without mentioning that Arduino IDE comes with a standard library which helps in building out of the box applications with servos.

Leave a Reply

You must be logged in to post a comment.