Вы находитесь на странице: 1из 4

Emisor - Receptor de infrarojos con PIC

Antes que nada,  hay que tener claro el funcionamiento en la


transmisión y recepción por infrarojos. Por un lado, el transmisor genera
dos señales, la señal de control, que es la que lleva la información que
será interpretada por el pic receptor,  y la portadora, con una frecuencia
fija y mucho más alta que hace la función de “canal de la transmisión”.
El receptor de infrarojos solo captará las señales con la frecuencia de la
portadora.

En este proyecto se ha empleado como receptor IR un TSOP 1138, que


capta las señales de 38KHz, por lo tanto, la frecuencia de la portadora
emitida por el emisor debe ser de ese valor.
pulsa en la imagen para ampliarla

Por tanto, para la emisión por infrarojos se van a emplear varias señales
con diferentes frecuencias. Por un lado 3 señales de 200Hz, 100Hz y
60Hz generadas por el PIC en función del pulsador accionado. Por otro
lado la señal de 38KHz que será la portadora de la señal de control,
generada por un NE555.

En el receptor, el detector TSOP1138 demodula la señal eliminando la


portadora y recuperando la señal de control que será interpretada por el
pic receptor.

El pic mide el ancho del semiperiodo alto de la señal de control recibida


y en función de ese valor ejecutará la acción que le corresponda, en este
caso encender un led concreto.

Para generar la señal de control por el pic emisor, la variable


“frecuencia” se carga con un valor concreto en función del pulsador
accionado y por tanto de la frecuencia que se quiere generar. Cada vez
que se produce un rebose del timer0 se ejecuta el bucle por la
interrupción de rebose. En ese bucle se establece el estado en el que
debe estar la salida que ofrece la generación de la señal.

   control_senal++;
     
   if (control_senal<frecuencia) Bit_PWM=1;     
   if (control_senal>frecuencia) Bit_PWM=0;
   if (control_senal>=(2*frecuencia))   control_senal=0;

Generada la señal de control, esta se modula con la portadora, es decir,


cada semiperiodo en estado alto de la señal de control se transformará
en un tren de impulsos de 38KHz de una duracion correspondiente al
semiperiodo.

[+/-] Ver / Ocultar programa emisor completo en C

Ahora el receptor debe captar esta señal. El receptor infrarojos aquí


empleado dispone internamente de un filtro pasabanda de 38KHz, es
decir, solo leerá las señales a esa frecuencia de ahí el haber empleado
una portadora con ese valor. Por tanto, esos trenes de impulsos los
transformará en pulsos completos con lo que se obtiene la señal de
control generada en el emisor.

Obtenida la señal, el pic receptor debe ahora interpretarla. Para ello


vamos a medir el tiempo del semiperiodo en estado alto de la señal de
control mediente el módulo CCP.

 
   if(cambio==0){                  
      TFS=CCP_2;                   
      setup_ccp2(CCP_CAPTURE_FE); cambio=1
   }
   else {                           
      TFB=CCP_2;                   
      setup_ccp2(CCP_CAPTURE_RE); cambio=0;
                          
      if(nuevopulso==0)            
         nuevopulso=1;             
   }

   if(nuevopulso==1){           
      TF=(TFB-TFS);              
      semiperiodo=TF/1000;      
      nuevopulso=0;   
   }

Y una vez obtenido el valor, se compara con los valores esperados para
decidir la actuación a ejecutar
       if (semiperiodo<3&&semiperiodo>1) verde=verde+1
   if (verde>6)   portb=0x01;       
     
   if (semiperiodo<6&&semiperiodo>3) amarillo=amarillo+1;
   if (amarillo>6) portb=0x02;     
     
   if (semiperiodo<9&&semiperiodo>6) rojo=rojo+1; 
   if (rojo>6) portb=0x04;

Вам также может понравиться