IMPRESORA 3D
Introducción
El proyecto trata de construir una impresora 3D con tecnología de deposición de material fundido usando todos los materiales posibles reciclados. Para seguir en la línea ecológica de la impresora, utilizaremos como material de impresión PLA, material que deriva del maíz en su mayoría, el cual no produce emisiones tóxicas en ninguna parte de su vida útil y es biodegradable en muy poco tiempo bajo unas condiciones de temperatura y humedad determinadas. El proceso de construcción de este dispositivo constará de varias etapas:
- Construcción del hardware.
- Firmware configuración y optimización para nuestra impresora.
- Ajuste y calibración.
- Pruebas de impresión.
A continuación, se desarrollarán cada uno de estos puntos .
Hardware
El cerebro de nuestra impresora es una placa Arduino mega 2560 con un shield ramps 1.4.
Ramps es un shield de Arduino diseñado específicamente para controlar sistemas cartesianos tiene capacidad para integrar hasta 5 motores paso a paso, además de conectores para finales de carrera, pantalla, tarjeta de memoria…
La gran mayoría de las impresoras 3D del mercado están hechas directamente con Arduino mega y Ramps o con alguna placa que junte las dos en una como es el caso de la placa Trigorilla.
Para el movimiento usaremos motores paso a paso, todos ellos han sido reciclados de impresoras y escáneres antiguos, estos motores se caracterizan por moverse mediante una secuencia de pulsos a sus dos bobinas, lo que los convierte en motores con una gran precisión en su ángulo de giro.
Los finales de carrera se usan para que la impresora reconozca que punto establecer a las coordenadas 0,0,0.
Extrusor y hotend
Las impresoras 3d se alimentan por medio de una bobina filamento de plástico el cual introducimos en el extrusor, el extrusor cuenta con un motor paso a paso de mayor potencia que los de los ejes y un engranaje que impulsa el filamento hacia el hotend, el cual es el encargado de derretir el plástico y convertirlo en un hilo de 0.4 mm .
Código
El código usado en esta impresora es Marlin V1.1 Al final del post se encuentra un enlace al código tal y como está ahora mismo en la impresora, todos los cambios han sido realizados en el archivo configuration.h en la parte de montaje se concretará más todos los parámetros usados.
Materiales
Cristal para la base de impresión 200 x 200 mm |
Tornillería, remaches escuadras y varillas de acero |
Extrusor |
Hotend |
Finales de carrera (kit de 5) |
Arduino mega y ramps |
Pantalla LCD |
Controladores de Motores paso a paso (pack de 5) |
Bobina de PLa |
Contrachapados y pintura |
Metacrilato |
Chapa de acero |
Impresoras para la estructura |
Motores paso a paso |
Montaje
Parte Física
La primera idea fue hacer una impresora 3D usando disqueteras, idea que desechamos el primer día, el mayor motivo es que el área de impresión apenas iba a ser de 5 cm de lado.
Tras desechar esa idea comenzamos con la idea de usar los motores y la estructura de varias impresoras y escáneres viejos que tenía Un compañero del grupo olvidados por casa.
Desmontamos una impresora y una impresora + escáner, para obtener todos los materiales necesarios.
Como base de la impresora usamos la tapa inferior de un escáner, ya que por medidas se asemejaba bastante a lo que estábamos buscando y venía con un motor paso a paso con reductora y podíamos usar la parte móvil del lector del escáner como soporte sobre el que apoyar el eje X.
Para el eje X teníamos otra base de otra impresora que no nos cuadraba por que el fondo no era plano y no asentaba bien, por lo que decidimos cortar las zonas de plástico que tenían el motor, y los soportes de la correa para atornillarlos a una chapa de metal que si podíamos unir a la base del escáner del eje Y.
A este sistema le añadimos dos varillas de acero para usarlas como guías de apoyo.
El siguiente paso fue recortar una chapa de 20 x 20 cm a al que le soldaríamos los 4 cojinetes de metal y el prisionero de la correa para que corriera sobre las guías para que se moviera cuando el motor girara.
El siguiente paso fue darle una tercera dimensión a nuestra impresora, el eje Z.
Para lo que decidimos remachar a la base de nuestra impresora el carril sobre el que corrían los cartuchos de tinta de la impresora restante.
Tras esto, notamos que el eje Z no era muy estable cuando subía y bajaba, por lo que decidimos hacer una estructura que cerrará el arco completo recortando chapas de una caja de ordenador, quedando de la siguiente forma:
Después tuvimos que pegar el extrusor en la parte superior del marco de chapa y hacer un soporte con una varilla metálica curvada que sujetara el hotend.
Y por último pegamos los finales de carrera al comienzo de los ejes X, Y y Z
Conexiones del cableado
El cableado de la impresora es muy abundante, cada motor lleva 4 cables, cada final de carrera 3, el extrusor lleva 6 (2 para la resistencia que caliente, otros 2 para el termistor que mide la temperatura y 2 para el ventilador) Hubo que empalmar todos los cables, uno a uno para que fueran lo suficientemente largos como para que llegaran a la parte inferior de la caja.
Para las conexiones nos basamos en el esquema que se proporcionó cuando se explicó el funcionamiento de la placa ramps.
Parte firmware
A continuación, se mostrarán los parámetros de configuración que hemos modificado para el correcto funcionamiento de nuestra impresora.
Posteriormente se comentarán los más destacados.
Ajustes generales
Las configuraciones más destacadas de esta sección son las siguientes:
Indicamos que estamos trabajando sobre una placa ramps 1.4, diámetro del filamento a 1.75mm, que tenemos únicamente un extrusor Y la temperatura máxima a 275 grados ya que a más temperatura el tubo de teflón que une el extrusor y el hotend se degradaría.
#define BAUDRATE 250000 #define MOTHERBOARD BOARD_RAMPS_14_EFB #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 #define EXTRUDERS 1 #define HEATER_0_MAXTEMP 275
Ajustes finales de carrera
Indicamos que usamos tres finales de carrera, en el punto de coordenadas más bajo de cada eje e invertimos la lógica de los finales de carrera a normalmente abierto, ya que las impresoras 3D por defecto funcionan con finales de carrera normalmente cerrados, es decir que únicamente se detecte el salto de final de carrera cuando su interruptor es pulsado.
#define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG #define X_MIN_ENDSTOP_INVERTING true #define Y_MIN_ENDSTOP_INVERTING true #define Z_MIN_ENDSTOP_INVERTING true
Ajustes de movimiento
Indicamos el tipo de controlador que estamos usando, en nuestro caso TMC 2208, Los pasos por milímetro de cada motor para que todos se muevan al mismo ritmo, la aceleración y la velocidad máximas de cada eje para cambiar de dirección sin decelerar antes, invertimos la dirección del eje Y dado que el motor funcionaba en sentido contrario al deseado.
Por último, indicamos el tamaño máximo de la cama, así como que use lo denominado “Finales de carrera por software” para parar en las posiciones máximas, es decir, que cuando el eje se haya movido el espacio máximo que le indicamos como tamaño máximo del área de impresión, actúe como un final de carrera y no avance más.
#define X_DRIVER_TYPE TMC2208 #define Y_DRIVER_TYPE TMC2208 #define Z_DRIVER_TYPE TMC2208 #define E0_DRIVER_TYPE TMC2208 #define DEFAULT_AXIS_STEPS_PER_UNIT { 1.2, 11.5, 2, 24.1 } #define DEFAULT_MAX_FEEDRATE { 200, 200, 5, 25 } #define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 10000 } #define DEFAULT_XJERK 9.0 #define DEFAULT_YJERK 9.0 #define DEFAULT_ZJERK 0.3 #define DEFAULT_EJERK 5.0 #define X_PROBE_OFFSET_FROM_EXTRUDER 10 #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 #define INVERT_Y_DIR true #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 #define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_BED_SIZE 200 #define Y_BED_SIZE 150 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 200 #define MAX_SOFTWARE_ENDSTOP_X #define MAX_SOFTWARE_ENDSTOP_Y #define MAX_SOFTWARE_ENDSTOP_Z
Ajustes de impresión
Indicamos el tamaño de nuestra boquilla de impresión.
#define MESH_TEST_NOZZLE_SIZE 0.4
Ajustes de pantalla y SD
Definimos el tipo de pantalla que vamos a usar, el lenguaje de esta, invertimos el sentido de giro del Joystick de la pantalla bajamos la tasa de actualización de esta para un mejor funcionamiento.
#define LCD_LANGUAGE es #define DISPLAY_CHARSET_HD44780 WESTERN #define SDSUPPORT #define SLIM_LCD_MENUS #define REVERSE_MENU_DIRECTION #define SPEAKER #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #define ST7920_DELAY_1 DELAY_NS (60) #define ST7920_DELAY_2 DELAY_NS (60) #define ST7920_DELAY_3 DELAY_NS (180)
Construcción de la Caja de la impresora
La última parte del proyecto trato de construir una caja de madera para albergar todos los componentes de la impresora, la caja tiene dos bahías, una para toda la electrónica y otra para albergar la impresora 3D, meter la impresora 3D tiene tres ventajas importantes.
- Permite tener un cableado más ordenado para evitar desconexiones y accidentes.
- Al separar la electrónica de la impresora conseguimos que la electrónica no se caliente, dado que para una impresión de PLA el hotend está a una temperatura de unos 210º.
- Al encerrar la impresora en una caja conseguimos que tenga una temperatura más estable y alta esto beneficia principalmente en que las piezas impresas se enfríen más despacio y evitar que se deben al enfriarse o que se despeguen de la cama caliente.
Calibración de la impresora
Una vez todo montado y “funcionando” En una de las tareas que más tiempo gastamos fue en la calibración optima de la impresora, dado que, la base de impresión tiene que está a la altura de una hoja de papel de la boquilla del hotend cuando el eje Z esté en su posición más baja. Todos los ejes deben moverse exactamente lo que el programa “cree” que se mueven, es decir, si necesitamos una línea recta de 1 cm de largo pero los motores están mal calibrados y en realidad se mueve 1.5 cm tendremos como resultado una impresión totalmente desfigurada. A continuación, se muestra una progresión de la calidad de impresión.
Resultado final
Problemas encontrados
Atasco del extrusor
Es un problema muy común en las impresoras 3D, se puede reducir al mínimo, pero no se puede solucionar del todo.
La boquilla del extrusor convierte el filamento de plástico de 1.75 mm a un hilo de 0.4 milímetros, en ocasiones cuando el plástico se enfría dentro de este ocasiona atascos y al volver a calentar la impresora no expulsa plásticos correctamente.
Lo que hemos hecho para desatascar el extrusor cuando se nos ha atascado es, en primer lugar, introducir una aguja por la boquilla para tratar de liberar el conducto y en segundo lugar hacer presión con el plástico hacia el extrusor para expulsar a mano los primeros centímetros de plástico que estaban causando el problema.
Fuerza del motor
Tras realizar todo el montaje, a la hora de empezar a configurar los motores, el motor del eje X no tenía fuerza suficiente para mover la plataforma de impresión.
La solución que le dimos fue sustituir el motor de escáner por uno de otra impresora de mayor tamaño.
Motor de 5 cables
Tras montar todo el esqueleto de la impresora, a la hora de empezar a conectar todos los componentes, nos percatamos de que el motor del eje y era un motor unipolar y no un motor bipolar como se suele usar hoy en día. Estos motores utilizan un cable común a la fuente de alimentación y posteriormente se van colocando las otras líneas a tierra en un orden específico para generar cada paso, como no podíamos con las controladoras que teníamos controlar motores con 5 cables, buscamos y la solución óptima era dejar el cable común a las dos bobinas desconectado y controlarlo como un motor bipolar común.
Baldeo de la chapa sobre la que apoya la cama al soldar
En un primer momento la base sobre la que apoya la cama de cristal iba a ser una chapa metálica a la que le soldaríamos los 4 cojinetes y el prisionero de la correa del eje X, al soldar los cojinetes, debido a que era una chapa muy fina, se combó y no permitía una nivelación óptima de la cama de impresión, la solución fue cortar cuadrados de chapa alrededor de los 4 cojinetes y el prisionero, y pegarlos en una plancha de metacrilato de las mismas dimensiones.
Precisión motores
Este ha sido uno de los mayores problemas que hemos tenido, los motores normales de una impresora tienen un movimiento mínimo de 0,0125 mm, nuestro motor del eje X tenía una precisión de movimiento de 5 mm y nuestro eje Z tenía una precisión de movimiento de 3 mm.
Esto se ha traducido en no poder imprimir piezas con mucha altura, dado que la altura a la que se sitúa el eje z no es óptima y a medida que acumulan unas capas sobre otras este error se va acusando.
Software usado durante el proceso
Durante el proceso de configuración e impresión se ha usado el siguiente software.
- Arduino Ide
Usado para compilar y subir el firmware a la impresora.
- Pronterface
Muestra una interfaz para poder controlar los motores y la temperatura de la impresora fácilmente, así como una línea de comandos directamente al Arduino y la posibilidad de imprimir piezas en 3D, aunque no es recomendable usarlo para esto, dado que hay problemas bastante mejor.
- CURA
Cura es un programa de corte de piezas tridimensionales e impresión, también tiene una interfaz muy parecida a la de pronterface, aunque con menos opciones e incluso la posibilidad de subir un firmware ya compilado a nuestra placa de Arduino.
Incluye una cantidad ingente de configuraciones a la hora de hacer nuestras impresiones 3D.
- Slic3r
Programa de corte de archivos 3D este programa ha sido usado para probar la impresión desde la tarjeta de memoria dado que exporta un archivo .gcode, el tipo de archivo de coordenadas que le podemos introducir a la impresora en la SD para imprimir independientemente de un ordenador.
Mejoras a realizar
Por lo que la línea que vamos a seguir con esta impresora va a ser como hemos comentado antes cambiar los motores para tener una mayor precisión, sobre todo en el caso del eje Z y a continuación comenzar a diseñar e imprimir mejoras para la propia impresora; por ejemplo, escuadras para rigidizar más el brazo del eje Z.
La última mejora que se propone es instalar una cama caliente para poder imprimir más tipos de filamentos, ya que no tener cama caliente nos limita el abanico de plásticos a elegir. Si incluimos una cama caliente que se caliente a 100 grados podríamos imprimir filamentos como ABS.
Presupuesto
Pieza | Valor |
Cristal para la base de impresión 200 x 200 mm | 1.99 € |
Tornillería, remaches escuadras y varillas de acero | 13.2 € |
Extrusor y Hotend | 40.2 € |
Finales de carrera (kit de 5) | 8.99 € |
Arduino mega, ramps y pantalla LCD | 35.99 € |
Controladores de Motores paso a paso (pack de 5) | 8.3 € |
Bobina de PLa | 15 € |
Contrachapados y pintura | 19.9 € |
Metacrilato | 0 € |
Chapa de acero | 0 € |
Impresoras para la estructura | 0 € |
Motores paso a paso | 0 € |
Conclusiones
Hemos conseguido realizar una impresora 3D la cual se puede controlar tanto desde un ordenador como independientemente a través de su pantalla y tarjeta SD. Ha sido probada en piezas de altura reducida haciéndolas con una calidad similar a una impresora comercial de gama baja.
EL presupuesto final ha sido 70€ inferior a una anet a8 que tomamos como referencia, si a nuestra impresora le cambiáramos los motores de los tres ejes por unos de una calidad superior (Nema 17- 46 Euros 3 unidades) El coste seguiría siendo inferior a la anet a8.
Pruebas de funcionamiento
Enlace del código completo https://drive.google.com/file/d/1EfyQyPMUQi9bK4qvZUBLt9YsV5dzWXdx/view?usp=sharing