Un servomotore è un piccolo motore il cui albero ruota fino a un angolo preciso e si ferma lì. Un normale motore in corrente continua gira di continuo; un servo va esattamente a 90 gradi quando gli chiedi 90 gradi e mantiene il carico in quella posizione. Bracci robotici, supporti pan-tilt per telecamere, serrature automatiche e alettoni dei modellini di aereo sono mossi dai servo.



Dentro un servo ci sono quattro parti: un piccolo motore in corrente continua, un riduttore che abbassa la velocità e aumenta la coppia, un potenziometro che misura la posizione dell'albero e un circuito di controllo che gestisce il tutto. Il circuito confronta di continuo l'angolo richiesto con quello letto dal potenziometro e fa girare il motore finché la differenza non è zero. Grazie a questo anello chiuso il servo mantiene la posizione anche sotto carico.
L'angolo viene inviato al servo con un segnale PWM: ogni 20 ms (50 Hz) arriva un impulso e la sua larghezza stabilisce l'angolo. Circa 1 ms corrisponde a 0°, 1,5 ms a 90° e 2 ms a 180°. La maggior parte dei servo accetta da 0,5 a 2,5 ms; i valori esatti variano un po' da modello a modello.
Scopri come un servo si porta a un angolo preciso, a cosa servono i suoi fili, come controllarlo con Arduino e perché spesso serve un alimentatore separato.
Che cos'è un servomotore, come funziona e come si collega ad Arduino? Confronto tra SG90, MG90S e MG996R, la libreria Servo, l'alimentazione e gli errori più comuni.
| Colore del filo | Funzione | Dove va su Arduino |
|---|---|---|
| Marrone / nero | GND (massa) | GND |
| Rosso | Alimentazione (+4,8–6 V) | 5V o un alimentatore esterno da 5–6 V |
| Arancione / giallo / bianco | Segnale (PWM) | Qualsiasi pin digitale (es. il 9) |

| Modello | Coppia (circa) | Ingranaggi | Adatto per |
|---|---|---|---|
| SG90 | 1,8 kg·cm | Plastica | Lavori leggeri, prime prove, pan-tilt |
| MG90S | 2,2 kg·cm | Metallo | Stessa misura dell'SG90, più robusto |
| MG996R | 9–11 kg·cm | Metallo | Bracci robotici, sportelli e meccanismi pesanti |
| FS90R | 1,5 kg·cm | Plastica | Rotazione continua: piccoli robot con ruote |


#include <Servo.h>
Servo servo; // servo nesnesi / servo object
const int POT_PIN = A0; // potansiyometre / potentiometer
void setup() {
servo.attach(9); // sinyal 9. pinde / signal on pin 9
}
void loop() {
int value = analogRead(POT_PIN); // 0–1023 oku / read 0–1023
int angle = map(value, 0, 1023, 0, 180); // açıya çevir / convert to angle
servo.write(angle); // servoyu döndür / move the servo
delay(15); // servo yetişsin / let the servo settle
}servo.write(angolo) accetta un angolo da 0 a 180. Per un controllo più fine usa servo.writeMicroseconds(1500) e indica direttamente la larghezza dell'impulso in microsecondi. Puoi vedere quali pin della tua scheda sono PWM e digitali nello strumento di piedinatura.
Per vedere cosa puoi costruire con i servo, dai un'occhiata ai progetti di robot e motori su BlueGrays. Se sei agli inizi con Arduino, leggi prima Che cos'è Arduino? e, per montare il circuito, Che cos'è una breadboard?.
I servo standard ruotano di circa 180°; alcuni modelli di 90° o 270°. I servo a rotazione continua girano senza limiti ma non mantengono un angolo.
Un solo SG90 con poco carico, per prova, sì. Per più servo, modelli potenti come l'MG996R o progetti sotto carico usa un alimentatore esterno da 5–6 V e collega le masse.
La libreria Servo supporta fino a 12 servo su Arduino Uno e 48 sulla Mega. Per molti servo sono più pratiche le schede driver I2C a 16 canali come la PCA9685.
Le cause più comuni sono alimentazione insufficiente, mancanza di massa comune e cavi del segnale lunghi. Usa un alimentatore robusto, aggiungi un condensatore all'alimentazione del servo e tieni i cavi corti.
Il servo, grazie alla retroazione, va a un angolo preciso e resta lì, di solito entro 180°. Il motore passo-passo ruota a passi senza limiti; per un posizionamento preciso serve un driver e non misura da solo la propria posizione.