Proyecto de un ascensor para 4 pisos.
La idea de este proyecto es construir y programar un ascensor educativo con el kit de robótica educativa de Lego Mindstorms NXT u otro similar.

Para una mejor comprensión el proyecto este se divide en dos partes:
Cuando se diseña un ascensor el algoritmo que describe su funcionamiento puede ser tan fácil o tan difícil como se quiera manejar. En este proyecto el algoritmo se basa en el piso actual, en el piso de destino y en la dirección que está tomando para llegar al piso del destino.

Lógica de funcionamiento:
Al pulsar un sensor de tacto el ascensor sube al piso indicado, abre la puerta espera 3 segundos y cierra la puerta, el ascensor regresa al piso no. 1
Ejemplos
Caso no. 1
1. Pulsar el sensor No. 4, petición desde el piso 4.
2. El ascensor sube al piso 4.
3. Abre la puerta espera 3 segundos y cierra la puerta.
4. El ascensor baja al piso 1, espera nueva petición.
Caso no. 2
Al pulsar un sensor de tacto el ascensor sube al piso indicado, abre la puerta espera 2 segundos y cierra la puerta, el ascensor permanece en esa posición hasta que reciba otra petición desde otro piso.
1. Pulsar el sensor No. 4, petición desde el piso 4
2. El ascensor sube al piso 4,
3. Abre la puerta espera 2 segundos y cierra la puerta.
4. El ascensor permanece en esa posición hasta que reciba otra petición desde cualquier otro piso.

Descripción. Utilizar cuatro sensores de tacto uno por cada piso
Asignar a cada sensor de tacto un número que le identifique. Esto nos permite determinar el número de piso en que se encuentra el ascensor y el número del piso hacia el cual se dirige.


Para determinar si el ascensor tiene que dirigirse hacia arriba o hacia abajo y cuantas rotaciones tiene que realizar el motor para llegar hasta el piso solicitado procedemos de la siguiente manera:

Si pulsan el botón 3 entonces la variable A=3, si pulsa el botón 2 entonces A =2, igual para los demás.
Este valor nos permite identificar la acción que se debe ejecutar para que el ascensor se dirija al piso solicitado.

 Programación en NXT-G para el caso No. 1

En este caso el ascensor sube al piso solicitado  y luego regresa al piso No. 1
Para identificar cual fue el botón pulsado utilizamos una variable y le asignamos un valor igual a la del puerto
correspondiente, este valor nos permite identificar la acción que dirige el ascensor hacia el piso solicitado.

 Como identificar el botón pulsado.
Primero hacemos A=0 y luego les asignamos los valores 1,2,3,4, dependiendo del sensor pulsado.
El bucle (repite) permite la espera mientras pulsamos un botón, una vez pulsado un botón se verifica
si el valor está en el rango de 1- 4, si es así sale del bucle. El siguiente paso es ejecutar la acción relacionada
con el valor de la variable.

Una vez identificado el boton pulsado: Tenemos 4 acciones a ejecutar.

Para la programación en NXTG utilizamos un Switch

En control seleccionamos Value y Number,  en Display deseleccionamos  Flat view, en conditions  asignamos los valores correspondiente a cada acción.

Para facilitar la vista del programa el loop ( repite) anterior se convierte en un block: BOTON

En condition nos muestra que si el valor de entrada es 1  se ejecuta la acción 1, que si el valor de entrada es 2 se ejecuta la acción 2, etc. 

Si   A= 1 como el ascensor está en el piso 1 no se ejecuta ninguna acción.

Si   A=2  se ejecuta la acción 2 que consiste en ejecutar el numero de rotaciones necesarias

para llegar al piso 2, luego ejecuta la acción ( block CABIN)  de abrir y cerrar la puerta y finalmente  regresa al piso 1

Si A= 3 o A=4 se ejecuta la acción correspondiente.

CONTENIDO DEL BLOCK CABIN      

Programación NXT-G para abrir y cerrar la puerta de la cabina.                               

El sentido de giro de del motor A depende del mecanismo diseñado para abrir y cerrar la cabina.

 

El Switch funciona de forma similar al  diagrama de la derecha.

 La forma general es:
switch (valor) {
case ‘1’: ejecuta esto si valor es 1
break;
case ‘2’: ejecuta esto si valor es 2
break;
case ‘3’: ejecuta esto si valor es 3
break;
default: ejecuta esto si valor no es ninguno de los anteriores
break;
};

 

El  bloque  CABIN  tiene las instrucciones para abrir y cerrar la puerta. El contenido del bloque CABIN es el siguiente. El motor B abre la puerta espera 2 segundo y luego cierra. Los valores y el sentido de giro dependerá del diseño particular de cada quien. Finalmente el botón Enter de ladrillo NXT permite la salida del bucle.

 Programacion NXT-G para Caso No. 2

En este caso el ascensor sube hasta el piso solicitado abre la puerta espera 2 segundo cierra la puerta y espera hasta una nueva solicitud.

Al igual que en el caso No.1 utilizamos la misma programación NXT-G para identificar el botón que fue pulsado.

 

¿Hacias arriba o hacia abajo ?

 El ascesor sale de la posición A hacia la B, la posición inicial es A y la posición final es B, cuando el ascensor llega a la posición B se debe producir un intercambio de variables  A=B el valor de B pasa a A para convertirse en la nueva posición inicial y B tendrá una valor igual a la nueva posición solicitada.

Ejemplo: 

El ascensor está en el episo 1 por tanto A=1, si pulsan el botón 3  entonces B=3 y el ascensor se dirige al piso 3, una vez en el piso 3 si  pulsan el botón 2 entonce B=2 y A toma el valor de A=3 (se intercambian las variables), para determinar hacia donde dirigirse se realiza la operación aritmética B-A ( 2-3=-1) , se verifica si el resultado es menor que cero (negativo) si es cierto entonces la acción a ejecutar en el motor es  "girar hacia atras" de lo contrario "girar hacia delante", por tanto el ascensor baja si es negativo y sube si el resultado es positivo,el signo de la operación nos permite saber si el ascensor debe subir o bajar.

B-A= +  el ascensor sube

B-A = -  el ascensor baja

La  cantidad de rotaciones a ejecutar la determinamos multiplicando el valor absoluto del resultado por un valor apropiado que depende de la altura del ascensor.

En este ejemplo para mover el ascensor de piso a otro se necesitan 9 rotaciones, por tanto multiplico por 9 cada resultado, si el resultado es -2, 9x/-2/=18 rotaciones hacia atras y el ascensor baja dos pisos, si el resultado es +1, 9x/1/=9 rotaciones hacia delante y el ascensor sube un piso, ectc..

Continuamos en la siguiente entrega..................

Vistas: 1715

Comentario

¡Tienes que ser miembro de Red Robótica Latinoamericana para agregar comentarios!

Únete a Red Robótica Latinoamericana

Comentario de Marcos Ledesma el septiembre 26, 2013 a las 11:22am

Nos podrías compartir el diseño del elevador, muchas gracias de antemano

 

Comentario de Ana Lourdes Acuña el junio 20, 2012 a las 12:36pm

Hola Eduardo. 

¡Felicitaciones, que buen trabajo con construcción y video incluido!  Gracias por tomarte tu tiempo.  Voy a motivar a la discusión y luego hablaremos de la programación.   Para que los demás vean tu solución he colocado el link desde el laboratorio de práctica. 

Vamos a esperar reacciones.  Saludos