Sie sind auf Seite 1von 30

Ascensor Controlado por Assembler 1. Objetivos 1.1.

Objetivo General Disear un programa en assembler, capaz de controlar un ascensor, mediante el puerto paralelo. Objetivos especficos Disear un la arquitectura de un ascensor para poder realizar la prueba del programa controlador. Poner en prctica los conocimientos adquiridos en clases en la aplicacin de los proyectos. Conocer y aplicar el puerto paralelo para la implementacin en la union de software y hardware en el proyecto.

1.2.

2. Antecedentes El uso de las computadoras analgicas y digitales ha posibilitado la aplicacin de ideas de control automtico a sistemas fsicos que hace apenas pocos aos era imposibles de analizar o controlar. La automatizacin del control de plantas se va desarrollando de acuerdo a cada necesidad existente ya sea en la sociedad o en mbito profesional, para esto es necesario obtener un conocimiento sobre la programacin necesaria para el control especfico de plantas. La gama de programas existentes que permiten controlar plantas, poseen distintas caractersticas que permiten al usuario elegir aquel que le facilite ms su tarea, existen programas de bajo nivel hasta alto nivel, programas que permiten la creacin de interfaces y aquellos que se especializan solo en la programacin.

3. Fundamento Terico 3.1. Puerto Paralelo El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, rels, LED's, etc. El mismo posee un bus de datos de 8

bits (Pin 2 a 9) y muchas seales de control, algunas de salida y otras de entrada que tambin pueden ser usadas fcilmente.

En este conector:

8 lneas (pines) son para salida de datos (bits de DATOS). Sus valores son nicamente modificables a travs de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7). 5 lneas son de entrada de datos (bits de ESTADO), nicamente modificables a travs del hardware externo. Estos pines son: 11, 10, 12, 13 y 15, del ms al menos significativo. 4 lneas son de control (bits de CONTROL), numerados del ms significativo al menos: 17, 16, 14 y 1. Habitualmente son salidas, aunque se pueden utilizar tambin como entradas y, por tanto, se pueden modificar tanto por software como por hardware. las lneas de la 18 a la 25 son la tierra.

En la siguiente tabla se detallan la nomenclatura y descripcin de cada lnea. La columna "Centronics pin" se refiere a las lneas del conector tipo Centronics usado en las impresoras. La columna E/S se refiere al dato visto desde el lado del PC. DB25 Centronics Tipo pin pin (E/S)
1 1 S

Seal

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos enviados. Bit 0 de datos, bit menos significativo (LSB)

Strobe

D0

3 4 5 6 7 8 9

3 4 5 6 7 8 9

S S S S S S S

D1 D2 D3 D4 D5 D6 D7

Bit 1 de datos Bit 2 de datos Bit 3 de datos Bit 4 de datos Bit 5 de datos Bit 6 de datos Bit 7 de datos, bit ms significativo (MSB) Un pulso bajo de ~11s indica que se han recibido datos en la impresora y que la misma est preparada para recibir ms datos. En alto indica que la impresora est ocupada.

10

10

Ack

11 12 13

11 12 13

E E E

Busy

PaperEnd En alto indica que no hay papel. SelectIn En alto para impresora seleccionada. AutoFeed Si est bajo, el papel se mueve una lnea tras la impresin. En bajo indica error (no hay papel, est fuera de lnea, error no det.). Si se enva un pulso en bajo > 50 s la impresora se reinicia. En bajo selecciona impresora (en gral. no se usa, ya que SelectIn se fija a alto). Masa retorno del par trenzado.

14

14

15

32

Error

16

31

Init

17

36

Select

1819-30,33 25 1825 1825 16

GND

Masa lgica

17

Masa chasis

3.2.

Compilador Assembler

3.3.

Userport UserPort.SYS es un modo de ncleo para Windows NT/2000/XP usermode que da acceso a los programas de E/S por puerto. Esto hace que sea posible acceder al hardware directamente desde un ejecutable normal de la misma manera que en virtud de Windows 95/98/ME. Este controlador no funciona en Windows 95/98/ME y realmente no hay necesidad de ejecutarlo de todos modos porque puertos I/0 son siempre usermode concedidas a los programas de estos sistemas operativos.

3.4.

Ascensor Un ascensor o elevador es un sistema de transporte vertical diseado para movilizar personas o bienes entre diferentes niveles. Puede ser utilizado ya

