Diseño y construcción de un Sistema de Control Remoto Infrarojo

Se plantea la construcción de un sistema de control remoto (CR) infrarojo (IR) para su utilización en proyectos de arte electrónico en particular y de mecatrónica en general.

El ejemplo que se muestra está basado en Arduino (www.arduino.cc ) pudiéndose perfectamente utilizar la versión de bajo costo vista en clase. También el proyecto es fácilmente adaptable a cualquier otro microcontrolador o a proyectos resueltos con electrónica discreta sin microcontroladores.

Controles remotos infrarrojos - Introducción

Las emisiones infrarojas son especialmente adecuadas para el control remoto por ser invisibles, inocuas y fácilmente generables mediante LEDs IR. Prueba de ello es su presencia en prácticamente todos los dispositivos de audio, video y TV ofrecidos en el mercado.

Precisamente, es esta profusión de dispositivos la que nos obligará a codificar de algún modo nuestro sistema para que sea inmune a disparos no deseados provocados por otros controles, así como a las emisiones infrarojas de objetos luminosos y calientes en general.

Deben distinguirse entonces dos clases de codificación. En primer lugar la señal IR debe ser MODULADA, es decir que se la enciende y apaga a una frecuencia determinada para poder diferenciar la señal válida de todas las emisiones infrarojas existentes en el ambiente, las que generalmente serán contínuas, o de frecuencia aleatoria. Nuestra señal, en cambio, será modulada a una frecuencia fija de 38 Khz, habitual en la mayoría de los sistemas de control remoto.

Una vez generada esta señal de 38 Khz, que llamaremos PORTADORA (carrier), será necesario emitirla e interrumpirla en lapsos pre-establecidos de antemano para enviar o recibir comandos que el receptor pueda entender.

Si todo el proceso anterior no resulta claro, podemos pensarlo con el siguiente ejemplo: supongamos que pactamos con un amigo hacer una transmisión nocturna lumínica de terraza a terraza usando una linterna. Para poder identificar la luz de nuestro amigo dentro de las decenas de luces nocturnas, pactamos que su linterna no será de luz fija sino que cada vez que la encienda, la lámara destellará intermitentemente a una cierta frecuencia, por ejemplo 5 veces por segundo. Está será nuestra portadora ( de 5 Hz en este caso).

A su vez debemos pactar un cierto código para poder enviar los mensajes. Por ejemplo, podriamos pactar el código morse, de modo que "encender un tiempo corto-apagar" puede tener un significado simbólico (PUNTO) y "encender un tiempo largo-apagar" tener otro significado (RAYA). Con distintas combinaciones de punto y raya podríamos codificar todo el alfabeto.

Los sistemas de control remoto hacen precisamente eso, no con el código morse, pero sí codificando la duración de los tiempos de encendido-apagado de la señal previamente modulada (intermitente) a 36, 38 o 40Khz. Cada fabricante de control remoto establece sus frecuencias de portadora y sus tiempos de duración y códigos, siendo los más comunes los de Philips, Panasonic y Sony, entre otros.

Ejemplo de códigos habituales:

Diseño del Receptor

Afortunadamente existen algunos recursos que facilitan nuestra tarea. En primer lugar utilizaremos un sensor diseñado especialmente para esta función, que detecta automáticamente la portadora -de 38 Khz en este caso- y ofrece una salida digital (ON) ante su presencia.

Se trata del IRM8601S un circuito integrado de sólo tres pines (dos de alimentación y uno de salida) cuyo aspecto, dimensiones y pinout pueden verse en la imagen:

Este CI resulta muy fácil de conectara un microcontrolador (uC), requiriendo sólo de un par de resistencias y un capacitor para constituir un filtro RC, que debe montarse lo más cerca posible del los pines del IC, según el siguiente esquema, tomado de la Hoja de datos del integrado:

Esquema del 8601

En la imagen puede verse también el valor que tendrá el pin de salida, según la presencia o ausencia de señal infraroja modulada en el ambiente.

