FIRMWARE
Hay varias capas de software que controlan la impresión 3d. En el nivel más bajo esta el firmware que se carga en el microcontrolador de la placa. El firmware interpreta un programa de movimiento que le enviamos desde el ordenador y genera las señales necesarias para controlar los motores y los calentadores. El programa está escrito en un subconjunto de instrucciones del estándar iso utilizado en controles numéricos industriales. Básicamente un programa de este tipo está compuesto por miles de instrucciones sencillas del tipo vete a una posición a una velocidad determinada, aumenta la temperatura a 150ºC o lleva los ejes al punto de origen.
Hay muchas versiones de firmware, pero yo he utilizado concretamente la versión delta de Marlin. La compilo con la versión 1.04 de Arduino, con soporte para el 1284P.
HOST
El firmware se comunica con el ordenador a través del puerto USB para obtener el programa de impresión, aunque también se puede pasar en una tarjeta SD (si tenemos el hardware adecuado) o un puerto serie.
Si conectamos la impresora mediante USB, en el ordenador deberemos instalar un software de control de impresión. Este software en su forma más básica envía línea a línea los comandos del programa de impresión, pero normalmente también lleva algún tipo de visualización del estado de la impresión, permite hacer movimiento manuales, e incluso sirve para generara el programa a partir de los diseños de las piezas en 3d y facilitar la configuración de la impresora.
Aunque hay otros mi elección en este caso fue el repetierHost
SLICER
El slicer es el programa que pasa los diseños de las piezas de un formato 3d estándar (STL) a un formato de programa de impresión (GCODE). La función del slicer queda más clara si traducimos la palabra al español «cortadora» o «rebanadora». La pieza en 3d se corta en planos paralelos a la horizontal y luego se genera un programa que imprime las partes sólidas de esa capa como si fuera un plotter de plástico, a mayor número de capas mejor resolución, a costa de un mayor tiempo de impresión.
El slicer puede usarse de forma independiente o en combinación con el Host. RepetierHost viene con slic3r y skeinforge, aunque hay otros tan buenos o mejores como Kisslicer o Cura. Siempre podemos generar el programa con un «slicer» independiente y pasar el resultado a la impresora con el programa Host que más nos guste.
INSTALACIÓN Y PRIMEROS PASOS
Nada más terminar de conectar todos los cables a la placa de control, podemos empezar a hacer las primeras pruebas. Es recomendable desconectar los motores de la placa antes de cargar el firmware y ajustar los «pololus».
En primer lugar debemos instalar el software de Arduino, los drivers y las extensiones para el controlador 1284P y también descargar el firmware de Marlin para impresoras delta. Hay una serie de cosas que debemos modificar en el firmware antes de compilar y cargar. Modificamos esto en el fichero de configuraciones configuration.h las líneas siguientes:
BAUDRATE 115200 MOTHERBOARD 62 #define DELTA_DIAGONAL_ROD 188.3 #define DELTA_SMOOTH_ROD_OFFSET 139.5 #define DELTA_EFFECTOR_OFFSET 31 #define DELTA_CARRIAGE_OFFSET 18 #define INVERT_X_DIR true // for Mendel set to false, for Orca set to true #define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false #define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true #define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false #define min_software_endstops false //If true, axis won't move to coordinates less than *_MIN_POS. #define max_software_endstops false //If true, axis won't move to coordinates greater than *_MAX_POS. #define X_MAX_POS 380 #define X_MIN_POS 0 #define Y_MAX_POS 380 #define Y_MIN_POS 0 #define Z_MAX_POS 380 #define Z_MIN_POS 0 #define MANUAL_X_HOME_POS 0 #define MANUAL_Y_HOME_POS 0 #define MANUAL_Z_HOME_POS 136.8 // Distance between nozzle and print surface after homing. #define DEFAULT_AXIS_STEPS_PER_UNIT {44.4444, 44.4444, 44.4444, 90.7}
Una vez modificado el firmware descargado sólo tenemos que compilar y cargar en la placa usando un cable usb. El cable alimenta la electrónica sin necesidad de enchufar la fuente externa de 12V, que de hecho es mejor dejar apagada hasta que probemos los motores.
Ahora instalamos el software del Host (repetierHost).
Es muy importante configurar la misma velocidad de transferencia que el firmware (115200), las dimensiones de la impresora y la posición de reposo.
Una vez hecho esto podemos conectarnos a la impresora y ver que la comunicación va bien. Como no hemos puesto el extrusor ni la cama veremos valores de temperatura incorrectos, pero en cualquier caso el color del botón «Conectar» debe cambiar a verde y empezarán a llegar mensajes de estado en el área inferior.
Aun no hemos enchufado la fuente, y antes de hacerlo deberíamos ajustar los pololus, porque se pueden quemar con relativa facilidad.
Los «pololus» tienen un potenciometro de ajuste que permite variar la corriente máxima que se suministra al motor. Esta corriente viene determinada por la siguiente fórmula:
I = Vref / (8*Rs) donde Rs=0.05 ohm y Vref se puede medir con un polímetro entre 0V y el propio potenciometro (es metálico)
Cuidado por que se pueden encontrar otros controladores equivalentes a los pololus que tienen diferentes valores de Rs e incluso dos potenciometros de ajuste en lugar de uno. Esto vale sólo para los pololus originales.
Los valores de ajuste de Vref que me van bien a mi son 0.48V para los motores de los ejes y 0.73 para el extrusor, lo que equivale a 1.2A y 1.825A respectivamente. Con estas corrientes la impresión va estupendamente, sin perder pasos en ninguna situación y sin llegar a calentar los motores en exceso (los míos son de 2.5A nominales), pero debemos asegurarnos de tener los disipadores correctamente colocados con silicona conductora y un ventilador de 50×50 encima refrigerandolos. ¡Una de las primeras cosas que es muy recomendable imprimir es una caja para la placa Sanguinololu con un soporte para el ventilador!
Una vez ajustados los «pololus» nos aseguramos de tener los motores y los finales de carrera conectados correctamente y podemos poner tensión a la impresora.
Nos conectamos con el host y abrimos la solapa de «control manual», en la parte de arriba hay un campo de texto que permite introducir manualmente comandos (G-CODES), las respuestas de la impresora aparecen en la ventana de registro en la parte inferior de la pantalla.
Introducimos el comando M119 y nos responderá algo como esto:
13:01:18.370 : Reporting endstop status
13:01:18.370 : x_max: open
13:01:18.373 : y_max: TRIGGERED
13:01:18.373 : z_max: open
En este caso está pulsado el final de carrera del eje Y (el Motor 2) y libres los del M1 y el M3, si no están pulsados deben aparecer todos como open. Ve pulsando uno a uno y comprobando con el comando M119 que llegan correctamente.
Ahora probaremos los motores, antes de nada prueba la parada de emergencia que puede ser bastante útil si nos hemos equivocado al cablear, veras que algo pasa en la pantalla de registro e incluso se escucha un cambio de sonido en la fuente de alimentación cuando la pulsas, en cualquier caso no pierdas de vista el interruptor de la fuente y controla todo el rato la temperatura de los pololus y los motores por si hay un problema apagar la impresora lo más rápido posible.
Vamos a probar una por una las poleas de los motores con la mano, si giran suavemente después de la parada de emergencia todo va bien, sino quita tensión a la impresora y vuelve a probar, si no giran hay un problema mecánico en algún sitio, resuélvelo antes de seguir.
Ahora coloca con la mano la plataforma centrada y los carros a un par de centímetros de la parte superior, y escribe G28 , los tres carros deben subir hasta tocar los finales de carrera y luego pararse. Si alguno baja en lugar de subir es que está mal cableado, o mal configurado en el firmware, mete la parada de emergencia inmediatamente y solucionalo antes de seguir.
El comando G28 es equivalente al botón de la casa de la parte inferior izquierda y se ejecuta siempre después de poner la impresora en tensión para referenciar los ejes. Si todo ha ido bien despues del referenciado podrás ver las tres coordenadas X,Y,Z en negro con los valores (0,0,136.8). Seguramente el valor de Z cambiará en tu impresora particular después del ajuste de los carros, pero X e Y deben ser 0.
Justo después de hacer el referenciado, es un buen momento para volver a probar con la mano las poleas. Intenta girar la polea en el sentido que hace bajar el carro (para el otro lado estás haciendo tope con el final de carrera). Si todo va bien, te tiene que costar mucho girar la polea con el motor en tensión, pero cuando gire notarás y oirás un ruido característico (cla,cla,cla..) que indica que el motor está perdiendo pasos. La polea no debe deslizar sobre el eje en ningún caso. También es un buen momento para comprobar la tensión de las correas, si están flojas se pueden tensar aflojando un poco las varillas y tirando de la tapa superior con fuerza, o incluso usando un mazo de nylon o goma, aunque como alternativa se puede imprimir más adelante un tensor.
Ahora volvemos a hacer un «HOME» con el pulsador o el comando G28 y bajamos un poco en Z con las flechas, deben moverse los tres carros a la vez y la misma distancia y la plataforma bajará centrada.
Para verificar que la impresora mide bien y que no se pierden pasos ni deslizan las correas, podemos volver a hacer Home, medimos con un calibre la distancia desde cada carro hasta la tapa y bajamos 100 mm. El calibre debe marcar ahora una diferencia de exactamente 100 mm, en otro caso tenemos alguno de estos problemas:
- El firmware está mal configurado comprueba las características de tus correas, motores y número de dientes de las poleas y con ayuda del menú «Belt calculator» en el host saca el valor de steps/mm. En mi caso son 44.4444 steps/mm, con poleas GT2 de 36 dientes, motores de 200 pasos por vuelta (1.8º por paso) y el microstepping configurado a 1/16 (todos los jumpers puestos en el pololu). Si tienes un valor diferente configuralo en la línea del firmware donde pone DEFAULT_AXIS_STEPS_PER_UNIT
- La mecánica se bloquea en algún punto y los motores pierden pasos, las correas deslizan, o las poleas se mueven en el eje. Revisa la mecánica quitando tensión y moviendo los carros con la mano, aprieta las poleas y tensa las correas todo lo que puedas.
Por fin si todo va bien puedes mover la plataforma en todos los ejes y comprobar que los comandos enviados corresponden a los movimientos reales. Cuidado porque primero hay que bajar el eje Z desde la posición Home para poder moverse en X e Y (la propia mecánica de la impresora impide el movimiento como podrás ver).
Ahora ya puedes cambiar a la pestaña Editor G-Code e introducir este pequeño programa. Sera la primera «impresión» que hagamos:
g28 g90 g1 z50 f5000 g1 x-20 y20 g1 x20 y20 g1 x20 y-20 g1 x-20 y-20 g1 x0 y0 g28
Luego pulsa la tecla de imprimir (Play) y la impresora moverá la plataforma dibujando un cuadrado en el aire, luego volverá a Home.
Si hemos llegado bien hasta aquí ya tenemos la impresora «casi» terminada, podríamos montar un rotulador en la plataforma utilizarlo como un plotter completamente funcional (aunque habría que ajustar el paralelismo de la plataforma y la base). Como el objetivo no es ese sino construir una impresora 3D aun nos falta una de las partes más importantes, el Extrusor pero eso lo veremos en los próximos capítulos de la serie.
1 ping