Pubblicato 2026-04-17
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.
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 ms → Angolo 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.
Segui esattamente questi passaggi per controllare qualsiasi servo standard con qualsiasi microcontrollore:
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.
Un servo standard ha tre fili:
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.
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°.
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);
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°.
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.
Utilizza questa tabella per una verifica rapida senza calcoli:
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.
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.
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
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.