Controlador doméstico

La aplicación de controlador doméstico que se describe en este proyecto es un emisor-receptor de señales X-10, que permite controlar hasta dieciséis dispositivos on/off, usando un cristal líquido de 2x20 y seis pulsadores, la aplicación también permite el control de los dispositivos a través del puerto serie de un ordenador y el envío de comandos on/off y recepción de alarmas a través de mensajes SMS. El esquema básico de la aplicación se muestra en la figura de abajo.

Biblioman

4/17/201021 min read

Los microcontroladores PIC pueden usarse fácilmente en unión con la tecnología X-10 para crear aplicaciones domóticas. El PIC utilizado se debe seleccionar en función de la RAM, ROM, frecuencia de trabajo y periféricos necesarios a la aplicación, todo ello dentro del menor coste posible. Se escogió el PIC 16F877 debido a su flexibilidad como microcontrolador de propósito general, memoria FLASH para el programa (comodidad del desarrollo), memoria EEPROM de datos, implementación de una USART para la comunicación de datos serie y amplio número de entradas y salidas.

Descripción del Hardware:

La funcionalidad del hardware de X-10 puede ser dividida en cuatro bloques funcionales:

  • Detector de paso por cero

  • Detección de la portadora de 120 Khz

  • Generador de señal a 120 Khz

  • Alimentación eléctrica y acoplo de la señal a la red

Una descripción en bloques del controlador doméstico se muestra en la siguiente figura:

Hay varias funciones de la aplicación que no están directamente asociadas con la interfaz X-10. Las funciones de interfaz con el usuario se realizan con un display LCD y cinco pulsadores. Un reloj en tiempo real es creado utilizando el Timer 1 y un oscilador de cristal de cuarzo de 32 Khz. Los datos de control modificados por el usuario como la programación de la hora de encendido y apagado de los dispositivos son almacenados en la memoria EEPROM que incorpora el PIC. Un sensor luminoso y un interruptor de carga están también incluidos en la aplicación.

Detector de paso por cero:

En X-10 la información es enviada cuando la tensión alterna de red pasa por cero. Un detector de paso por cero de la tensión de red se puede crear usando una interrupción externa en el pin RB0 del PIC. Solamente será necesaria una resistencia externa para limitar la corriente por el PIC según se muestra en la figura.

En Europa, Vrms = 230 V y la tensión de pico es de 325 V. Seleccionando una resistencia de 10 MΩ, Ipico = 325/10 MΩ = 32.5 μA, que está dentro de la capacidad de corriente del pin I/O del PIC. Los diodos de protección de entrada (diseñados en los pines de I/O del PIC) recortan cualquier voltaje más alto que VDD ó más bajo que VSS. Por lo tanto, cuándo el voltaje de corriente alterna está en la mitad negativa de su ciclo, el pin RB0 será recortado a Vss -0.6 V. Esto se interpretará como un cero lógico. Cuando el voltaje de C.A sobrepasa el umbral de la entrada, el valor lógico llegará a 1.
En esta aplicación, RB0 es configurado para interrupción externa, y el buffer de entrada es un Trigger Schmitt. Esto hace que el umbral de entrada 0.8VDD = 4V en una periodo creciente y 0.2VDD = 1V en una periodo descendente.

Usando la siguiente ecuación, es posible calcular cuando el pin cambiará de estado al paso por cero:

En un periodo ascendente, RB0 estará a nivel alto alrededor de 39 μs después del paso por cero, y después de un periodo descendente estará a nivel bajo 9.8 μs antes del paso por cero.

Detección de portadora 120 Khz

Para recibir señales en X-10 es necesario detectar la presencia de la señal de 120 Khz en la línea de fuerza de C.A. Esto se consigue con un condensador de acoplamiento, un filtro paso alto, un amplificador sintonizado y un circuito detector.
Los componentes del circuito detector de portadora se muestran en la figura de abajo:

Ya que la impedancia de un condensador es : Xc=1/ 2*Π*f*C a 0.1μF el condensador presenta una impedancia de 13 Ω a la frecuencia de la portadora (120kHz), pero una alta impedancia (31.8 kΩ) a los 50 Hz de la frecuencia de la red. El filtro paso alto permite que la señal de 120KHz pueda ser acoplada sin peligro a los 50Hz de la tensión de red.
La frecuencia de 120kHz de la portadora es mucho más alta que los 50 Hz de la frecuencia de red, es fácil diseñar un filtro RC que deje pasar completamente la señal de 120KHz y atenúe completamente la de 50 Hz. El esquema completo se muestra en la figura 66 del Anexo 1.