sea para ascender o descender en un edificio o una construccin subterrnea. Se conforma con partes mecnicas, elctricas y electrnicas que funcionan conjuntamente para lograr un medio seguro de movilidad. 4. Fundamento Practico 4.1. Materiales 4 Transistores TIP32 4 Transistores TIP31 7 Transistores BC548 7404 7432 7408 Lm555 Capacitores de diferentes valores Resistencias varias Cables Protoboards Leds 4.2. Procedimiento 4.2.1. Programacin El cdigo para la implementacin se baso en sumas para determinar el nmero que saldra por el puerto paralelo (el diagrama de flujo se encuentra en anexos), estas sumas tendra que hacer lo siguiente: Habilitar el infrarrojo de Planta baja Habilitar el infrarrojo de primer paso Habilitar el infrarrojo de segundo piso Habilitar el infrarrojo de tercer piso Habilitar el infrarrojo de cuarto piso Habilitar el motor subida (en caso de que sea de baja este bit es igual a 0) Habilitar el infrarrojo de motor para abrir puerta (en caso de que 00000001 00000010 00000100 00001000 00010000 01000000 10000000

sea para cerrar el bit es igual a 0) Como se puede ver al hacer la combinacin del piso q se habilita y determinar si el motor sube o baja, esto permita al ascensor realizar la accin que pedamos ya sea subir o bajar a determinado lugar, tambin se tuvo que determinar si en el programa ponamos un numero que no estaba dentro del rango o si se pona una letra al poner cualquiera de estos, el programa bota un mensaje que dice Ingrese otro piso, tambin se enviaba este mensaje si el piso en el que se encuentra es igual al piso al que desea ir. Para el controla de las puertas es solo era necesario introducir el numero uno para abrir la puerta y 0 para cerrarlas. Para ir de una parte del programa a otro se aplico los comandos para salto los cuales nos permiten comparar los nmeros que introducimos y ver si es una opcin vlida dentro del programa. 4.2.2. Circuito Para poder realizar el armado de todo el ascensor primeramente ser realiz el armazn que estaba basado en una estructura de 5 pisos como se puede observar en la imagen:

En cada piso se coloco un infrarrojo , cada infrarrojo en su pin positivo iba conectado al emisor de un transistor, mientras que su pin negativo a una resistencia de 100 y a tierra, esta tierra deber conectarse con las tierras de los dems circuitos caso contrario los transistores empezaran a calentarse. Dicho transistor tena su base conectado a la salida del puerto paralelo y su colector conectado a voltaje, este transistor tenia la funcin de no permitir que el resto del circuito intente consumir mas corriente de la que necesita mediante el puerto paralelo. De todos los emisores se jalaban cables para poderlos sumar con una compuerta lgica OR en cual su salida se conectaba a el pin negativo del fototransistor y del potencimetro, el potencimetro luego se diriga a voltaje mientras que el pin positivo del infrarrojo iba a tierra, este fototransistor se colocaba en la parte inferior del ascensor el cual

permitira que cuando se encuentre con el infrarrojo de cada piso este pueda detener el motor. La salida del sumador de todos los pisos tambin se dirige a ser la entrada de dos diferentes AND cuya otra entrada ser la entrada normal y negada que activara el motor de izquierda a derecha, cada salida del AND va conectado al puente H. La entrada que activara el motor para que cambie de sentido ser enviada por el programa esto es decir que se conecta esta vez a otro AND para que su salida de ese AND ira al puerto paralelo. La otra entrada de ese AND se dirige a voltaje, para el otro AND cuya salida ira al puerto paralelo tendr como entrada a VCC mientras que la otra ser la salida de abrir o cerrar puertas. Para armar este circuito de abrir y errar puerta se conecto otro motor cuyas entradas sern del puente H pero las entradas del puente H sern las salidas de dos AND , cada uno tendr 3 entradas, el primer OR estar conectado con la salida de las suma de las 5 entradas de los infrarrojos , el bit que activara 0 o 1 para que se abra o cierre la puerta y a la salida del contador (reloj) , este reloj se tenia como entrada a un OR que sumaba a los dos flancos positivo y negativo que hacan que se active el motor un determinado tiempo y que cuando cambie de sentido se cierre la puerta y luego vuelva a cambiar de piso, cada flanco tenia como entrada al bit que se botara por puerto para el flanco positivo y su negado del mismo al flanco negativo, la otra entrada del AND se conectaba al negado de las entradas de los infrarrojos, tambin al negado de la entrada botada por puerto y al contador. En las imgenes se muestra el circuito descrito anteriormente:

Contador (reloj)

Salidas al puerto Paralelo

Detector de Flancos

Puente H

Sumador de las entradas de los pisos y el fototransistor

Unin del fototransistor e infrarrojo

Unin de todo el circuito

5. Implementacin 5.1. Cdigo ASM .model small .stack .data var1 db ? var2 db ? var3 db ? texto1 db 10,'Piso en el que se encuentra',13,10,'$' texto2 db 10,'A que piso desea ir?',13,10,'$' texto3 db 10,'Salir o continuar? salir=0 continuar=1',13,10,'$' texto4 db 10,'Abrir puerta=1 Cerrar puerta=0',13,10,'$' texto5 db 10,'Ingrese 1 o 0',13,10,'$' msg1 db 'Motor girara a la izquierda,baja',13,10,'$' msg2 db 'Motor girara a la derecha,sube',13,10,'$' msg3 db 'Ingrese otro piso',13,10,'$' ms2 db ' ',13,10,'$'

cien DB 100 .code .startup inicio: mov ax,0600h mov bh,08h mov cx,00h mov dx,314fh int 10h ;limpia la pantalla ;-----------------------------------------------------------mov ah,02h mov bh,00 mov dh,00 mov dl,00 int 10h ; posiciona el cursor mov ax,@data mov ds,ax mov dx, offset texto1 mov ah, 09h int 21h mov ah,01h int 21h SUB AL,30H mov var1,AL mov dx, offset texto2 mov ah, 09h int 21h mov ah,01h int 21h SUB AL,30H

mov var2,AL ;----------------------------------------------------------------------------------------------------;Comprobamos piso en el que se encuentra error01: cmp var1, 6 jge compara1 jmp falla01 compara1: mov ah,09h lea dx,msg3 int 21h jmp llamada ;------------------------------------------------------------------------------------------------------falla01: cmp var1, 0 jz verificar1 jmp error02 verificar1: mov ah,09h lea dx,msg3 int 21h jmp llamada ;-----------------------------------------------------------------------------------------------------;Comprobamos El piso al cual desea subir error02: cmp var2, 6 jge compara2 jmp falla02

compara2: mov ah,09h lea dx,msg3 int 21h jmp llamada ;------------------------------------------------------------------------------------------------------falla02: cmp var2, 0 jz verificar2 jmp Comparador verificar2: mov ah,09h lea dx,msg3 int 21h jmp llamada ;------------------------------------------------------------------------------------------------------Comparador: cmp var2,1 je piso1 cmp var2,2 je piso2 cmp var2,3 je piso3 cmp var2,4 je piso4 cmp var2,5 je piso5 piso1: MOV var2,1 jmp comp piso2:

MOV var2,2 jmp comp piso3: MOV var2,4 jmp comp piso4: MOV var2,8 jmp comp piso5: MOV var2,16 jmp comp comp: cmp var1,al ja mayor jb menor je igual

mayor: MOV AH,9 LEA DX,ms2 INT 21H MOV AL,var2 ADD AL,0 XOR AH,AH DIV cien ADD AL,30H MOV DL,AL MOV AL,AH AAM ADD AX,3030H MOV BX,AX MOV AH,2 INT 21H MOV DL,BH INT 21H

MOV DL,BL INT 21H jmp Puerta menor: MOV AH,9 LEA DX,ms2 INT 21H MOV AL,var2 ADD AL,64 XOR AH,AH DIV cien ADD AL,30H MOV DL,AL MOV AL,AH AAM ADD AX,3030H MOV BX,AX MOV AH,2 INT 21H MOV DL,BH INT 21H MOV DL,BL INT 21H

jmp Puerta igual: mov ah,09h lea dx,msg3 int 21h jmp llamada ;-----------------------------------------------------------------------------------------------------------------

Puerta: mov dx, offset texto4 mov ah, 09h int 21h mov ah,01h int 21h SUB AL,30H mov var3,AL cmp var3, 0 jz cerrar jne abrir

