Artículo anterior Enlaces de interés Página inicial Acerca del autor Artículo siguiente

 

MANDOS A DISTANCIA
POR INFRARROJOS

 

        Probablemente los botones más frecuentemente pulsados en cualquier casa son los del mando a distancia de la televisión. Está claro que los mandos por infrarrojos han sido una revolución. Cada día más aparatos incluyen uno: televisores, aparatos de vídeo, cadenas musicales, coches, sistemas de alarma... Controlar algo con sólo apretar un botón y sin moverse del sitio supone mucha comodidad, pero también más eficiencia: no tenemos que buscar la cerradura del coche a oscuras, no tenemos que dejar lo que estemos haciendo para cambiar la canción que está sonando, podemos detener instantáneamente la grabación de una película cuando comienza la publicidad, etc.

        Sin embargo, no todo tiene mando a distancia. Seguramente en alguna ocasión hemos echado de menos el tener uno de esos pequeños chismes para controlar algo en concreto. En este artículo explicaré cómo podemos aprovechar un viejo mando a distancia por infrarrojos para actuar sobre cualquier aparato que se nos ocurra.

 

¿CÓMO ES LA SEÑAL ENVIADA POR UN MANDO A DISTANCIA?

        Cuando apretamos un botón en nuestro mando un LED (Diodo Emisor de Luz) infrarrojo emite unos rápidos destellos a una frecuencia de 40 KHz, normalmente (¡el   LED se enciende y apaga 40000 veces por segundo!). Esa es la señal portadora sobre la que van modulados los pulsos que transmiten información. Así, la señal enviada consiste en pulsos de información, siendo cada uno de ellos una onda cuadrada de 40 KHz. El circuito receptor posee un filtro pasa-banda que sólo deja pasar señales a una frecuencia de 40 KHz. De este modo se logra una cierta inmunidad a otras fuentes de luz perturbadoras, como el Sol o ciertas lámparas.

        Podemos observar las señales enviadas por un mando a distancia utilizando nuestro PC. Para ello necesitamos un receptor de infrarrojos compuesto por un sensor fotoeléctrico, un circuito amplificador, un filtro pasa-banda, un circuito modulador que elimine la frecuencia de 40 KHz y un comparador o disparador de Schmitt que proporcione una salida digital con unos niveles de tensión adecuados. Afortunadamente, en las tiendas de electrónica tenemos todo lo anterior integrado en componentes de tamaño menor al de un terrón de azúcar y de bajo precio. Uno de estos receptores integrados es el SHARP GP1U58, cuyo diagrama de conexiones muestro a continuación.

sharp.jpg (5774 bytes)
Módulo receptor de infrarrojos SHARP GP1U58

        También podemos encontrar receptores de este tipo en cualquier aparato de vídeo o televisión. Una vez obtenido, lo único que tenemos que hacer es alimentar el componente con una tensión de 5 voltios. En su salida tendremos unos niveles lógicos TTL invertidos, es decir, 0 voltios durante un pulso y 5 voltios en ausencia de él. Esta salida puede ir conectada directamente a alguno de los bits de entrada presentes en el puerto paralelo del ordenador para ser analizada y procesada por un programa. El sencillo programa logic, escrito en C, muestrea continuamente la señal presente en el pin 15 del puerto paralelo LPT1 y la representa en pantalla, a modo de un analizador lógico. Con él podemos observar las señales emitidas por los mandos a distancia. Estas señales tendrán un aspecto como el siguiente:

 

mando1.jpg (4741 bytes)

Señal emitida por un mando a distancia "Panasonic", al pulsar el botón "1".


        Los pulsos pequeños tienen una duración aproximada de 0.6 ms. La señal completa dura unos 50 ms.
        Esta secuencia contiene la información que identifica el botón pulsado. Veamos cómo puede estar codificada ésta. Si bien es cierto que existen códigos estandarizados para el control de electrodomésticos por infrarrojos, la verdad es que nunca he visto un transmisor que se ciña a ellos. El RC5 es un tipo de código "bifase" parecido al que utilizan las tarjetas magnéticas, mientras que el RECS 80 codifica los bits según la distancia entre pulsos. En el caso del RC5, los espacios tienen una duración doble que los pulsos, luego la señal mostrada arriba no puede seguir este sistema (visita la web RC5 description para conocer este sistema). En el caso del RECS 80, los espacios sólo pueden tener una duración doble o triple que la de los pulsos. En la señal anterior vemos espacios con la misma duración que un pulso: el código no es RECS 80.
        Sin embargo, por la forma de onda, todo parece indicar que se trata de un sistema de codificación por distancia entre pulsos, como el RECS 80. En este último, un "1" lógico viene representado por un pulso de duración "T" seguido por un espacio de duración "3T", y un "0" se representa por un pulso de duración "T" seguido por un espacio de duración "2T". Probaremos a interpretar la señal anterior de la misma forma, pero con el cero representado por un pulso de duración "T" (0.6 ms), seguido por un espacio de duración "T" (aproximadamente), como indica la siguiente figura:

mando2.jpg (6212 bytes)

        Además, interpretaremos el primer pulso y espacio largos, de duración "4T" cada uno, como una indicación de "comienzo de transmisión" que no aporta información útil. El último pulso será de parada y no indica el comienzo de un nuevo bit. De esta manera, la señal será:

0100000000010111111111

        Analizando de la misma manera las señales enviadas por los demás botones, he podido observar que los datos tienen la siguiente forma:

01000 XXXXXX 10111 YYYYYY

        Donde "XXXXXX" representa un número de 6 bits que identifica el botón pulsado y "YYYYYY" representa el mismo número complementado, es decir, cambiando los unos por ceros y viceversa. El enviar información redundante es la mejor forma de detectar errores en la transmisión.
        Como ejemplo comparativo, ésta es la señal enviada por el mando de una cadena musical "Kenwood", del que más adelante mostraré una interesante aplicación:

00011101 XX000000 YYYYYYYY ZZZZZZZZ

        "YYYYYYYY" es un número de 8 bits, y "ZZZZZZZZ" su complemento. "XX" son dos bits que identifican algún tipo de función. El sistema de codificación de los bits también se basa en la distancia entre pulsos.

 

CONSTRUIR UN RECEPTOR


        Una vez que hemos averiguado cómo envía los datos nuestro mando a distancia, podemos hacer un receptor "a medida". Por ejemplo, el programa en Turbo Pascal panasonic_pascal lee la señal recibida a través del pin 15 del puerto LPT1 (que deberá estar conectado a un receptor como indiqué arriba), realiza las comparaciones necesarias para la verificación de los datos e identifica el número de botón pulsado, todo ello para el modelo de mando que he utilizado arriba. No es difícil modificar el programa para que reconozca la señal de cualquier otro modelo, siempre que sepamos cómo es dicha señal.
        Pero lo que nos interesa es poder controlar cualquier aparato, no sólo un programa de ordenador. Para ello debemos recurrir a un microcontrolador. Una buena elección es, por supuesto, el PIC 16F84 de Microchip: es barato, pequeño y fácil de programar. Con unos pocos componentes tendremos nuestro circuito receptor y decodificador de infrarrojos.
        En el programa panasonic, escrito para el ensamblador MPASM de Microchip, muestro un algoritmo para leer, verificar y enviar en serie los comandos procedentes del mando a distancia del que he hablado arriba. La entrada al PIC de la señal se realiza a través de la puerta B0, que tiene la particularidad de poder generar una interrupción, la cual desvía la atención del microcontrolador para recibir la información entrante.
        Una aplicación mucho más útil es la que presento a continuación. Se trata de controlar un reproductor de CD's portátil "Panasonic" desde el mismo mando a distancia que gobierna un equipo musical "Kenwood". Los botones que utilizo en el mando a distancia (y que ahora pasarán a ser: "retroceder", "avanzar" y "avance/pausa") no son habitualmente necesarios para el manejo de la cadena musical. El discman puede ser dirigido normalmente desde un mando situado en el cable de los auriculares, con lo que el circuito tendrá que recibir las señales infrarrojas y dar una salida equivalente a la que daría el mando original. El circuito para realizar todo esto es el siguiente:

kenwood.jpg (31662 bytes)


        La entrada de la señal es a través de la puerta PORTB0, que producirá internamente una interrupción. Las salidas son RA0, RA1 Y RA2. La señal de salida al discman se produce al poner a masa, a través de la resistencia adecuada y durante unas centésimas de segundo, uno de los contactos del jack de los auriculares (que es de 4 contactos). El software que controla el PIC es kenwood (sobre el propio código he comentado la función de cada instrucción).

        Con un poco de imaginación encontraremos multitud de cosas para las que estaría bien tener un control remoto por infrarrojos. En la página de Universal Infrared Receiver se detalla el funcionamiento y construcción de un receptor de infrarrojos (código RC5) que envía los comandos detectados a un PC, vía RS323. Hay dos versiones del circuito: una utiliza el pequeño PIC 12C508 y la otra nuestro 16F84. Mi actual proyecto es controlar todo mi observatorio astronómico (cúpula, telescopio y ordenador) desde un único mando a distancia recuperado de un viejo aparato de vídeo. El diseño es parecido al anterior, pero en este caso unas salidas del PIC activan relés (excitados por transistores), otras   integrados TTL y otras están conectadas al puerto paralelo de un PC.  De verdad: me encanta este chip.

 

JMB 19-12-2000
juanmb@bigfoot.com

Artículo anterior Subir Artículo siguiente