Mini Ascensor de 5 Plantas Controlado por Arduino Mega
Componentes y suministros
| Arduino Mega 2560 | × | 1 |
Herramientas y máquinas necesarias
- Sierra de calar
Aplicaciones y servicios en línea
- Arduino IDE
Sobre este proyecto
Este es un ascensor funcional de 5 plantas. Mide 3 pies de alto. Le hemos dedicado mucho trabajo.
Vamos al grano… ¡aquí está cómo funciona!
Enlaces rápidos:
- Código
- Diagrama de cableado (próximamente)
Inspiración
Llevamos un par de años jugando con Arduino y procesamiento embebido/IoT, pero la mayoría de proyectos que hemos hecho (y visto) son bastante simples. Buscábamos algo "real" para hacer desde hace tiempo.
Este verano, fui a un campamento genial, Project Ember. Está en el área de la Bahía de San Francisco y ¡es increíble! Los niños diseñan y construyen grandes estructuras de madera con herramientas eléctricas. Una vez supe que podía hacer eso, quise combinar la construcción física con Arduino y ¡este es el resultado!
Enfoque
La parte más difícil de resolver fue la técnica del motor y detección de plantas. Un ascensor real probablemente usa un gran motor A/C con sensores en cada planta. Ciertamente podríamos usar este enfoque a menor escala, pero poner sensores en cada planta requiere mucho cableado, y tendríamos preocupaciones sobre sensibilidad y alineación, etc. Por otro lado, un motor paso a paso puede posicionarse con precisión… pero tendríamos que saber exactamente dónde estamos y cuánto tenemos que ir para hacerlo.
Por suerte, ya habíamos hecho algo similar en nuestro proyecto anterior de "calendario fancy". Allí averiguamos cómo usar motores paso a paso y, más interesante aún, cómo guardar sus posiciones en memoria no volátil (EEPROM del Arduino). Usaremos el mismo enfoque aquí. Así no necesitamos sensores de posición, solo confiamos en nuestra capacidad para contar el número de pasos que movemos nuestro motor paso a paso.
La otra preocupación de diseño era con los botones de llamada del ascensor. Necesitan ser interruptores momentáneos iluminados, pero las luces deben ser controlables independientemente del botón. Encontramos algunos adecuados en eBay.
Materiales
Botones con luces separadas (Comprados en eBay, deberían verse como:


- Un Arduino Mega2560 – lo elegimos porque tenía más pines GPIO para todas las campanas y silbatos del proyecto. Compra Oficial – podrías conseguir una imitación/compatible más barata.
- Una matriz LED 8×8 para mostrar flechas Comprar (Amazon)
- Un display de 7 segmentos para mostrar números de planta Comprar (SparkFun)
- Un motor paso a paso y placa controladora para mover el coche Comprar pack de 5 (Elegoo) Nota: solo usas uno, pero podrías necesitar más. Y puedes reutilizar la caja. 🙂
- Una protoboard para Mega2560, para conectar nuestros cables Comprar (BangGood) Desoldamos el header superior, no es necesario.
- Bornes de tornillo (10×2) Comprar (frys.com) Necesitarás 4
- Bobina de hilo
Puedes encontrar todos los materiales siguientes en tu Home Depot local u otra tienda de mejoras para el hogar:
- Tablero de fibra y moldura de 3/4 pulg cuadrado para el ascensor y el coche.
- Soporte de ángulo de aluminio para sujetar el motor
- Tornillos surtidos
- Manguera para actuar como buje dentro de la bobina
- Cuerda (usamos cuerda de nailon resistente para cometas)
Construcción
Hicimos el hueco y el coche de tablero de fibra y moldura para reforzar las esquinas.
Empezamos con el hueco del ascensor. Cortamos 3 piezas de tablero de fibra a 36″x8″ para los laterales y la parte trasera (el frente está abierto). Luego, usando 4 piezas de moldura cuadrada de 3/4″, de 36″ de largo, atornillamos el tablero de fibra para hacer un hueco vertical. Piezas cuadradas de tablero de fibra en la parte superior e inferior mantienen todo cuadrado.
El coche del ascensor es siguiente. Usa el mismo tipo de construcción, con paredes, techo y suelos de tablero de fibra, y soportes de moldura de pino. Casi tiene el ancho completo del hueco, pero circula entre el pino delantero y trasero (así que es más ancho que profundo). Adjuntamos un gancho de ojo en la parte superior del coche, para que cuelgue de una cuerda.

Asegúrate de no poner el fondo del hueco demasiado pronto, ¡porque necesitas poder meter y sacar el coche! Una vez completadas las pruebas, puedes añadir el fondo.
El motor está encima del ascensor. Adjuntamos una bobina de hilo de coser normal al eje del motor. Esto es un poco delicado. El eje del motor tiene un borde plano pero por supuesto el agujero en la bobina es redondo. Así que taladramos y roscamos un agujero en la bobina, y pusimos un tornillo para sujetar contra el borde plano del eje del motor. Además, el agujero en la bobina es más grande que el eje del motor. Para actuar como buje y rellenar el espacio, usamos un trozo muy corto de manguera de goma del tamaño apropiado.


Luego montamos el motor en una pieza de ángulo de aluminio y atornillamos eso a la parte superior del hueco. Para soportar el otro lado de la bobina, pusimos un tornillo a través de una segunda pieza de ángulo de aluminio. Esto hace que el peso del ascensor no tire la bobina fuera del eje del motor, se mantendrá nivelado.
Usamos más tablero de fibra para hacer los paneles de botones. A la izquierda, usamos una tabla de la altura del hueco para los botones de llamada. Usamos botones rojos y verdes alternados. Rojo para bajar, verde para subir. La planta superior solo tiene rojo y la inferior solo verde. Nuestro panel "dentro del ascensor" está a la derecha. Cortamos agujeros para la matriz LED y el display de 7 segmentos además de los 5 agujeros para los botones.


Montamos 4 cajas de tornillos. Dos en el panel de llamada, y dos al lado del panel "dentro del ascensor".
Cableado
El cableado es complicado ¡porque hay mucho! Elegimos usar un shield de prototipado para Arduino Mega, en parte porque ya teníamos uno :-). Pero la verdadera motivación era que con tantos cables, nos preocupaba que algo inevitablemente se desconectara si usábamos solo las conexiones estándar de pines del Arduino. Con el shield de prototipado, podíamos soldar cables directamente y evitar ese riesgo. Además, nos daba un lugar conveniente para poner cosas como resistencias, necesarias para nuestro display de 7 segmentos.

Dicho esto, no queríamos todos estos paneles cableados rigidamente, porque si cometíamos un error, sería muy difícil de arreglar. Así que cada cable tiene algún tipo de extremo extraíble. Usamos bloques de tornillos entre los paneles de interruptores y el Arduino, y para el display de 7 segmentos y matriz LED, un extremo de los cables siguen siendo pines de desconexión rápida.

Para los paneles de botones, hicimos nuestros propios mazos de cableado, usando conectores fast-on hembra a presión que encajan perfectamente en los terminales de los botones. Como cada botón necesitaba dos tierras (una para el botón y otra separada para la luz), habría MUCHOS cables de tierra si los lleváramos todos al Arduino. Así que los encadenamos todos juntos con un mazo de cableado personalizado. Los pines de señal (uno para el interruptor y uno para la luz en cada botón) son todos separados, yendo a los bloques de tornillos.


Finalmente, los bloques de tornillos nos dieron otra ventaja: usamos cable de núcleo sólido para soldar al shield de prototipado, pero cable trenzado para los conectores fast-on en la parte trasera de los botones. Los bloques de tornillos nos dieron un lugar para cambiar de uno a otro sin soldar.
Programación
Tuvimos muchas revisiones de código, pero aquí está la versión actual. La parte más complicada del software es la lógica para averiguar a dónde debe ir el coche del ascensor. Si está en la planta 2, alguien dentro quiere ir a la 3, alguien quiere bajar desde la 4 y subir desde la 1… ¿a dónde vas primero?
La otra parte complicada es que la forma en que la librería de motor paso a paso normalmente funciona es que durante el tiempo que el motor se mueve, nada llama a la función "loop()" del Arduino. Sin embargo, debería funcionar que alguien presione un botón mientras el ascensor está en tránsito. Así que no puedes ir todo el camino al destino en un solo paso: necesitas moverte un poco a la vez, comprobando pulsaciones de botones (y posibles cambios de destino) por el camino.
Puedes descargar nuestro sketch de Arduino aquí.
Para subir el código:
Necesitarás descargar estas librerías:
- LEDControlMS
- SevenSeg
Sube el código:
- Elige la placa correcta: Ver esta imagen
- Elige el puerto: Similar, pero vas a "Port". En MacOS, será algo como /dev/cu.usbmodem1411, mientras que en Windows, será algo como COM2.
- Sube tu código.

Si lo hizo, ¡felicidades! Pasa a pruebas. Si no, vuelve al paso 5. Si eso no funcionó de nuevo, revisa tu cableado. Si eso no funcionó, contáctanos usando el enlace de arriba.
- Descarga el Arduino IDE. arduino.cc
- Abre el código.
- Para instalar librerías, ver este tutorial.
- El ascensor debería pasar su auto-test. Todos los botones de llamada deberían encenderse en secuencia, luego los cinco botones interiores, luego el display de 7 segmentos debería ciclar, luego la matriz debería mostrar flechas arriba y abajo. Una vez completado, el display de 7 segmentos mostrará el último número de planta conocido del coche del ascensor.
Pruebas/Calibración
Como el motor paso a paso necesita saber exactamente dónde parar para cada planta, necesitas decírselo manualmente – una vez. Lo recordará en memoria no volátil (significa que lo guardará incluso cuando la energía se desconecte).
Para calibrar:
- Mantén presionados los botones superior e inferior del panel derecho. La matriz debería mostrar una C (de calibrate).
- Usa esos botones superior e inferior para mover manualmente el coche a la planta mostrada en el display de 7 segmentos. Cuando esté en el lugar correcto, presiona el botón central.
- Repite el paso 2 para las cinco plantas. Cuando termines, la matriz se apagará.
Próximos pasos
¡Proyectos como este nunca están realmente terminados! Nos gustaría reconstruir la estructura del ascensor y hueco con piezas cortadas por láser. Usamos una sierra de calar manual y nuestros cortes no son realmente tan rectos… eso es parcialmente lo que causa nuestro "problema de fricción". Al mismo tiempo, diseñaríamos un mejor soporte de motor y conseguiríamos un motor mejor y más rápido.
Electrónicamente, hemos tenido una petición para añadir una campana o carillón cada vez que se abre la puerta del ascensor, como hacen muchos ascensores reales. También lo haremos.
¡Cualquier pensamiento o sugerencia sobre este proyecto, háznoslo saber en los comentarios!
Historial de versiones
Nota: El enlace de Google Drive se actualizará automáticamente con cada versión.
Versión 2: Arreglado el bug donde llamar al ascensor desde fuera en la planta actual podía causar que el software se colgara, requiriendo pulsar el botón de reset.
Código
Librería Arduino LED Matrix
https://github.com/shaai/Arduino_LED_matrix_sketch
Librería SevenSeg
https://github.com/sigvaldm/SevenSeg
Sketch Arduino
Proceso de manufactura
- Simplesse®: el sustituto de grasa proteico que transforma alimentos bajos en grasa
- Juego de Batalla Contra Jefe con Arduino Mini – Proyecto Retro
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Reloj Preciso de 7 Segmentos con Arduino Pro Mini y RTC DS1302