Para un simple filtro paso alto los -3db de la frecuencia de corte es: f3dB = 1/(2*Π*R*C). Para C=150 pF y R=33k, f3dB = 1/(2*Π*150pF*33K) = 32 kHz, esta frecuencia asegura que la señal de 50 Hz es completamente atenuada mientras la señal de 120 kHz pasa a las etapas amplificadoras.
La señal de 120 kHz es amplificada usando una serie de amplificadores inversores configurados en alta ganancia.
Las primeras dos etapas sintonizan y amplifican con una respuesta de pico en los 120 kHz. Las próximas dos etapas proporcionan amplificación adicional. La señal amplificada de 120 kHz es pasada por un detector, formado por un diodo, condensador, y resistencia. La salida del detector es pasada por un buffer inversor el cual la presenta en el pin RC3 del PIC 16F877.

Cada vez que la señal de red pase por cero se produce una interrupción, RC3 es simplemente chequeado durante el 1ms de transmisión para ver si la portadora está presente o no. La presencia o ausencia de portadora representa el flujo de unos o de ceros que forman los mensajes en X-10.

Generador de portadora a 120 Khz

X-10 usa modulación a 120 kHz para transmitir información sobre los 50 Hz de la tensión de red. Se podrían generar los 120 kHz de la portadora con un oscilador externo y utilizar una patilla de entrada / salida del PIC para habilitar o deshabilitar la salida del circuito oscilador. Sin embargo, se puede evitar el oscilador externo utilizando uno de los módulos CPP del PIC.
El módulo CCP1 se utiliza en modo PWM para producir una onda cuadrada de 120 kHz con una relación cíclica del 50 %. Ya que X-10 especifica que la frecuencia de la portadora tiene que ser de 120 kHz (+/- de 2 kHz), el oscilador de cristal líquido se escoge de una frecuencia igual a 8MHz para que el CPP genere los 120 kHz establecidos.
Los cálculos de configuración de periodo y relación cíclica de PWM son mostrados en el comentario del código de la función InitPWM.
Después de la inicialización, CCP1 está continuamente habilitado, y el registro TRISC se utiliza como control para tener o no en RCT/CPP los 120kHz. Cuando el registro TRISC está a 1 la patilla es una entrada y los 120 kHz de la señal no están en la salida.
Cuando TRISC está a cero la patilla es una salida y los 120 kHz de la señal se acopla a la tensión de red mediante un transistor amplificador y un condensador, como se muestra en la figura de abajo.

Como la impedancia de un condensador es Xc=1/(2*Π*f*C), un condensador de 0.1 μF presenta una baja impedancia a la frecuencia de la portadora, pero una alta impedancia a los 50Hz de la tensión de red. El filtro paso alto permite que la señal de 120 kHz se acople satisfactoriamente a los 50 Hz de la tensión de red.

Para ser compatible con otra X-10 receptora, el máximo retraso desde el paso por cero al principio de la transmisión X-10 sería de alrededor 300 μs. Ya que el detector de paso por cero tiene un retraso máximo de aproximadamente 39 μs, la micro-instrucción debe tardar menos de 261 μs después de la detección del paso por cero para comenzar la transmisión de la señal de 120 kHz.

Fuente de alimentación

El PIC 16F877 y los demás circuitos que componen este proyecto requieren cinco voltios de alimentación para su funcionamiento, además el controlador X-10 debe también ser capaz de transmitir y recibir datos sobre la línea de corriente alterna, por ello se ha utilizado una fuente de alimentación sin transformador como la que se muestra en la figura de abajo:

Las dos características principales de esta fuente de alimentación es que el neutro de la tensión de red está conectado a la masa del circuito, por tanto no existe aislamiento de la tensión de red y que se tiene una capacidad de corriente limitada pero suficiente para las características de consumo del circuito.
Para proteger el circuito de picos de voltaje de la red, Se conecta entre fase y neutro una VDR (resistencia dependiente del voltaje) de 240V. Una PTC (resistencia de coeficiente de temperatura positivo) actúa como protección limitando la corriente entre el neutro y masa.
La resistencia de 100 Ω limita la corriente en el circuito, y la resistencia de 1.2M proporciona un camino de descarga para el voltaje acumulado en el condensador cuando el circuito está desconectado de la tensión de red. Dos diodos rectifican el voltaje y a través de un condensador de 1000 μF y un diodo Zener de 5.1 V producen los 5 V a la salida.

Interruptor de carga

Un interruptor de carga es incluido en el controlador doméstico para que pueda actuar sobre una lámpara regulable, con su propia dirección de casa y unidad.
Fue seleccionado un TRIAC como interruptor de carga, porque es un interruptor de elevada capacidad y rápido basculamiento lo que lo hace ideal para el control y regulación de lámparas.

Un Triac es un económico componente formado por tres terminales que actúa a una alta velocidad como interruptor bidireccional de C.A. Dos terminales MT1 y MT2, son conectados en serie con la carga. Una pequeña corriente de puerta entre la puerta y MT1 permite que ocurra la conducción entre MT1 y MT2.
El elemento puede pasar de un estado de bloqueo a un régimen de conducción, en los dos sentidos de polarización (cuadrantes 1º y 3º) y volver al estado de bloqueo por inversión de la tensión o por disminución de la corriente por debajo del valor de mantenimiento. Una vez cebado el Triac la corriente de puerta no tiene efecto sobre la conducción del mismo. El Triac se desconectará automáticamente cerca del paso por cero de la tensión de red.

Fue seleccionado el Triac L4008L6 por tener una corriente de puerta pequeña, que puede controlarse directamente desde la patilla ENTRADA/SALIDA del PIC.
El Triac puede controlar la corriente alterna en ambas direcciones, aunque el PIC solo puede presentar voltajes positivos a la puerta.

El circuito empleado se muestra en la figura de abajo:

Modulo LCD

Las dos líneas de 20 caracteres de visualización usan el controlador de display WM-C2002M. Ocho líneas de datos y tres de control son usadas de interfaz para la comunicación con el PIC según se muestra en la figura de abajo:

El software incluye una librería básica que provee las funciones necesarias para controlar este tipo de LCD.

Reloj en tiempo real

Un reloj en tiempo real es implementado utilizando el Timer1 del PIC. El reloj se actualiza usando una rutina llamada UpdateClok. El reloj determina también la tasa de tiempo en que los pulsadores son leídos por medio de una rutina llamada ScanKeys.
Ambas rutinas son explicadas en el apartado dedicado al software.

Pulsadores

Cinco pulsadores son conectados a los pines RB1-RB5, son usados para la interacción del usuario con la aplicación. Cada pulsador estará normalmente abierto, cuando se pulsa pone a la patilla correspondiente a nivel bajo.

Comunicación puerto serie

Debido a los diferentes interfaces eléctricos de comunicación serie del PIC y del puerto serie del ordenador es necesario la utilización de un adaptador de niveles como es el MAX232. En la figura de abajo se muestra el esquema simplificado de la conexión.

Herramientas de depuración

Las patillas RB6 y RB7 del PIC se reservan para el circuito depurador, en este caso se ha utilizado el depurador ICD2 de Microchip, este presenta la ventaja de poder programar el PIC en el propio circuito además de permitir puntos de ruptura en tiempo real, el esquema de conexionado se muestra en la figura de abajo. Una precaución muy importante que hay que tener en cuenta al conectar cualquier herramienta de depuración o equipo de medida es que la masa del equipo no se tiene que conectar, además debemos de comprobar antes de conectar el controlador doméstico que sea el neutro el que va a masa y no la fase, esto lo podemos comprobar con un voltímetro o con un simple busca polos de electricista.

Sonda de medida

Utilizando un divisor de tensión para el canal 2 del osciloscopio y un simple paso alto para el canal 1 es posible visualizar los pulsos de 120 kHz sobre la tensión de red. El esquema de la sonda se muestra en la siguiente figura:

Descripción del Software

En los siguientes apartados se describen resumidamente los programas realizados en Visual Basic y en Ensamblador.

Programa en Visual Basic

