Pubblicato 2026-04-08
Se il tuoservoil motore collegato ad un Arduino ha improvvisamente smesso di ruotare o non si è mai mosso, stai affrontando uno dei problemi più comuni nei progetti di elettronica. Questa guida fornisce un processo di diagnostica e riparazione passo passo basato su scenari reali. Seguendo i controlli strutturati di seguito, identificherai la causa esatta e ripristinerai la normalitàservofunzionamento in pochi minuti.
In oltre il 70% dei casi segnalati, aservosmette di ruotare perché non riceve abbastanza corrente elettrica.
Il fatto critico:Un tipico servo piccolo (ad esempio SG90 o simile) assorbe 200–500 mA quando è inattivo e fino a 1,5–2 A quando inizia la rotazione. Il pin da 5 V della scheda Arduino può fornire in sicurezza solo circa 400–500 mA in totale. Se alimenti il servo direttamente dal pin 5V di Arduino, la tensione diminuisce, il servo va in stallo o si ferma e Arduino potrebbe resettarsi.
Soluzione verificata:
Utilizzare un alimentatore esterno separato da 5 V CC con potenza nominale di almeno 2 A.
Collegare il filo rosso del servo (VCC) al terminale positivo dell'alimentazione esterna.
Collegare il filo marrone/nero (GND) del servo a entrambi i terminali negativi dell'alimentazione esternaEil GND (terra comune) di Arduino.
Mantieni il cavo del segnale arancione/giallo del servo collegato a un pin PWM di Arduino (ad esempio, pin 9).
Esempio di caso:Un hobbista ha costruito un braccio robotico con tre servi. Tutti i servi si sono fermati dopo due secondi di funzionamento. La causa era l’alimentazione di tutti i servi dal pin 5V di Arduino. Dopo essere passati a un'alimentazione esterna da 5 V/5 A, tutti i servi hanno ruotato correttamente.
Un filo di segnale scollegato o fuori posto non produce alcuna rotazione. Anche gli utenti esperti occasionalmente scambiano i cavi di segnale e di alimentazione.
Verifica passo passo:
1. Cavo del segnale (tipicamente arancione, giallo o bianco) → si collega a un pin digitale compatibile con PWM (ad esempio, 3,5,6,9,10,11 su Arduino Uno).
2. Cavo di alimentazione (rosso) → alimentazione esterna da 5 V (o Arduino 5 V solo per testare un piccolo servo senza carico).
3. Filo di terra (marrone o nero) → terra comune con Arduino.
Prova con uno schizzo minimo:Carica l'esempio di Sweep standard (File → Esempi → Servo → Sweep) e conferma i movimenti del servo. In tal caso, il cablaggio è corretto.
servo.attach()o Pin sbagliatoMolti utenti dimenticano di chiamareallegare()Inimpostare()oppure utilizzano un pin che non supporta PWM. Senzaallegare(), il servo non riceve alcun segnale di controllo e rimane fermo.
Corretta struttura minima del codice:
#includereServomioServo; void setup() { mioServo.attach(9); // Deve corrispondere al pin del segnale effettivo } void loop() { myServo.write(0); // 0 gradi – ritardo della posizione più a sinistra (1000); mioServo.write(90); // 90 gradi – ritardo centrale(1000); mioServo.write(180); // 180 gradi – ritardo della posizione più a destra(1000); }
Errore comune:UtilizzandoanalogWrite()Oscrittura digitale()sul pin del servo: questi non generano il segnale PWM a 50 Hz richiesto. Funziona solo la libreria Servo o la modulazione diretta dell'ampiezza dell'impulso.
Se il servo emette un ronzio ma non ruota, gli ingranaggi interni potrebbero essere danneggiati o un oggetto esterno blocca il clacson.
Procedura diagnostica:
Staccare la squadretta del servo (braccio in plastica). Quindi esegui il codice di prova. Se il servo ruota liberamente senza il quadrilatero, il problema è un inceppamento meccanico (il carico è troppo pesante o inceppato).
Se il servo continua a non ruotare dopo aver staccato il quadrilatero, è probabile che gli ingranaggi interni siano rotti. I servoingranaggi (soprattutto quelli in plastica) si strappano sotto una forza improvvisa o quando il clacson colpisce bruscamente.
Esempio di caso:Il servo di un utente ha smesso di ruotare dopo che il braccio robotico ha colpito il bordo del tavolo. La rimozione del clacson ha rivelato che l'albero del servo girava liberamente, ma il treno di ingranaggi era distrutto all'interno. La sostituzione del servo (o l'aggiornamento a ingranaggi in metallo) ha risolto il problema.
I guasti hardware sono meno comuni ma possibili. Testare sistematicamente:
1. Testare il servo su un pin diverso(ad esempio, spostarsi dal pin 9 al pin 10 e aggiornare il codice). Se funziona, il perno originale è danneggiato.
2. Prova un servo sicuramente funzionantesullo stesso pin e codice. Se il servo buono ruota, il servo originale è difettoso.
3. Testare il servo con un semplice tester per servo(un dispositivo dedicato o un generatore di segnale esterno a 50 Hz). Se non ruota nemmeno con un tester, la scheda di controllo interna del servo è guasta.
La libreria Arduino Servo utilizza timer hardware. Su Arduino Uno si disabilitaanalogWrite()sui pin 9 e 10. Su Arduino Mega, timer diversi influiscono su pin diversi. Se il tuo codice utilizza più librerie (ad esempio,ServoESoftwareSerialOIRremote), potrebbero entrare in conflitto e interrompere i segnali dei servo.
Risoluzione:
Utilizzare solo un'istanza della libreria Servo.
Se devi usareSoftwareSerial, inizializzare il servo dopo la comunicazione seriale.
Prendi in considerazione l'utilizzo di un Arduino Mega per isolare i timer o utilizza il fileServobibliotecastaccare()Eallegare()dinamicamente.
Quando l'Arduino si accende, il servo riceve segnali casuali fino aallegare()è chiamato. Se il tuo servo è programmato per muoversi immediatamente, potrebbe ricevere un segnale iniziale danneggiato e bloccarsi.
Aggiustare:Aggiungi un ritardo di 1–2 secondi prima del primoservo.write()comando.
void setup() { mioServo.attach(9); ritardo(2000); // Consenti all'alimentazione di stabilizzare myServo.write(90); }
La maggior parte dei servi si ferma a causa di potenza insufficiente– utilizzare sempre un'alimentazione esterna da 5 V con terra comune.
Secondo più comune: mancanteservo.attach()– verificare che questa linea esista e utilizzi un pin PWM valido.
Terzo: legatura meccanica o ingranaggi spogliati– rimuovere il clacson per verificare la rotazione libera.
Quarto: conflitti di codice e problemi con il timer– semplifica il tuo schizzo al minimo indispensabile.
Per risolvere immediatamente un servo Arduino che non ruota, segui questo ordine esatto:
1. Scollega il filo rosso del servo da Arduinoe collegarlo a un alimentatore separato da 5 V/2 A. Collega la terra dell'alimentatore ad Arduino GND.
2. Carica l'esempio di Sweepsenza nessun altro codice.
3. Rimuovere la squadretta del servoed esegui nuovamente l'esempio Sweep.
4. Se ancora nessuna rotazione, sostituire il servo con un'unità funzionante.
Questi quattro passaggi risolvono il 95% di tutti i casi di “servo smesso di ruotare”. Tieni sempre dei servi di riserva e un alimentatore dedicato nel tuo spazio di lavoro. Documenta il cablaggio e il codice prima di apportare modifiche e testa singolarmente ciascun componente hardware per isolare i guasti.
Tempo di aggiornamento: 08-04-2026
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.