Menu:

PPTEA Timer e PWM


Timer e Pulse Width Modulation

Questa è la discussione originale.

Dalla versione 2.8 del PPTEA abbiamo a disposizione un TIMER ed apriamo la porta nel mondo del PWM.
Alcuni potebbero dire... ma come il PWM è un mondo?
E si.. è un bel mondo ed anche se pensate di conoscerlo vi farò ricredere.
Il TIMER e il PWM sono due cose esclusive o funziona il TIMER o funziona il PWM, il TIMER è quello attivato per default.
Partiamo dal TIMER che è una cosa semplice semplice:
Quando il PPTEA parte c'è un contatore che inizia a contare in microsecondi (si ....microsecondi)...per sapere da quanto tempo è partito (coè i secondi di esecuzione) basta chiamare la funzione TIMER.

Esempio:

10 A=TIMER
20 usbout = A &""
30 ...

Output PC = 1.423453

cioè saranno passati 1 secondo e 423 millisecondi dall'avvio del PPTEA.
Questa istruzione è fondamentale per tenere sotto controllo il tempo e per alcune applicazioni non ci sarà più bisogno di avere un REAL TIME CLOCK.
Passiamo al PWM. Il PPTEA lo gestisce mediante due istruzioni:
PWMDC (PWM DUTY CICLE) = Percentuale dove Percentuale rappresenta il valore del duty cycle.

PWMFQ = ValPeriodo Con val periodo che va da 0 a 7

ValPeriodo = 0 T= 1.67 s
ValPeriodo = 1 T= 0.83 s
ValPeriodo = 2 T= 0.83 s
ValPeriodo = 3 T= 419 ms
ValPeriodo = 4 T= 209 ms
ValPeriodo = 5 T= 104 ms
ValPeriodo = 6 T= 52 ms
ValPeriodo = 7 T= 26 ms

Il PWM esce sul bit 6 (pin 11) e occorre settarla in modalità out, questo perchè all'avvio il PPTEA la tratta come un input.

Esempio:

10 SETIO=&H00BF
20 PWMDC=50
30 goto 30

Collegando sul pin 11 un led con una resistenza da 470 ohm il led inizierà a lampeggiare nonostante il programma sia bloccato sull'istruzione 30.
Quanto prima qualche esempio serio.

Dalla versione 2.9 è implementata la funzione PWMIO che associa l'uscita dei BIT al PWM.
Per default il bit associato al PWM è il bit 15.
Occore assicurarsi che il bit associato sia settato com output, altrimenti non avviene l'associazione.
Esempio:
10 PWMIO=&HC000
i bit 15 e 14 sono associati al PWM, cioè oscilleranno insieme.

Vediamo un aspetto dei PWM poco conosciuto.
In genere il PWM viene associato al controllo dei motori ed è questa la loro principale applicazione.
Facciamo un esempio se abbiamo una ventola da 12V (un esempio per titone) per controllare la sua velocità non possiamo abbassare la sua tensione, cioè potremmo anche farlo ma la ventola non fungerà al meglio, anzi avrà problemi e sarà difficilmente controllabile.
Un altro sistema è formirgli sempre un'alimentazione a 12 Volt, ma non continua, gli invieremo un treno di impulsi a 12V, cioè sia 12V che 0 V altrenandoli, più saranno lunghi i 12V rispetto gli 0 volt e più la ventola girerà velocemente.
Se invieremo 12 continui la ventola girerà con la velocità massima, mentre se invieremo solo 0 la ventola sarà ferma.
La percentuale dei 12V rispetto allo 0 si chiama DutyCycle.
Sotto riporto 3 esempi : 50, 75 e 100 di DutyCycle:


Quindi per impostare il DutyCycle con il PPTEA dovremo utilizzare la funzione PWMDC; quando viene eseguita l'istruzione avviene la variazione.
Con il PPTEA si può anche variare la frequenza di oscillazione utile per far lampeggiare i led o avviare i motori, agendo sulla funzione PWMFQ (=0 bassissima, =7 massima frequenza supportata dal PPTEA).
Questa è la parte generalmente più conosciuta dei PWM, ma questo sistema di funzionamento nasconde un fattore molto importante: il controllo della potenza, cioè della corrente, utile a moltissime cose.
Tecnicamente parlando modulando un segnale continuo cioè variando la lunghezza degli impulsi possiamo ottenere un risparmio energetico.
Facciamo un esempio per far vedere come può avvenire una cosa del genere mediante l'accensione di un led.


Sappiamo tutti che per limitare la corrente che circola nel diodo led occorre inserire una resistenza, nel PPTEA vale lo stesso discorso, occorre inserire una resistenza di 200-470 ohm.
Questa resistenza dissipa potenza, dissipa energia, qualcuno potrebbe pensare che sia irrisoria, ma non lo è, alcune volte può essere importante.
Ora cosa centra il PWM in tutto questo? Agendo con un PWM invece che con un segnale continuo possiamo eliminare la resistenza e quindi non perdere quell'energia che la resistenza dissipa.
Occorre calcolare quanto deve essere il dutycicle, se esageriamo col 100% potremmo bruciarlo, se è basso il led si accende poco, abbiamo trovato un modo per regolare l'intensità di un led!

Incuriosito dal display di Jumpy ho finalmente trovato il tempo per connetterlo e visto che questo era il primo display retroilluminato che mi capitava tra le mani l'ho acceso!
Il codice che riporto fa lampeggiare il display per qualche secondo e poi inizia ad illuminarsi in modo graduale fino all'intensità massima per poi diminuire fino a spegnersi completamente per poi tornare all'intensità massima e così via.

CODICE:
05 ' LAMPEGGIO E VARIAZIONE LUMINOSITA' DISPLAY 20x4
06 ' IL LED DEL DISPLAY E' CONNESSO AL PIN 28 CON R=220 OHM
10 SETIO=&H100FF
14 LCDWRITE=" -- PPTEA --"
18 LCDPOS=65
22 LCDWRITE=" TEST PWM"
26 LCDPOS=21
30 LCDWRITE=" ILLUMINAZIONE LCD"
34 LCDPOS=85
38 LCDWRITE=" VARIABILE"
39 PWMFQ=1
40 PWMDC=50 ' INIZIA A LAMPEGGIQRE IL LED
41 WAITS 3
42 PWMFQ=7 '--- AUMENTO LA FREQUENZA DI OSCILLAZIONE
46 A++ '------- AUMENTO LA LUMINOSITA
50 PWMDC=A
54 if A = 100 then 66
58 WAITMS 20
62 GOTO 46
66 A-- '------- DIMINUISCO LA LUMINOSITA
70 PWMDC=A
74 if A = 1 then 46
78 WAITMS 20
82 GOTO 66






Valid XHTML 1.0 Strict



[ Back to top ] [ Home ]