Proyecto 40 - Impresora 3D
Parte 2 - Configuración
En esta segunda parte veremos todo lo referente a la programación del Arduino, configuración del firmware Marlin y calibración de la impresora.
En este punto la impresora debe estar terminada, con los drivers montados sobre la Ramps y ésta pinchada en el Arduino Mega. Todos los motores y demás componentes conectados como en el esquema.
Lo primero es calibrar la corriente de los drivers, para ello nos ayudamos de un polímetro digital y un destornillador de estrella. Encendemos la impresora, llevamos la punta negra a GND y la positiva al cursor del potenciómetro del DRV8825 y lo giramos hasta medir la mitad en mV de los mA de nuestro motor. Este vídeo de Obijuan, explica muy bien el proceso.
En mi caso, como los motores que estoy utilizando son un poco más pequeños que los NEMA17, he calibrado los drivers XYZ a 150mV, lo que equivale a 300mA según la fórmula I= 2 x Vref y el extrusor a 300mV.
Si se suministra demasiada corriente a los motores es posible que no se muevan, o que el eje vibre pero no gire. En ese caso baja 100mV y prueba de nuevo. Cuando tengas la impresora funcionando, observa si los motores se calientan mucho -queman al tacto- si es así, debes calibrar a la baja la corriente de los motores.
Lo siguiente es descargar el firmware Marlin. Al final de la página hay dos enlaces, uno es el Marlin original para que lo configures de acuerdo a las características de tu impresora. Y el otro tiene la configuración de mi impresora, es decir, correas GT2 en los ejes X e Y, husillo trapezoidal de 8 mm de diámetro en el eje Z, cama caliente de 20x20 cm, drivers DRV8825 con 1/32 microsteps, Arduino Mega 2560 y Ramps 1.4
Si es la primera vez que conectas un Arduino Mega a tu PC quizás tengas que hacer algunos cambios en el panel de control de Windows, debido a que el bus de datos del Mega es más rápido que el de Arduino Uno. Este vídeo de 3Despaña explica cómo configurar el bus y cómo programar el Arduino Mega con el firmware Marlin.
Una vez descargado el Marlin, descomprimelo y abre el archivo Marlin como muestra la imagen.
Antes de subirlo al Arduino ve a la pestaña Configutarion.h y haz los siguientes cambios de acuerdo con las características de tu impresora.
Para configurar Marlin me he ayudado de este vídeo del canal de Thomas Sanladerer. Os recomiendo que echéis un vistazo a su canal de YouTube, allí encontraréis vídeos muy interesantes sobre cómo calibrar y configurar una impresora 3D.
La diferencia más importante respecto de la configuración original quizás sean los apartados 9 y 10 donde he configurado a la baja los parámetros FEEDRATE y ACCELERATION debido a que los motores que estoy utilizando son un poco más pequeños de lo habitual.
Si tienes unos motores de calidad deja los valores por defecto. Por el contrario si ves que los motores patinan o hacen ruidos extraños, prueba a bajar la velocidad, el feedrate y la aceleración.
1. #define BAUDRATE 115200
2. #define MOTHERBOARD BOARD_RAMPS_14_EFB
3. Thermal Settings
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_BED 1
#define HEATER_0_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 260
#define BED_MAXTEMP 120
4. PID Settings - Dejar por defecto
#define DEFAULT_Kp 22.2
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114
// MakerGear
//#define DEFAULT_Kp 7.0
//#define DEFAULT_Ki 0.1
//#define DEFAULT_Kd 12
// Mendel Parts V9 on 12V
//#define DEFAULT_Kp 63.0
//#define DEFAULT_Ki 2.25
//#define DEFAULT_Kd 440
5. PID > Bed Temperature Control
Desmarcar esta opción para mejor control de la temperatura de la cama
#define PIDTEMPBED
6. Thermal Runaway Protection
Comprobar que estan habilitadas estas opciones:
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
7. Endstop Settings
Definir si tenemos finales de carrera en la posición MIN, MAX o en ambas
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
Definir la lógica de los endstops NC uses "false" NO uses "true"
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
8. Z Probe Options - Solo en caso de auto-leveling
9. @section homing
// Homing speeds (mm/m)
#define HOMING_FEEDRATE_XY (30*60)
#define HOMING_FEEDRATE_Z (4*60)
10. Movement settings
// default settings
#define DEFAULT_AXIS_STEPS_PER_UNIT {160,160,800,185} // default steps per unit for Ultimaker {160,160,800,185}
#define DEFAULT_MAX_FEEDRATE {100, 100, 5, 25} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {300,300,40,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
#define DEFAULT_ACCELERATION 300 // X, Y, Z and E acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts
#define DEFAULT_TRAVEL_ACCELERATION 300 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK 10.0 // (mm/sec)
#define DEFAULT_ZJERK 0.2 // (mm/sec)
#define DEFAULT_EJERK 2.5 // (mm/sec)
11. Additional Features
Se recomienda dejar deshabilitado
//#define EEPROM_SETTINGS
Una vez configurado Marlin, ya podemos subirlo al Arduino. Tras unos segundos, verás en el display la información de la impresora, indicando que está lista para imprimir.
Antes de empezar a imprimir hay que insertar filamento en el extrusor y nivelar la cama. Para ayudarnos en estas dos operaciones vamos a utilizar un software llamado Pronterface que sirve para controlar la impresora desde nuestro PC. Se puede descargar aquí.
Seleccionar el puerto COM que corresponda y seleccionar una velocidad de 115200. Clic en Connect.
Para insertar filamento primero calentamos el extrusor haciendo clic en Set
Por seguridad el extrusor no funciona hasta que alcance la temperatura de trabajo, unos 185º para PLA que es el filamento más comúnmente usado.
Poner en la casilla Lenght cuantos mm queremos que extruya la impresora y cuando el extrusor esté listo clic en Extrude e ir introduciendo con la mano el filamento en la parte superior del extrusor hasta que notemos que el motor arrastra el filamento y éste sale por el hot end.
Ya tenemos cargado el filamento, vamos a nivelar la cama.
Aquí cada uno tiene su forma de proceder. Yo lo que hago es primero calentar la cama y el extrusor y mientras alcanzan la temperatura de trabajo voy nivelando la cama. Llevo la impresora al origen en los tres ejes y voy moviendo el extrusor en los ejes X e Y hasta llevarlos a las cuatro esquinas con ayuda del Pronterface y nivelando la cama en cada punto. Para nivelar la cama necesitamos un folio normal de 80 gr. El folio debe entrar entre la cama y el extrusor con cierta libertad, pero rascando un poco.
Al terminar vuelvo al origen, pero sin hacer homming, es decir, voy moviendo los ejes X e Y hasta que toquen el microswitch pero sin mover el eje Z. Esto es porque los microswitch tienen una pequeña tolerancia y es posible que el eje Z no pare a la misma altura, aunque sea 0,1 mm de diferencia, es suficiente para que la nivelación de la cama se vaya al traste.
Una vez nivelada la cama, podemos comenzar la impresión.
Como preparar el archivo para imprimir
Para imprimir una pieza el archivo debe estar en formato G-code. Sin embargo los programas de diseño CAD como SketchUp, FreeCAD, etc… no exportan directamente en G-code, sino que lo hacen en formato STL y otro software se encarga de convertir los archivos STL a código-G.
Algunos de estos programas son CURA, Slic3r,...Yo uso Slic3r porque es libre, aunque tiene algunos bugs menores funciona muy bien.
La imagen siguiente muestra como he configurado Slic3r.
La forma de proceder es la siguiente:
1. Diseñamos la pieza con un software CAD. Si usas SketchUp necesitas instalar una extensión, mira este vídeo para ver cómo se hace. Otro software de diseño gratuito es FreeCAD, muy potente pero algo más complicado de utilizar. Juan González @obijuan_cube se ha currado unos tutoriales sobre FreeCAD que no debes perderte. Otra opción es descargar la pieza u objeto de algún repositorio como thingiverse.
2. Una vez terminada la pieza, la exportamos en formato STL.
3. Abrimos el archivo STL con Slic3r y lo convertimos a código-G haciendo clic en Export G-code. Si es necesario se puede girar y cambiar el tamaño del objeto antes de imprimirlo.
4. Copiamos el archivo G-code en una tarjeta SD, la pinchamos en la ranura del display y listo.
¡Suerte con vuestra impresora!
Links
Proyecto Clone Wars. Clone Wars es un grupo dentro de la comunidad RepRap, que trata de documentar en español todo lo necesario para que puedas construir tu propia impresora 3D
Canal de Thomas Sanladerer con información muy útil sobre impresoras 3D.
Canal de Juan González. Impresoras 3D, robótica, electrónica, FPGA´s...un imprescindible para los makers.
Firmware Marlin. Versión genérica.
Firmware Marlin. Versión personalizada.