Casa Controlada Por Micro

También podría gustarte

Está en la página 1de 17

DESCRIPCIN DEL PROYECTO

La casa controlada por microprocesador tiene como funcin principal controlar dispositivos elctricos por medio del puerto paralelo de una computadora, programando anticipadamente un primer tiempo al que se denominara tiempo de espera y posteriormente ingresando un segundo tiempo al que se denominara como tiempo de activacin.

El tiempo usado estar dado en segundos los cuales por medio de anidaciones se puede modificar a minutos e inclusive horas, los tiempos estn compuestos por un numero de 2 dgitos es decir que su rango establecido est entre 00 y 99. Se puede apreciar que son tiempos por as decirlo enteros ya que no se usa el formato de horas con minutos o minutos con segundos.

El puerto paralelo consta de 8 pines de datos de los cuales solo se ocuparan 4 (pines 2, 3, 4,5 y GND). El voltaje proporcionado por el puerto paralelo es un voltaje de corriente directa que es aproximadamente un 1 lgico (5v) por lo que para controlar dispositivos elctricos que usualmente se alimentan con 120v de corriente alterna se har uso de una interfaz de potencia que nos permita manejar estos dispositivos con una tensin mayor.

La etapa de potencia es muy sencilla ya que solo consta de 4 optocopladores (4N25) que sirve para aislar el puerto paralelo y de esa forma proteger la computadora de algn dao, 4 transistores NPN serie 2N2222A, 4 reles de 12V y elementos pasivos como resistencias y diodos comunes, ya que se utilizaran nicamente 4 pines de datos se har igual cantidad de etapas una para cada dato del puerto.

El programa nos permite seleccionar los dispositivos que se desean activar por medio de un men que da la opcin de activar los dispositivos individualmente, en pares, tros e inclusive poder hacer todas las combinaciones posibles adems de poder activarse todos al mismo tiempo.

La creacin de este programa est basada en el lenguaje ensamblador y para la elaboracin del cdigo fuente se utilizo un software libre llamado emu8086 basado en los microprocesadores de la serie 8086, dicho programa permite elaborar y editar el cdigo fuente (ms adelante se podr observar el cdigo fuente del programa casa controlada por microprocesador), a la vez emularlo y compilar para de esa forma crear el archivo ejecutable que nos permitir manejar el puerto paralelo. Tambin se utilizo una herramienta ms que es un driver llamado userport, el objetivo de utilizar este driver es que algunos sistemas operativos bloquean el uso del puerto paralelo y el userport libera el puerto paralelo para que se pueda manejar de la manera que se necesite.

FUNCIONAMIENTO DEL PROYECTO Programa: El programa se puede dividir en tres partes esenciales: la primera ser el ingreso de datos (tiempo de espera, activacin y seleccin de dispositivos), la segunda parte ser el tiempo de espera a la que se denomina con la etiqueta conteo y finalmente la tercera parte a la que se llamara conteo2 que es donde se seleccionan los puertos a activarse y el tiempo que estos se mantendrn activos. 1- Ingreso de datos: Al ejecutar el programa lo primero que se ingresara es el tiempo de espera que como se menciono anteriormente es un numero de 2 dgitos el cual ser dividido en decenas y unidades, las decenas sern guardadas en una variable despus de ser convertidas de ASCII a hexadecimal y despus se multiplica por una constante en hexadecimal la cual es 0AH que equivale a 10 en decimal y posteriormente sumar las unidades que con anticipacin al igual que las decenas fueron convertidos de ASCII a hexadecimal, el resultado de la suma ser un numero en hexadecimal equivalente al nmero decimal ingresado. Por ltimo se guardara en una variable que se denomino como var1.

Lo siguiente que nos pedir el programa ser el tiempo de activacin es decir cunto tiempo se mantendr encendido el dispositivo que se est controlando se sigue el mismo procedimiento que en el tiempo de espera con la diferencia que el resultado se guardara en una variable que se denomina var2.

Una vez ingresados los tiempos de espera y activacin el programa mostrara un men en el cual nos permite seleccionar que dispositivos se activara(n) donde se ingresara un numero o letra segn corresponda al dispositivo seleccionado, este dato ser guardado en una variable denominada aux.

2- Tiempo de espera: El tiempo de espera est conformado por tres anidaciones de las cuales 2 poseen constantes con valores hexadecimales muy altas lo que nos permite obtener el tiempo en segundos estas constantes pueden variar dependiendo de la velocidad de nuestro microprocesador. Al cumplirse las condiciones de estas anidaciones, es decir, cuando alcancen el valor de las constantes pasara a una tercera anidacin que su valor mximo ser el que se ingreso como tiempo de espera. Cuando alcance el tiempo de espera saltara al tiempo de activacin, pero sino regresara a las primeras anidaciones hasta alcanzar el tiempo que se ingreso como espera.