Este programa permite las siguientes funciones:

  • Control del encendido y apagado de 16 dispositivos X-10, ampliable hasta 256.

  • La programación de la hora de encendido y apagado de 4 dispositivos simultáneamente.

  • La recepción y visualización de alarmas en el monitor del ordenador de cualquier transmisor conectado a la red.

  • El control de los dispositivos y la recepción de alarmas a través de mensajes SMS.


Para realizar estas funciones el programa utiliza los puertos de comunicación serie COM1 y COM2 del ordenador, pudiéndose seleccionar cualquiera de ellos o utilizar los dos a la vez.
El control a través del ordenador y del teléfono móvil puede funcionar simultáneamente, aunque se puede dejar libre uno de los puertos deshabilitando el control GSM por medio del botón "Desconectar teléfono".

Para establecer la comunicación con los puertos serie del ordenador el programa utiliza dos controles MsComm configurados de la siguiente manera:

  • Velocidad en Baudios: 9600

  • Cantidad de Bits de envío: 8

  • Bit de parada:1

  • Pariedad: Ninguna.


La comunicación entre el ordenador y el controlador doméstico es transparente para el usuario y se ha realizado por medio de caracteres ASCII.
Para el envío de un comando a un dispositivo es necesario como mínimo dos caracteres, el primero puede ser o bien el carácter "+" si queremos poner a "ON" el dispositivo o el carácter "-" si queremos ponerlo a "OFF" y el segundo nos sirve para identificar el dispositivo elegido entre las 256 combinaciones posibles.
Para la recepción de alarmas se ha utilizado el evento OnComm del control MsComm.
El control MsComm proporciona comunicaciones serie para que la aplicación pueda transmitir y recibir datos a través del puerto serie.
El evento OnComm se genera siempre que cambia el valor de la propiedad CommEvent e indica que se ha producido un evento o un error en la comunicación.
Los caracteres de alarma recibidos por el puerto serie conectado al controlador doméstico son almacenados en la variable valor, estos caracteres se van concatenando uno detrás de otro hasta que se encuentra el carácter de salto de línea que índica el fin de la transmisión, una vez recibido el mensaje se
llama a la función alarma que se encarga de visualizar el mensaje de alarma en el monitor.

La comunicación entre el teléfono móvil y el ordenador se realiza por medio de comandos AT, estos comandos son compatibles con todos los modelos de teléfonos móviles.
Nosotros utilizaremos tres de estos comandos:

  • AT+CMGS=? <cr> Comando para el envío de un SMS al nº de teléfono (?)

  • AT+CMGR=? <cr> Comando para la lectura del SMS guardado en la posición nº (?) de la memoria de la tarjeta SIM del teléfono.

  • AT+CMGD=? <cr> Comando para el borrado del SMS guardado en la posición nº (?) de la memoria de la tarjeta SIM del teléfono.


La clave utilizada desde un teléfono remoto para controlar los diferentes dispositivos es la siguiente:

Cada módulo se identifica por medio de una letra mayúscula A,B,C,D, etc. Si queremos encender el dispositivo, la letra irá precedida de la cadena "ON" y si queremos apagarlo irá seguida de la cadena "OFF".

Cada segundo se comprueba si hay algún mensaje guardado en la posición de memoria nº 1 del teléfono, para ello se envía por medio del control MsComm2 el comando "AT+CMGR=1" más el carácter retorno de carro que en visual Basic se representa por "Vbcr".

Si hay algún mensaje guardado se identifica si corresponde con alguna de las claves asignadas a los dispositivos, si la clave es aceptada se guarda en la variable "resultado" para su posterior envío al controlador doméstico y se borra la posición nº1 de memoria del teléfono por medio del comando AT+CMGD=1<Cr>. Si la clave no es aceptada, el mensaje se borra igualmente de esta manera solo se utiliza la posición nº1 de memoria del teléfono.

Para enviar la señal de alarma a un teléfono remoto se envía a través del control MsComm2 el comando siguiente:

AT+CMGS+Ctrl(z)+Texto de alarma + <Cr>

Un esquema básico de flujo de datos del programa en visual Basic se muestra en la figura de abajo.

Interfaz de usuario

