Casa > Approfondimenti sul settore >Motoriduttore
SUPPORTO TECNICO

Supporto al prodotto

Come controllare l'angolo del servomotore con un microcontrollore: una guida completa passo dopo passo

Pubblicato 2026-04-17

01Come controllareservoAngolo del motore con un microcontrollore: una guida completa passo dopo passo

Questa guida fornisce una spiegazione chiara e pratica di come un microcontrollore controlla esattamente l'angolo di rotazione di uno standardservomotore. Imparerai il principio di funzionamento fondamentale, il segnale elettrico preciso richiesto e il metodo completo passo dopo passo per generare quel segnale utilizzando qualsiasi microcontrollore comune. Non viene fatto riferimento a nomi di marchi o prodotti aziendali specifici: vengono utilizzati solo principi generici e ampiamente applicabili ed esempi del mondo reale.

1. Principio fondamentale: la modulazione della larghezza dell'impulso (PWM) determina direttamente l'angolo

Una normaservoil motore lo fanonruotare continuamente come un normale motore DC. Invece, si sposta in una posizione angolare specifica (ad esempio, 0°, 90° o 180°) e mantiene quella posizione. L'angolo è controllato interamente dalla larghezza di un impulso elettrico inviato ogni 20 millisecondi (ms).

La relazione diretta è:

Ampiezza dell'impulso compresa tra 1,0 ms e 2,0 msAngolo compreso tra 0° e 180°(per i servi più comuni)

Un impulso da 1,0 ms → 0° (completamente in senso antiorario)

Un impulso di 1,5 ms → 90° (posizione centrale)

Un impulso di 2,0 ms → 180° (completamente in senso orario)

> Esempio del mondo reale:In un braccio robotico hobbistico, per far chiudere completamente la pinza (0°), il microcontrollore invia un impulso ripetuto di 1,0 ms. Per aprire completamente la pinza (180°), invia un impulso di 2,0 ms. Per una posizione semiaperta (90°), invia un impulso di 1,5 ms.

Questo segnale viene chiamatoModulazione di larghezza di impulso (PWM)– un metodo in cui il microcontrollore emette un segnale digitale che commuta tra ON (5 V o 3,3 V) e OFF (0 V) molto rapidamente e la durata dell'impulso ON è ciò che legge il servo.

2. Passo dopo passo: come il microcontrollore genera l'impulso corretto

Segui esattamente questi passaggi per controllare qualsiasi servo standard con qualsiasi microcontrollore:

Passaggio 1: identificare i requisiti di segnale del servo

La maggior parte dei servi standard funziona con:

voltaggio:4,8 V – 6,0 V (alimentazione,nondai pin del microcontrollore)

Tensione del segnale di controllo:3,3 V o 5 V (corrisponde al livello logico del microcontrollore)

Periodo di ripetizione dell'impulso:20 ms (frequenza 50 Hz)

Intervallo di larghezza dell'impulso:Da 1,0 ms a 2,0 ms (da 0° a 180°)

Importante:Verifica la scheda tecnica del tuo servo per l'esatto intervallo di larghezza dell'impulso. Alcuni servi utilizzano da 0,5 ms a 2,5 ms per 0°–180°, o da 1,0 ms a 2,0 ms per 0°–90°. Il principio rimane identico.

Passaggio 2: collegare correttamente il servo al microcontrollore

Un servo standard ha tre fili:

Colore filo (tipico) Funzione Connessione
Marrone o Nero Terra (GND) Terra del microcontrollore
Rosso Alimentazione (VCC, 5 V) Alimentazione esterna da 5 V (non utilizzare il pin da 5 V del microcontrollore per più di un piccolo servo)
Arancione o Giallo Segnale (PWM) Pin digitale con funzionalità PWM del microcontroller

Nota critica sulla sicurezza:Non alimentare mai un servo direttamente dal pin 5V del microcontrollore. Un servo può assorbire 200–1000 mA, che supera la maggior parte dei valori dei pin del microcontrollore. Utilizzare un alimentatore separato da 5 V con terra comune.

Passaggio 3: configurare l'hardware PWM del microcontroller

Ogni microcontrollore è dotato di timer PWM integrati. La configurazione richiede l'impostazione di due parametri:

Frequenza = 50 Hz(periodo = 20 ms)

