Control de aparatos eléctricos con mando a distancia

 

Descripción general del proyecto

Análisis de las señales que genera el mando

Descripción del programa del PIC

Descripción del esquema eléctrico

Creación de las placas

Problemas

Vídeo/Fotos del proyecto ejecutado

 

Descripción general del proyecto:

Con un mando a distancia de una televisión vieja, un receptor de infrarrojos de esa misma televisión, y dos microcontroladores PIC 16F818 controlamos las luces y aparatos eléctricos de un local (12 en total). 

Al accionar una de las teclas del mando enviamos una señal luminosa al receptor y éste manda señales eléctricas al PIC que las descodifica y actúa sobre unos relés que accionan las luces y demás aparatos de un local. También podemos accionar esas luces y aparatos con un cuadro de pulsadores. 

Al pulsar un pulsador o un botón del mando, el PIC manda un '1' lógico a un circuito integrado (ULN2003) que suministra la corriente que necesitan los relés para funcionar. Ese '1' se mantiene hasta que se vuelve a pulsar el mismo botón del mando o pulsador, enviándose entonces '0' lógico. Cuando un relé está activado, también se enciende un diodo LED que indica que ese relé está activo. Existen 2 pulsadores y botones del mando que sólo hacen que se active el relé mientras se mantenga pulsado y vuelva al estado de reposo cuando se deje de presionar. 

Hemos diseñado dos placas, una de control (donde están los PIC y los elementos que necesitan para funcionar, tal como 2 cristales de 4MHz, varias resistencias, condensadores, etc., además de los pulsadores y resistencias de  pull-down) y otra de potencia (donde están los relés, los ULN2003, los LED de indicación y las salidas de 220V). Para unir las dos placas utilizaremos un cable plano de 20 pines. 

Las entradas del PIC RA4, RB1, RA3, RB2, RA2 y RB3 corresponden a las salidas RA1, RA0, RB7, RB6, RB5 y RB4, respectivamente. La entrada de la señal de infrarrojos (y de interrupción externa) es RB0.

 

Análisis de las señales que genera el mando:

Cuando pulsamos cualquier tecla de nuestro mando a distancia se genera un tren de pulsos. Cada tecla genera un tren diferente pero con una misma estructura, es decir, suelen tener una cabecera común para todos los botones, unos pulsos donde lleva realmente la información que diferencia a cada botón y en ocasiones una terminación también común.

En el caso del mando utilizado por nosotros, la estructura era la siguiente: 16 bits de cabecera, 8 bits con el código correspondiente a cada botón y 8 bits con este código pero complementado.

En la siguiente imagen se puede ver la onda generada por el botón 1 de nuestro mando:

Primero tenemos un espacio, luego un pulso y de nuevo un espacio. A partir de ahí empieza nuestra cabecera. Nosotros hemos tomado como 1 bit el conjunto formado por un pulso seguido de un espacio. Así, un pulso estrecho seguido de un espacio corresponde a un '0' lógico y un pulso ancho seguido de un espacio corresponde a un '1'. De esta manera, con este botón el mando emite 00000000 11111111 00000000 11111111. La cabecera consta de 8 ceros y 8 unos, y entonces empieza la identificación del botón, 8 ceros en este caso y luego complementado, 8 unos.

En la siguiente imagen se puede ver la onda generada por el botón 2:

Este botón emite 00000000 11111111 11000000 00111111. La cabecera es la misma, y los otros 16 bits llevan la identificación del botón y su complementario.

