Ascensor Controlado Por Assembler

33
Ascensor Controlado por Assembler 1. Objetivos 1.1. Objetivo General Diseñar un programa en assembler, capaz de controlar un ascensor, mediante el puerto paralelo. 1.2. Objetivos específicos Diseñar un la arquitectura de un ascensor para poder realizar la prueba del programa controlador. Poner en práctica los conocimientos adquiridos en clases en la aplicación de los proyectos. Conocer y aplicar el puerto paralelo para la implementación en la union de software y hardware en el proyecto. 2. Antecedentes El uso de las computadoras analógicas y digitales ha posibilitado la aplicación de ideas de control automático a sistemas físicos que hace apenas pocos años era imposibles de analizar o controlar. La automatización 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 programación necesaria para el control específico de plantas. La gama de programas existentes que permiten controlar plantas, poseen distintas características que permiten al usuario elegir aquel que le facilite más su tarea, existen programas de bajo nivel hasta alto nivel,

Transcript of Ascensor Controlado Por Assembler

Page 1: Ascensor Controlado Por Assembler

Ascensor Controlado por Assembler

1. Objetivos 1.1. Objetivo General

Diseñar un programa en assembler, capaz de controlar un ascensor, mediante el puerto paralelo.

1.2. Objetivos específicos

Diseñar un la arquitectura de un ascensor para poder realizar la prueba del programa controlador.

Poner en práctica los conocimientos adquiridos en clases en la aplicación de los proyectos.

Conocer y aplicar el puerto paralelo para la implementación en la union de software y hardware en el proyecto.

2. Antecedentes

El uso de las computadoras analógicas y digitales ha posibilitado la aplicación de ideas de control automático a sistemas físicos que hace apenas pocos años era imposibles de analizar o controlar.

La automatización 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 programación necesaria para el control específico de plantas.

La gama de programas existentes que permiten controlar plantas, poseen distintas características que permiten al usuario elegir aquel que le facilite más su tarea, existen programas de bajo nivel hasta alto nivel, programas que permiten la creación de interfaces y aquellos que se especializan solo en la programación.

3. Fundamento Teórico

3.1. Puerto Paralelo

El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, relés, LED's, etc. El mismo posee un bus de datos de 8

Page 2: Ascensor Controlado Por Assembler

bits (Pin 2 a 9) y muchas señales de control, algunas de salida y otras de entrada que también pueden ser usadas fácilmente.

En este conector:

8 líneas (pines) son para salida de datos (bits de DATOS). Sus valores son únicamente modificables a través de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7).

5 líneas son de entrada de datos (bits de ESTADO), únicamente modificables a través del hardware externo. Estos pines son: 11, 10, 12, 13 y 15, del más al menos significativo.

4 líneas son de control (bits de CONTROL), numerados del más significativo al menos: 17, 16, 14 y 1. Habitualmente son salidas, aunque se pueden utilizar también como entradas y, por tanto, se pueden modificar tanto por software como por hardware.

las líneas de la 18 a la 25 son la tierra.

En la siguiente tabla se detallan la nomenclatura y descripción de cada línea. La columna "Centronics pin" se refiere a las líneas del conector tipo Centronics usado en las impresoras. La columna E/S se refiere al dato visto desde el lado del PC.

DB25pin

Centronicspin

Tipo(E/S)

Señal Descripción

1 1 S StrobeSi está bajo más de 0.5 µs, habilita a la impresora para que reciba los datos enviados.

2 2 S D0 Bit 0 de datos, bit menos significativo (LSB)

3 3 S D1 Bit 1 de datos

Page 3: Ascensor Controlado Por Assembler

4 4 S D2 Bit 2 de datos

5 5 S D3 Bit 3 de datos

6 6 S D4 Bit 4 de datos

7 7 S D5 Bit 5 de datos

8 8 S D6 Bit 6 de datos

9 9 S D7 Bit 7 de datos, bit más significativo (MSB)

10 10 E AckUn pulso bajo de ~11µs indica que se han recibido datos en la impresora y que la misma está preparada para recibir más datos.

11 11 E Busy En alto indica que la impresora está ocupada.

12 12 E PaperEnd En alto indica que no hay papel.

13 13 E SelectIn En alto para impresora seleccionada.

14 14 S AutoFeedSi está bajo, el papel se mueve una línea tras la impresión.

15 32 E ErrorEn bajo indica error (no hay papel, está fuera de línea, error no det.).

16 31 S InitSi se envía un pulso en bajo > 50 µs la impresora se reinicia.

17 36 S SelectEn bajo selecciona impresora (en gral. no se usa, ya que SelectIn se fija a alto).

18-25

19-30,33 GND Masa retorno del par trenzado.

18-25

16 Masa lógica

18-25

17 Masa chasis

