giovedì 20 novembre 2008

Nec IR Remote Control

Questo progetto risponde all’esigenza di decodificare ed utilizzare i codici prodotti da telecomandi IR che adottano la codifica NEC Trasmissione Format.
Questo tipo di codifica è attualmente implementato nei chip PD6121/6122 e consiste in una variante di modulazione PPM della portante IR a 38KHz. Il frame di trasmissione tipico è il seguente:


Per il sincronismo viene sfruttata una particolare configurazione dell’uscita (Leader Code) che consente al ricevitore di individuare l’inizio del bit-stream, mentre il treno di bit contiene, nell’ordine, il Custom Code (8 bit), una versione manipolata dello stesso (Custom Code’ di 8 bit), il comando associato al pulsante premuto (Data Code), ed infine la versione negata del data code (Data Code’) entrambi lunghi 8 bit. La modulazione impiegata è una PPM applicata ad una portante IR di 38KHz, se tutto il dispositivo è connesso ad un risonatore ceramico a 455KHz ed ogni impulso ha la durata di 0.56ms. Il frame prodotto durante la pressione ed il rilascio di un tasto è il seguente:


La forma d’onda prodotta al rilascio del tasto è quella contrassegnata con (2) ed ha la stessa durata del frame contenente i campi informativi e cioè di 108 ms.
Nel dettaglio la struttura (1) consta del Leader Code e dello stream PPM costituito da 24 bit individuati dalla posizione temporale degli impulsi prodotti dal modulatore e precisamente 1,125 ms per un ”1” e 2,25 ms per uno “0”.


La sequenza viene infine terminata da un impulso di stop che permette di individuare il ventiquattresimo bit.


Il Leader Code nel dettaglio è costituito da un livello alto persistente per 9 ms e da un livello basso immediatamente successivo di durata 2.25 ms.


La portate IR è generata internamente dal chip ed ha la forma d’onda riportata nella figura seguente. Tale segnale può pilotare direttamente la base di un BJT per il drive del Led trasmettitore IR.


Per quanto riguarda la definizione del Custom Code e l’assegnazione dei comandi ai vari tasti si rimanda alla documentazione originale NEC e precisamente al documento: “U10114EJ6V0DS00”. Il progetto in questione consiste in un microcontrollore Atmel provvisto di core AVR con collegato al pin INT0 l’uscita di un sensore IR tipo TSOP1838, o equivalente, ed un PC con porta RS232 per visualizzare l’output.


Per la decodifica del segnale PPM si è usato un contatore interno al uC, i cui segnale di start e stop/reset sono comandati dagli impulsi che provengono dal sensore IR. Il contatore incrementa il suo valore con una frequenza tale da consentire al bit di peso 4 di trovarsi nella condizione 0 se il tempo tra due impulsi consecutivi è minore di 2,25 ms, nello stato 1 se l’intervallo di tempo è superiore. Inoltre si è provveduto ad una ulteriore analisi del segnale proveniente dal sensore IR al fine di individuare con esattezza la presenza del Leader Code di inizio sequenza stimando la durata dei primi due livelli del frame. Il treno di impulsi PPM afferisce al pin di interruzione INT0 della MCU e quindi tutta la procedura di decodifica risulta indipendente dal normale flusso del programma, essendo tutto il codice inserito all'interno di una ISR.

Nessun commento: