Este modelo de ascensor de tres pisos movido por un motor NEMA17 42BYGHW208, un driver L298N y controlado con Arduino se basa en un diseño anterior. El motor paso a paso tiene un voltaje nominal de 12 voltios, pero está alimentado a 5 voltios tomados de la placa de Arduino y funciona perfectamente, subiendo y bajando la caja del ascensor. Por su parte Arduino está alimentado directamente a través del cable USB que también sirve para subir el programa desde el ordenador. Los archivos para imprimir las piezas en 3D se pueden descargar de Thingiverse.
Sobre una base de madera se fijan con silicona fundida el soporte para Arduino y la base para el motor. Sobre esta pieza de la base del motor se atornilla un listón de madera de unos 30 x 10 milímetros de sección, aunque puede ser mayor, y de 43 centímetros de largo. Sobre este listón se atornilla también el soporte superior para la polea, los pulsadores y los finales de carrera.
La caja del ascensor está formada por cinco piezas pegadas con silicona. Esta caja se mueve sobre dos varillas de aluminio de 4 mm de diámetro, encajadas entre la pieza de la base que aguanta el motor y la pieza que aguanta la polea superior. Estas dos piezas están unidas al listón vertical de madera, por lo que todo ello forma un cuerpo bastante rígido. Los agujeros por donde se han de introducir las varillas de aluminio también se han de repasar con la broca de 4 mm para que el movimiento sea muy suave y no dificulte en absoluto el giro del tambor y el motor. Las dos varillas de aluminio tienen longitudes diferentes, una de ellas es de 422 milímetros y la otra de 360 milímetros.
Para repasar los agujeros, e incluso para hacer el agujero pequeño del tambor, en donde va insertado el hilo de cáñamo, es muy práctico un gira brocas manual, como el que se muestra a continuación.
Los tres finales de carrera se sujetan sobre el listón de madera con dos tornillos. Estos finales de carrera tienen tres terminales y de estos se utilizan dos. Al que está marcado como COM (Común) se le hacen llegar 5 voltios y en el NO (Normalmente abierto) se conecta el cable que nos lleve al pin de Arduino que haya de leer el estado de este elemento. En este mismo punto se conecta una resistencia de 10 K y en su extremo se conecta a GND. Este montaje se utiliza para descargar rápidamente la tensión del pin de Arduino en el momento en que deje de estar presionado el final de carrera.
Los pulsadores se fijan sobre el listón de madera mediante unos pequeños soportes. El montaje eléctrico de estos pulsadores es similar al de los finales de carrera, pero en este caso solo hay dos terminales a conectar y se pueden usar indistintamente.
Los finales de carrera que detectan la llegada de la cabina a los distintos pisos están conectados a los pines 5 (Planta baja), 6 (Primer piso) y 7 (Segundo piso). Los pulsadores utilizados para solicitar el ascensor en los distintos pisos están conectados a los pines 1 (Planta baja), 2 (Primer piso) y 4 (Segundo piso).
En la parte superior del listón de madera está fijada una matriz de 8x8 LEDs con comunicación i2C. Su dirección se puede configurar, mediante tres interruptores DIP. En este proyecto su dirección es 0X70.
Esta dirección 0X70 se corresponde con esta posición de los interruptores.
Los dos hilos de cáñamo conviene que no queden muy tensos, pero tampoco demasiado flojos.
Esta es la vista general del conjunto.
Como que el eje de salida del motor es de 5 milímetros de diámetro el agujero del tambor en donde encajará el eje se ha de repasar con una broca de 5 milímetros. Haciendo esto el tambor queda firmemente fijado el eje, sin necesidad de utilizar adhesivos ni tornillos de fijación. En su parte central el tambor tiene un agujero de dos milímetros por donde se introduce la parte central del hilo de cáñamo que constituirá el cable que suba y baje la cabina del ascensor. Cuando este extremo llega al interior se le hace un nudo para que no pueda volver a salirse hacia afuera. De esta forma sobre el tambor se enrollan los dos extremos del hilo, uno en un sentido y otro en otro. Cuando gira el tambor un extremo se suelta y el otro se recoge. Uno de los extremos se ha de llevar hacia arriba para que de la vuelta por la polea que hay en el soporte superior. Después de esto el extremo del hilo que baja de la polea superior y el que sube del tambor se han de unir en el agujero que tiene la caja, de forma que el hilo quede tenso, pero no demasiado, cosa que podría dificultar el giro del tambor.
El driver del motor paso a paso, que utiliza un integrado L298N está conectado a los pines 8, 9 ,10 y 11 de Arduino. 8 y 9 corresponden a una bobina y 10 y 11 a la otra.
Programa para controlar el ascensor
Aquí se puede descargar este programa. Los diferentes subprogramas del programa realizado con SteamakersBlocks son los que se muestran a continuación.
Para realizar todos los cometidos que se han de llevar a cabo para el buen funcionamiento del ascensor se crean diversas funciones. Tres de ellas aseguran el correcto funcionamiento del ascensor y son llamadas sucesivamente desde el Bucle. Activar pulsadores asigna el valor verdadero a las variables booleanas PB, Primero y Segundo, correspondientes a los pulsadores de los pisos, siempre y cuando se pulse uno de ellos y a la vez la caja del ascensor esté parada en uno de los otros dos pisos. Es por eso que estas estructuras condicionales tienen tres condiciones y han de cumplir una de ellas y a la vez una de las otras dos. La función Puesta a cero es la que hace que la caja del ascensor baje a la PB cuando se inicia Arduino, si es que no se encontraba ya en esta posición.
En Inicializar los tres primeros bloques son, dos de configuración de la matriz de LEDs y otro del borrado de la misma. A continuación se asigna el valor falso a las variables booleanas PB, Primero y Segundo, de forma que el motor no se activará para subir o bajar hacia otros pisos. También se asigna el valor verdadero a la variable booleana Control, que permite que después de encendido Arduino se haga bajar la caja del ascensor hasta PB. También se establece el valor de la variable numérica Piso igual a 0. Esto es lógico ya que al iniciarse Arduino la caja se hace bajar a PB.
La función Puesta a cero que es llamada desde el Bucle, si el valor de Control es verdadero, hace bajar la caja del ascensor hasta que se aprieta el final de carrera de la PB que es el correspondiente al pin 5 de Arduino. En ese momento se ejecuta la función Animacion de inicio y se cambia el valor de la variable Control a falso, con lo que desde el Bucle ya no se llamará a esta función y dejará de bajar la caja del ascensor.
La función Mover motores hace subir o bajar la caja del ascensor en función de cual sea el pulsador de piso que esté activo, es decir el que tenga en su variable asociada el valor verdadero. En el caso del piso intermedio, el Primero, sube o baja dependiendo del piso en el que se encuentre la caja del ascensor y esta información nos la proporciona la variable numérica Piso. Para la PB el valor es 0, para el Primero el valor es 1 y para el Segundo el valor es 2. Además de subir o bajar también activa las funciones Flecha arriba o Flecha abajo según convenga, para indicar que el ascensor sube o baja.
Las funciones Bajar y Subir contienen el conjunto de operaciones que se han de hacer para hacer moverse un paso al motor paso a paso, en un sentido o en otro. Estas operaciones consisten en poner los cuatro pines 8, 9, 10 y 11 en valor HIGH o LOW, es decir On o Off.
La función Activar pulsadores detecta cuando apretamos el pulsador de un piso determinado, pero solo lo hace cuando la caja del ascensor está parada en uno de los otros dos pisos. Cuando se cumplen estas condiciones asigna el valor verdadero a la variable booleana asociada a este pulsador, es decir PB, Primero o Segundo. A su vez borra la matriz 8x8..
La función Desactivar pulsadores se pone en marcha si se presiona el final de carrera del piso al que se dirigía la caja del ascensor y hace tres operaciones, por una parte asigna el valor falso a la variable booleana correspondiente para que se pare el motor, también asigna nuevo valor a la variable Piso y por último borra la matriz 8x8 y muestra PB o el valor del piso en la misma, mediante las funciones Mostrar PB, Mostrar 1 y Mostrar 2.
La función Mostrar PB tiene el valor B00000000,B11101110,B10011001,B10011001,B11101110,B10001001,B10001001,B10001110 en el Bitmap.
La función Mostrar 1 tiene el valor B00000000,B00001000,B00011000,B00101000,B00001000,B00001000,B00001000,B00011000 en el Bitmap.
La función Mostrar 2 tiene el valor B00000000,B00111000,B01000100,B01000100,B00001000,B00010000,B00100000,B01111100 en el Bitmap.
Las funciones Flecha arriba y Flecha abajo tienen los valores que se pueden ver que defines líneas rectas.
La función Animación de inicio tiene los siguientes valores en sus Bitmaps.
Este segundo programa se puede descargar también de SteamakersBlocks.
La estructura del programa es diferente pero tiene las mismas funciones que el programa anterior. Además de estas incluye un modo de funcionamiento automático que incorpora una rutina de subidas y bajas de la caja del ascensor. Se accede a esta función llamada Automatico apretando a la vez los finales de carrera de la planta baja y del primer piso, conectados a los pines digitales 5 y 6 de Arduino.
En el bloque inicializar está la configuración de la matriz 8x8 y se asigna valor a la única variable, que es una booleana de nombre Control.
En el bloque Bucle se encuentran seis estructuras condicionales. La primera dirige a la función Puesta a cero cuando se enciende Arduino, ya que en un primer momento el valor de la variable booleana Control es verdadero. Esta función hace bajar la caja del ascensor hasta PB, si es que no se encontraba ya allí.
La segunda estructura condicional permite ejecutar la función Automatico cundo se encuentran presionados los finales de carrera de los pines 5 y 6, cosa que podemos conseguir cuando la caja del ascensor se encuentra en la PB y apretamos con la mano el final de carrera del primer piso, o viceversa. También podemos apretar los dos con la mano cuando se encuentra la caja en el segundo piso.
A continuación las cuatro estructuras condicionales permiten mover la caja del ascensor con los pulsadores. La primera hace subir la caja del ascensor hasta el segundo piso, cuando la caja se encuentra en la Planta Baja o el primer piso. La segunda hace bajar la caja del ascensor hasta la planta baja, cuando la caja se encuentra en el primer piso o en el segundo. La tercera hace subir la caja del ascensor de la Planta Baja al primero y la cuarta hace bajar el ascensor del segundo piso al primero.
Dentro de estas estructuras condicionales hay una estructura de repetición que hace que se mueva la caja del ascensor hasta que sea presionado el final de carrera del piso al que se dirige.
En la función Puesta a cero se hace bajar la caja del ascensor hasta que se presione el final de carrera de la Planta Baja. A continuación se ejecuta la función Animacion de inicio. Para que no se vuelva a ejecutar esta función al final se asigna a la variable booleana Control el valor falso.
En la función Automatico se ejecuta una secuencia de movimientos de la caja del ascensor. Al final de todos estos movimientos se vuelve a ejecutar la función Puesta a cero al volver a asignar a la variable booleana Control el valor verdadero.
Estas son las dos funciones Subir y Bajar.
A continuación se muestran todas las funciones que hacen que se vea alguna cosa en la matriz 8x8.
Con respecto al programa anterior las únicas variaciones en estos gráficos es que las dos flechas se construyen también con un Bitmap. En el caso de la Flecha abajo su Bitmap es:
No hay comentarios:
Publicar un comentario