Il PWM

Il duty-cycle

Il duty cycle di un onda quadra/rettangolare è il rapporto tra la durata (in secondi) del segnale quando è "alto” ed il periodo totale del segnale. In altre parole è un numero che esprime quant'è la parte di periodo in cui il segnale è alto.

Facendo riferimento alla figura, la formula che esprime il duty cycle è:

D = ton / T
 dove T è il periodo e ton la parte di periodo in cui il segnale è alto.

Dalla formula potete subito notare che ton può variare da un valore minimo di 0 a un valore massimo pari a T, ciò implica che il valore del duty cycle varia da 0 a 1:

Caso 1: per ton = 0 (livello basso per tutto il periodo) D = ton / T = 0 / T = 0

Caso 2: per ton = T (livello alto per tutto il periodo) D = ton / T = T / T = 1

in entrambi i casi siamo in presenza di segnali continui.

Dalla formula possiamo comprendere quindi che il duty cycle è sempre un valore che varia tra 0 e 1.

Il duty cycle è spesso rappresentato in percentuale, D% e per ottenere la percentuale è sufficiente moltiplicare per 100 il rapporto ton / T, dire quindi che D%=30% vuol dire che per il 30% del periodo totale il segnale si trova a livello alto, come conseguenza possiamo subito dire che il segnale sarà a livello basso per il restante 70% del periodo.

Se il duty cycle è del 50%, allora nel periodo T il segnale si mantiene alto per T/2 e per il restante T/2 a livello basso; siamo quindi in presenza di un'onda quadra.

Uso del PWM

Se il comportamento descritto in precedenza viene replicato nel tempo si genera un segnale con ampiezza modulata chiamato PWM (Pulse Width Modulation)

Per comprendere l'utilità del PWM facciamo due esempi:

Esempio 1: Se avessimo un LED alimentato con un segnale PWM la sua luminosità varierebbe in funzione della durata di ton:

  1. PWM al 25% significa che il led è acceso per il 25 % del tempo e spento per il 75% LED. Questo viene percepito dall'occhio umano come se il led fosse acceso ad una luminosità pari al 25% del valore massimo
  2. PWM al 50%: 50% LED acceso e 50% LED spento, luminosità al 50%
  3. PWM al 75%: 75% LED acceso e 25% LED spento, luminosità al 75%

Esempio 2: Se avessimo un MOTORE alimentato con un segnale PWM la sua velocità di rotazione varierebbe in funzione della durata di ton:

  1. PWM al 25%: significa che il motore riceve energia per il 25 % del tempo e non riceve energia il 75% del tempo. Per effetto dell'inerzia questo comporta che il motore ruota ad una velocità pari al 25% del massimo
  2. PWM al 50%: energia per il  50% e assenza per 50%, rotazione al 50% del massimo
  3. PWM al 75%: energia per il  75% e assenza per 25%, rotazione al 75% del massimo

Osservazione

In realtà, oltre al tempo ton assume molta importanza il periodo T del segnale. Infatti se T è troppo piccolo il dispositivo controllato non sarà in grado di percepire la variazione. Allo stesso modo se T è troppo grande il dispositivo farà a tempo ad accendersi e spegnersi in continuazione e si perderà cosi l'effetto di "media" proprio del PWM

Arduino e la funzione analogWrite()

Arduino UNO R3 dispone di alcuni piedini che permettono la generazione di un segnale PWM (di periodo prefissato che per ora non considereremo), questi sono indicati con il simbolo "~".

Per specificare il duty cycle dell'onda si utilizza la funzione analogWrite() specificando il valore del duty cycle con un valore compreso tra 0 e 255. Ovviamente un duty cycle d = 0 corrisponderà ad una chiamata analogWrite(0), mentre un duty cycle d = 1 corrisponderà ad una chiamata analogWrite(255). 

Ultime modifiche: martedì, 8 novembre 2022, 12:30