Risoluzione(tipicamente da 8 bit a 16 bit, a seconda del microcontroller)

Esempio di calcolo generico (per qualsiasi microcontrollore):

Se la risoluzione PWM è 8 bit (da 0 a 255) e il periodo totale è 20 ms (20.000 µs):

Impulso da 1,0 ms → ciclo di lavoro = (1,0 ms / 20 ms) × 255 = 12,75 → utilizzare 13

Impulso da 1,5 ms → ciclo di lavoro = (1,5 ms / 20 ms) × 255 = 19,125 → utilizzare 19

Impulso da 2,0 ms → ciclo di lavoro = (2,0 ms / 20 ms) × 255 = 25,5 → utilizzare 26

Caso del mondo reale:Un comune microcontroller a 8 bit impostato su PWM a 50 Hz scriverà un valore di 13 nel registro di confronto PWM per ottenere 0°, 19 per 90° e 26 per 180°.

Passaggio 4: scrivere il codice del microcontrollore per impostare l'angolo desiderato

La logica del codice è sempre la stessa su tutti i microcontrollori:

1. Inizializzare l'hardware PWM con la frequenza di 50 Hz.

2. Calcola l'ampiezza dell'impulso richiesta in microsecondi per l'angolo target utilizzando la formula lineare:

Ampiezza dell'impulso (μs) = 1000 + (angolo / 180) × 1000(per intervallo 1,0–2,0 ms)

Angolo 0° → 1000 µs

Angolo 90° → 1500 µs

Angolo 180° → 2000 µs

3. Convertire la larghezza dell'impulso nel valore del registro del ciclo di lavoro del microcontrollore.

4. Scrivi quel valore sul pin di uscita PWM.

Pseudocodice generico (adatto a qualsiasi microcontrollore):

// Supponiamo che il timer PWM sia già configurato per 50 Hz, risoluzione a 8 bit int targetAngle = 90; // gradi int PulseWidth_us = 1000 + (targetAngle1000/180); int dutyCycleValue = (pulseWidth_us255)/20000; setPWMDutyCycle(PWM_PIN, dutyCycleValue);

Passaggio 5: verifica con misurazioni del mondo reale

Dopo aver caricato il codice, utilizzare un oscilloscopio o un analizzatore logico per verificare il segnale:

La frequenza dovrebbe essere 50 Hz(periodo = 20 ms)

La larghezza dell'impulso dovrebbe corrispondere al valore calcolato(ad esempio, 1,5 ms per 90°)

Problema comune nel mondo reale:Se il servo trema o non si muove, è probabile che l'ampiezza dell'impulso non sia corretta. Misurare direttamente sul pin del segnale. Un errore di 0,05 ms può causare una deviazione di 5°–10°.

3. Esempio completo: controllo di un servo da 0° a 180° e viceversa

Ecco un esempio completo e generico che funziona su qualsiasi microcontrollore dopo un piccolo adattamento della sintassi. La logica è ciò che conta.

Scenario:Una semplice piattaforma per la panoramica della fotocamera. Il servo dovrebbe spostarsi da 0° a 180° e viceversa in modo continuo.

Logica di implementazione passo passo:

1. Impostare la frequenza PWM su 50 Hz.

2. Definire una funzionesetAngolo(angolo)Quello:

Angolo dei morsetti compreso tra 0° e 180°

Calcola la larghezza dell'impulso = 1000 + (angolo × 1000/180) microsecondi

Converte nel valore del registro del ciclo di lavoro

Scrive sul pin PWM

3. Nel ciclo principale:

Incremento dell'angolo da 0° a 180° in passi di 1°

ChiamatasetAngolo(angolo)per ogni passaggio

Attendere 15 ms (permette al servo di muoversi fisicamente)

Quindi diminuire l'angolo riportandolo a 0°

Risultato atteso:Il servo ruota dolcemente da un'estremità all'altra, fermandosi con precisione ad ogni angolo calcolato.

4. Tabella di verifica critica: larghezza dell'impulso rispetto all'angolo

Utilizza questa tabella per una verifica rapida senza calcoli:

Angolo desiderato Ampiezza impulso richiesta (μs) Ciclo di lavoro a 50 Hz, 8 bit (0–255)
1000 13
45° 1250 16
90° 1500 19
135° 1750 22
180° 2000 26

