pic® microcontroller by example pic® microcontroller by

Transcript

pic® microcontroller by example pic® microcontroller by
GALIZIA-PBE 227
30-04-2004
18:03
Pagina 32
TUTORIAL
®
PIC MICROCONTROLLER
BY
EXAMPLE
settima parte
di Tiziano Galizia ([email protected])
e Sergio Tanzilli ([email protected])
Anche in questa puntata presentiamo un valido esempio pratico di utilizzo del
PICmicro: un semplice decoder per telecomando ad infrarossi con cui potremo
telecontrollare le nostre applicazioni.
RICEVITORE PER TELECOMANDO
AD INFRAROSSI
Il telecomando scelto per la nostra
applicazione è il telecomando universale SIMPLEX® prodotto dalla società
VISA Electronics®.
Abbiamo scelto questo telecomando
in quanto è facilmente reperibile in
qualsiasi negozio di apparecchiature
elettriche ad un prezzo molto interessante ed è in grado di generare segnali per controllare una grande gamma
di TV color.
Si tratta di un telecomando semplificato (da cui il nome SIMPLEX) dotato
solamente di sei pulsanti con le
seguenti funzioni:
• Cambio canale + (che indicheremo
con la sigla P+).
• Cambio canale - (che indicheremo
con la sigla P-).
• Volume + (che indicheremo con la
sigla V+).
• Volume - (che indicheremo con la
sigla V-).
• Mute (che indicheremo con la sigla
M).
• Power (che indicheremo con la sigla
PW).
Questo telecomando dispone di un
dip switch, accessibile rimuovendo lo
sportello del porta batteria (una pila
32 TUTORIAL
da 9 V), a cinque elementi con cui è
possibile selezionare il tipo di televisore che si vuole comandare.
Per questa esercitazione abbiamo scelto il seguente settaggio dei dip switch:
DIP1 = On
DIP2 = Off
DIP3 = Off
DIP4 = Off
DIP5 = On
che corrisponde ad alcuni modelli di
televisori Hitachi, Sony, Mitsubishi e
Sharp. Più che al tipo di televisore la
scelta della configurazione è stata dettata dalla semplicità con cui siamo
riusciti ad interpretare il tipo di segnale in uscita dal telecomando. Per
decodificarlo è stato impiegato un
Figura 1: Schema a blocchi del ricevitore IS1U60
ricevitore ad infrarossi IS1U60, prodotto dalla SHARP, il cui schema a
blocchi è riportato in figura 1.
Questo componente è di facile reperibilità ma può essere sostituito con un
altro modello di pari caratteristiche.
Esternamente si presenta come un
normale transistor a cui è stata montata una specie di calotta di plastica
trasparente verde dotata di una lente
da un lato. Internamente contiene
invece tutta la circuiteria necessaria
per ricevere un segnale ad infrarossi
modulato a 38 kHz, demodularlo e
generare un segnale TTL pronto per
essere decodificato dal nostro PIC.
Nella figura 2 sono riportate le dimensioni e la piedinatura del componente
estratte dal datasheet della Sharp.
Per scrivere il codice d'esempio per
GALIZIA-PBE 227
30-04-2004
18:03
Pagina 33
TUTORIAL
Figura 2: Dimensioni e piedinatura del IS1U60
questa esercitazione, il sensore IS1U60
è stato alimentato collegando il pin
GND (pin 2) a massa ed il pin Vcc (pin
3) a +5 V e quindi, con un oscilloscopio digitale, è stato osservato il segnale in uscita dal pin Vout (pin 1) premendo i tasti sul telecomando VISA. I
segnali ricavati corrispondono al
Figura 3: Le sequenze generate dal telecomando alla pressione dei diversi tasti
www.artek.it
Divertirsi è facile
•
•
•
•
•
4 ingressi
4 Uscite
1 Comparatore
Opera con RTX Aurel
Opera con telecomandi TV
Distributors Welcome
NUTCHIP - PROGRAMMAZIONE ELEMENTARE A STATI LOGICI IN POCHI MINUTI
TOP MAX
Programma Professionale di
Eprom, Micro, Memorie, PLD, FPGA...
Oltre 3000 dispositivi supportati
In Offerta fino ad esaurimento scorte
Risparmi oltre 355 Euro,
680.000 delle vecchie lire!!
in collaborazione con EETOLS USA
Sali a bordo e naviga sul sito WEB ARTEK
per informazioni Tel. 0542.55900 - Fax 0542.55488
TUTORIAL
33
GALIZIA-PBE 227
30-04-2004
18:03
Pagina 34
TUTORIAL
Figura 4: Lo schema elettrico della nostra apllicazione
segnale già demodulato inviato dal
telecomando ad infrarossi.
Come visibile nella figura 3, per ogni
tasto viene generata una sequenza
diversa ripetuta continuamente finché
si mantiene il tasto premuto.
Con la nostra esercitazione vedremo
come sia possibile riconoscere le diverse sequenze inviate dal telecomando.
RxIfr contenuta nel sorgente, che utilizzeremo per questa esercitazione.
Una volta lanciata in esecuzione,
questa routine controllerà se è presente almeno un impulso a zero sulla
linea RX_IFR (linea RA2), quindi effettuerà il conteggio degli impulsi successivi fino ad un massimo di quattro
gruppi.
RICONOSCIMENTO DELLE
SEQUENZE DI CODIFICA
Osservando le sequenze, possiamo
notare che ciò che cambia nelle diverse configurazioni è il numero di impulsi a zero di durata pari a 1 ms e separati da impulsi a 1 da 3,4 ms.
Contando quanti impulsi a zero sono
contenuti in ogni gruppo otteniamo
la seguente tabella:
Se al termine del conteggio il numero di impulsi corrisponde ad una
delle sei combinazioni possibili, allora
ritorna nel registro accumulatore W il
valore corrispondente alla sequenza
rilevata secondo la seguente tabella:
Tasto
P+
M
V+
PPW
V-
Sequenza
1, 6, 0, 0
1, 3, 3, 0
1, 1, 5, 0
2, 5, 0, 0
2, 1, 1, 3
3, 4, 0, 0
Su questa tabella lavora la routine
34 TUTORIAL
Valore W
0
1
2
3
4
5
6
Sequenza rilevata
Nessun tasto premuto
P+
M
V+
PPW
V-
Una volta rilevato il tasto premuto, il
nostro programma visualizzerà in
chiaro, sul display LCD, il nome del
tasto relativo.
SCHEMA ELETTRICO
Lo schema utilizzato per questa esercitazione è un derivato dello schema già
utilizzato nella puntata precedente e
lo troviamo riprodotto in figura 4.
In quella occasione utilizzammo un
display LCD 16x2 per vedere come
era possibile controllarlo con un PIC.
Nello schema qui riportato, pur mantenendo lo stesso LCD, abbiamo
aggiunto il ricevitore ad infrarossi
IS1U60 descritto sopra, il quale viene
alimentato attraverso i suoi pin 2 per
la massa e 3 per la Vcc e collegato alla
linea RA2 (pin1) del PIC tramite il pin
di uscita del segnale demodulato Vout
(pin 1).
Una volta realizzato il circuito e programmato il PIC, sul display apparirà
la scritta "IFR READER". Se ora proviamo a premere qualche tasto sul telecomando SIMPLEX noteremo come il
nostro circuitino ci indicherà il tasto
premuto.
CONCLUSIONI
Dopo questo ennesimo esempio pratico, il prossimo mese vedremo come
gestire la memoria EEPROM interna al
PIC16F84.