Hola a Todos.

Hoy les comparto el diseño de un circuito bastante util, el Receptor de Señales de Control Remoto o Mando a Distancia.

Receptor de Señal Infrarroja - Control Remoto


La verdad este es un trabajo un poco extenso, debido a que primero es necesario decodificar las señales de cada una de las teclas. Por suerte existe una página en donde es posible encontrar las señales de Controles Remotos conocidos. Primero voy a mostrarles el proceso de obtención de las señales de un Control o Mando, para luego analizar el protocolo. Más adelante podrán ver el enlace con los códigos de los controles más populares.

Primero, para capturar las señales provenientes del control o mando en el PC se requiere de un Receptor Infrarrojo. Existen algunos que vienen con las Tarjetas de Televisión para PC, que más o menos se encuentran en este estilo:

control remoto


Estos receptores constan de un Fotoreceptor o Fotodiodo y se conectan en la entrada de Micrófono de la Tarjeta de Sonido del PC, y son capaces de detectar los pequeños niveles de voltaje producidos por el fotodiodo.

Si no tienes un receptor de este tipo, no hay problema, puedes fabricar tu propio receptor con un fotodiodo barato y corriente, y un cable adaptador de micrófono como el de la imagen anterior:

microcontrolador


El proceso de conexon es bastante sencillo. Simplemente se conecta el fotodiodo en vez del micrófono. Si tienes un micrófono que no te sirva puedes hacer la siguiente conexión:

pics


Donde la resistencia puede tomar el valor de 1 KΩ. A mi me funciona sin Resistencia, aunque es recomendable colocarla debido a un posible nivel de voltaje elevado.

Ahora si, una vez que disponemos de nuestro Receptor Infrarrojo, podemos empezar a visualizar las señales del Control capturadas con el receptor infrarojo mediante un Software Editor de Audio. En mi caso los códigos de las teclas los he visualizado con el programa GoldWave, que descargué de este enlace:

http://www.taringa.net/posts/downloads/953936/GoldWave-v5_22-_-Keygen.html

Los pasos iniciales para la grabación de los comandos son:

1. Al abrir el programa seleccionar el Dispositivo de Grabación que corresponde al Micrófono de la Tarjeta de Sonido (Option -> Control Properties -> Device), ya que en algunos casos está seleccionado por defecto otro dispositivo (como en mi caso que estaba seleccionado el Micrófono de mi WebCam USB).

receptor infrarojo


2. Para iniciar una nueva grabación dar clic en New ó File -> New. Alli aparecerá un cuadro para seleccionar el número de canales, la velocidad de muestreo y la calidad de la grabación. Por lo general selecciono 2 Channel (Stereo) y Presets seleccionar una buena calidad, por lo general escojo DVD Quality, con un Sampling Rate de 96000.

Receptor de Señal Infrarroja - Control Remoto


3. Iniciar la grabación con el botón Rec (Círculo Rojo).

En este caso he utilizado un Control Remoto de un Televisor Sony Bravia. La señal a continuación corresponde a la tecla Volumen -. Haciendo un Zoom se aprecia mejor la señal obtenida:

control remoto


Aqui viene la parte interesante de este asunto. Si se observa detenidamente, esta señal obtenida corresponde al siguiente tren de pulsos, que en efecto, según el Protocolo Sony SIRC corresponde a la tecla Volumen -:

microcontrolador


La imagen muestra un tren de pulsos, que representan señales binarias de 1 y 0. La señal consiste en un pulso ancho al inicio de duracion 2.4 ms y un espacio de 0.6 ms que corresponde al Start, una serie de 7 bits que corresponden al Comando de la Tecla, y los ultimos 5 bits la Dirección, o el tipo de Control (TV, VCR, DVD, etc). Los símbolos 1 se representan con un pulso de 1.2 ms y un espacio de 0.6 ms, y los O con un pulso de 0.6 ms y un espacio de 0.6 ms, tal y como se aprecia a continuación:

pics


Como se alcanza a ver en la anterior imagen, los pulsos contienen una portadora de mayor frecuencia. Esta portadora para los controles Sony es de 40 kHz, y se modula con PWM (Pulse Width Modulation, Modulación por Ancho de Pulso), con un valor de Ciclo Útil (Duty Cycle) de 1/4 o 1/3.

En este enlace se encuentra la información correspondiente al protocolo Sony y otros protocolos de Control Remoto:

http://www.sbprojects.com/knowledge/ir/sirc.htm

Listo, este tipo de señales son las que se deben procesar en el Microcontrolador, primero obteniendola y luiego, de acuerdo a la tecla presionada, ejecutar una función. Para obtener esta señal y enviarsela al Microcontrolador se requiere de otro Fotodiodo, debido a que como se vió anteriormente, los pulsos contienen una portadora de 40 kHz, el Fotoreceptor debe ser capaz de detectar esta frecuencia, y producir una salida de un filtro el pulso conformado. En el mercado se encuentran múltiples receptores baratos, como los del tipo TSOP17XX, donde las "XX" representan el valor de la frecuencia de corte. En este caso nos servirá un TSOP1740:

receptor infrarojo


Aqui hay que aclarar algo: a la salida del TSOP17XX se obtiene la señal del control remoto invertida, por lo que es necesario para mejor manipulación de la señal en el Microcontrolador invertir la señal a la salida del TSOP17xx y obtener la señal original. La conexión para invertir la señal es muy elemental (La imagen del inverson que usé ha sido borrada del host, recomiendo usar un inversor simple basado en un transistor NPN o PNP, si mal no recuerdo el que habia usado estaba basado en un transistor 2N3906).

Receptor de Señal Infrarroja - Control Remoto


En este caso la señal de salida se dirige hacia uno de los puerto del Microcontrolador, pero eso es decisión de cada uno por cual puerto se desea recibir la señal, dependiendo de las caracteristicas y limitaciones del Microcontrolador.

Finalmente, voy a explicar brevemente la forma de como manipular la señal de salida correspondiente al tren de pulsos en el Microrontrolador. Para ello es necesario entender en funcionamiento de las Interrupciones Externas y los Timers o Temporizadores. El objetivo es detectar los bits correspondientes al Comando, ya que si se trabaja con un mismo Control o Mando, la parte de Dirección no nos interesa demasiado.

Primero, se activan las Interrupciones Externas por Flanco Ascendente a traves del Puerto B0, y una vez que se ha detectado el primer Flanco Ascendente del Start, calcular la duración para asegurarse que es el Start, y después de allí empezar a almacenar los demás bits en una variable. Los demás bits también se pueden detectar con las misma interrupción con Flanco Ascendente, y se hace un Ciclo: si la duración entre Flancos Ascendentes está alrededor de 1800 ms es un 1, y si está alrededor de 1200 ms es un 0. Es necesario tener un rango alrededor del valor nominal, debido a la posible falta de precision de las medidas.

Una vez almacenados los bits del Comando en una variable, se comparan con un Registro almacenado en el Microcontrolador con los códigos de todas las teclas, para compararlos y determinar internamente la tecla presionada. Conociendo la tecla que se ha presionado se puede ejecutar la accion que se desee, ya sea encender un LED, mover un Motor, desplegarla en un Display LCD, u otro tipo de función que el usuario desee.

Saludos.

Fuentes:

http://www.sbprojects.com/knowledge/ir/ir.htm
http://www.comunidadelectronicos.com/proyectos/infrarrojos.htm
http://www.rentron.com/Micro-Bot/IR_Serial.htm

Exitos.