Pubblicato 2026-04-03
Controllare aservomotore con una scheda Arduino è uno dei compiti più comuni e utili nei progetti di elettronica. Questa guida fornisce un metodo chiaro, pratico e verificato per connettere e programmare aservoutilizzando l'Arduino standardservobiblioteca. Imparerai il cablaggio esatto, il codice di funzionamento e come risolvere i problemi tipici, il tutto basandosi su scenari reali e documentazione ufficiale.
La maggior parte dei servomotori per hobbisti (ad esempio micro servi da 9 g o servi di dimensioni standard come SG90, MG90S o MG995) funzionano con qualsiasi scheda Arduino (Uno, Nano, Mega, ecc.). Per questa guida assumiamo:
Una scheda Arduino (Uno è l'esempio più comune)
Un servo standard da 5 V (intervallo di coppia comune: da 1,8 kg/cm a 13 kg/cm)
Cavi jumper (maschio-femmina per collegamento diretto)
Un alimentatore separato da 5 V-6 V (opzionale ma consigliato per i servi più grandi – spiegato nella Sezione 4)
Non sono richiesti nomi di marchi specifici– le istruzioni si applicano a tutti i servi analogici standard che funzionano con un segnale PWM a 50 Hz (larghezza dell'impulso da 500 µs a 2500 µs).
Seguire esattamente questo cablaggio per evitare danni o comportamenti irregolari.
Regola critica:Non alimentare mai un servo direttamente dal pin 5V di Arduino se il servo assorbe più di 200 mA durante il funzionamento. Per la maggior parte dei servi da 9 g, l'Arduino 5 V diretto è sicuro per i test. Per i servi più grandi (ad esempio MG995), utilizzare un alimentatore esterno da 5 V-6 V e collegare la terra del servo alla terra di Arduino (terra comune).
La libreria Arduino Servo è preinstallata nell'IDE ufficiale. Questo codice sposta il servo da 0° a 180° e indietro, ripetutamente.
#includereServomioServo; // crea oggetto servo int servoPin = 9; // pin del segnale collegato al servo void setup() { myServo.attach(servoPin); // collega il servo al pin 9 } void loop() { myServo.write(0); // sposta a 0 gradi di ritardo(1000); // aspetta 1 secondo myServo.write(90); // sposta a 90 gradi (centro) ritardo(1000); mioServo.write(180); // passa al ritardo di 180 gradi (1000); }
Per controllare il servo ad un angolo specifico(ad esempio, 45°), utilizzare semplicementemioServo.write(45);. L'intervallo valido è compreso tra 0 e 180.
Causa:Potenza insufficiente. Un servo standard da 9 g assorbe 200–300 mA durante lo spostamento; un servo grande assorbe fino a 1A. Il regolatore 5V integrato di Arduino (max ~500mA) non è in grado di gestirlo.
Aggiustare:Utilizzare un alimentatore esterno da 5 V (ad esempio, 4 batterie AA o un adattatore da 5 V 2 A). Collegare il positivo dell'alimentazione al filo rosso del servo, la terra dell'alimentazione alla GND di Arduino e la terra del servo alla stessa GND.
Causa:Pin del segnale non collegato correttamente o numero pin errato.
![]()
Aggiustare:VerificalomyServo.attach(pin)utilizza un pin compatibile con PWM. Su Arduino Uno, i pin 3,5,6,9,10,11 supportano PWM. Si consigliano i pin 9 e 10.
Causa:Il servo è forzato contro un arresto meccanico oppure l'intervallo dell'ampiezza dell'impulso non è corretto per quel modello di servo.
Aggiustare:Regolare l'ampiezza dell'impulso minima/massima utilizzandomyServo.attach(pin, minimo, massimo)dove il valore predefinito minimo è 544μs (0°) e massimo è 2400μs (180°). Alcuni servi richiedono 500–2500 µs. Controlla la scheda tecnica del tuo servo.
Per un controllo preciso della velocità, è possibile generare manualmente il segnale PWM. Il servo si aspetta un segnale di 50Hz (periodo di 20ms). Un impulso da 1 ms = 0°, 1,5 ms = 90°, 2 ms = 180°. Questo codice scorre senza intoppi:
int servoPin = 9; int larghezza impulso = 1500; // microsecondi, inizia a 90° void setup() { pinMode(servoPin, OUTPUT); } void loop() { // scansione da 1000μs a 2000μs (da 0° a 180°) for(pulseWidth = 1000; PulseWidth = 1000; PulseWidth -= 10) { digitalWrite(servoPin, HIGH); ritardoMicrosecondi(larghezza impulso); digitalWrite(Pinservo, BASSO); ritardo(20 - larghezza impulso/1000); } ritardo(1000); }
1. Controllo della potenza:Con solo il servo collegato (nessun codice caricato), il servo dovrebbe rimanere fermo e non surriscaldarsi.
2. Prova del segnale:Carica il codice standard dalla Sezione 3. Osserva se il servo ruota 0° → 90° → 180° → ripeti.
3. Prova di carico:Tenere delicatamente la squadretta del servo mentre si muove. Dovrebbe produrre una coppia notevole ma non stallo. Se si blocca, aumentare la corrente di alimentazione.
Cablaggio correttonon è negoziabile: segnale al pin PWM, alimentazione ad un alimentatore adeguato, terra comune.
Utilizzare sempre la libreria Servoper semplicità e affidabilità. Passare al controllo manuale degli impulsi solo quando è necessaria una rampa di velocità.
Non superare mai la tensione nominale del servo(tipicamente 5 V–6 V). Una tensione più elevata distruggerà il circuito di controllo interno.
Proteggi il tuo Arduinonon assorbendo mai più di 200 mA dal pin 5 V per un servo.
1. Costruisci il circuito di basesu una breadboard utilizzando un servo 9g e un Arduino Uno. Utilizzare il codice nella Sezione 3 per verificare il movimento.
2. Aggiungi un potenziometroper controllare l'angolo: leggi il valore analogico da un potenziometro (pin A0), mappalo su 0–180, quindimyServo.write(mappedValue).
3. Incorporalo nel tuo progetto– Le applicazioni comuni includono bracci robotici, sospensioni cardaniche per fotocamere, meccanismi di sterzo e apriporta automatici.
Seguendo questa guida, ora disponi di un metodo verificato e ripetibile per controllare qualsiasi servo standard con un Arduino. Gli stessi principi si applicano a tutte le schede compatibili con Arduino. Fare sempre riferimento alla scheda tecnica del servo per i limiti esatti di larghezza dell'impulso e i requisiti attuali.
Tempo di aggiornamento: 03-04-2026
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.