Transmisor

Con la configuración vista del receptor estaríamos ya en condiciones de detectar la señal de muchos de los controles remotos de electrodomésticos varios, incluyendo los One-for-all y similares.

Con algo de paciencia -y la ayuda de páginas como http://www.educypedia.be/electronics/televisionrc5.htm o http://educypedia.karadimov.info/electronics/televisionrc5.htm - es posible decodificar los comandos enviados por estos controles lo que puede resultar muy útil en muchos proyectos en donde necesitamos comandar manualmente un dispositivo (o el Arduino) de modo similar a un TV.

Si bien este es el modo más sencillo de resover la transmisión, puede no ser adecuado si necesita que el control se haga desde un dispositivo diferente al típico control de TV. Por ejemplo si queremos hacerlo desde un dispositvo pequeño y de pocos botones, desde otro Arduino, etc. 

Asimismo nuestro dispositivo controlado será susceptible de recibir interferencias -voluntarias o no- desde controles remotos de otros dispositivos, lo que en muchos casos puede ser un inconveniente grave.

Un diseño más elaborado

Para disponer de un dispositivo con más posibilidades, diseñamos nuestro propio transmisor, de un tamaño pequeño, con posibilidad de conectarlo a su vez a otros dispositivosy fundamentalmente incluyendo un codificador que nos brinde protección contra señales ajenas. Obviamente se hace necesario el rediseño del receptor, para que incluya la adecuada decodificación concordante con el transmisor

Transmisor

El transmisor se plantea a partir del integrado HT12A de Holtek (ver datasheet) que incluye varias facilidades:

El circuito propuesto es el siguiente:

El cristal es de 455 Khz, de perfil bajo y su resistencia es de 10 MOhms. Los 4 botones son microswitch y el transistor es un NPN de uso general. Se ha elegido un LED IR L53F3BT (ver datasheet) por presentar su mayor intensidad de radiación en la la longitud de onda de los 940nm, punto de mayor sensibilidad del receptor IRM8601  

Las líneas de direccionamiento (A0-A7) permiten configurar la dirección deseada para nuestro dispositivo, pudiendo dejarse todas desconectadas (float) para las pruebas iniciales. No olvidar que en el receptor debe repetirse la configuración de dirección que se disponga aquí.

El aspecto del transmisor terminado, con un lay-out adecuado para incluir en un case de control remoto de los del tipo llavero de alarma para automóviles:

La alimentación se ha resuelto con pilas del tipo botón, para lograr el mayor voltaje posible en el espacio reducido que ofrece el pequeño gabinete.

El nuevo receptor

Este es el esquema del nuevo cicuito receptor propuesto:

 

 A nuestro circuito ya conocido del IRM8601 hemos conectado, mediante un transistor T1, un nuevo circuito integrado, el HT12D de Holtek, (ver datasheet) que es el decodifcador correspondiente al codificador usado en el transmisor. Sólo debemos tener la precaución de configurar, como ya se dijo, las líneas de dirección A0-A7 en concordancia con lo que hagamos en el otro. Para las pruebas conviene dejar todas las lineas desconectadas (float).

Cuando el receptor capte una portadora cuya dirección sea idéntica a la propia, en las 4 líneas de datos (D8-D11) se reproducirá el estado logico de los botones que se hayan presionado en el transmisor. Estas son las líneas que conectaremos a nuestro Arduino para detectar el estado de las mismas y por tanto el/los botones que se han presionado en el transmisor.

Para simplificar la tarea de programación, existe una quinta línea (VT-Valid Transmition) que se pondrá en estado lógico alto (5volts) cada vez que el CI detecte una señal con la dirección correcta y se mantendrá en ese estado hasta que la misma desaparezca.

Este es el modelo terminado del receptor propuesto:

.

En los siguientes videos puede verse el conjunto trabajando:

El sistema de CR IR accionando el par de servos de dirección de un robot móvil