Al iniciar el programa aparece una ventana con una barra de menús desplegables, al pulsar sobre la opción Herramientas tenemos acceso a las ventanas: Configuración Puerto Serie y Controles X-10. Según se muestra en la figura de abajo.

Pulsando sobre la opción Configuración Puerto Serie tendremos acceso a la ventana de la figura siguiente. En la que podremos seleccionar el puerto serie utilizado para realizar la conexión con el controlador doméstico.

Una vez abierto el puerto de comunicación serie podemos acceder a la ventana principal de la aplicación, desde ella tendremos acceso al control de los dispositivos X-10 así como a la visualización de las alarmas recibidas. En la figura siguiente se muestran los diferentes apartados en los que se divide esta ventana.

En el apartado Control de dispositivos podemos encender o apagar el dispositivo seleccionado en la lista desplegable, esta versión de la aplicación solo tiene implementado el código para los primeros 16 dispositivos (letra de casa la A y unidades de la 1-16).
En el Control de Alarmas podemos visualizar el mensaje de alarma enviado por cualquier dispositivo transmisor. Cuando el mensaje es recibido, el cuadro de texto empieza a parpadear y muestra en su interior el texto de la alarma recibida. Por medio del botón Desactivar eliminamos la alarma del panel.
En el apartado Programación de Unidades tenemos la posibilidad de controlar la hora de encendido y apagado de cuatro unidades simultáneamente.
Para ello basta con seleccionar el dispositivo a controlar en la lista desplegable y escribir en los cuadros de texto la hora en la que queremos encender o apagar la unidad, utilizando para ello el formato indicado en los cuadros de texto. El panel dispone de un apartado en el que se visualiza la hora del sistema en formato hh:mm:ss junto con un botón que permite el acceso rápido a la ventana Propiedades de Fecha y hora de Windows.

El control GSM se realiza por medio del puerto de comunicación serie que queda libre, para ello solo tenemos que hacer clic con el ratón sobre el botón Conectar teléfono ó utilizar la combinación de teclas ALT+C, la aplicación seleccionará automáticamente el puerto que quede disponible y mostrará el estado de la conexión debajo de la etiqueta Estado.
Previamente se habrá escrito el mensaje de alarma que queremos transmitir y el número de teléfono donde queremos que se reciba el mensaje.
Si no queremos utilizar el teléfono pulsaremos sobre el botón Desconectar teléfono, el cual cerrará el puerto COMX seleccionado y mostrará la palabra Desconectado debajo de la etiqueta Estado,
indicando de que el puerto se ha cerrado correctamente.

Programa en Ensamblador

El software se divide en varios archivos diferentes facilitando la adaptación del código a otras aplicaciones. A continuación se muestra un resumen de los archivos asociados con esta aplicación.

  • X10 lib. asm Define funciones X-10

  • X10 lib. inc Define constantes y macros de X-10

  • X10 hc.asm Código principal del controlador doméstico.

  • Lcd. asm Define las rutinas necesarias para controlar el LCD.

  • P16F877.lkr Archivos linker estándar para PIC 16F877.

  • P16F877 Archivos include estándar para PIC16F877


A continuación se comentan las principales librerías de funciones y macros utilizadas en la transmisión y recepción de mensajes en X-10:

  • INIT X-10 Esta macro es usada para inicializar el periférico que provee la funcionalidad X-10. Debe ser llamada en el programa antes que las demás. Se utiliza escribiendo la instrucción siguiente: InitX10

  • SkipIfTX Ready Antes de enviar un mensaje en X-10, es necesario asegurarse que ningún otro mensaje está siendo ya enviado por la línea, lo cual se conoce porque el X10TxFlag está a uno. Esta macro verifica simplemente esa bandera y salta a la siguiente instrucción si se puede empezar una nueva transmisión. De lo contrario, habría la posibilidad de que una nueva transmisión interrumpa una que ya está en curso. Se utiliza como se indica a continuación:

SKipIFTxDone
Goto $-1 ; Bucle hasta que se esté listo para transmitir el siguiente mensaje.

  • SendX10Address (House, Unit). Esta macro es usada para enviar una dirección a una unidad particular. Requiere dos argumentos, la dirección de casa y la dirección de la unidad. Las definiciones para todas las direcciones de casa y unidades están definidas en X10lib.inc. Por ejemplo, para enviar la dirección a la unidad 16 de la casa P se debe escribir la siguiente instrucción: SendX10Adress House P, Unit 16

  • SendX10AddressVar. Es usada para enviar direcciones X-10 definidas por variables, en vez de por constantes como en la macro anterior. Por ejemplo para enviar una dirección contenida en las variables de usuario MyHouse y MyUnit, se escribirá la siguiente secuencia de instrucciones:


MOVF MyHouse, W ; contiene un valor de 0-16
MOVWF TxHouse
MOVF MyUnit, W ; contiene un valor de 0-16
MOFWF TxUnit
SendXAddressVar

  • SendX10Command (House, Function). Esta macro es usada para enviar un comando en X-10. Requiere dos argumentos, la dirección de la casa y la función de código. Por ejemplo, para enviar el comando "todas las luces encendidas" en todas las unidades de la casa A, se escribe la instrucción siguiente:


SendX10Command House A, Alllights0n

  • SendX10CommandVar. Esta macro es usada para enviar un comando en X-10 definida por una variable en vez de por una constante. Por ejemplo, para mandar la orden almacenada en la variable de usuario MyCommand a todas las unidades de MyHouse, se escribe lo siguiente:


MOVF MyHouse,W; contiene un valor de 0-16
MOVWF TxHouse
MOVF MyCommand,W; cualquier función X-10 definida en X10 lib.inc
MOVWF TxFunction
SendX10 commandvar

  • SKipIfRxDone. Antes de leer un mensaje en X-10 hay que asegurarse de que el mensaje se ha recibido por completo, esto se conoce por medio del Flag X10RxFlag que se pone a uno. Esta macro verifica simplemente esa bandera y se salta la próxima instrucción si un nuevo mensaje X-10 se ha recibido. Se usa de la siguiente forma:

SkipIfRxDone

Goto $-1 ; bucle hasta que el mensaje sea recibido.

  • SKipIfCommandRcvd. Se utiliza para asegurarse de que un comando se ha recibido por completo. Para ello esta macro verifica si la bandera RxCommandFlag está a cero. Se utiliza de la siguiente forma:


SkipIfCommandRcvd
Goto $-1 ; bucle hasta que el comando sea recibido.

  • Read X10Message. Esta macro es llamada cada vez que se quiera leer un mensaje X-10 recibido, pudiendo ser este una dirección o un comando. Si el mensaje fuera una dirección, entonces los códigos recibidos de casa y unidad se almacenarán en las variables RxHouse y RxUnit, respectivamente. Si el mensaje fuera un comando u orden, entonces la dirección recibida de casa y código de función se almacenarán en las variables RxHouse y RxFunction. Esta macro es llamada de la siguiente manera:


ReadX10 Message

Pantalla de bienvenida.

La interfaz del usuario con el controlador doméstico consiste en seis pulsadores y un LCD de 2x20 caracteres. En la línea superior del display se visualiza un mensaje y la hora, inmediatamente después de conectar el controlador doméstico el reloj empieza a funcionar.
La figura de abajo muestra la pantalla de inicio y la localización y funcionalidad de cada botón. Dependiendo de los parámetros vistos en el display, cada uno de los botones realiza una función diferente excepto el de RESET que siempre tiene como función el de reiniciar el PIC.
Cuando se muestra la pantalla de bienvenida, los pulsadores habilitan el acceso a las siguientes funciones:

  • Presionando menú, se entra en la pantalla de selección de función.

  • Presionando el botón más, aumenta el brillo de la lámpara que esta conectada al controlador doméstico.

  • Presionando el botón menos, se oscurece la lámpara.

  • Presionando ENTER, se enciende la lámpara.

  • Presionando salida se apaga la lámpara.

Pantalla de selección de función.

Cuando estamos en la pantalla de inicio y pulsamos el botón menú, accedemos a la pantalla de selección de función, Cada pulsación sucesiva sobre el botón menú provoca una rotación cíclica a través de las cuatro funciones principales que usa el interfaz: configuración de la hora del sistema, configuración de
la dirección del sistema, configuración del sensor de luz o programación de la hora On y Off de la unidad, como se muestra en la figura de abajo.

Pantalla de configuración de la hora

