Blog

Il PWM spiegato: come controllare velocita' dei motori e luminosita' dei LED

Alessandro Panait·

Un pin di un microcontrollore puo' essere solo completamente acceso (5V) o spento (0V). Allora come fai a far girare un motore a meta' velocita'? La risposta e' il PWM: Pulse Width Modulation (modulazione di larghezza d'impulso).

L'idea

Accendi e spegni il pin centinaia o migliaia di volte al secondo. Se e' acceso il 50% del tempo, il motore o il LED si comporta come se ricevesse circa meta' tensione. La percentuale di tempo "acceso" si chiama duty cycle.

  • 0% duty: spento.
  • 50% duty: meta' potenza.
  • 100% duty: acceso pieno.

Nel codice

Su Arduino usi analogWrite su un pin PWM (col simbolo ~). Il valore va da 0 a 255:

analogWrite(9, 128);   // circa 50% di potenza
analogWrite(9, 255);   // potenza piena

Perche' conta in robotica

  • Velocita' motori: un driver motore riceve un segnale PWM e regola quanto girano le ruote. E' cosi' che un robot rallenta in curva e accelera sul rettilineo.
  • Luminosita' LED / illuminazione: regoli le luci senza hardware extra.
  • Controllo servo usa una forma speciale di PWM per impostare un angolo (di piu' nella lezione sui servo).

Un dettaglio

Il PWM controlla la potenza media, non direttamente la coppia. A duty molto bassi un motore puo' ronzare senza girare perche' non vince l'attrito. E' normale: i robot veri tengono una velocita' minima utile invece di strisciare al 5%.

Commenti (0)