Automatizacion de las casas

Anuncio
DOMOTICA: AUTOMATIZACIÓN DE CASAS Y EDIFICIOS
Introducción
El puerto paralelo
El puerto paralelo nos permite manejar una cantidad de artefactos y dispositivos,
en un programa de la PC, podemos además de
conectar y desconectar la ejecución de una orden,
controlar tiempos y secuencia de esas ordenes.
Si instalamos un programa de la familia de los Basic
por ejemplo Visual Basic podemos trabajar en la
programación, los puertos paralelos se denominan
&h378 (puerto de datos), &h379 (puerto de
estado) y &h37A (puerto de control) en
hexadecimal y en decimal 888 (puerto de datos),
889 (puerto de estado) y 890 (puerto de control).

Puerto de datos.En la salida del puerto de datos tenemos 8 pines que sin ningún agregado
entrega
una tensión que puede estar entre 0 y 3.5 - 4.8 voltios según la
computadora.
Pin
Bits
2
3
1
4
2
5
4
8
6
16
7
32
8
64
9
128

Puerto de estado.En la salida del puerto de estado tenemos 5 pines que reciben
interrupciones.
__
Pin
15
13
12 10
11
Bits
8
16
32
64 128

Puerto de control.En la salida del puerto de control tenemos 4 pines que al igual de los de
estado entregan una tensión que puede estar entre 0 y 3.5 - 4.8 voltios
según la computadora, aparte permiten llevar un registro de ordenes.
_
__
__
Pin
1
14
16 10
Bits
1
2
4
8
Control de una maqueta a través de un ordenador
Para demostrar la aplicación se tiene un modelo a escala de una casa real, en la
cual se encuentran automatizadas las luces externas e internas, ventilación de sala
y dormitorio, puerta del garaje, alarmas en las puertas y un sensor de humo, lo
cual se controla desde un ordenador por el puerto paralelo, con una interfaz
diseñada en Visual Basic 6.0. Cada una de las aplicaciones tienen su propia
circuitería, las cuales hacen interactuar correctamente la casa con el ordenador.
Este tipo de tecnología es totalmente aplicable en las casas actuales con
dispositivos y software especiales que pueden ser encontrados en el mercado, pero
exactamente con el mismo funcionamiento y la misma facilidad de uso.
La tecnología utilizada en la maqueta es solamente un prototipo de lo que se podría
hacer en una casa real, obviamente con dispositivos más avanzados.
Luces.- Para poder controlar las luces de la maqueta desde el puerto paralelo
tomamos los pines de datos, del 2 al 9, y trabajando en Visual Basic procedemos a
crear las instrucciones que llamaran al respectivo puerto y que viajaran por el cable
LPT llegaran al puerto paralelo y se empezaran a distribuir mediante un cableado
estructurado.
Como en la maqueta no se usaron muchos juegos de luces, apenas se emplearon
los pines desde el 2 al 7, en los cuales se manda desde el programa una señal.
La señal enviada desde el programa realizado en Visual Basic es, en realidad, una
que se compone de un voltaje máximo de 5V, el mismo que llegará a cualquiera de
los implementos que se encuentren en la maqueta.
Lógicamente, todos los
elementos que estén conectados deben antes pasar por un juego de relés,
transistores y diodos con el objeto de cuidar que ninguna corriente parásita o
variable de voltaje pueda dañar los elementos de la maqueta o el puerto en si.
Ventiladores.- Para poder crear el evento de ventilación el maqueta se usaron los
pines 8 y 9 –por donde se envía la señal de encendido y apagado. Así como en el
juego de luces, los disipadores deben de conectarse a los pines de puerto para que
estos reciban su respectiva señal que los activará.
El cableado estructurado para este y los otros dispositivos es centralizado, además,
utiliza un bornera, es decir, una especie de cajetín en donde se centran todas las
conexiones eléctricas de la maqueta, lo que significa que si el usuario se percata
que algo no funciona, tan solo necesitará fijarse si algún desperfecto se presenta en
la bornera. Claro que, la dificultad en esto radica que la maqueta tendría un punto
débil que al ser movida de alguna forma, las conexiones empezarían a fallar, por lo
delicado de las mismas a este punto.
Sensores.- En toda la maqueta, los sensores son los únicos componentes que no
tienen conexión alguna a corriente, pues estos son, en realidad, contactos
magnéticos que se activan o se desactivan al ser acercados o alejados el uno del
otro, por lo tanto, la conexión al puerto era directa, sin necesidad de corriente,
pues el programa lo que hace es comprobar minuto a minuto que este lazo
magnético no se viera interrumpido en forma alguna, caso contrario, la alarma se
activará.
Para que los sensores hagan llegar al señal de confirmación al programa, se
necesitarán desde el pin 10 hasta el pin 13, en donde se espera una reacción
contraria al cero, es decir, mientras el vínculo entre censores no se vea
interrumpido, el pin ni el programa reciben notificación de alerta, pero si este
vínculo se llegase a romper, el pin recibirá una señal que el programa interpretará
como una alerta –para el caso de la alarma- o una señal anormal que indica que
algo está sucediendo.
Motor.- Para el motor se usaron los pines 1 y 14. La razón es muy sencilla: al usar
un motor que gire en dos sentidos –abrir y cerrar puerta, implica usar una señal
para que realice un giro y una señal que haga lo inverso; es aquí donde los pines
mencionados anteriormente cumplen su cometido. Los pines 1 y 14 tienen una
lógica de negación, es decir, que si el usuario envía a través de uno de estos pines
una señal de 5V, lo más seguro es que el pin convierta esto a una señal de -5V, es
decir, el completo inverso. Como se mencionó antes, la circuitería para controlar
estos implementos gira alrededor de relés, transistores y diodos; pero hasta este
momento, el usuario debe de fijarse en qué clase de relés debe enfocase para
lograr el mejor desempeño posible.
Existen en el mercado relés dobles. Lo que quiere decir que son interruptores que
pueden encender sea con una polaridad inversa o no, la cuestión es que estos
implementos ayudan al motor a dar el giro, a partir de la polaridad que llega al relé,
es decir, por ejemplo, si al relé llega una polaridad positiva, el motor girará de
izquierda a derecha, caso contrario, el motor hará todo lo contrario, y es aquí
donde se obtiene el evento abrir y cerrar puerta.
Debido a que al hacer esto, el motor seguirá girando sin cesar –hasta que reciba
una orden de apagado, en el programa se configuró esta acción bajo un control de
temporizador, o sea, controlar que la señal llegue al motor en un tiempo
determinado y pasado ese tiempo, la señal dejará de ser enviada, de forma que el
motor se detendrá y no girará más.
Sirena.- Al igual que las luces, la sirena es un dispositivo sencillo que puede
encenderse y apagarse con una instrucción sencilla enviada desde el computador.
El detalle radica en que, en la vida real, una sirena no se prende y se apaga como
una luz cualquiera, sino más bien esta se activa a partir de la confirmación del
sensor que el vínculo magnético se ha roto.
Por lo tanto, luego de haber considerado todos estos aspectos, es necesario tener
bien claro que la momento de codificar, la activación de la alarma está
estrechamente relacionada a la programación del control de la respectiva alarma.
Como es lógico pensar, la alarma y el motor antes descrito deben tener conexión
alguna con el computador así como deben ser alimentados con una fuente de poder
externa, esto es debido a que se incorporan más elementos que necesitarán más
energía que difícilmente puede provenir de un puerto que arroja 5V en una salida
simple.
Codificación necesaria para ejercer control sobre las secciones de la casa desde el
computador
Declaración de variables y módulos de control de los elementos:
Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer)
Public on1 As Integer
Public ba1 As Integer
Public op As Integer
Public reloj As Timer
<Declaraciones globales, es decir, variables que cualquier sub-programa puede
usar>
Esto quiere decir que el usuario llama a una función de Visual Basic a que se
ejecute con carácter de pública (que cualquier otra aplicación a lo largo del
programa puede llamarla), una para la salida de datos y otra para la entrada –en el
caso de los sensores. Para poder ejecutar cada función se requiere de la librería
io.dll, que no es más que una librería especial para el compilador de Visual que
ayudará al usuario a manejar dispositivos externos desde cualquier puerto que el
usuario esté por usar.
Uso de mini programas para controlar otros elementos:
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
b1
b2
b3
b4
b5
b6
b7
b8
As
As
As
As
As
As
As
As
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Integer
Private Sub Command1_Click()
If b1 = 0 Then
on1 = on1 + 1
Call PortOut(888, on1)
b1 = 1
Else
MsgBox "La luz/ventilador ya
esta encendida"
End If
Declaraciones para End Sub
sub-programas
Private Sub
Command10_Click()
If b5 = 1 Then
on1 = on1 - 16
Call PortOut(888, on1)
b5 = 0
Else
MsgBox "La Luz/ventilador esta
apagada"
End If
Private Sub
Command8_Click()
If b3 = 1 Then
on1 = on1 - 4
Call PortOut(888, on1)
b3 = 0
Else
MsgBox "La Luz esta
apagada"
End If
End Sub
Private Sub
Command9_Click()
If b3 = 0 Then
on1 = on1 + 4
Call PortOut(888, on1)
b3 = 1
Else
MsgBox "La luz ya esta
encendida"
End If
End Sub
En el primer bloque de sentencias, el usuario declara una serie de variables
informáticas conocidas como banderas, es decir, variables comunes que se
encargan de verificar si un evento ha sucedido o no. Las banderas se activan a raíz
que el usuario logra hacer que un evento acontezca de manera exitosa, por lo cual,
si antes la variable de verificación era cero, al activarse un proceso cualquiera, se
transformará en uno.
En el bloque segundo y tercero se explica cómo es el funcionamiento básico de los
segmentos de programa en cuanto al encendido y apagado de toda clase de
artefactos dentro de la maqueta. Estos bloques programados solo pueden lograr el
encendido y apagado enviando números diferentes de cero para encender y cero
para apagar. Los números que el usuario envía son números decimales que al ser
enviados por el puerto, adquieren un carácter de binario (00100010, por citar
ejemplo), por lo tanto, al querer el usuario enviar un dato, es preferible que sepa
las combinaciones binarias antes de hacerlo.
Todos los procesos en cuanto a prender y apagar elementos giran alrededor de la
sentencia Call PortOut, (lo que se traduce como “llamar a la función que puede
hacer las salidas de puerto”) en donde tenemos dos valores entre paréntesis que
también son esenciales dentro de este proceso: el primero es el direccionamiento
de puerto, y el segundo, el valor que describe el apagado o encendido del
implemento. La dirección para direccional el puerto desde Visual Basic puede usar
dos tipos de números: uno especificado en hexadecimal y el otro en decimal.
Control del motor por medio de temporizadores.Private Sub Command10_Click()
If ba1 = 1 Then
op = 0
Call PortOut(890, op)
ba1 = 0
End If
Timer2.Interval = 5000
Timer1.Interval = 0
Command10.Enabled = False
Command11.Enabled = True
End Sub
Private Sub Timer1_Timer()
If ba1 = 1 Then
op = 4
Call PortOut(890, op)
MsgBox "La puerta esta abierta"
End If
Timer1.Interval = 0
Timer2.Interval = 0
End Sub
Para poder lograr un movimiento del motor, se mencionó que había que usar un
control temporizado, de forma que se podría lograr un control de cuánto debía de
durar el evento de apertura y de cerradura. Los temporizadores de Visual Basic
usan una sentencia especial en donde se les designa un intervalo en el cual estos
permiten la ejecución de la sentencia en donde han sido llamados.
El temporizador –Timer se declara de forma independiente, en donde los intervalos
de acción siempre deben de ser designados en cero, los mismos que cambiarán al
ser usados en el bloque principal del programa. En el momento que el bloque de
temporizador es usado en la aplicación principal, el programa ejecutará el intervalo
de tiempo declarado pro el usuario, de forma que cuando este tiempo esté
andando, existirá una comprobación de lo que se esté solicitando, en este caso,
comprobar que los sensores de la puerta estén unidos y no separados.
Es importante que el usuario note que para cada acción que se desee ejecutar hay
un diferente tipo de programación en la sentencia Call PortOut, en donde el
direccionamiento de puerto varia, por ejemplo, para lograr un evento de prendido y
apagado, es necesario que el usuario utilice el direccionamiento de datos 888, sin
embargo, para el control del giro del motor en uno u otro sentido, el usuario debe
de direccionar el puerto en 890, lo que significa que por este puerto hará un control
de los datos que se enviarán por los respectivos pines.
Control de los sensores de movimiento en las puertas.Private Sub Timer1_Timer()
Dim A As Long
A = PortIn(&H379)
If A = 207 Then
MsgBox "Puerta principal abierta"
End If
If A = 15 Then
MsgBox "Puerta patio abierta"
End If
If A = 175 Then
MsgBox "Puerta cocina abierta"
End If
If A = 111 Or A = 79 Or A = 239 Or A = 47 Then
MsgBox "Alarmas activas"
End If
End Sub
Como puede apreciarse,
la codificación que controla los sensores está muy
relacionada al uso de temporizadores en Visual Basic, es decir, el control que se
ejerce sobre los sectores de la casa con sensores se realiza a cada momento, en un
ciclo que solo es interrumpido al romperse el vínculo entre sensores. La lógica
aplicada en este segmento de codificación es que mientras los sensores envíen una
respuesta de cero, el programa interpreta que ambos contactos están unidos y no
transmiten ningún dato que demuestren que haya rompimiento de señal, pero de
ser esto falso, la alarma será activada y aparecerá un mensaje indicando qué
puerta está abierta.
Para poder controlar este evento, se usaron los pines de estado, pues el programa
debe confirmar –de forma automática- al usuario que las puertas están abiertas o
cerradas, pero la diferencia radica en que la función para tal efecto de verificación
no es llamada con una sentencia Call, sino que es llamada por medio de una
variable, la que almacenará el dato que los sensores emiten: cero para unión y
diferente de cero para desunión.
La sentencia se descifra como PortIn, es decir, Entrada al Puerto y su
direccionamiento puede ser &H379 en hexadecimal, como 889 en decimal,
dependiendo del mejor criterio del usuario en usar tal o cual cifra para
direccionamiento de puerto.
Circuitería de la maqueta:
Esta es la circuitería general implementada en la maqueta, la cual recibe ordenes
desde el puerto paralelo enviando un encendido y un apagado para luces,
ventilación y sirena.
Posibilidades en aplicaciones reales:


Es posible instalar otro puerto paralelo –con su respectiva tarjeta en la
computadora (la computadora tan solo incluye uno), de necesitarse, pues
hay casos en que la red de automatización se amplia y para el usuario
resulta complicado centralizar nuevas conexiones.
Debido a la complejidad del esquema eléctrico,
Descargar