Come controllare un servomotore con Arduino: una guida completa passo dopo passo_Servo_Industry Insights_Kpower
Casa > Approfondimenti sul settore >Servo
SUPPORTO TECNICO

Supporto al prodotto

Come controllare un servomotore con Arduino: una guida completa passo dopo passo

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.

01Cosa ti serve (configurazione comune)

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).

02Cablaggio: l'unico collegamento corretto

Seguire esattamente questo cablaggio per evitare danni o comportamenti irregolari.

Colore filo servo Funzione Connettiti al pin di Arduino
Marrone o Nero Terra (GND) GND
Rosso Alimentazione (VCC, 5 V) Pin 5V (o alimentazione esterna)
Arancione o Giallo Segnale (PWM) Pin digitale 9 (o qualsiasi pin con funzionalità PWM)

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).

03Il codice standard: copia ed esegui

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.

04Problemi comuni e soluzioni reali (basati su casi utente tipici)

Caso 1: Il servo trema o non si muove

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.

Caso 2: Il servo si muove solo in una direzione

Causa:Pin del segnale non collegato correttamente o numero pin errato.

how to control servo with arduino_how to control servo with arduino_how to control servo with arduino

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.

Caso 3: Il servo si surriscalda rapidamente

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.

05Controllo avanzato: movimento fluido (nessuna libreria richiesta)

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); }

06Verifica della configurazione: un piano di test rapido

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.

07Principi fondamentali da ricordare (ripetuti per enfatizzare)

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.

08Passaggi successivi attuabili

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

Alimentare il futuro

Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.

Invia una e-mail a Kpower
Invia richiesta
Messaggio WhatsApp
+86 0769 8399 3238
 
kpowerMap