ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Un colombiana tomado a lazar


Enviado por   •  29 de Septiembre de 2015  •  Ensayos  •  2.509 Palabras (11 Páginas)  •  149 Visitas

Página 1 de 11

PROYECTO ASCENSOR

CIRCUITOS DIGITALES II

Manuel Galindo, Giovanni López

manuelgalindo@unicauca.edu.co; gilopez@unicauca.edu.co

Programa de Ingeniería en Electrónica y Telecomunicaciones - FIET

Universidad del Cauca

Popayán – Colombia

[pic 1]

I. INTRODUCCION

 

Los microcontroladores fueron pensados para control, tienen la capacidad de trabajar con procesos simples, pero continuos, sin problemas de ejecución a largo plazo. Un ascensor es un entorno óptimo para un microcontrolador pues tiene que recibir señales digitales de diferente tipo (pulsadores), señales analógicas (sensores) y salidas digitales (indicadores, interruptores, etc)

El diseño electrónico de un ascensor no resulta complicado, pero cuando se quieren optimizar los procesos de ejecución para sacarle el mejor provecho y que sea funcional para los usuarios ya no resulta tan fácil, muchas tareas de comparación para optimizar dificultan los procesos de diseño.

II.  DESARROLLO

 

La primera etapa consistió en la lectura de los pulsadores, sin embargo cuando en las simulaciones tanto en MPLAB SIM como en ISIS solo se ejecutaba una sola tarea a la vez y resultaba interrumpida por cualquier solicitud en los teclados, lo primero fue implementar una memoria para almacenar dichas tareas. Se resume el proceso de lectura así:

*Lectura de teclado interno:

-barrido pin a pin con los pines asociados a los botones de la cabina.

- Almacenamiento en un bit asociado en un registro llamado CABINA

* Lectura teclado interno:

-barrido pin a pin con pines asociados a los botones exteriores

-almacenamiento de valor asociado a la tarea en registro ext

-comparación de valor ext con valores en registro ext0…ext4, si esta repetido se descarta la lectura en ext

-comparación para detectar algún espacio libre en la pila entre ext0…ext4 si no hay espacios descarta ext, si hay programa ext en donde haya espacio y termina la lectura

Cuando termina la lectura se inicia una subrutina de nombre Ejecutor de tareas, este inicialmente verifica si alguna tarea en la pila ext, si la hay ejecuta una instrucción de decodificación ya que en la pila se almacena un valor codificado, este valor decodificado libera un valor que indica al piso que debe ir a recoger el pasajero y si quiere subir o bajar. Hecho esto se verifica si hay alguna instrucción en el vector CABINA; si lo hay pasa a una rutina de selección de prioridad, si no pasa a ejecutar simplemente lo que hay en la pila. Cuando no hay nada en la pila ext pero si en el vector CABINA, pasa a ejecutar lo que se encuentra en el vector cabina.

Terminado lo anterior inicia la parte de ejecución de tareas, primero la propuesta era un selector de prioridad, sin embargo la gran cantidad de comparaciones resulto complicada y en algunos casos se presentaban errores de ejecución en la pila de hardware (stack), en algunos casos retornaba la pila de forma incorrecta a zonas del código que generaban loops (ciclos cerrados), por tanto se tuvo que desechar esta parte durante el desarrollo y continuar con otras partes necesarias para la ejecución.

Para continuar con el desarrollo se estableció un código que pasa directamente las tareas de la cabina y los botones exteriores hacia el comparador. Se compara el piso en que encuentra la cabina contra el piso al que se quiere ir. Se recurre al bit Z y al bit C para hacer esta comparación, si el bit Z se pone en 1, eso significa que el piso al que se quiere ir y el piso actual son los mismos, por tanto debe parar el motor y retornar al bucle; en caso contrario pasa a ver el bit C, cuando C esta en 1, eso significa que la cabina se encuentra por debajo de donde se quiere ir, cuando es positivo significa que está por encima y por ende la cabina tiene que bajar, se muestra el código:

 

PISO > valor de piso donde está la cabina

PISOF > valor de piso a donde se quiere ir

PISOR > valor temporal para la ejecución

Comparador_piso

                                        

                        movfw PISOF

                        movwf PISOR

                        comf PISOR,F        

                        movlw 0x01        

                        addwf PISOR,F        

                        movfw PISO                                addwf PISOR,F        

                        btfsc STATUS,Z

                        call Motor_parar        

                        btfsc STATUS,Z                                goto limpieza        

                        btfsc STATUS,C                                call Motor_bajar        

                        call Motor_subir         

                        return

En términos generales esta es la columna principal del código, lo demás son aditamentos para administrar los pines, polarizar el motor y manejar el visualizador 7 segmentos.

A nivel de hardware, se asignaron los pines de manera que fuera más cómoda para el montaje físico. Se muestran cómo se asignaron en la siguiente lista:

Puertos

Pulsadores exteriores para llamar a la cabina:

Subir_1        (RC0)

Bajar_2        (RC1)

Subir_2        (RC2)

Bajar_3        (RC3)

Subir_3        (RD0)

Bajar_4        (RD1)

Teclado numérico ubicado en la cabina del ascensor:

Cabina_P4        (RC4)

Cabina_P3        (RC5)

Cabina_P2        (RC6)

Cabina_P1        (RC7)

Botón de emergencia para bloquear puertas y detener cabina.

Emergencia         (RD2)

Entradas para los sensores de la cabina. Cabe aclarar que se emplearon fotorresistencias, pero se ajustaron de manera que cambiaran en voltajes que representen niveles lógicos. Es decir, cuando no está obstruido el sensor hay una entrada de 0.9V (cero lógico), cuando hay  una obstrucción, el voltaje llega a un nivel de 4.5V (1 lógico).

...

Descargar como (para miembros actualizados)  txt (12.2 Kb)   pdf (734.6 Kb)   docx (558.8 Kb)  
Leer 10 páginas más »
Disponible sólo en Clubensayos.com