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.