Introducción al control de electrodomésticos por ordenador

Anuncio
Informe de Avance 2 Proyecto
Prototipo
Alumnos: Marcelo Mella Urrutia
David Moena Quijada
Carlos Román Saavedra
Sergio Sánchez Reyes
Profesor: Yussef Farrán
Fecha Entrega: 16 de Mayo de 2005
AVANCE
La idea es controlar por medio del computador diferentes electrodomésticos, luces o
cualquier dispositivo que funcione con 220 voltios. Como primer paso para lograr el
objetivo, a modo de prueba, será controlar el prendido y apagado de leds por medio
del computador, estableciendo la comunicación a través del puerto paralelo del
mismo.
El puerto paralelo se puede utilizar para controlar desde 8 hasta 32 dispositivos
dependiendo del circuito utilizado. Introduciéndose de este modo en la Domótica
usando el reloj del computador para controlar dispositivos eléctricos o a través de un
programa escrito en cualquier lenguaje de programación que permita enviar datos al
puerto paralelo del computador
El prototipo a desarrollar utilizará los siguientes componentes:
-
Computador con puerto paralelo.
Conector puerto paralelo.
Chip.
Leds.
Resistencia 470 Ohms.
Cables.
Protoboard.
Servidor Web Apache2 y PHP4.
Programa escrito en C.
ANALISIS DEL CIRCUITO.
Este circuito conectará un modulo de control de potencia a un puerto paralelo del
PC, se pueden conectar hasta cuatro módulos, dicho puerto no necesariamente
debe ser bidireccional para controlar el sistema.
Funcionamiento:
El puerto paralelo esta formado de la siguiente forma:
____________________________________________________________
/
\
13
12
11
10
9
8
7
6
5
4
3
2
\
/
/
1
\
\
25
24
23
22
21
20
19
18
17
16
15
14
/
\______________________________________________________/



Los pines 2 al 9 de cada integrado son las entradas de datos.
Los pines 12 al 19 son las salidas.
El pin 11 se denomina en inglés Latch Enanble, una entrada de control que
causa que los pines 12 al 19 reflejen el dato presente en los pines 2 al 9. Esto
quiere decir, a su vez, que los datos presentes en las salidas del integrado no
sufren cambios por mas que los datos en la entrada del mismo cambien
constantemente siempre y cuando la entrada de control (pin 11) este a tierra.
El sistema a implementar es similar al de control de relés, pero como primer paso
vamos a controlar leds en vez de reles.
Este circuito es simple y permite manejar ocho relés con bobinas de 12V a partir de
los pines de un puerto paralelo. Si miramos detalladamente se puede ver en el
interior del chip (en este modelo el ULN2803) ocho esquemas como el de abajo, uno
para cada uno de los canales.
Como Controlarlo:
El programa, que esta escrito en C que tiene la capacidad para controlar el puerto
paralelo, lo primero en determinar debe ser el estado del puerto, y por ende, la placa
de expansión, entonces el programa como primer paso debe inicializar el circuito.
Cuando se quiera modificar la salida, se deberá poner en el puerto paralelo (en el
bus de datos) el dato que se desea colocar en la salida.
Un factor muy importante a tener en cuenta es que algunos de los pines de control
del puerto paralelo presentan un estado lógico invertido con respecto a la tensión.
Esto quiere decir que, un pin con estado lógico normal presenta tensión cuando el bit
que lo controla esta a 1 y está a tierra cuando su bit se pone en cero. Pero, un pin
con lógica inversa, presentará tensión cuando su bit este en cero y masa cuando
este en uno. Hay que prestar atención a esto para evitar problemas de control con
los integrados o activaciones erráticas.
El programa, por ahora, controla el prendido y apagado de leds correctamente,
estableciendo varias configuraciones a través de una pagina construida en PHP
quien invoca el programa que esta corriendo bajo Linux y está escrito en C,
recibiendo como entrada la configuración de leds que se desean prender.
Esto se realiza de la siguiente manera:



Obtener permisos para usar espacio de direcciones de I/O, llamando al
kernel, con la llamada ioperm: ejemplo ioperm( BASE, rango ,1);
Performar una instrucción “out request” , para setear el voltaje 0-5V al Puerto
paralelo, ejemplo outb( 1, BASE );
Para apagar se ejecuta un outb( 0 , BASE );
Descargar