Casa > Approfondimenti sul settore >Servo
SUPPORTO TECNICO

Supporto al prodotto

Come PWM controlla l'angolo del servomotore - Guida completa

Pubblicato 2026-04-13

La modulazione di larghezza di impulso (PWM) è il metodo standard utilizzato per controllare con precisione la posizione angolare di un hobby standardservomotore. Variando la larghezza dell'impulso elettrico inviato alservoogni 20 millisecondi puoi comandare ilservoper spostarsi verso un angolo specifico, in genere compreso tra 0 e 180 gradi. Questa guida fornisce le specifiche esatte del segnale, la logica di controllo passo passo, esempi pratici e suggerimenti per la risoluzione dei problemi in modo da poter implementare immediatamente il servocontrollo PWM.

01Principio fondamentale: la larghezza dell'impulso si associa direttamente all'angolo

Un servomotore standard contiene un piccolo circuito di controllo che legge il segnale PWM in ingresso. La posizione dell'albero di uscita del servo è determinata esclusivamente dallarghezza dell'impulso(durata del segnale alto) entro un frame fisso di 20 ms (50 Hz). La relazione è lineare: una larghezza di impulso specifica equivale a un angolo target specifico.

Mappatura standard impulso-angolo (per servi 0–180°):

0 gradi:Impulso da 0,5 ms (500 microsecondi)

90 gradi (neutro):Impulso da 1,5 ms (1500 microsecondi)

180 gradi:Impulso da 2,5 ms (2500 microsecondi)

Questi valori sono standard del settore. Verifica sempre la scheda tecnica del tuo servo, ma oltre il 95% dei servi standard segue questa mappatura esatta.

02Passo dopo passo: generazione del segnale PWM corretto

Per controllare l'angolo del servo, è necessario generare un segnale ripetuto con due parametri chiave:

Passaggio 1: impostare il periodo PWM su 20 ms (50 Hz)

Il servo attende un nuovo impulso ogni 20 millisecondi. Ciò significa che la frequenza PWM è 1 / 0,02 s = 50 Hz. Non modificare questa frequenza; altrimenti il ​​servo tremolerà o non risponderà.

Passaggio 2: scegli l'angolo desiderato e calcola la larghezza dell'impulso

Utilizza questa formula di interpolazione lineare:

Ampiezza dell'impulso (ms) = 0,5 + (angolo / 180) 2.0

Per esempio:

Angolo = 45° → Impulso = 0,5 + (45/180)2,0 = 0,5 + 0,5 =1,0 ms

Angolo = 135° → Impulso = 0,5 + (135/180)2.0 = 0.5 + 1.5 = 2,0 ms

Passaggio 3: applicare l'impulso alto per la durata calcolata, quindi basso per il resto di 20 ms

In pratica si imposta un timer: uscita ALTA per la larghezza dell'impulso (ad esempio 1,5 ms), quindi uscita BASSO per il tempo rimanente (20 ms – 1,5 ms = 18,5 ms). Ripeti continuamente.

03Esempio reale: controllo di un servo da 0° a 180°

Immagina di avere un servo collegato a un braccio robotico. Vuoi che si sposti da completamente a sinistra (0°) a completamente a destra (180°) a passi.

Sequenza del segnale (ogni linea è un ciclo di 20 ms):

Ciclo 1: ALTO per 0,5 ms → Il servo si sposta a 0°

Ciclo 2: ALTO per 1,0 ms → Il servo si sposta a 45°

Ciclo 3: ALTO per 1,5 ms → Il servo si sposta a 90°

Ciclo 4: ALTO per 2,0 ms → Il servo si sposta a 135°

Ciclo 5: ALTO per 2,5 ms → Il servo si sposta a 180°

Comportamento osservato:Il servo passerà ad ogni angolo e manterrà quella posizione. Non va alla deriva perché il circuito di controllo riceve costantemente l'ampiezza dell'impulso target.

04Metodi di implementazione comuni (nessun marchio)

È possibile generare il segnale PWM richiesto utilizzando:

