HOME                                      

RX  per telecomando MIVAR

     

Salve, il progetto di cui vorrei parlarvi in questa occasione, è nato dalla curiosità di conoscere il tipo di modulazione su cui si basa la trasmissione del telecomando del mio televisore “Saba”. 

Per fare questo tipo di indagine ho usato un ricevitore ad infrarossi che avevo tra le mie cianfrusaglie, recuperato da chissà quale televisore o videoregistratore dismesso. Dopo aver collegato al mio oscilloscopio l’uscita del ricevitore menzionato prima ed averlo alimentato, ho premuto nella sua direzione uno dopo l’altro ogni pulsante del mio telecomando “saba”, ed in corrispondenza della pressione di ognuno di essi, è apparsa subito chiara sullo schermo del mio oscilloscopio, una sequenza di impulsi così come visibile nella fig.1 .

Ogni impulso ha una durata di 20 uS circa ed ogni sequenza si ripete con cadenza regolare ogni 60 mS, e come si evince dalla figura è costituita da dodici impulsi, intervallati da una pausa di 9 mS oppure 6 mS. Evidentemente si tratta di una emissione con modulazione del tipo P.P.M. (Position Pulse Modulation), ovvero modulazione a posizione d’impulsi, anche se in questo caso la distanza in termini di tempo a cui sono posizionati gli impulsi è fissata a 9 mS oppure a 6 mS.  

Soddisfatta la mia curiosità, rimaneva solo da capire come sfruttare queste nuove conoscenze, a questo punto mi è stata di grande stimolo la mia pigrizia; infatti, il mio successivo obiettivo è stato quello di realizzare un circuito di decodifica di questi segnali, che riconoscendone il codice mi permettesse di attivare un relè, che poi mi sarebbe servito per accendere o spegnere il tubo al neon utilizzato per l’illuminazione nella mia cucina, naturalmente usando lo stesso telecomando del televisore che si trova in cucina.

Ciò è stato possibile in quanto vi sono due pulsantini sul telecomando che non si usano quasi mai, che servono solo per modificare il tono dell’audio riprodotto negli altoparlanti del televisore, e quando si usano predispongono il televisore ad accettare ulteriori comandi, per variare appunto i toni alti o bassi dell’audio riprodotto. Quindi standomene comodamente seduto sul mio divano, avrei potuto tranquillamente accendere o spegnere la luce anche col televisore acceso senza che le due cose interferissero tra loro.

Certo questo è solo un banale impiego del progetto, che vuole essere soprattutto uno stimolo ed un punto di partenza per sviluppi ed ampliamenti futuri, per impieghi sicuramente più vantaggiosi in applicazioni più serie.

Ma torniamo al nostro discorso, perché la mia comodità è durata solo pochi anni, fino a quando cioè il mio televisore non è passato irrimediabilmente a miglior vita, in sostituzione del quale abbiamo acquistato un “mivar” 28M51. Da quel momento, un pò a tutti in famiglia è venuta meno quella piccola comodità, ma per poco tempo.

Infatti, ripetendo dall’inizio la mia indagine col nuovo telecomando, sono rimasto sorpreso nel verificare che il tipo di trasmissione era sostanzialmente identica al Saba, fatta eccezione per la sola durata delle pause tra gli impulsi, questa volta fissata a 5 mS ed a 7,5 mS, con un tempo di ripetizione della sequenza di 46 mS.

Il sistema è molto simile a quello utilizzato dal mio vecchio televisore, ma assolutamente incompatibile con i parametri del mio nuovo telecomando; per cui, per poter continuare ad utilizzare il mio vecchio circuito di decodifica, il cui schema elettrico è visibile in fig.2, si è resa necessaria una semplice modifica, che cambiasse i parametri di funzionamento del software utilizzato in precedenza per il PIC.

Come vedete il circuito elettrico è molto semplice e poiché tutte le funzioni  principali sono svolte dal microcontrollore PIC 16F628 prodotto dalla Microchip, non credo sia necessaria alcuna descrizione dettagliata del circuito che possiamo dividere in quattro blocchi principali:

1)       l’alimentatore che fornisce la tensione stabilizzata a 5V.

2)       il ricevitore I.R. con preamplificatore incorporato.

3)       il decodificatore implementato nel PIC 16F628.

4)       Il circuito di pilotaggio col triac ed optoisolatore.