3- Envo de datos al puerto y tiempo de activacin: Cuando se haya cumplido el tiempo de espera antes de comenzar el tiempo de activacin se seleccionara que lneas del puerto paralelo se activaran, esto se realizara por medio de una comparacin entre el dato que se ingreso en el men con su respectivo valor en ASCII. Si la comparacin es correcta saltara a una etiqueta donde se enviara a la direccin del puerto paralelo el respectivo valor en hexadecimal (por ejemplo si se desean los dispositivos A y C (0101b) siendo A el menos significativo se deber enviar su respectivo valor en hexadecimal es decir 05H). Una vez enviados los datos al puerto comenzara el tiempo de activacin.

El tiempo de activacin es similar al de espera con 3 anidaciones de las cuales dos dependen de constantes y una del valor ingresado como tiempo de activacin.

Cuando termina el tiempo de activacin el programa salta a la etiqueta salir donde nicamente se enviara al puerto el dato 00H con lo que se pretende desactivar el puerto es decir borrar el dato que se envo anteriormente.

Interfaz de potencia El objetivo de la interfaz de potencia es poder controlar cargas con una alimentacin mayor a la que proporciona el puerto paralelo ya que este es capaz de suministrar un voltaje de aproximadamente 5v de DC y no es capaz de controlar muchos dispositivos. Con la etapa de potencia se podrn controlar dispositivos con mayor demanda de voltaje y corriente por medio de un relevador o rel.

Cuando se activa una lnea del puerto paralelo esta llega al nodo del LED del optocoplador (pin 1), el ctodo (pin2) est conectado a tierra del puerto. Al activarse el LED este excita la base del fototransistor cuyo colector (pin 5) est conectado por medio de una resistencia de 5.6k a 12v y el emisor (pin4) a la base del transistor 2N2222, el fototransistor se satura y acta como interruptor cerrado dejando pasar voltaje a la base del transistor que est en corto es decir como un interruptor abierto, al saturarse el transistor se cierra y deja pasar el tierra de la fuente hacia el pin de alimentacin del rel provocando que este se active y que este cambie de posicin su contactos internos. El diodo est conectado en inversa para proteger de corrientes parasitas provocadas por la bobina del rel.

La conexin de los dispositivos que queremos controlar se hace ente los contactos abiertos del rel para que cuando estos se cierren permitan el paso del voltaje y la corriente a dichos dispositivos

CDIGO FUENTE DEL PROGRAMA .model small .stack .data var1 db ? var2 db ? dece db ? uni db ? dece2 db ? uni2 db ? aux db ? msj0 db 13,10,"-----Casa Controlada por Microprocesador-----","$" msj1 db 13,10,"Dentro de cuanto tiempo (seg) desea que se active el sistema de control?: ","$" msj2 db 13,10,"Cuanto tiempo durara la activacion de los dispositivos?: ","$" msj3 db 13,10,"****** MENU DE DISPOSITIVOS A CONTROLAR****** ","$" msj4 db 13,10,"Dispositivo A=0.","$" msj5 db 13,10,"Dispositivo B=1.","$" msj6 db 13,10,"Dispositivo C=2.","$" msj7 db 13,10,"Dispositivo D=3.","$" msj8 db 13,10,"Dispositivos AyB=4.","$" msj9 db 13,10,"Dispositivos AyC=5.","$" msj10 db 13,10,"Dispositivos AyD=6.","$" msj11 db 13,10,"Dispositivos ByC=7.","$" msj12 db 13,10,"Dispositivos ByD=8.","$" msj13 db 13,10,"Dispositivos DyC=9.","$" msj14 db 13,10,"Dispositivos A,ByC=x.","$" msj15 db 13,10,"Dispositivos A,CyD=y.","$" msj16 db 13,10,"Dispositivos B,CyD=z.","$" msj17 db 13,10,"Todos= a","$" msj18 db 13,10,"Cual(es) Dispositivo(s) se activaran? ","$" msj19 db 13,10,"presione una tecla para comenzar","$" .code .startup mov ax,0600h mov bh,01ch ;fondo azul sobre rojo mov cx,0000h mov dx,184fh ;atributos int 10h mov ax,data

mov ds,ax ;bienvenida al programa mov dx,offset msj0 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj1 mov ah,09h int 21h ;se imprime el mensaje #1 mov ah,01h int 21h sub al,30h mov dece,al ;se ingresa digito de las decenas(tiempo de espera) mov ah,01h int 21h sub al,30h mov uni,al ;se ingresa digito de las unidades(tiempo de espera) mov al,dece mov bl,0ah mul bl ;se convierte decenas a hex add al,uni ;se suman las unidades a las decenas mov var1,al ;se guardan en var 1 mov ax,data mov ds,ax mov dx,offset msj2 mov ah,09h int 21h ;se imprime el mensaje #2 mov ah,01h int 21h sub al,30h mov dece2,al ;se ingresa digito de las decenas(tiempo de activacion) mov ah,01h int 21h sub al,30h mov uni2,al ;se ingresa digito de las unidades(tiempo de activacion) mov al,dece2 mov bl,0ah mul bl ;se convierte las decenas a hex add al,uni2 ;se suman las unidades a las decenas mov var2,al ;se guardan en variable2 mov ax,data