Moduli timer/contatori a microcontrollore– Configurare un PWM a 50 Hz con ciclo di lavoro variabile. Ciclo di lavoro = (ampiezza dell'impulso / 20 ms) 100%. Per impulsi da 1,5 ms, ciclo di lavoro = 7,5%.

Bitbanging del software– Controlla direttamente un pin GPIO con ritardi. Meno preciso ma funziona per l'apprendimento.

Moduli servoazionamenti dedicati– Questi scaricano la precisione della temporizzazione ma richiedono comunque lo stesso intervallo di impulsi di 0,5–2,5 ms.

Requisito critico di precisione:La precisione dell'ampiezza dell'impulso deve essere compresa tra ±10 µs (microsecondi). Se il timing è sbagliato di più di 20 µs si verificano jitter o angoli errati.

05Risoluzione dei problemi: perché il servo non raggiunge l'angolo corretto?

Sintomo Causa più probabile Aggiustare
Il servo si muove solo tra 0° e 90° (non 180°) L'intervallo di larghezza dell'impulso è 1,0–2,0 ms anziché 0,5–2,5 ms Regola il tuo codice per ottenere un output minimo di 0,5 ms e massimo di 2,5 ms
Il servo vibra o ronza in modo estremo L'ampiezza dell'impulso è leggermente oltre i limiti meccanici Limitare l'impulso a 0,5–2,5 ms; non inviare mai 2,6 ms
Il servo non risponde affatto Frequenza sbagliata (non 50 Hz) Verifica che il tuo periodo PWM sia esattamente 20 ms (50 Hz)
L'angolo è sfalsato (ad esempio, 1,5 ms dà 95° anziché 90°) Il servo ha un punto neutro non standard Misura il polso effettivo per 90° e ricalibra la mappatura

Caso reale:Un errore comune è utilizzare un intervallo compreso tra 1,0 e 2,0 ms perché alcune librerie di microcontrollori lo utilizzano per impostazione predefinita. Un utente ha segnalato che il suo servo è ruotato solo di 90° in totale. Dopo aver modificato l'intervallo dell'impulso a 0,5–2,5 ms, è stata ripristinata la rotazione completa di 180°.

06Punti chiave – Ripeti questi principi fondamentali

Il PWM controlla l'angolo del servo in base all'ampiezza dell'impulso, non solo al ciclo di lavoro.Per un periodo fisso di 20 ms, il tempo alto assoluto (da 0,5 a 2,5 ms) determina la posizione.

La relazione è lineare:larghezza dell'impulso = 0,5 ms + (angolo/180)*2,0 ms.

Utilizzare sempre 50 Hz (periodo di 20 ms).Qualsiasi altra frequenza causerà un comportamento irregolare o l'assenza di movimento.

Verificare l'ampiezza minima e massima dell'impulso.La maggior parte dei problemi deriva da un intervallo di impulsi errato, non da un guasto hardware.

07Raccomandazioni attuabili per un servocontrollo affidabile

Segui immediatamente questi passaggi per ottenere risultati coerenti:

1. Misura la risposta effettiva del tuo servo.Invia impulsi da 0,5 ms, 1,5 ms e 2,5 ms. Segna gli angoli fisici. Se non sono 0°, 90°, 180°, registrare l'effettiva mappatura impulso-angolo.

2. Aggiungere un margine di sicurezza di 100–200 µssu entrambe le estremità (impulso minimo = 0,6 ms, massimo = 2,4 ms) per impedire il vincolo meccanico.

3. Utilizzare un hardware timer dedicatoinvece di ritardi software quando possibile. Il PWM basato su timer mantiene la precisione anche quando il codice principale è occupato.

4. Prova con un analizzatore logico o un oscilloscopioper confermare l'ampiezza dell'impulso. Molte simulazioni software nascondono errori di temporizzazione.

5. Per progetti multi-servo,mantenere l'alimentazione separata dall'alimentazione logica. Un servo in stallo può assorbire 1–2 A, causando cadute di tensione che corrompono i segnali PWM.

Aderendo rigorosamente all'intervallo di larghezza di impulso di 0,5–2,5 ms entro un periodo di 20 ms, otterrai un controllo dell'angolo preciso e ripetibile su qualsiasi servomotore standard. Implementa prima la fase di misurazione, quindi ottimizza il codice e il tuo servo si muoverà esattamente dove comandi.

Tempo di aggiornamento: 2026-04-13

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