Para obtener el tren de ondas que genera cada botón, hemos utilizado el programa "logic", escrito en C, que 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 (programa descargado de la página http://www.fortunecity.es/arcoiris/tarot/572/mandos.html).

Otra información importante, es el tiempo que dura un pulso y un espacio, para poder identificar en nuestro programa si lo que hemos recibido es un '1' ó un '0'. En nuestro caso, un '1' dura 2'25 mseg y un '0' dura 1'13 mseg.

 

Descripción del programa del PIC:

El programa que va incluido en cada uno de los microcontroladores PIC hace lo siguiente: en un bucle principal se comprueba si se ha pulsado algún pulsador, y si es así, se va a la subrutina correspondiente, donde se cambia el valor que había en ese momento en el registro de ese pulsador (si estaba a '0' pasa a '1' y viceversa). Si no se ha pulsado ningún pulsador se vuelve al principio del bucle principal donde se actualizan las salidas por si ha habido algún cambio. En el caso en el que se reciba una señal de infrarrojos a través del detector, se produce una interrupción y se descodifica esa señal. Nuestro mando a distancia genera cada vez que apretamos a un botón una señal formada por una cabecera de 16 bits y un código de 16 bits. Lo primero que hacemos es ver si la cabecera corresponde con la de nuestro mando, y si es así, pasamos a comparar el código que viene después. Si el resultado de la comparación es positivo, hacemos que cambie el valor del registro asociado a ese botón. Una vez se ha acabado la señal, se regresa de la interrupción al programa principal donde se vuelven a actualizar las salidas. En uno de los PIC, dos registros no cambian de valor sino que se mantienen a '1' mientras esté pulsado el pulsador o el botón del mando correspondiente y vuelven a '0' al soltar. Así podemos controlar cada una de las salidas con el mando a distancia y con pulsadores.

Código fuente programado en los 2 PICs (comentado):

    PIC 1

    PIC 2

 

Descripción del esquema eléctrico:

El esquema eléctrico es muy sencillo. En una de las placas se encuentran los dos PICs con sus correspondientes relojes de cuarzo de 4 MHz. También tenemos en esta placa 12 bornas a tornillo a las que irán conectados los pulsadores (cuando accionas un pulsador metemos un '1' a la patilla correspondiente del PIC). Así utilizamos 6 pines de cada PIC como entrada, y como salida los otros 6 sobrantes. Cuando alguna de las salidas tenga un '1', accionará un relé de la otra placa a través de un cable de banda plana de 20 pines. Como la corriente de salida que puede suministrar el PIC no es muy elevada, necesitamos un circuito que nos la suministre. Para ello tenemos el circuito integrado ULN2003 que actúa como drenaje, por lo tanto cuando le llegue por una entrada un '1', en la salida asociada habrá 0 voltios (inversor). Este circuito integrado lleva en su interior un diodo en antiparalelo por lo que ya no hay que ponerlo en la bobina del relé. En la siguiente imagen podemos ver uno de los dos circuitos que forman el sistema. El otro circuito es idéntico, tan solo cambia que dos relés invierten el sentido de giro del motor de la persiana.

Cada relé activa un aparato eléctrico diferente que funciona a 220V, excepto 2 relés que lo que hacen es cambiar la polaridad de la alimentación de un motor de elevalunas eléctrico de un coche para subir y bajar una persiana:

En paralelo a cada bobina del relé, ponemos un diodo LED con su correspondiente resistencia que limita la corriente para poder visualizar en cada momento qué relé está activado, y por lo tanto, qué aparato eléctrico está en funcionamiento. Los contactos de los relés se unen con los aparatos eléctricos con bornas a tornillo.

 

Creación de las placas:

Para la creación de las placas hemos utilizado el programa "Eagle". Primero hemos creado los esquemáticos de las 2 placas y después lo hemos pasado a "board". Para la unión de los componentes no es muy recomendable utilizar el "autorouter" a no ser que sea un circuito muy simple. En nuestro caso lo hemos ruteado a mano ya que queríamos placas de una sola cara y el modo automático no daba buenos resultados. Las placas las hemos creado con una máquina de control numérico de la Politécnica de Teruel.

Estos son los esquemas finales de nuestras placas:

 

Problemas:

Nos han surgido varios problemas después de montar el sistema y probarlo. Al accionar los fluorescentes se bloqueaban los PIC y había que resetearlos. Para evitarlo, cambiamos los cebadores ya que eran bastante viejos y creaban muchos apagados y encendidos en el inicio de la iluminación. También soldamos condensadores cerámicos de 100nF en las patillas de alimentación de los PIC, para que los posibles picos de tensión que llegaran hasta allí se vieran reducidos lo máximo posible. Además, soldamos condensadores electrolíticos de 100μF en las bornas a tornillo adonde llegan las alimentaciones, para reducir los picos.

Hemos puesto un pulsador lejos de la caja de pulsadores unido a ésta a través de cable de teléfono, y muy a menudo se encendía sola la bombilla que queríamos controlar. Para solucionarlo, soldamos también un condensador cerámico de 100nF en paralelo al pulsador y así evitamos problemas de ruido.

Debido a que algunos aparatos eléctricos que controlamos necesitan mucha corriente, cuando son accionados vemos que en los terminales de los relés se crean arcos, y en ocasiones esto provoca que se accionen otros aparatos. Para evitar esto, soldamos en paralelo a los pines del relé que accionan este aparato un condensador de poliéster de 1μF y  400V para que reduzca estos picos.

 

Vídeo/Fotos del proyecto ejecutado:
 

 

Agradecimientos a:   

Juan Menéndez Blanco http://www.fortunecity.es/arcoiris/tarot/572/mandos.html
  Carlos Díaz http://www.electron.es.vg
 

 

Libro de Visitas

Pablo Martínez Rochela
papolero@gmail.com
Teruel, España
Agosto 2006