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.
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.
Per controllare l'angolo del servo, è necessario generare un segnale ripetuto con due parametri chiave:
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à.
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
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.
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.
È 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.
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°.
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.
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
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.