cerrar: MOV AH,9 LEA DX,ms2 INT 21H MOV AL,var3 ADD AL,128 XOR AH,AH DIV cien ADD AL,30H MOV DL,AL MOV AL,AH AAM ADD AX,3030H MOV BX,AX MOV AH,2 INT 21H MOV DL,BH INT 21H MOV DL,BL INT 21H

jmp llamada abrir: cmp var3,1 je abrir1 jne error03 abrir1: MOV AH,9 LEA DX,ms2 INT 21H MOV AL,var3 ADD AL,128 XOR AH,AH DIV cien ADD AL,30H MOV DL,AL MOV AL,AH AAM ADD AX,3030H MOV BX,AX MOV AH,2 INT 21H MOV DL,BH INT 21H MOV DL,BL INT 21H jmp puerta error03: mov ah,09h lea dx,texto5 int 21h jmp puerta

;----------------------------------------------------------------------llamada: mov dx, offset texto3 mov ah, 09h


int 21h mov ah,01h int 21h

SUB AL,30H mov var3,AL ;--------------------------------cmp var3, 0 jz salir jmp inicio salir: .exit end 5.2. Circuitos 5.2.1. Puente H

5.2.2. Fototransistor

6. Pruebas

Cuando el circuito sube nos bota el nmero 64 mas un equivalente en binario que determina el bit del piso correspondiente es este caso 68 que ser en binario 01000100

En este caso solo bota el bit correspondiente al piso al cual se desea ir Para el manejo de las puertas solo tenamos dos opciones 1 para abrir y 0 para cerrar, pero para que cumpla la funcin completa de un ascensor al abrr la puerta nos volva a preguntar para cerrar y recin saltaba al siguiente paso:

En esta imagen vemos que para abrir la puerta se botaba el nmero 128 que equivale a 10000000 y si era 0 no botaba nada, tambin vemos para continuar con el programa debemos apretar 1 con lo cual se vuelve al principio y 0 para cerrar la aplicacin. A continuacin se presentaran imgenes cuando era posible que saliera el mensaje de error Pisos iguales

Pisos fuera del rango

Introducir letras

Para el manejo de las puertas tambin botaba error si no se introduca el numero correcto o si era una letra

7. Conclusin y Recomendaciones Mediante puerto paralelo se logro conseguir la ejecucin del programa el cual botaba bits, estos bits tenan una tarea especfica, dentro del puerto paralelo los 5 primeros bits se encargaban de encender el infrarrojo en la estructura de forma que este active el movimiento del ascensor, al realizar esto el motor sube o baja hasta encontrarse con el infrarrojo e inmediatamente se detiene. La arquitectura armada fue hecha de 5 pisos incluyendo planta baja el cual en cada piso se coloco un infrarrojo para permitir la deteccin del ascensor y detenerse en el piso correspondiente. Al momento de programar se debe tener en cuenta lo que se quiere hacer y de tal manera que se tenga la menor cantidad de errores, este programa utilizo saltos, algunos saltos tenan un rango mximo, para corregir este error se se utilizo el salto jmp el cual no tenia un rango como se podr ver el el cdigo presentado paginas anteriores El ascensor permite abrir puertas sin embargo esto no fue posible mostrar debido al peso que representaba introducir la puerta dentro del ascensor, sin embargo el cdigo se encuentra y mediante leds se comprob el funcionamiento.

8. Bibliografa
http://es.edaboard.com/topic-2165026.0.html http://www.todorobot.com.ar/proyectos/paralelo/paralelo.htm http://cfievalladolid2.net/tecno/cyr_01/control/puerto_paralelo.htm http://www.mailxmail.com/curso-informatica-ordenador-cientificodesarrollo/compiladores-interpretes-programas http://atc.ugr.es/~afdiaz/fich/IntelCodeTable_es.pdf

9. Anexos Cdigos en Tasm

Diagramas de Flujo Abrir y Cerrar


Inicio

Var3

Var3 =0 Cierra Puerta Var3=1 28 Ingrese otro piso Abre puerta

Fin

Subir y Bajar

Inicio

Var1, Var2

Var1 >Var

1<Var1 <5 Ingrese otro piso 1<Var2 <5 1<Var2 <5

1<Var1 <5

Ingrese otro piso

desHabilita Puerto 7 y el valor de Var2

Habilita Puerto 7 y el valor de Var2

Func=0

Func=1

Fin

Das könnte Ihnen auch gefallen