COMPUTER ARCHIVE

IR REPEATER

Devo comperare il mobile della sala, sotto il TV c'è lo spazio per decoder, lettore DVD etc etc. Per esigenze estetiche questo spazio ha una bella anta a ribalta che chuide il tutto.

Bene!, ma come faccio a comandare i tutto con il telecomando a infrarossi?

Nessun problema!, basta applicare un sensore esterno che fa da 'repeater' con dei trasmettitore IR all'interno del mobile; costo 700 euri. Ehhh??? 700 euri per un repeaterad infrarossi???. Manco morto!!, me ne costruisco un per i fatti miei.

Sono tutti matti: se hanno questi ricarichi anche per il legno del mobile cambio mestiere e faccio l'ebanista!


LA Teoria

La faccio semplice, il telecomando trasmette una serie di impulsi, la codifica cambia da telecomando a telecomando, ma a noi non interessa non dobbiamo interpretare gli impulsi ma solamente ripeterli tali e quali.

L'unica cosa da sapere è che quando c'è un inpulso, in realtà per tutta la durata logica dell'impulso, viene fatto lampeggiare il led trasmettitore ad infrarossi con una frequenza di 38Khz.



La trasmissione a 38Khz serve al ricevitore per capire se quello che sta ricevendo è rumole (es: luce del sole) o è veramente la trasmissione dati.

Il ricevitore infatti è un aggeggino che amplifica il segnale lo amplifica con guadagno variabile, e filtra solo la frequenza di 38Khz. Se trova qualcosa tira fuori un bel '1' logico.

Per fare un repeater, basta modulare a 38Khz il led ad infrarossi quando il ricevitore rileva il segnale in ingresso.


SOLUZIONE DELLO 'SBORONE'

Si lo so, ho esagerato; ma avevo gia tutto pronto, non ho dovuto fare neppure una saldatura, solo un po di software per il PIC.

Il ricevitore IR viene letto dal PIC che accende a 38Khz il led trasmettitore, fine!



La mia scheda aveva un PIC 18F1330, ma qualunque PIC va bene. Spero di non aver fatto errori nel copia, incolla, e adatta del codice:

#include <timers.h>
#include "main.h"

#pragma config OSC = INTIO2
#pragma config WDT = OFF
#pragma config BOR = OFF
#pragma config DEBUG = ON

unsigned char irState = 0;

// *************************************
#pragma code
#pragma interrupt Timer0_Interrupt
void Timer0_Interrupt(void)
{
    unsigned char ir = 0;

    INTCONbits.TMR0IF = 0;
    TMR0L = 166;    //    WriteTimer0(int);

    ir = RX_IR;
    if(ir == 1) {
        TX_IR=0;        
        LED_GIALLO = 0;        
        return;
    }
            
    LED_GIALLO = 1;
    if(irState == 0) {    // impulsi 
        TX_IR=0;
        irState = 1;            
    } else {
        TX_IR=1;
        irState = 0;        
    }
}

#pragma code _HIGH_INTERRUPT_VECTOR = 0x000008
void _high_ISR (void)
{
    _asm
        goto Timer0_Interrupt
    _endasm
}

// *************************************
void main(void)
{
    OSCCON  = 0b01110000; // internal 8 MHz clock
    OSCTUNE = 0b01000000; // PLL enabled, 8Mhz x 4 PLL = 32Mhz

    ADCON1 = 0x0F;    // PORTA all digital operation
    TRISA = 0x10;    //  ---4|----=in, 765-|3210=out
    TRISB = 0x00;    //  ----|----=in, 7654|3210=out

    OpenTimer0(TIMER_INT_ON &    // interrupt enable
               T0_8BIT &        // Timer0 in 8-bit mode
               T0_SOURCE_INT &    // internal clock source
               T0_PS_1_1);        // 1:1 prescaler
    RCONbits.IPEN = 1;            // enable interrupt priority levels
    INTCONbits.GIEH = 1;        // enable all high priority interrupts
//    INTCONbits.TMR0IE = 1;        // enable timer0 interrupt overflow

    while(1)  { }
}


SOLUZIONE 'SMART'

In rete ho trovato questo schema, che non ho ancora verificato, ma in teoria è corretto.

Al posto del PIC un bel 555 che oscilla a 38Khz

I transistor non sono critici, il primo serve solo per invertire la logica, il secondo per dare  corrente al led.

La resistenza da 39ohm va bene se dovete fare un telecomando che deve trasmettere lontano. Per un repeater dove il led trasmettitore viene messo vicino al ricevitore, se non addirittura appicicato davanti, tutta quella potenza non serve.

Nel mio schema c'è una resistenza da 100ohm e vi assicuro che funziona a 40cm senza problemi.

L'unica cosa da essere certi è che la frequenza generata da 555 sia 38Khz, al limite modificare la resistenza da 89Kohm.

© 2011 Luca Moreschi. All Rights Reserved