Occorre solo ricordare che il nostro circuito dovrà trovare posto proprio sul lampadario e che tutte le volte che chiuderemo l’interruttore I1, facente parte dell’impianto elettrico di casa, immediatamente si accenderà la luce attraverso il triac del nostro circuito elettronico che subito dopo si predisporrà a ricevere eventuali sequenze dal telecomando. 

Voglio solo specificare che i pulsantini che ho scelto di usare sul nuovo telecomando, sono i due più a destra di colore giallo, indicati con “ALL” e “RIV” vedi foto.1; usati soltanto quando è attivato il televideo, servono rispettivamente per ingrandire le pagine selezionate e per visualizzare le soluzioni dei giochi trasmessi sul televideo. Questi due pulsanti oltre a non essere usati quasi mai, sono assolutamente ininfluenti durante la ricezione dei programmi televisivi, da qui la loro scelta.

Torniamo adesso ad esaminare la sequenza degli impulsi per capire come il PIC decodifica i segnali trasmessi dal telecomando. Innanzi tutto ho arbitrariamente associato agli intervalli lunghi il bit “1” ed agli intervalli brevi il bit “0”; inoltre per comodità mia e per snellire le istruzioni da impartire al PIC, considero validi solamente i sei intervalli più a destra del codice, ignorando tutti gli altri, poiché nel nostro caso assolutamente ininfluenti.

Esaminiamo adesso la flow-chart visibile in fig.3 che rappresenta l’algoritmo che implementa le funzioni svolte dal PIC, che ci aiuterà a capire passo dopo passo come il microcontrollore riconosce il codice in arrivo.

Alla partenza iniziale tutti i registri interni del PIC sono aggiornati con i parametri di durata degli intervalli, dopo di che il PIC controlla che non vi sia un impulso in arrivo al suo pin n° 6, e se non dovesse esserci passa ad incrementare un registro contatore di “pausa tra due sequenze”. Fintantoché tale conteggio non supera i 590 mS circa, cioè poco più di mezzo secondo, il PIC torna ad attendere l’arrivo di un ipotetico impulso; superato però tale limite assume che non vi sono sequenze in arrivo da decodificare, e di conseguenza passa in “SLEEP”, ovverosia nella condizione di stand-by con consumi ridottissimi di corrente. Da tale stato il PIC si risveglia o si riattiva, solo se è generato un interrupt interno, che farebbe ripartire dall’inizio l’esecuzione del programma, settando nuovamente tutti i parametri iniziali.  

 

Ciò effettivamente accade, tutte le volte che al pin n° 6 del PIC, predisposto per generare l’interrupt, arriva un impulso; in questo caso, il PIC verifica che il tempo trascorso dal precedente impulso sia minore di 6 mS, nel qual caso assume che l’intervallo trascorso dal precedente impulso è di 5 mS e carica uno “0” nel registro del codice. Al contrario se l’intervallo misurato è maggiore di 6 mS, prosegue al blocco successivo verificando che l’intervallo trascorso sia minore di 35 mS, nel qual caso assume che l’intervallo trascorso dal precedente impulso è di 7,5 mS e carica un “1” nel registro del codice. Se invece l’intervallo trascorso è maggiore di 35 mS assume che la sequenza è terminata ed il PIC può quindi proseguire con le successive operazioni, consistenti nell’accertare che il codice appena arrivato sia pari a 45 accendendo il triac, oppure pari a 46 spegnendo il triac.

Ovviamente, se per un qualunque motivo il codice ricevuto non è uguale a nessuno dei due precedenti, il PIC ignora tutto quanto e ritorna ad eseguire l’algoritmo dall’inizio, settando di nuovo tutti i parametri iniziali.

Come è evidente dalla flow-chart, per maggiore sicurezza ho predisposto che il triac sia comandato solo e soltanto dopo che saranno ricevuti almeno tre codici consecutivi uguali. Nel file TXT allegato troverete anche il listato ASM che vi potrà essere utile per seguire la flow-chart e viceversa, oppure anche per modificarne i parametri ampliandone la flessibilità operatività.

Spero di non aver tralasciato nulla d’importante e di aver detto tutto quello che era necessario dire, affinché ognuno possa eventualmente realizzare o modificare il progetto  autonomamente; comunque sia,  per qualunque esigenza inerente il progetto non esitate a contattarmi tramite e-mail. Salutandovi auguro a tutti buon lavoro e buon divertimento.

IT9DPX - #135  (Francesco M.)