Nota:Se il tuo servo non raggiunge esattamente 0° o 180°, regola leggermente l'ampiezza dell'impulso minima e massima (ad esempio, 950 µs per 0°, 2050 µs per 180°). Ciò è normale a causa delle tolleranze di produzione.

5. Perché questo metodo è universale e affidabile

Il metodo di controllo della larghezza di impulso è un'interfaccia servo analogica standard del settore utilizzata da decenni. Ogni servo standard, indipendentemente dal produttore, risponde allo stesso intervallo di impulsi di 1,0–2,0 ms. Ciò significa:

Puoi controllare qualsiasi servo standard con qualsiasi microcontrollore che emetta PWM a 50 Hz.

La stessa logica del codice funziona per i microcontrollori da 8 bit a 32 bit.

Non sono richieste librerie proprietarie o funzioni specifiche del marchio.

6. Problemi comuni del mondo reale e relative soluzioni

Problema Causa più probabile Soluzione
Il servo non si muove affatto Nessuna alimentazione al servo o collegamento a terra errato Collegare l'alimentazione del servo all'alimentazione esterna da 5 V e alla terra comune con il microcontrollore
Il servo vibra o tremola L'ampiezza dell'impulso è instabile o la frequenza non è esattamente 50 Hz Controllare la configurazione PWM; utilizzare PWM hardware anziché loop di ritardo software
Il servo si sposta solo a 0° e 180°, non ad angoli intermedi Il codice invia solo ampiezze di impulso minime e massime Verificare la formula di calcolo; misurare la larghezza dell'impulso con l'oscilloscopio
Il servo diventa molto caldo La frequenza degli impulsi è troppo alta (ad es. 300 Hz invece di 50 Hz) Riconfigurare il PWM esattamente su 50 Hz (periodo di 20 ms)
La posizione del servo varia nel tempo La tensione di alimentazione è instabile Aggiungere un condensatore di grandi dimensioni (1000 µF) sulle linee di alimentazione del servo

7. Conclusione attuabile: i tuoi prossimi passi esatti

Principio fondamentale da ricordare:

> L'angolo del servo èdirettamente proporzionalealla larghezza dell'impulso compresa tra 1,0 ms e 2,0 ms, ripetuta ogni 20 ms. Cambia l'ampiezza dell'impulso e cambi l'angolo: nient'altro conta.

Piano d'azione immediato da implementare oggi:

1. Verifica la gamma di impulsi del tuo servo– Controllare la scheda tecnica per le larghezze di impulso min/centro/max. La maggior parte utilizza 1,0/1,5/2,0 ms per 0/90/180°.

2. Configura il PWM del tuo microcontrollore– Configurare un pin PWM sulla frequenza di 50 Hz. Per ottenere impulsi stabili, utilizzare la PWM hardware e non il bit-banging software.

3. Scrivi la formula di conversione da angolo a impulso- Utilizzo:impulso_us = 1000 + (angolo_gradi × 1000 / 180).

4. Prova con tre angoli noti– Comando 0°, 90° e 180°. Misurare la posizione effettiva dell'albero. Se necessario, regolare l'ampiezza dell'impulso min/max.

5. Aggiungi una routine di calibrazione– Memorizza le esatte larghezze di impulso minima e massima del tuo servo nel codice. Ciò garantisce un intervallo perfetto da 0° a 180° nonostante le variazioni di produzione.

Convalida finale:Dopo aver seguito questa guida, sarai in grado di controllare qualsiasi angolo da 0° a 180° con una precisione di ±1°. Lo stesso metodo funziona per i servi a rotazione continua (dove l'ampiezza dell'impulso controlla la velocità e la direzione) e per i servi con diversi intervalli di angolazione (ad esempio, 0°–90° o 0°–270°) – è sufficiente regolare di conseguenza l'intervallo dell'ampiezza dell'impulso.

Ripeti la verità fondamentale:Un microcontrollore controlla l'angolo di un servo emettendo un segnale PWM a 50 Hz in cui il tempo di attivazione (ampiezza dell'impulso) varia da 1,0 ms (0°) a 2,0 ms (180°). Padroneggia questa relazione impulso-angolo e potrai controllare qualsiasi servo con qualsiasi microcontrollore.

Tempo di aggiornamento: 2026-04-17

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
+86 0769 8399 3238
 
kpowerMap