1. Introduction
The TZT SG90 Micro Servo is a compact and lightweight servo motor designed for various applications, including remote-controlled models (helicopters, airplanes, cars, boats) and DIY electronics projects, especially with platforms like Arduino. It offers precise control over its rotation angle, making it ideal for tasks requiring controlled movement.
2. Specifications
| Feature | Specification |
|---|---|
| Product Module | SG90 |
| Product Weight | 9g |
| Working Torque | 1.2-1.4 kg/cm (4.8V) |
| No-load Speed | 0.12 seconds / 60 degrees (4.8V) |
| Operating Temperature | -30 to +60 degrees Celsius |
| Dead Zone Setting | 7 microseconds |
| Supply Voltage | 4.8V-6V |
| Plug Type | JR, FUTABA Universal |
| Rotation Angle | 180° (Note: Some variants may offer 90° or 360° rotation) |
| Steering Gear Type | Simulated Steering Gear |
| Structural Material | Plastic Gear |
| Package | SMD |
Product Dimensions

Figure 1: Diagram showing the dimensions of the SG90 Micro Servo.
3. What's in the Box
Your TZT SG90 Micro Servo package typically includes:
- 1 x SG90 Micro Servo Motor
- Various Servo Arms (rocker arms)
- Mounting Screws

Figure 2: The SG90 Micro Servo with its various servo arms and mounting screws.
4. Setup and Installation
4.1. Pinout Description
The SG90 Micro Servo has three wires for connection:
- Orange Wire: Signal (PWM input)
- Red Wire: VCC (Power Supply, typically 5V)
- Brown Wire: GND (Ground)
4.2. Attaching Servo Arms
Select the appropriate servo arm (also known as a rocker arm or horn) for your application. Securely attach it to the servo's output shaft using the smallest screw provided.

Figure 3: Close-up view of the SG90 Micro Servo with a servo arm attached.
4.3. Basic Wiring with Arduino
To connect the SG90 servo to an Arduino board, follow these steps:
- Connect the Brown wire (GND) of the servo to the GND pin on your Arduino.
- Connect the Red wire (VCC) of the servo to the 5V pin on your Arduino.
- Connect the Orange wire (Signal) of the servo to a PWM-capable digital pin on your Arduino (e.g., Pin 9).
For advanced control using buttons, you can connect two tactile switches to digital pins 2 and 3, configured as input pull-ups. One side of each button should be connected to GND, and the other side to the respective digital pin.

Figure 4: Detailed wiring diagram showing the SG90 Micro Servo connected to an Arduino board with two tactile switches for control.
4.4. Visual Guide: Wiring and Programming a Servo
Video 1: A step-by-step guide demonstrating how to wire and program an SG90 Micro Servo using an Arduino board and tactile switches.
5. Operating Instructions
The SG90 Micro Servo is controlled using Pulse Width Modulation (PWM) signals. The width of the pulse determines the angle of the servo arm.
5.1. Pulse Width to Angle Mapping
The following table illustrates the typical relationship between pulse width and servo angle for the SG90:
| Input Signal Pulse Width (Cycle 20ms) | Steering Gear Output Shaft Angle |
|---|---|
| 0.5ms | -90° |
| 1ms | -45° |
| 1.5ms | 0° (Center) |
| 2ms | 45° |
| 2.5ms | 90° |

Figure 5: Diagram illustrating the relationship between input signal pulse width and the corresponding output shaft angle of the SG90 servo.
5.2. Programming with Arduino
To control the servo with Arduino, you typically use the built-in Servo library. The library simplifies the process of generating the correct PWM signals.
A basic Arduino sketch involves:
- Including the
Servo.hlibrary. - Creating a Servo object (e.g.,
myservo). - Attaching the servo object to a digital pin (e.g.,
myservo.attach(9);). - Using
myservo.write(angle);to set the servo to a specific angle (0-180 degrees).
When using control buttons, the Arduino code reads the state of the digital pins connected to the buttons. If a button is pressed (digitalRead returns LOW), the servo's target position is adjusted (e.g., incremented or decremented), and the new position is written to the servo.
6. Troubleshooting
- Servo not moving: Double-check all wiring connections, especially power (VCC and GND) and signal lines. Ensure the Arduino code is correctly uploaded and the servo library is included.
- Erratic movement: This can be caused by insufficient power. While Arduino's 5V pin can power a single micro servo, multiple servos or larger servos may require an external power supply to avoid drawing too much current from the Arduino, which can lead to unstable behavior.
- Incorrect angle: Verify the angle values in your code (0-180 degrees) and ensure they correspond to the desired physical movement.
- Servo buzzing: A slight buzzing is normal for servos as they hold their position. Excessive buzzing or vibration might indicate the servo is struggling to reach or maintain its commanded position, possibly due to mechanical obstruction or insufficient torque for the load.
7. User Tips
- Power Considerations: For projects with multiple servos or higher torque requirements, consider using an external power supply (e.g., a 5V battery pack) for the servos, connecting only the signal and ground wires to the Arduino. This prevents overloading the Arduino's voltage regulator.
- Continuous Rotation: While the standard SG90 is a positional servo (180°), some variants are modified for continuous rotation. Ensure you have the correct type for your project.
- Code Delays: When changing servo positions, especially incrementally, adding small delays (e.g., 10-20 milliseconds) between position updates can ensure smoother movement and prevent jerky behavior.
8. Maintenance
- Keep Clean: Avoid exposing the servo to dust, dirt, or moisture, which can interfere with its internal gears and electronics.
- Avoid Overloading: Do not force the servo arm beyond its mechanical limits or apply excessive load, as this can damage the internal gears or motor.
- Proper Storage: Store the servo in a dry, cool environment when not in use.
9. Support
For further assistance or inquiries, please refer to the seller's support channels or the product page where you purchased this item.