

The Adafruit Feedback Servo (Small) is a compact servo motor with built-in feedback capabilities, enabling precise control of position and speed. Unlike standard servos, this component provides real-time feedback on its position, making it ideal for applications requiring high accuracy and closed-loop control. It is particularly suited for robotics, automation, and projects where precise movement and monitoring are essential.








The Adafruit Feedback Servo (Small) is designed to deliver reliable performance in a compact form factor. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 4.8V to 6.0V |
| Stall Torque | 1.6 kg·cm @ 4.8V, 1.8 kg·cm @ 6.0V |
| Operating Speed | 0.12 sec/60° @ 4.8V, 0.10 sec/60° @ 6.0V |
| Feedback Type | Analog (voltage proportional to position) |
| Servo Type | Standard PWM-controlled servo |
| Dimensions | 23.2mm x 11.5mm x 24mm |
| Weight | 9g |
The Adafruit Feedback Servo (Small) has a standard 3-pin connector for control and power, along with an additional wire for feedback. The pinout is as follows:
| Pin Name | Wire Color | Description |
|---|---|---|
| Signal | Orange | PWM control signal input |
| VCC | Red | Power supply (4.8V to 6.0V) |
| GND | Brown | Ground |
| Wire Name | Wire Color | Description |
|---|---|---|
| Feedback | Yellow | Analog voltage proportional to servo position |
Below is an example of how to control the Adafruit Feedback Servo (Small) with an Arduino UNO and read its feedback:
#include <Servo.h> // Include the Servo library
Servo myServo; // Create a Servo object
const int servoPin = 9; // Pin connected to the servo's signal wire
const int feedbackPin = A0; // Pin connected to the servo's feedback wire
void setup() {
myServo.attach(servoPin); // Attach the servo to the specified pin
pinMode(feedbackPin, INPUT); // Set the feedback pin as input
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
// Move the servo to 90 degrees
myServo.write(90); // Send a 90° position command
delay(1000); // Wait for the servo to reach the position
// Read the feedback voltage
int feedbackValue = analogRead(feedbackPin); // Read the analog value
float voltage = feedbackValue * (5.0 / 1023.0); // Convert to voltage
// Print the feedback voltage to the Serial Monitor
Serial.print("Feedback Voltage: ");
Serial.println(voltage);
delay(1000); // Wait before the next loop iteration
}
Servo library is used to generate the PWM signal for the servo.analogRead() function and converted to a voltage value.Servo Not Moving
Erratic Movement
Feedback Voltage Not Changing
Overheating
Q: Can I use this servo with a Raspberry Pi?
A: Yes, but you will need a PWM driver (e.g., Adafruit PCA9685) to generate the required PWM signal, as the Raspberry Pi's GPIO pins do not natively support hardware PWM for servos.
Q: What is the range of the feedback voltage?
A: The feedback voltage typically ranges from 0V to 5V, corresponding to the servo's position from 0° to 180°.
Q: Can I power the servo directly from the Arduino?
A: It is not recommended, as the servo may draw more current than the Arduino can supply. Use an external power source for the servo.
Q: How accurate is the feedback signal?
A: The feedback signal provides a proportional voltage, but its accuracy depends on the servo's internal potentiometer and the resolution of your microcontroller's ADC.
By following this documentation, you can effectively integrate the Adafruit Feedback Servo (Small) into your projects and achieve precise control and monitoring of its position.