小编
Published2025-10-15
Understanding the SG90 Servo Motor
The SG90 servo motor is a small yet powerful component widely used in robotics, hobby projects, and automation. Despite its size, the SG90 packs a punch in terms of performance and versatility. Its lightweight design and precision make it an ideal choice for projects that require fine control over movement, such as robotic arms, camera sliders, and pan-tilt camera setups.

Before diving into the specifics of the SG90, let’s first understand what a servo motor is. In basic terms, a servo motor is a type of motor that is designed to provide precise control over angular position, velocity, and acceleration. It operates with feedback mechanisms, often involving a potentiometer, to ensure accurate positioning. Servo motors are commonly used in robotics, automation, and aerospace applications where precise movement is critical.
Servo motors differ from standard DC motors because they can be controlled to rotate only within a specific range, usually between 0 and 180 degrees. This makes them ideal for applications that require controlled movement, such as steering mechanisms or robotic joints.
The SG90 is a type of micro servo motor that is lightweight and compact, making it perfect for smaller projects. It’s a 9-gram servo motor with a range of motion of 180 degrees and operates on a voltage range between 4.8V and 6V. The SG90 is a pulse-width modulation (PWM)-controlled servo, meaning it can rotate to a specific position based on the width of an electrical pulse sent to it.
What makes the SG90 stand out in the world of hobbyists is its ease of use and the wide availability of tutorials and libraries, particularly for Arduino users. This has made it a go-to choice for those just starting to experiment with servo motors.
Key Specifications of the SG90
Operating Voltage: 4.8V to 6V
Speed: 0.1 seconds per 60 degrees at 5V
Rotation Angle: 180 degrees
Control Signal: Pulse-width modulation (PWM)
These specifications make the SG90 ideal for small-scale projects where compact size, reasonable torque, and precise control are essential. Whether you're building a simple robotic arm, a pan-tilt camera system, or even a mechanical flower, the SG90 can get the job done efficiently.
The SG90 servo motor uses a signal input in the form of a PWM (pulse-width modulation) signal to control its rotation. PWM is a technique in which the width of the pulse determines the angle of the motor. For example:
A 1 ms pulse will move the servo to 0 degrees.
A 1.5 ms pulse will move the servo to 90 degrees (center position).
A 2 ms pulse will move the servo to 180 degrees.
The servo motor receives these signals continuously, and based on the pulse width, it rotates to the corresponding angle. This makes the SG90 perfect for precise applications like steering mechanisms in robots or adjusting the position of a camera or sensor.
Benefits of the SG90 Servo Motor
Affordability: The SG90 is one of the most affordable servo motors available, making it a great choice for hobbyists, students, and those on a budget.
Compact Design: With a small footprint, the SG90 fits into tight spaces, which is a huge advantage for projects with limited space.
Ease of Use: The motor is easy to integrate with Arduino boards and other microcontrollers, with libraries and example code readily available for beginners.
Wide Range of Applications: Whether you’re building a simple robot, a mechanical arm, or a model airplane, the SG90 is versatile enough to handle a variety of tasks.
Programming the SG90 Servo Motor
Now that you have a solid understanding of what the SG90 servo motor is and how it works, it’s time to learn how to program it. The most common platform for programming the SG90 is Arduino, a beginner-friendly open-source electronics platform. If you’re new to Arduino, don’t worry; this guide will walk you through the basics of setting up and controlling the SG90 using simple code.
Arduino Board (e.g., Arduino Uno)
Breadboard (optional, but helpful)
External Power Supply (optional, for more stable operation)
Wiring the SG90 to an Arduino
To control the SG90 servo motor using an Arduino, you'll need to wire it correctly. The SG90 has three pins:
VCC (Power) - Connect this pin to the 5V pin on the Arduino.
GND (Ground) - Connect this pin to the GND pin on the Arduino.
Signal - Connect this pin to a PWM-enabled pin on the Arduino (e.g., pin 9).
Once the wiring is complete, your setup should look like this:
SG90 Signal → Arduino Pin 9 (or any PWM pin)
The next step is to write some basic code to control the servo. For this, we’ll use the Servo library, which is included with the Arduino IDE and simplifies the process of controlling servos.
Here’s a simple example to rotate the SG90 servo between 0 and 180 degrees:
Servo myServo; // Create a Servo object
myServo.attach(9); // Attach the servo to pin 9
myServo.write(0); // Move the servo to 0 degrees
delay(1000); // Wait for 1 second
myServo.write(180); // Move the servo to 180 degrees
delay(1000); // Wait for 1 second
The Servo.h library provides the necessary functions to control a servo.
The myServo.attach(9) function tells the Arduino that you’re using pin 9 to control the servo.
The myServo.write(angle) function moves the servo to the specified angle. In this case, the servo moves to 0 degrees, waits for 1 second, then moves to 180 degrees and waits again.
This simple code causes the SG90 servo motor to oscillate between 0 and 180 degrees every second. You can modify the delay() time to control how quickly the servo moves, or even use other techniques like incremental movements for smoother control.
Advanced Servo Motor Control
Once you're comfortable with basic control, you can explore more advanced control techniques. For instance, using variable speed movements, or controlling multiple servos at once. You can even use sensor input (such as a potentiometer or an ultrasonic sensor) to control the position of the servo based on external data.
For example, let’s say you want the servo to move based on a potentiometer input. The code would look something like this:
int potValue; // Variable to store potentiometer value
int angle; // Variable to store angle for servo
myServo.attach(9); // Attach the servo to pin 9
potValue = analogRead(A0); // Read the potentiometer value (0-1023)
angle = map(potValue, 0, 1023, 0, 180); // Map it to a 0-180 degree range
myServo.write(angle); // Set the servo to the mapped angle
delay(15); // Wait for the servo to reach the position
In this example, the servo’s position is controlled by the value read from a potentiometer connected to analog pin A0. The map() function is used to convert the potentiometer's 10-bit value (ranging from 0 to 1023) into a corresponding angle (0 to 180 degrees).
With this basic understanding of SG90 servo motors and how to program them, you’re ready to take on more complex projects. Whether you’re building a simple robotic arm, a camera system, or something even more creative, the SG90 can be a valuable tool in your arsenal.
Established in 2005, Kpower has been dedicated to a professional compact motion unit manufacturer, headquartered in Dongguan, Guangdong Province, China.
Update:2025-10-15
Contact Kpower's product specialist to recommend suitable motor or gearbox for your product.