Usar la pantalla, programar reloj, para configurar la hora. Se siguen los siguientes pasos:

1. Comenzando desde la pantalla de inicio, presionar el botón MENU hasta que la pantalla programar reloj aparezca en el display y pulsar ENTER.
2. Presionar SUBIR/BAJAR para cambiar las horas.
3. Presionar ENTER cuando la hora sea la correcta, incluyendo AM o PM según se haya seleccionado.
4. Repetir este proceso para ajustar los minutos.
5. Si la hora es la correcta, seleccionar Y (por defecto) usando los botones SUBIR/BAJAR y presionar ENTER. Este retorna a la pantalla de inicio con la nueva hora en el display.
6. Si la hora no es la correcta, seleccionar N y presionar ENTER. Esto retornará al paso 2 para seleccionar la hora correcta.
7. Presionar SALIDA para volver a la pantalla de inicio sin guardar la nueva configuración.

Pantalla de selección de direcciones

Esta pantalla se utiliza para seleccionar la dirección de la casa y de unidad del controlador doméstico. Se siguen los siguientes pasos:

1.
Desde la pantalla de inicio, pulsar MENU hasta que la pantalla programar dirección aparezca en el display y presionar ENTER.
2. Presionar SUBIR o BAJAR para poner la dirección de la casa (una letra de la A-P).
3. Presionar ENTER cuando la dirección de la casa haya sido seleccionada.
4. Repetir los pasos 2 y 3 para poner la dirección de la unidad (un número de 1-16).
5. Si las direcciones de casa y unidad son correctas seleccionar Y (por defecto) usando los botones SUBIR/BAJAR y presionar ENTER. Este retorna a la pantalla de bienvenida con las nuevas direcciones almacenadas en la memoria no volátil.
6. Si las direcciones no son correctas, seleccionar N y presionar ENTER. Este retornará al paso 2.
7. Presionar SALIR en cualquier momento para retornar a la pantalla de bienvenida sin guardar las nuevas direcciones.

Pantalla de programación de unidad

Esta pantalla se utiliza para programar la hora de encendido y apagado de las diferentes unidades. Proceder de la siguiente manera:

1. Desde la pantalla de inicio, pulsar MENU repetidamente hasta que la pantalla programar unidad aparezca en el display y pulsa ENTER.
2. Pulsar SUBIR o BAJAR para seleccionar la unidad deseada. La dirección de la casa ya estará configurada en la dirección de la casa del sistema.
3. Pulsar ENTER cuando la dirección de la unidad haya sido seleccionada.
4. Pulsar SUBIR o BAJAR para configurar la hora de encendido. La configuración de las horas a "00", significa que la unidad no se encenderá a ninguna hora.
5. Pulsar ENTER cuando la hora sea la correcta, incluyendo AM o PM.
6. Repetir este proceso para configurar los minutos. Si las horas han sido configuradas a "00", entonces los minutos serán configurados a "00" automáticamente.
7. Si la hora es correcta, seleccionar Y (por defecto). Usando los pulsadores SUBIR y BAJAR y pulsar ENTER. El usuario será incitado a programar la hora de apagado de una forma similar.
8. Si la hora no es la correcta, seleccionar N y pulsar ENTER. Esto permite al usuario meter de nuevo las horas y minutos volviendo al paso 2.
9. Repetir este proceso de configuración de la hora de encendido y apagado para las otras unidades seleccionadas.
10.Pulsar SALIR para volver a la pantalla de bienvenida. Presionando SALIR mientras las "horas" o "minutos" se encuentren en el display el usuario volverá a la pantalla de inicio sin modificar ningún parámetro.

Fotos Controlador Doméstico

Fuentes de Información:

  • La parte relacionada con X-10 está basada íntegramente en el ejemplo AN236 de Microchip.

  • La parte de teoría sobre el protocolo X-10 la tenéis aquí.

Como siempre los comentarios sobre el artículo lo podéis hacer en el foro.

Notas:

Importante: Este circuito no aísla la alimentación de red (230 V) del circuito electrónico, por lo que su manipulación es peligrosa si no se toman las precauciones necesarias, la finalidad del texto contenido en este artículo es solo divulgativo y con fines educacionales, el uso que tú hagas de él es responsabilidad tuya.

Un saludo