mov ds,ax mov dx,offset msj3 ;comienza el menu de control mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj4 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj5 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj6 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj7 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj8 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj9 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj10 mov ah,09h int 21h mov ax,data mov ds,ax

mov dx,offset msj11 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj12 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj13 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj14 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj15 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj16 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj17 mov ah,09h int 21h mov ax,data mov ds,ax mov dx,offset msj18 mov ah,09h int 21h mov ah,01h int 21h mov aux,al ;seleccion de dispositivo a controlar

mov ax,data mov ds,ax mov dx,offset msj19 mov ah,09h int 21h ;se imprime el mensaje #4 mov ah,01h ;presionar una tecla para comenzar int 21h mov dl,10 ;salto de linea mov ah,02h int 21h mov dl,13 ;inicio de linea mov ah,02h int 21h mov cl,01h ;inicializacion de cl a 1 cmp var1,00h ;compara si hay tiempo de espera je conteo2 ;si no hay tiempo de espera salta al tiempo de riego conteo: ini: mov bx,00h bucle2: cmp bx,06dffh je bucle3 mov ax,00h bucle1: cmp ax,06fffh je incr inc ax jne bucle1 incr: inc bx jmp bucle2 bucle3: mov al,cl ;inicio para imprimir conteo de espera aam ;se separa lo que hay en al y se guarda en ax mov bx,ax ;se mueve a bx lo que hay en ax mov dl,13 ;regresa al inicio para mostrar conteo mov ah,02h int 21h mov dl,bh add dl,30h ; se imprime el primer digito del conteo de espera

mov ah,02h int 21h mov dl,bl add dl,30h mov ah,02h ; se imprime el segundo digito del conteo de espera int 21h inc cl cmp cl,var1 ja conteo2 je ini ;finaliza el tiempo espera al cumplir condicion jne ini

conteo2: mov dl,10 ;da un salto de linea mov ah,02h int 21h mov dl,13 ;regresa al inicio de la linea mov ah,02h int 21h mov cl,01h cmp var2,00h je salir cmp aux,30h ;seleccion de datos que se enviaran al puerto je a cmp aux,31h je b cmp aux,32h je c cmp aux,33h je d cmp aux,34h je ab cmp aux,35h je ac cmp aux,36h je ad cmp aux,37h je bc cmp aux,38h je bd

cmp aux,39h je cd cmp aux,78h je abc cmp aux,79h je acd cmp aux,7ah je bcd cmp aux,61h je all ini2: mov bx,00h bucle5: cmp bx,06dffh je bucle6 mov ax,00h bucle4: cmp ax,06fffh je incr2 inc ax jne bucle4 incr2: inc bx jmp bucle5 bucle6: mov al,cl ;inicio para imprimir conteo aam ;se separa lo que se encuentra en al y se guarda en ax mov bx,ax ;se mueve bx lo que hay en ax mov dl,13 ;regresa al inicio para mostrar numeros del conteo mov ah,02h int 21h mov dl,bh add dl,30h mov ah,02h ;se imprime lo que hay el primer digito del conteo int 21h mov dl,bl add dl,30h ;se imprime lo que hay el segundo digito del conteo mov ah,02h int 21h inc cl ;incremento de cl cmp cl,var2 ;comparacion de cl con variable 2

mov ah,02h ja salir ;si se cumple la comparacion termina el tiempo de activacion je ini2 jne ini2 a: mov al,01h ;envia 0001b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 b: mov al,02h ;envia 0010b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 c: mov al,04h ;envia 0100b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 d: mov al,08h ;envia 1000b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 ab: mov al,03h ;envia 0011b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 ac: mov al,05h ;envia 0101b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 ad:

mov al,09h ;envia 1001b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 bc: mov al,06h ;envia 0110b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 bd: mov al,0Ah ;envia 1010b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 cd: mov al,0ch ;envia 1100b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 abc: mov al,07h mov dx,0378h ;envia 0111b al puerto out dx,al mov dx,00000h jmp ini2 acd: mov al,0dh ;envia 1101b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 bcd: mov al,0eh ;envia 1110b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2

all: mov al,0fh ;envia 1111b al puerto mov dx,0378h out dx,al mov dx,00000h jmp ini2 salir: mov al,00h ;elimina datos al puerto mov dx,0378h out dx,al .exit End

CIRCUITO INTERFAZ DE POTENCIA

CIRCUITO IMPRESO

También podría gustarte