Guida [GUIDA] Come modulare la potenza con PWM

Stato
Discussione chiusa ad ulteriori risposte.

SyncroIT

Utente Emerald
13 Gennaio 2014
674
94
208
523
Trova le differenze
BvAax9d.png

E' evidente che una delle due luci sia più accesa mentre l'altra più fioca!
Per svolgere questo esercizio non ci servirà molto:
- LED
- Resistenze
- Cavetti Maschio / Femmina
- Breadboard

In questo caso l'assenza di una breadboard potrebbe essere una complicazione in quanto credo sia troppo difficile infilare una resistenza dentro al connettore per il PIN.

La resistenza è "obbligatoria" in quanto, se utilizzati i LED senza resistenza, potrebbero danneggiarsi (esplodere) i LED o addirittura il Raspberry stesso, quindi vi chiedo gentilmente di utilizzarli, anche perché costano poco (1280 resistenze -> 10 euro su Amazon.it).

Modulazione di larghezza d'impulso e cos'è!
Parecchie volte vi sarà capitato di accendere dei LED. In seguito all'accensione non c'è modo di regolarne la potenza visto che l'intensità di corrente è fissa, 3.3 volt.
In questo breve tutorial vi insegnerò cos'è la PWM e come utilizzarla col vostro Raspberry.

La modulazione di larghezza d'impulso, invece ci permette di modificare la potenza "media" che viene ricevuta dalle nostre periferiche GPIO.​

pwm-duty.png

Analizziamo insieme questo schema dall'alto verso il basso.

In alto notiamo un ciclo di vita pari al 0% di ogni ciclo, quindi il nostro apparecchio sarà costantemente spento.

Nella parte intermedia notiamo un ciclo di vita pari al 25% di ogni ciclo, il che vuol dire che ad ogni ciclo il nostro apparecchio si accendere per il 25% del tempo e per il restante resterà spento.

In basso, invece possiamo notare un ciclo di vita operativo al 100%, il che significa che il nostro apparecchio rimarrà acceso costantemente.


Cosa accadrà in sostanza?
In sostanza, modulando la larghezza d'impulso, avremo modo di interagire sulla potenza media dell'apparecchio.
Analizziamo una situazione tipo:

Frequenza: 100Hz (volte al secondo)
Ciclo Vita: 40%

  • Il primo ciclo entrerà in funzione a 10 millisecondi
  • Per 4 millisecondi resterà attivo il led.
  • Per gli altri 6 millisecondi, il led resterà spento.
  • A 20 millisecondi, il led si riaccenderà per 4 millisecondi e resterà spento per i prossimi 6.
  • etc. etc.

Come utilizzare la PWM sui PIN GPIO?
Possiamo procedere in Python utilizzando le librerie ufficiali per la gestione dei pin GPIO.
Importiamo la libreria utilizzando:
Python:
import RPi.GPIO as GPIO

Poi andiamo a configurare la modalità di numerazione dei PIN che utilizzeremo, nel caso mio GPIO.BOARD:
Python:
GPIO.setmode(GPIO.BOARD)

Configuriamo quindi il PIN che andremo ad utilizzare impostandolo come output:
Python:
GPIO.setup(7, GPIO.OUT)

Inizia il divertimento quando andiamo a creare l'istanza PWM per il PIN scelto in precedenza:

I parametri richiesti da questa funzione sono rispettivamente: numero del PIN, frequenza (da 0 a 100)
Python:
p = GPIO.PWM(7,100)

Avviamo il tutto, riferendoci per ogni cambiamento o attività all'istanza di PWM che abbiamo creato in precedenza in p:

Il parametro richiesto da questa funzione è il ciclo vita (da 0 a 100) ed è espresso in percentuale
Python:
p = start(80)

Durante l'operatività del sistema, possiamo cambiare i vari parametri utilizzando le seguenti funzioni:

Python:
p.ChangeDutyCycle(percentuale) # 0 a 100
p.ChangeFrequency(hertz) # 0 a 100

Infine, per fermare il tutto possiamo usare la seguente funzione:
Python:
p.stop()

Questo sistema è molto più interessante con motori e apparecchi in movimento. Con i LED è leggermente sottovalutato, ma per una prova un LED può sempre essere utile!

Per comprendere a pieno il funzionamento visivamente consiglio l'avvio su frequenze basse e percepibili ad occhio (1-5 Hertz) e cicli vita tra il 20 e l'80 percento.

Spero che la guida vi sia piaciuta!
 
Stato
Discussione chiusa ad ulteriori risposte.