Corso base di Arduino: Il PWM manuale con Arduino

In questa puntata studieremo la modalità manuale per la produzione di un segnale PWM (pulse-width modulation). Qualsiasi MCU è in grado di produrre tale segnale, sia in modalità software che hardware, in quanto è sufficiente generare un'onda quadra ad alta frequenza con un rapporto di lavoro variabile.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

Un segnale PWM è un treno di impulsi quadri o rettangolari con due soli stati di tensione (0V oppure Vcc), di cui si può variare a piacimento il duty cycle (il rapporto tra la durata del segnale a livello alto ed la durata totale del segnale stesso). La sequenza è molto veloce e il carico applicato vede il suo effetto elettrico come un segnale di potenza variabile, in dipendenza della larghezza dell'impulso attivo. Con Arduino, Il PWM può essere generato in diversi modi. In questa sede studieremo la generazione semplice in modo manuale.

Uno degli utilizzi più interessanti è quello che permette di comandare i transistor di potenza o i PowerMOS. In questo modo anche i carichi molto grossi possono essere pilotati tramite una potenza variabile, senza utilizzare componenti resistivi di limitazione. La dissipazione è davvero minima e i transistor restano freddi.

Con Arduino si possono creare progetti interessanti, per esempio i giochi di luce che si utilizzano a Natale, in cui le lampadine si illuminano con una intensità variabile. La seguente tabella dà un'idea di ciò che può generare una tensione digitale, variando semplicemente il rapporto tra la durata dell'impulso alto e la durata totale del periodo:

ON=0%          OFF=100%     corrispondenti a 0 Volt;

ON=20%        OFF=80%       corrispondenti a 1 Volt;

ON=40%        OFF=60%       corrispondenti a 2 Volt;

ON=60%        OFF=40%       corrispondenti a 3 Volt;

ON=80%        OFF=20%       corrispondenti a 4 Volt;

ON=100%      OFF=0%         corrispondenti a 5 Volt.

pwm1
FIGURA PWM1.JPG (esempi di PWM)

Il metodo per generare manualmente il PWM consiste nel tenere il livello logico alto di un piedino di uscita per un certo tempo, per poi abbassarlo e tenerlo in tale condizione per un altro periodo di tempo. La somma delle due temporizzazioni si definisce "periodo" e la durata dell'impulso attivo, rispetto all'intero periodo, si definisce "duty cycle".

Pertanto:

·       un duty cycle del 70% corrisponde a un'onda quadra che ha un valore alto per il 70% del tempo e ha nel, restante 30%, un valore basso;

·       un duty cycle del 100% corrisponde a un segnale sempre alto (Vcc);

·       un duty cycle dello 0% corrisponde a un segnale sempre basso (0V).

pwm2
FIGURA PWM2.JPG (il periodo)

Il treno di impulsi dovrebbe essere caratterizzato da una frequenza superiore a quella udibile dall'uomo (>20000 Hz). In caso contrario si udirebbe un fastidioso fischio nel circuito, specialmente nei carichi induttivi (motori).

LED con quattro gradi di luminosità

L'esempio che segue illumina un diodo LED, collegato alla porta 7 di Arduino, con quattro intensità differenti, una per ogni secondo, e così all'infinito. In particolare, i quattro stati sono i seguenti:

·       Illuminazione LED al 98% (molto forte);

·       Illuminazione LED al 70% (forte);

·       Illuminazione LED al 20% (debole);

·       Illuminazione LED al 6% (molto debole).

È utile notare che la diversa illuminazione del LED non è realizzata tramite l'erogazione di differenti tensioni o correnti ma semplicemente variando il tempo di durata dell'impulso attivo. Dalla porta escono sempre 5V. Si studi a fondo il listato al fine di comprendere il fondamento del PWM. Esiste anche un'altra modalità per la produzione del PWM, che sfrutta la funzione analogWrite(). La vedremo nelle prossime puntate.

listato

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.