How an S90 Micro Servo Motor works

Author: Aus Electronics Direct   Date Posted:1 May 2021 

s90 Micro Servo description, technical specs and how to use with Arduino.

TA0233 – SG90 Micro Servo Motor with Servo

The SG90 is a small servo motor which is commonly used for radio-controlled models and small robotics projects. It includes a selection of horns. The TA0233 SG90 Micro Servo comes with a selection of horns which attaches to splines on the rotating output shaft of the servo motor. It has a nominal operating voltage of 4.8V DC, however it can be powered up to 6.6V DC for short term use.

How an SG90 Micro Servo motor works

The on-board electronics receive a pulsed signal which is decoded by the servo electronics to determine the requested position of the output shaft. This position is checked against the position reported by a potentiometer which is linked to the output shaft of the gearbox, and the electronics determine the correct polarity voltage to supply the motor to move the output shaft to the requested position.

The pulsed signal is based on a 20ms interval with the duration   of the high pulses at the start of each interval used to determine the position. Typically, pulses with a duration of up to 1ms will be interpreted as its minimum position (90 degrees clockwise), pulses of 1.5ms duration will be interpreted as centre position (0 degrees) and pulses of 2ms or longer will be interpreted as its maximum position (90 degrees clockwise).

The drive train of gearbox begins with the motor which converts the main electrical power to rotational movement. The gear train reduces the motor speed through a set of pinion gears consisting of a 9 tooth drive gear (red colour gear) at the motor which drives a 47:10 (green), 38:8 (blue), 32:7 (purple) and finally to a 23 tooth final output splined shaft (yellow) gear. This results in a total speed reduction of 1:55.49 with the rotation of the output shaft equal to 55.49 rotations of the motor; with an equivalent increase of the motors torque.

Below are S90 Servo Wiring Connections:

Below is a picture of an S90 wiring connection to an Arduino Uno Development Board.


Sample sketch for an S90 micro servo.

The sketch below rotates the servo motor through 0 degrees, 90 degrees and 180 degree positions at 2 seconds intervals.

#include <servo.h>

Servo myServo;

int pMyservo = 2;

int iServoPos = 0;

void setup () {

   myServo.atttach ( pMyServo ) ;


Void loop () {

   myServo.write ( 0 ) ;

   delay (2000 ) ;

   myServo.write ( 90 ) ;

   delay ( 2000) ;

   myServo.write ( 180 ) ;

   delay ( 2000 ) ;



Below are an s90 technical drawing with dimensions:



Leave a comment

Comments have to be approved before showing up