Page 4: Ascensor Controlado Por Assembler

3.2. Compilador Assembler

3.3. Userport

UserPort.SYS es un modo de núcleo 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 diseñado para movilizar personas o bienes entre diferentes niveles. Puede ser utilizado ya

Page 5: Ascensor Controlado Por Assembler

sea para ascender o descender en un edificio o una construcción subterránea. Se conforma con partes mecánicas, eléctricas y electrónicas 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. Programación

El código para la implementación se baso en sumas para determinar el número que saldría por el puerto paralelo (el diagrama de flujo se encuentra en anexos), estas sumas tendría que hacer lo siguiente:

Habilitar el infrarrojo de Planta baja

00000001

Habilitar el infrarrojo de primer paso

00000010

Habilitar el infrarrojo de segundo piso

00000100

Habilitar el infrarrojo de tercer piso

00001000

Habilitar el infrarrojo de cuarto piso

00010000

Habilitar el motor subida (en caso de que sea de baja este bit es

igual a 0)01000000

Habilitar el infrarrojo de motor 10000000

Page 6: Ascensor Controlado Por Assembler

para abrir puerta (en caso de que sea para cerrar el bit es igual a 0)Como se puede ver al hacer la combinación del piso q se habilita y determinar si el motor sube o baja, esto permitía al ascensor realizar la acción que pedíamos ya sea subir o bajar a determinado lugar, también se tuvo que determinar si en el programa poníamos un numero que no estaba dentro del rango o si se ponía una letra al poner cualquiera de estos, el programa bota un mensaje que dice ‘Ingrese otro piso’, también 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 números que introducimos y ver si es una opción válida dentro del programa.

4.2.2. Circuito

Para poder realizar el armado de todo el ascensor primeramente ser realizó el armazón que estaba basado en una estructura de 5 pisos como se puede observar en la imagen:

Page 7: Ascensor Controlado Por Assembler

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 demás circuitos caso contrario los transistores empezaran a calentarse. Dicho transistor tenía su base conectado a la salida del puerto paralelo y su colector conectado a voltaje, este transistor tenia la función 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 lógica OR en cual su salida se conectaba a el pin negativo del fototransistor y del potenciómetro, el potenciómetro luego se dirigía a voltaje mientras que el pin positivo del infrarrojo iba a tierra, este fototransistor se colocaba en la parte inferior del ascensor el cual

Page 8: Ascensor Controlado Por Assembler

permitiría que cuando se encuentre con el infrarrojo de cada piso este pueda detener el motor.La salida del sumador de todos los pisos también 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 serán del puente H pero las entradas del puente H serán 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 hacían 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 botaría 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, también al negado de la entrada botada por puerto y al contador.En las imágenes se muestra el circuito descrito anteriormente:

Page 9: Ascensor Controlado Por Assembler

Contador (reloj)

Salidas al puerto Paralelo

Page 10: Ascensor Controlado Por Assembler

Detector de Flancos

Puente H

Page 11: Ascensor Controlado Por Assembler

Sumador de las entradas de los pisos y el fototransistor

Unión del fototransistor e infrarrojo

Page 12: Ascensor Controlado Por Assembler

5. Implementación 5.1. Código 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,'$'

Unión de todo el circuito

Page 13: Ascensor Controlado Por Assembler

cien DB 100 .code .startupinicio:

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

Page 14: Ascensor Controlado Por Assembler

mov var2,AL

;-----------------------------------------------------------------------------------------------------;Comprobamos piso en el que se encuentra

error01:

cmp var1, 6jge compara1jmp falla01 compara1:

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

cmp var1, 0jz verificar1jmp error02 verificar1:

mov ah,09h lea dx,msg3 int 21h jmp llamada

;------------------------------------------------------------------------------------------------------;Comprobamos El piso al cual desea subirerror02:

cmp var2, 6jge compara2jmp falla02

Page 15: Ascensor Controlado Por Assembler

compara2:

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

cmp var2, 0jz verificar2jmp Comparador verificar2:

mov ah,09h lea dx,msg3 int 21h jmp llamada

;------------------------------------------------------------------------------------------------------- Comparador:cmp var2,1je piso1cmp var2,2je piso2 cmp var2,3je piso3cmp var2,4je piso4cmp var2,5je piso5

piso1:MOV var2,1jmp comppiso2:MOV var2,2

Page 16: Ascensor Controlado Por Assembler

jmp comppiso3:MOV var2,4jmp comppiso4:MOV var2,8jmp comppiso5:MOV var2,16jmp comp

comp:cmp var1,al ja mayor jb menor je igual mayor:

MOV AH,9LEA DX,ms2INT 21HMOV AL,var2ADD AL,0XOR AH,AHDIV cienADD AL,30HMOV DL,ALMOV AL,AHAAMADD AX,3030HMOV BX,AXMOV AH,2INT 21HMOV DL,BHINT 21HMOV DL,BL

