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.
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.
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.)