Page 17: Ascensor Controlado Por Assembler

INT 21H

jmp Puerta menor: MOV AH,9LEA DX,ms2INT 21HMOV AL,var2ADD AL,64XOR AH,AHDIV cienADD AL,30HMOV DL,ALMOV AL,AHAAMADD AX,3030HMOV BX,AXMOV AH,2INT 21HMOV DL,BHINT 21HMOV DL,BLINT 21H

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

;------------------------------------------------------------------------------------------------------------------Puerta:mov dx, offset texto4

Page 18: Ascensor Controlado Por Assembler

mov ah, 09h int 21h

mov ah,01h int 21h

SUB AL,30H mov var3,AL

cmp var3, 0jz cerrarjne abrir cerrar:

MOV AH,9LEA DX,ms2INT 21HMOV AL,var3ADD AL,128XOR AH,AHDIV cienADD AL,30HMOV DL,ALMOV AL,AHAAMADD AX,3030HMOV BX,AXMOV AH,2INT 21HMOV DL,BHINT 21HMOV DL,BLINT 21H

jmp llamada abrir:

Page 19: Ascensor Controlado Por Assembler

cmp var3,1je abrir1jne error03 abrir1:

MOV AH,9LEA DX,ms2INT 21HMOV AL,var3ADD AL,128XOR AH,AHDIV cienADD AL,30HMOV DL,ALMOV AL,AHAAMADD AX,3030HMOV BX,AXMOV AH,2INT 21HMOV DL,BHINT 21HMOV DL,BLINT 21H

jmp puerta

error03:mov ah,09h lea dx,texto5 int 21h jmp puerta

;-----------------------------------------------------------------------

Page 20: Ascensor Controlado Por Assembler

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

int 21h mov ah,01h int 21h

SUB AL,30H mov var3,AL;--------------------------------- cmp var3, 0jz salirjmp inicio

salir:.exitend

5.2. Circuitos 5.2.1. Puente H

5.2.2. Fototransistor

Page 21: Ascensor Controlado Por Assembler

6. Pruebas

Page 22: Ascensor Controlado Por Assembler

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

Page 23: Ascensor Controlado Por Assembler

En este caso solo bota el bit correspondiente al piso al cual se desea ir

Para el manejo de las puertas solo teníamos dos opciones 1 para abrir y 0 para cerrar, pero para que cumpla la función completa de un ascensor al abrr la puerta nos volvía a preguntar para cerrar y recién saltaba al siguiente paso:

En esta imagen vemos que para abrir la puerta se botaba el número 128 que equivale a 10000000 y si era 0 no botaba nada, también vemos para continuar con el programa debemos apretar 1 con lo cual se vuelve al principio y 0 para cerrar la aplicación.

A continuación se presentaran imágenes cuando era posible que saliera el mensaje de errorPisos iguales

Pisos fuera del rango

Page 24: Ascensor Controlado Por Assembler

Introducir letras

Para el manejo de las puertas también botaba error si no se introducía el numero correcto o si era una letra

Page 25: Ascensor Controlado Por Assembler

7. Conclusión y Recomendaciones

Mediante puerto paralelo se logro conseguir la ejecución del programa el cual botaba bits, estos bits tenían una tarea específica, 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 detección 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 tenían un rango máximo, para corregir este error se se utilizo el salto jmp el cual no tenia un rango como se podrá ver el el código 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 código se encuentra y mediante leds se comprobó el funcionamiento.

8. Bibliografía

http://es.edaboard.com/topic-2165026.0.htmlhttp://www.todorobot.com.ar/proyectos/paralelo/paralelo.htmhttp://cfievalladolid2.net/tecno/cyr_01/control/puerto_paralelo.htmhttp://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/compiladores-interpretes-programashttp://atc.ugr.es/~afdiaz/fich/IntelCodeTable_es.pdf

Page 26: Ascensor Controlado Por Assembler

9. Anexos Códigos en Tasm

Page 27: Ascensor Controlado Por Assembler
Page 28: Ascensor Controlado Por Assembler
Page 29: Ascensor Controlado Por Assembler

Diagramas de Flujo

Abrir y Cerrar

Var3=128

Fin

Ingrese otro piso

Cierra Puerta

Var3=0

Var3

Inicio

Abre puerta

Page 30: Ascensor Controlado Por Assembler

Subir y Bajar

1<Var2<5

1<Var1<5

Fin

Func=1

Func=0

Ingrese otro pisoIngrese otro piso

Habilita Puerto 7 y el valor de Var2

desHabilita Puerto 7 y el valor de Var2

1<Var2<5

1<Var1<5

Var1>Var

Var1, Var2

Inicio