Guía detallada para configurar Marlin [ACTUALIZADO Junio 2017]

La guía paso a paso para tunear tu impresora 3D y conseguir piezas de la máxima calidad

portada-marlin-configuracion-instalacion-impresora3d

¡Muy buenos días!

Qué ganas tenía de escribir otro post épico para staticboards.

Quiero escribir artículos de referencia que no te hagan perder el tiempo. Artículos muy currados, y que te aporten conocimiento.

No quiero publicar por publicar.

Si por algo es conocido Staticboards es por la RAMPS 1.4 SB.

Y por eso hace meses que tenía ganas de escribir una guía potente para la impresora 3D. Es el contenido fundamental que tiene que estar en el blog.

Pero hasta ahora no tenía una idea clara de cómo enfocar el artículo.

Estoy preparando algo gordo. Un proyecto tan chulo que necesita un artículo completo. Y para preparar este proyecto, he tenido que repasar a fondo el programa de la impresora, en el famoso Marlin.

Esto me ha obligado a volver a empezar. A revisar todas las opciones, una a una.

Y ahora quiero a expresar esta experiencia en una guía detallada. Por que aprender sin compartir no tiene sentido.

Configurar la impresora es una tarea complicada. Por eso llevo semanas escribiendo este mega post. He revisado el texto para que sea sencillo de seguir, y ameno de leer. Para que disfrutes leyendo y aprendiendo.

Hoy te voy a presentar el resultado de este trabajo.

¿Estás preparado?

barco calibracion impresora 3d
Este es el resultado de una impresora bien calibrada

 

 

Qué es Marlin y para qué sirve

En esta sección voy a contarte qué es Marlin y por qué lo necesitas en la impresora 3D

Logo Marlin

Marlin es el programa que tienes que instalar en tu placa de Arduino para controlar la impresora.

Una vez que lo instalas en tu placa, Marlin puede leer los programas de GCODE desde el puerto serie, o desde una tarjeta SD.

Es un firmware que está muy tuneado para las impresoras 3D. Está diseñado para controlar los movimientos de los motores paso a paso y del extrusor de tal forma que el resultado de la impresión sea perfecto.

 

G-CODE

El lenguaje universal para controlar máquinas, impresoras 3D, cortadoras láser se llama G-CODE. Necesitas un programa como Slic3r o Cura para convertir un modelo 3D en un fichero GCODE que puedas enviar a Marlin.

Lo que hace Marlin es leer la lista de comandos G-CODE, línea a línea, y va convirtiendo cada comando en los pulsos necesarios para mover los motores paso a paso.

El origen de Marlin está en el conocido firmware para máquinas CNC, el GRBL. Es una versión extendida, con soporte para los extrusores, cama caliente, pantallas LCD y todo lo que necesita una impresora 3D.

Al usar una placa con un microprocesador, la impresora puede funcionar independiente de un PC. Marlin se instala en el la memoria interna del chip, y tiene todo lo necesario para controlar la impresora sin estar conectado al ordenador.

Marlin tiene un sistema avanzado para controlar la temperatura del extrusor y de la cama caliente de forma precisa. Con esto vas a poder controlar la calidad del plástico en la impresión.

Y además, incluye muchos sistemas de seguridad, que pueden evitar situaciones peligrosas. Por ejemplo, si el sensor de temperatura se estropea, Marlin lo detecta y detiene todo en plan emergencia, en vez de continuar calentando el extrusor (que puede causar una desgracia si no estás vigilando la impresora).

Marlin está pensado para chips de la famila AVR 8 bits de Atmel. La mayoría de las placas para impresoras 3D incluyen algún chip de este tipo.

Atmega 2560 de Atmel
Atmega 2560 de Atmel

La placa más conocida es la RAMPS 1.4, pero hay otras placas que también soportan el Marlin. En el fondo, lo que diferencia una placa de otra son los pines de entrada/salida, el número de dispositivos, y los protocolos de comunicación. Pero el núcleo es el mismo.

Lo mismo ocurre con las pantallas LCD. Lo que cambia es el protocolo de comunicación entre la pantalla y el chip. Pero el menú, las opciones, la información, es la misma para todos los modelos.

Qué es un firmware y porqué necesito configurarlo

Voy a repasar este concepto para que tengas claro qué hay que hacer si quieres instalar el Marlin.

El chip de tu electrónica es como un mini ordenador, con memoria, disco duro, etc.  Puedes pensar que el firmware es como el sistema operativo (pero en versión light).

ARDUINO MEGA 2560
ARDUINO MEGA 2560

El firmware es el programa que va instalado en el chip de la impresora 3D.

Marlin es el firmware de tu electrónica
Marlin es el firmware que escriben los desarrolladores para este chip, pensado para la impresora 3D.

En la web te puedes descargar el código fuente completo, pero no vas a encontrar el fichero binario para instalar.

Antes de instalar el firmware en la placa hay que configurar las opciones que se adaptan a tu modelo de impresora y de electrónica.

¿Porqué no hay un fichero que puedes enviar al Arduino y listo?

Pues porque necesitas configurarlo a medida para tu impresora.

Por ejemplo, Marlin puede usar muchas pantallas LCD, pero tienes que decirle qué pantalla es la que estás usando. Si no, tendrías que incluir el código para todas las pantallas conocidas, y el fichero sería enorme.

Por eso, lo que vas a hacer es descargar el codigo fuente, configurar los valores de tu impresora (para eso estoy escribiendo esta mega guía), y generar el fichero optimizado para tu placa.

 

national-geographic-man-compilar
Wat????

El proceso de generar ese fichero binario se llama compilar. El programa de Arduino recorre todos los ficheros de texto con el código fuente, y va pasando todas las instrucciones al formato en binario.

Al final de ese proceso, se genera un fichero con la extensión hex que es lo que hay que enviar a la placa.

El programa de arduino, hace un upload de ese fichero a la placa, a través del puerto serie. Cuando termina, resetea la placa, y Marlin empieza a correr.

Si te lías un poco con este paso, te recomiendo practicar antes con alguno de los ejemplos de Arduino (vienen incluidos cuando instalas el programa de Arduino).

Si tienes problemas con esto, prueba hacer que parpadee el led de la placa. Asi vas a estar seguro que tienes todo bien instalado.

Además, tengo que decirte que si tuvieses el fichero .hex , y tuvieses que enviarlo a la placa por tí mismo, te ibas a liar un poco. Lo bueno de usar Arduino es que todo esto es sencillo y muy cómodo.

Qué tiene de especial el firmware Marlin

Voy a destacar las características fundamentales de Marlin. Si estás leyendo este artículo es porque quieres conocer a fondo qué puedes hacer con este programa.

Tiene la comunidad más activa de desarrolladores

Marlin es el firmware por defecto en la mayoría de impresoras 3D. Tiene una comunidad muy activa, y una base enorme de usuarios.

Hay algunas críticas a cómo está funcionando el desarrollo en la actualidad, y las versiones estables podrían tener un poco más de estabilidad… pero por el momento no hay alternativa y Marlin va a durar mucho tiempo.

 

marlin-commits
Contribuciones al código de Marlin

Entiende comandos G-CODE

Marlin puede interpretar casi todos los comandos de movimiento del G-CODE. Desde luego los usados en las impresoras 3D.

Además de eso, incluye una cantidad enorme de comandos de control (que tienen el prefijo M). Puedes acceder a todas las funciones de la impresora a través de estos comandos.

Se comunica con el PC por el puerto USB

Puedes usar un programa como Pronterface para comunicarte con Marlin. El programa te permite mover la impresora, hacer el homing,  encender los extrusores, y ejecutar un programa de G-CODE.

Además de esto, Marlin muestra mucha información a través del puerto serie. Si tienes algún problema, hay comandos que te explican qué está pasando (o lo que piensa la máquina que está pasando)

Soporta muchos modelos de placas

La lista es muy grande, más de 40 modelos. Todas las placas conocidas tienen soporte para Marlin.

Asegúrate que la placa que vas a comprar está soportada por Marlin

Marlin soporta chips de la familia AVR de Atmel. Es el chip que tienen los Arduinos Mega. Muchas placas usan la versión Mega 2560, y otros usan chips de la familia At90 (sobre todo por el soporte USB incluido).

Se está trabajando en darle soporte a las placas con chips ARM de 32 bits, pero por el momento no es una versión estable.

 

Traducido a más de 20 idiomas

Puedes poner el Marlin en Inglés, Español, Gallego, Catalán, Vasco, Aragonés, Chino, Ucraniano, Checo, Japonés, Ruso…

Aunque como siempre me pasa con estos programas, hecho en falta la versión en Latín clásico.

Planifica los movimientos, ajustando la velocidad.

Marlin tiene un sistema avanzado de planificación de velocidades. Esto es fundamental para conseguir el acabado perfecto.

marlin planner
Lo mío, desde luego, no es el dibujo

En cada movimiento, Marlin calcula la aceleración ideal en el principio y al fin de cada tramo. Pero para esto, tiene en cuenta el comando anterior y el comando siguiente.

Si el próximo comando es un cambio de dirección muy brusco (por ejemplo, una esquina), Marlin frena el movimiento actual, para que la máquina no salga disparada. Si el cambio de dirección es muy pequeño, mantiene la velocidad para que el movimiento se mantenga suave.

Puedes ver más sobre el planificador en el propio código fuente (sólo si eres un programador avanzado)

Soporta muchos tipos de pantallas LCD

Puedes conectar muchos tipos de pantallas a tu impresora. La opción más común es la pantalla RepRap Discount. Hay dos versiones de esta pantalla. La que funciona sólo en modo texto, y la que tiene una pantalla más grande en modo gráfico.

Pantalla Reprap Discount Full Graphics
Pantalla Reprap Discount Full Graphics

Desde la pantalla LCD puedes usar casi todas las funciones de Marlin. Puedes imprimir desde la tarjeta SD, ajustar la temperatura, acelerar la impresión, apagar los motores, etc.

No necesita un PC para imprimir

Marlin puede imprimir desde la tarjeta SD sin problema. No necesitas tener la impresora conectada al ordenador.

El proceso normal es generar el fichero gcode en el ordenador, grabarlo en la tarjeta SD, e imprimir desde el lector de la pantalla.

Imprime de forma automática

Cuando marlin se inicia, busca el fichero llamado auto0.g y lo ejecuta de forma automática.
Puedes tener varios (auto0.g, auto1.g, auto2.g, hasta auto9.g) y usarlos para precalentar la máquina, limpiar el cabezal, colocar la máquina en la posición iniciar, o tocar una musiquita friki.

Utiliza la EEPROM para guardar la configuración

Los micros tienen una memoria interna permanente. Algo así como un disco duro interno.

Marlin puede almacenar casi todos los parámetros en esa memoria y leerlos al arrancar, sin tener que volver a compilar el programa cada vez que cambias algo.

Soporta varios tipos de Impresoras 3D

A parte de las impresoras 3D más comunes (se llaman cartesianas), Marlin soporta otro tipo de gestión de movimientos.

Delta

La impresora tiene 3 ejes que suben y bajan, moviendo una plataforma central. Esta impresora es la más rápida, porque un pequeño movimiento en el motor, produce un movimiento muy rápido en el extrusor. Además, permite impresiones muy altas. Al principio tenían el problema de que eran difíciles de calibrar, pero hoy en día son muy populares .

Delta Rostock
Delta Rostock

CoreXY

Es una forma de mover los ejes XY usando una forma que tensiona las correas. Los motores se sincronizan para mover en el eje X y en el eje Y. La calidad depende mucho de la tensión de las correas.

CoreXY
CoreXY

SCARA (Selective Compliance Assembly Robotic Arm)

Esta es una impresora muy rara (yo nunca he visto una). Es un brazo robot con dos motores que van movimiendo el extrusor.

Soporte para arcos en el GCODE

Los comandos normales de gcode son líneas rectas. Pero también podemos definir curvas y arcos.

Tengo que decir que no lo he visto nunca.

En general, los programas aproximan las curvas usando muchas rectas.

Mide la temperatura de forma precisa

Marlin hace muchas mediciones de la temperatura, y te muestra la media.

De esta forma, trabaja con la temperatura filtrada, sin ruidos de medición.

Control AutoTemp

Si quieres imprimir a una velocidad más rápida, tienes que subir la temperatura, para que el plástico vaya más fluido. Pero esto puede afectar a la calidad del plástico.

Con la función AutoTemp, puedes definir un rango mínimo y máximo. Marlin ajusta la temperatura con la velocidad. Cuando va más lento, usa una temperatura menor, cuidando la calidad del plástico.

Calcula el Autonivelado de la cama caliente

Con un sensor capacitivo, la impresora puede hacer varias pruebas en la cama caliente, y detectar posibles curvaturas. Marlin ajusta entonces todo el código para que se adapte a la altura real de la base.

autolevel
Sensor capacitivo para Autolevel
Por lo que me comenta mucha gente que lo ha probado, el autolevel todavía necesita madurar.

Cómo instalar Marlin paso a paso

Voy a explicarte cómo instalar Marlin paso a paso. No hace falta ser un super ingeniero para hacer esto, pero sí que necesitas tener alguna idea de algunos conceptos, como descomprimir ficheros, editar ficheros de texto, y esas cosas.

Para instalar Marlin necesitas:

  1. Instalar el entorno de Arduino
  2. Descargar Marlin
  3. Configurarlo para tu impresora
  4. Compilarlo y grabarlo en tu placa

Vamos por partes

Lo primero es instalar el programa de Arduino. Esto es muy sencillo, pero depende si tienes Windows, un Mac, o estás en Linux.

Tienes que ir a la página de Arduino oficial, http://arduino.cc/en/main/software, y descargar la versión para tu ordenador.

Hay muchos tutoriales en internet.

Este vídeo me ha parecido bien explicado, y con una versión reciente del programa para Windows.

Cuando tengas esto funcionando, puedes comenzar con el Marlin

Para instalar el marlin, tienes que descargar el zip con la última versión desde la web de github: https://github.com/MarlinFirmware/Marlin

Descargar Marlin
Descargarte Marlin de https://github.com/MarlinFirmware/Marlin

Descarga el fichero y descomprime el ZIP completo en una carpeta.

Yo uso una versión de Linux para estas cosas (Arch Linux con Gnome 3).

Marlin, como todos los programas, utiliza un sistema de Releases. Esto es, van sacando nuevas versiones cada cierto tiempo. Si tienes algún problema con el software, puedes revisar una versión concreta: https://github.com/MarlinFirmware/Marlin/releases

Ahora toca compilar el Marlin dentro del programa de Arduino.

Conecta el Arduino Mega 2560 al puerto USB!

Antes de arrancar el programa de Arduino, mi consejo es que tengas la placa conectada al puerto USB.

De esta forma, el programa va a detectar qué modelo tienes conectado, y todo va a ser más sencillo.

Yo uso una versión de Linux para estas cosas (Arch Linux con Gnome 3).

Si no lo has probado, te invito a darle una oportunidad.

Hay una versión muy guapa llamada Antergos que va muy bien.

Ahora arranca el programa de Arduino.

Vete a Fichero -> Abrir (o File -> Open.. si lo tienes en inglés)

marlin-open-dialog
Como en todos los programas, vete a File/Open…

El fichero que tienes que abrir está en la carpeta donde has descomprimido el Marlin. Entra en la carpeta, y verás otra carpeta que se llama Marlin. Dentro está el fichero que buscamos, Marlin.ino

marlin/open ino
Vete a la carpeta de Marlin, y abre el Marlin.ino

Aquí vas a tener un montón de pestañas. La que nos interesa es la de Configuration.h, que es donde vas a andar tocando para ajustar tu impresora.

Configuration.h
Pulsa en la pestaña de Configuration.h

Tienes que decirle al arduino qué placa tienes, para que pueda generar el firmware adecuado a tu modelo.

Para la RAMPS + Arduino Mega 2560, pues eso, selecciona el Arduino Mega 2560.

 

Marlin Selecciona Arduino Mega 2560
Selecciona la placa Arduino Mega 2560

Ahora sólo queda decirle en qué puerto tienes conectado el Arduino Mega.

En las últimas versiones, el programa lo detecta sólo.

En Linux no hay problema, pero en Windows a veces hay que instalar drivers especiales (si tienes una versión rara de Arduino)

Marlin selecciona el puerto Arduino Mega 2560
Selecciona el puerto serie donde está conectada la placa Arduino Mega 2560

Para compilar el Marlin, e instalarlo en la placa, tienes que pulsar el botón Upload

Pulsa el botón de Upload para instalar Marlin
Pulsa el botón de Upload para instalar Marlin

Espera a que te aparezca el mensaje de Done uploading

Marlin Done Uploading
Marlin Done Uploading

Ya tienes Marlin instalado por primera vez!

Ahora toca lo más divertido: la configuración

 

El fichero Configuration.h

marlin-configuration

Para cambiar las opciones de Marlin, tienes que editar el fichero Configuration.h a tu gusto.

Puedes hacerlo dentro del propio programa de Arduino.

Si nunca has programado antes (y menos en C++ o en entorno Arduino), te voy a explicar cómo cambiar las opciones de configuración.

En los lenguajes de programación, puedes desactivar líneas. Es como si estuviesen borradas, pero están ahí para que puedas usarlas en el futuro.

Cada lenguaje es distinto. En el caso de Marlin  tienes que usar la doble barra // al principio de la línea.

Linea no comentada

// Linea comentada

Con esto, Marlin activa o desactiva cada opción de la configuración.

Por ejemplo, esta línea le dice al Marlin que quieres usar la tarjeta de memoria SD:

# define SDSUPPORT

Asi para desactivar esa opción, tienes que escribir // al principio de la línea

//# define SDSUPPORT

La palabra #define es la que importa.

Si comentas la línea, esta opción no se activa, y es como si no existiese.

Si quitas las dos barras del principio //, entonces la opción está activa.

 

Además, define puede tener un valor.

Por ejemplo, con esta linea defines la temperatura máxima de la cama caliente

# define BED_MAXTEMP 150

También podemos poner una fórmula, y asi te haces una idea de dónde viene ese valor.

Por ejemplo, quiero que la temperatura de la cama sea 100º más que la temperatura mínima (es un ejemplo, no tiene mucho sentido hacer esto)

# define BED_MAXTEMP (BED_MINTEMP+100)

Si vas a usar fórmulas en el programa, mi consejo es que siempre pongas unos paréntesis en los números.

 

Puedes poner condiciones. Por ejemplo, si activas la pantalla LCD, también quieres que se active la tarjeta SD.

Para eso existe la palabra #ifdef y  #endif  (tienen que ir  en una línea separada)

#ifdef PANTALLA_LCD
# define SDSUPPORT
#endif

Si no está activada la opción de PANTALLA_LCD, tampoco se activa la opción de SDSUPPORT.

Con estas breves nociones, vas a dominar el fichero Configuration.h sin problema.

Configuración Mínima de la impresora 3D

Primer día con la impresora 3D
Primer día con la impresora 3D

Voy a resumir las opciones mínimas que tienes que modificar para que la impresora arranque.

Es lo mínimo que tienes que ajustar para poder empezar a imprimir.

Tipo de Placa Base

Voy a empezar con el parámetro más importante: el modelo de placa que tienes instalada en la impresora.

Cuando te descargar el Marlin de la web, viene configurado para la popular RAMPS 1.4 con un extrusor, un ventilador, y la cama caliente

En versiones modernas, cada placa tiene su propio fichero. Por ejemplo la RAMPS tiene un fichero que define todos los pines.

Cuando compres tu placa, asegúrate de leer la documentación, y buscar si está soportada en Marlin de forma oficial. En general, si te compras un kit, no vas a tener este problema, pero asegúrate antes.

Para ver la lista de placas soportadas, tienes que consultar el fichero boards.h

Configurar la RAMPS 1.4

RAMPS 1.4 SB Premium

Cuando configuramos la RAMPS, tenemos varias opciones. Depende de si tenemos un extrusor o dos, o si usamos un par de ventiladores de capa, o si vamos a usar la cama caliente.

BOARD_RAMPS_14_EFB : Extrusor en la salida D10, ventilador en la D9, cama caliente en D8 (lo más común)
BOARD_RAMPS_14_EEB : Extrusor 0 en D10, extrusor 1 en D9, cama caliente en D8 (o sea, sacrificamos el ventilador por tener un segundo extrusor)
BOARD_RAMPS_14_EFF : Extrusor, ventilador 0, ventilador 1
BOARD_RAMPS_14_EEF : Extrusor 0 , extrusor 1 , ventilador

Otras placas conocidas

BOARD_SAV_MKI : la SAV MKI de Francisco Malpartida
BOARD_RAMBO :  Esta es la Rambo Board,
BOARD_RUMBA : la Rumba
BOARD_BQ_ZUM_MEGA_3D : la placa de BQ para la prusa hephestos
BOARD_SANGUINOLOLU_12 : la Sanguinololu, antigua y de construcción algo cutrilla.
BOARD_MELZI : Funciona con la placa que viene con la popular impresora anet a8 (pero no estoy 100% seguro)

Configurar la placa OMV20 Lite

Si quieres una placa sencilla de instalar, sin complicaciones de drivers y con todo integrado, tienes la OVM20 Lite. Es 100% compatible con la RAMPS 1.4 y el Marlin, pero sin los problemas de buscar drivers, un arduino mega y todo eso.

ovm20 lite
La placa para impresoras 3D con todo integrado.

¿Qué electrónica tienes en la impresora?

    Me ayuda mucho conocer qué tipo de productos estas usando (o piensas comprar), para los futuros artículos del blog, o para futuros desarrollos de staticboards.

Sensor de temperatura

Ahora toca decirle a la placa cómo estás midiendo la temperatura de la cama y del extrusor.

El termistor
Un termistor es una resistencia que varía con la temperatura.

Al variar la resistencia, la placa puede medir los cambios de voltaje, y de ahí, sacar la temperatura.

Termistor EPCOS 100K
Termistor EPCOS 100K

Cada termistor es distinto. Los hay más precisos, los hay que son más sensibles a temperaturas altas, los hay más baratos, más resistentes, mejor o peor protegidos, o el mismo termistor con formas variadas.

Según se calienta el termistor, la resistencia cambia cada vez menos. A partir de los 190º cambia muy poco, y empieza a ser dificil de medir.

Para más temperatura, sobre los 250º, es recomendable usar un termocouple, que en castellano se llama par termoeléctrico, o termopar.

El termopar no funciona tan bien en temperaturas bajas, y necesita un circuito adicional para hacer la medición.

El más conocido es el EPCOS 100K, modelo B57540G0104F000, que tiene un margen de error del 1%.

Se venden muchos más (de origen dudoso), y la tienda suele indicar el parámetro de marlin que tienes que poner.

Los chinos de Aliexpress dicen que te venden un EPCOS 100k, pero vamos, ese termistor no vio una fábrica de EPCOS en su vida. Si te vende un termistor de 100k, date por contento.

El número 1, es un termistor de 100k y el que tienes que poner en el 99% de los casos. El número 0 deshabilita el termistor.

Si tienes un modelo raro, o usas un termopar, puedes mirar la tabla de modelos soportados en el propio fichero de configuración (Por ejemplo, la prusa Hephestos 2 usa el termistor 70)

Por defecto viene activado el termistor en el extrusor, y desactivado en la cama caliente.

Para activar el termistor EPCOS 100k en la cama caliente:

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_BED 1

Resistencia EndStop Pull Up

Ahora toca hablar de los finales de carrera.

EndStop final de carrera
EndStop final de carrera

En su versión más sencilla, no es más que un interruptor que corta/conecta los 5V con GND.

Cuando los 5V se conectan con GND, en teoría, va a pasar corriente. Si no hay resistencia, va a pasar infinita corriente. Es lo que llamamos un cortocircuito.

Asi que es una buena práctica conectar una resistencia para que limite la corriente, y no se queme nada.

Por fortuna, el propio chip del Arduino incluye unas resistencias internas en los pines para limitar esto. Pero esto puede tener unas consecuencias, ya que afecta al circuito.

Marlin nos permite activar o desactivar las resistencias internas del chip.

Asi que si usas un botón mecánico sin más, tienes que usar las resistencias internas que trae el propio arduino.

Si usas un final de carrera montado sobre una PCB, ya incluyen las resistencias soldadas en la placa.

Geeetech Mech Endstop
Geeetech Mech Endstop con la resistencia pull up marcada

Si usas finales de carrera a pelo:

#define ENDSTOPPULLUPS

Si usas finales de carrera montados en una placa, comenta la linea:

//#define ENDSTOPPULLUPS

Puedes desactivar el pullup global, y activarlo en cada final de carrera por separado.

#ifndef ENDSTOPPULLUPS
// #define ENDSTOPPULLUP_XMAX
// #define ENDSTOPPULLUP_YMAX
// #define ENDSTOPPULLUP_ZMAX
// #define ENDSTOPPULLUP_XMIN
// #define ENDSTOPPULLUP_YMIN
// #define ENDSTOPPULLUP_ZMIN
#endif

No puedes hacerlo al revés. O sea, activar todos con ENDSTOPPULLUPS , y desactivar sólo alguno.

Es un poco lioso, y te pueden venir las dudas. Recuerda, o configuras ENDSTOPPULLUPS, o activas cada PULLPUP por separado.

Invertir la lógica del final de carrera

Hay dos maneras de detectar si la máquina ha pulsado el final de carrera.

Por un lado, el botón está Normalmente abierto (Normally Open en inglés), y cuando pulsas, se conecta una patilla con la otra. Como el interruptor de toda la vida.

Por otro lado, puedes configurarlo para que el botón esté siempre conectado, y cuando lo pulsas, se corta el circuito. Esto se llama Normalmente cerrado (Normally Closed en inglés)

finales-carrera-endstop-normally-open-normally-closed
Un dibujito que intenta explicar la diferencia entre NO/NC

¿Cuál es mejor?

Puedes pensar que la forma más intuitiva es la de normalmente abierto. Que cuando la máquina toque el botón detecte la señal.

Pero hay un problema.

Imagínate que tienes la impresora funcionando, y sin querer, con el movimiento y las vibraciones, un cable se desconecta.

Si usas finales de carrera normalmente abiertos, cuando los pulses, el circuito va a seguir abierto, (el cable está roto) y la impresora no sabe que has pulsado.

La máquina se mueve hasta el final, el botón no funciona, los motores siguien empujando…

Desastre

Si usas finales de carrera normalmente cerrados, en cuanto el cable se desconecta, la impresora deja de funcionar.

Por eso, es más seguro usar finales de carrera normalmente cerrados, NC

Los finales de carrera traen 3 patillas. Una tiene una marquita llamada C, o COM, de común. Otra es la patilla NC, y la otra es la patilla NO.

final-carrera-c-no-nc
Un cable se conecta a la patilla C, el otro a la patilla NC

Uno de los cables lo tenemos que conectar a la patilla C, de común. El otro cable lo conectamos a la patilla que nos interesa. En este caso NC.

Marlin por defecto utiliza la configuración NC normalmente cerrada. Si quieres usar la configuración NO tienes que invertir la lógica.

Para decirle al marlin que tenemos un final de carrera normalmente cerrado, tenemos que asegurarnos que no están invertidos y que INVERTING está a false

#define X_MIN_ENDSTOP_INVERTING false
#define Y_MIN_ENDSTOP_INVERTING false
#define Z_MIN_ENDSTOP_INVERTING false
#define X_MAX_ENDSTOP_INVERTING false
#define Y_MAX_ENDSTOP_INVERTING false
#define Z_MAX_ENDSTOP_INVERTING false
#define Z_MIN_PROBE_ENDSTOP_INVERTING false

Invertir sentido de giro del motor

Cuando conectas los motores, lo normal es enchufar todos los conectores en el mismo sentido.

En una impresora tipo Prusa, si le dices que el motor vaya a la derecha, el motor va a la derecha. Si le dices a la Z que suba, el motor sube.

Pero en la cama caliente, esto va al revés. Si quieres ir adelante, la cama tiene que ir hacia atrás.

El giro de motor depende de cómo lo conectas a la placa. Si el motor gira al revés, sólo tienes que girar el conector.

Pero si eres como yo, que tienes que tener los cables en orden… un conector al revés te puede quitar el sueño.

motor-paso-paso-conector-reves
Conector del eje Y al revés, rompiendo el orden y el equilibrio en el universo

En Marlin podemos invertir la lógica del motor sin tener que girar el cable.

#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false

Si te fijas bien, por defecto, Marlin invierte el eje Y.  Es lo que necesitas si tu impresora es una prusa, y la cama se mueve en dirección contraria.

Medidas máximas de la impresión

Puedes conectar un final de carrera para el mínimo y otro para el máximo. Pero no es necesario.

Marlin sólo necesita un punto de referencia para saber dónde empezar. A partir de ahí, puedes decirle el tamaño máximo, y nunca va a permitir movimientos que salgan por fuera.

Es lo que se llama, soft limits, o límites por software.

Por defecto Marlin define una impresora de 200mm x 200mm x 200mm

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 200
#define Y_MAX_POS 200
#define Z_MAX_POS 200

Si el diseño de la impresora  sólo te permite imprimir 175mm en el eje X, puedes ajustarlo con #define X_MAX_POS 175, y te aseguras que la máquina no intente salir fuera por error.

MIN_POS es el valor que toma la máquina cuando hace el Home. Lo normal es que sea cero.

La posición mínima puede tener sentido, si por algún motivo tenemos el final de carrera algo desplazado y está dentro de la cama caliente. 

Si la cama es de 200 mm x 200 mm, y el eje X está 20 mm dentro de la cama, podemos bajar el máximo, a 180, o subir el mínimo a 20.

Si subes el mínimo, te va a ser más sencillo colocar algo en el centro, porque la posición central será 100×100.

#define X_MAX_POS
Si quitamos 20mm a la cama caliente, y le decimos que mide 180, el centro se desplaza

 

En cambio, si le decimos que empieza en 20, y que mide 200, el centro se mantiene
En cambio, si le decimos que empieza en 20, y que mide 200, el centro coincide

Configuración de los pasos por milímetro

Aqui tienes que prestar mucha atención porque es uno de los parámetros más importantes de la impresora.

Voy a explicarte de dónde salen estos valores, y cómo calcularlos, paso a paso.

Los motores de la impresora avanzan en pasos (por eso se llaman motores paso a paso). Marlin envía un pulso al driver, y el motor avanza un paso.

Marlin necesita conocer cuantos pulsos tiene que enviar para que la impresora avance un milímetro. Y a partir de ahí, ya puede mover todo con precisón.

Esta conversión de pasos a milímetros tiene que ser perfecta si quieres que la impresora funcione bien. Es un parámetro crítico de configuración.

Empezamos por el motor y los drivers

Pasos por cada motor

Esto son los pasos que tiene que dar el motor para dar una vuelta completa.

Este valor lo conoces al comprar el motor. El valor normal de los motores comunes es de 200 pasos por vuelta. Es muy raro que tengas un motor que no sea de 200.

En algunas tiendas están empezando a vender motores de 400 pasos por vuelta, que son más caros y ofrecen más definición de movimiento, pero a costa de una menor velocidad.

Te invito a leer el artículo sobre los motores paso a paso para aprender más sobre cómo funciona por dentro estos motores.

No es necesario que el motor avance un paso completo. Puede quedar en una posición intermedia entre un imán y el siguiente. Los drivers modernos dividen este espacio intermedio en 16 o 32 posiciones intermedias. Esto son los famosos micropasos del driver.

  • Los drivers DRV8825 (los que tienen un chip largo) funcionan a 32 micropasos.
  • Los A4988 (los que tienen el chip cuadrado) funcionan  a 16 micropasos como máximo.

Jumpers

Si tienes una placa tipo RAMPS puedes ver que debajo de cada driver hay 3 jumpers. Sirven configurar los micropasos del driver.

Con los 3 jumpers conectados le dices al driver que quieres funcionar con el máximo de micropasos posibles.

No hay que tocarlos para nada. En algún caso podrías querer cambiarlo, pero es muy raro.

Si tienes un motor de 200 pasos por vuelta, y un driver DRV8825 de 32 micropasos:

200 x 32 = 6400 micropasos para dar la vuelta completa

La polea del motor

En el caso de una correa dentada, vas a necesitar una polea atornillada al eje del motor.

Ahora hay que saber cuánto avanza la correa en cada vuelta.

Podrías medir el diámetro de la polea, pero hay otra forma más sencilla usando los dientes de la correa de referencia.

pulley-belt
Es más fácil contar los dientes que medir el diámetro de la polea

Hay varios tipos de correas. Las más comunes son las T2.5, y las GT2.

Las T2.5 están pensadas para sincronizar poleas (T es de timing) y no están pensadas para movimientos lineales. En teoría podrían causar imperfecciones en la impresión.

Dientes de la correa T2.5
Dientes de la correa T2.5

Las GT2 están pensadas para movimientos lineales de máquinas CNC. Las puedes diferenciar porque los dientes son redondeados, en vez de ser rectangulares. De esta forma los dientes encajan perfecto durante todo el giro de la polea.

Dientes de la correa tipo G2
Dientes de la correa tipo G2

En teoría, las mejores son las GT2, aunque hay mucha gente que me ha comentado que no ha visto diferencia (si has notado alguna mejora cambiando el tipo de correa, deja un comentario al final de post)

El número nos indica la distancia entre los dientes. Esto se llama el avance de la correa (en inglés, pitch).

GT2 quiere decir que hay una separación de 2mm entre cada diente (y T2.5 que hay 2.5mm entre cada diente).

Cuando compramos la polea, nos indica el tipo de correa (GT2/T2.5) y el número de dientes (20 o 16)

Así que la cuenta es encilla si sabemos que nuestra polea tiene 20 dientes, y que cada diente avanza 2mm:

20 dientes x 2 mm = 40mm por vuelta

Ahora sacamos los pasos por cada milímetro. En este ejemplo, 6400 pasos avanza 40 mm. Sólo hay que hacer la división:

6400 pasos / 40 mm = 160 pasos por mm

La fórmula final queda asi:

Pasos por mm = (200 pasos por vuelta * 32 micropasos por cada paso) / ( 20 dientes por vuelta * 2mm por diente) = 160 pasos por mm.

Ahora te voy a enseñar el caso de las varillas roscadas/husillos

Husillo para el eje Z
Husillo para el eje Z

La varilla roscada también tiene un pitch, que nos dice cuánto avanza en cada vuelta.

No es fácil de medir ese avance. Pero por suerte, el avance es estándard y viene calibrado.

  • Las varillas de métrica 5 (M5) tienen un avance de 0.8mm por vuelta.
  • La varilla de métrica 8 (M8) tiene un avance de 1.25mm por vuelta.
  • La varilla de 10mm tiene un avance de 1.5mm por vuelta.

La fórmula para calcular los pasos por mm, con una varilla de métrica 5 (con el driver DRV8825):

Pasos por mm = ( 200 pasos por vuelta * 32 micro pasos por cada paso) / 0.8 mm por vuelta = 8000 pasos por mm.

Ahora viene la fórmula para el extrusor

Esto depende mucho del tipo de extrusor que tienes, si tiene una rueda reductora o si es un extrusor directo.

Reductora
Las reductoras sirven para dar más fuerza a costa de la velocidad, o al revés, para dar velocidad a costa de perder fuerza.
Es lo que hace el cambio de marchas del coche.

  • Si el engranaje del motor es más pequeño que el segundo engranaje, es más potente pero más lento.
  • Si el engranaje del motor es más grande que el segundo engranaje, es más rápido, pero tiene menos fuerza.

Para empezar, voy a explicar un extrusor con una reductora (como el típico extrusor de tipo Wade). Cuando el motor gira, tiene un engranaje pequeño que a su vez, empuja una rueda más grande, que a su vez gira un tornillo con unas muescas.

Extrusor Gregs Wade, con unas marcas que le hice para contar los dientes
Extrusor Gregs Wade, con unas marcas que le hice para contar los dientes

Necesitamos saber el diámetro de ese tornillo con las muescas. El tornillo tiene un diámetro de 8mm, pero con la muesca, el diámetro se reduce a 7mm.

En cada vuelta, el filamento avanza 7 mm * π = unos 22mm aproximados

Ahora viene el tema de la reductora.

Hay que tener en cuenta los dientes de la rueda pequeña y de la rueda grande. Si una rueda tiene 47 dientes, y la otra tiene 9, pues la relación será de 47/9 = 5.2222

Esto quiere decir que tenemos que dar 5.222 vueltas en el motor, para que el tornillo con las muescas avance 1 vuelta.

Con todas estas ideas, la fórmula final se queda:

Pasos por mm = (200 pasos por vuelta del motor * 32 micro pasos por cada paso) * (47 dientes de la rueda grande / 9 dientes de la rueda pequeña) / ( 7mm de diámetro efectivo * π) = 1519.839 pasos por mm

Este valor es muy distinto en cada modelo de impresora. Hay impresoras que usan reductoras 48/10, hay otras que usan una pieza llamada Mk7 para empujar el filamento, sin reductora (extrusor directo)

Si el extrusor es directo, la relación  es 1 vuelta de motor = 1 vuelta del tornillo = 1/1

Si tienes un extrusor directo, tienes que consultar con la tienda el diámetro del tornillo.

La mayoría de tiendas online te indican los pasos por mm del extrusor que venden, pero si no, contacta con ellos para tener toda la información.

Con esta información, edita esta línea del Configuration.h

#define DEFAULT_AXIS_STEPS_PER_UNIT { 160, 160, 8000, 1519.839 }

Todos estos valores los puedes consultar online en esta página: http://www.prusaprinters.org/calculator/

Calibración final

Estos valores que calculamos se basan en que todo es perfecto. Que la distancia de la correa es de 2mm, que la polea tiene 20 dientes separados de forma perfecta, que el tornillo es de 7mm exactos.

Pero en la vida real, puede haber alguna pequeña diferencia. Además esto se amplifica, por ejemplo, usando una reductora.

Por eso, una vez que tengas la impresora funcionando, mi consejo es imprimir un cubo de calibración, de 5cm, y hacer las correspondientes correcciones. (descarga uno de 1cm y escálalo por 5).

Por ejemplo, si la X os da 160 pasos, y el cubo sale de 520 mm, pues puedes hacer una regla de 3 para corregir los pasos:

160 pasos -> 520mm

X pasos -> 500mm

X = (500 * 160) / 520 = 153,84 pasos por mm

Con la Z es más dificil, porque la primera capa puede tener alguna mínima variación. Lo que yo hago es poner una marca en el husillo, subirlo 10cm, y repasar la cuenta.

Calibrar los pasos por mm del Extrusor

Ahora toca calibrar el extrusor. Te voy a explicar como lo hago yo.

Es muy importante calibrar bien el filamento para la calidad de la impresión. Si tenemos de más, saldrá por las paredes, y si tenemos de menos, tendrás líneas que falta plástico.

No tienes porqué gastar filamento. Lo que hago es desatornillar el fusor y dejar que el filamento pueda subir y bajar libre.

Haz una muesca en el filamento, para que sea más sencillo medir después. Yo la hago por donde sale el filamento.

Dónde hacer la muesca al filamento, con el fusor desatornillado
Dónde le hago la muesca al filamento, con el fusor desatornillado

Lo más probable es que tengas activada la protección para que Marlin no intente extruir en frio (cool filament prevented o similar). Se puede desactivar de forma temporal con el comando M320 P1 desde pronterface.

Ahora avanza 15cm el filamento, y haz otra muesca en la misma zona del extrusor. Mide cuánto filamento ha salido de verdad.

Mi consejo es que hagas la prueba varias veces antes de cambiar los valores en el marlin.

Si al repetir la prueba, te salen valores muy distintos (por ejemplo, una vez se traga 100mm, otra 60mm), entonces tienes un problema con el extrusor. No agarra bien el filamento y resbala.

Cuando te salga la prueba varias veces con un valor estable, haz la regla de tres, y actualiza el valor en el Marlin.

Ahora puedes imprimir una pieza para ver el resultado. Con el fusor conectado, el motor tiene que hacer mucha fuerza, y pueden aparecer los problemas.

  • Puede ser que no esté agarrando bien el filamento. El tornillo gira, pero el filamento no avanza.
  • Puede que el driver pierda pasos. El motor hace un ruido raro, como golpes, y a veces no gira. Tienes que girar el potenciómetro del driver para darle más fuerza.
  • Puede que el driver se sobrecaliente. El motor a veces no gira, y si tocas con el dedo el driver del extrusor está muy caliente (tocalo con cuidado, o usa un termómetro). Gira el potenciómetro para reducir la potencia.

Voy a explicarte cómo ajustar al detalle los pasos por milímetro usando el método de Triffid Hunter. (el nombre tiene un toque molón)

Este método es para ajustarlo al mínimo detalle. Si el extrusor está bien ajustado, en realidad vas a calibrar el diámetro del filamento (Hay bobinas que dicen 1,75mm de diámetro, pero en realidad son de 1,80mm). Asi que anota la bobina con la que haces la calibración.

Para ver si la extrusión es la correcta, y realizar los ajustes finales, tienes que usar este fichero.

Calibración de filamento
Objeto para calibración el filamento

El tamaño de estas escaleras es muy pequeño. Mi consejo es que lo escales por 250% en el Slic3r o en el Cura.

Lo que vamos a hacer es imprimirlo, e ir modificando los pasos por mm del extrusor en directo.

Lo puedes hacer con la pantalla del Marlin. En la parte de Control/Motion/E steps per mm. Puedes ir cambiando el valor según imprimes la pieza. (también puedes enviar el comando M92 Exxx en el pronterface, si no tienes una pantalla)

Imprímelo con el 95% de relleno. Es importante que lo imprimas con la mínima altura de capa con la que vayas a trabajar.

Cuanto menos altura de capa, mejor vas a calibrar el extrusor (pero más tiempo vas a perder calibrando). Puedes hacerlo con altura de 0.2mm, y si te ves con ganas, repítelo con 0.1mm

Deja las primeras capas para que la altura se estabilice y el filamento esté bien distribuido.

Cuando se imprime el relleno, si no puedes ver una separación mínima entre el filamento, reduce los pasos un 0.5%, y déjalo imprimir un par de capas.

Si puedes ver esta separación cuando imprimes las partes superiores, aumenta los pasos un 0.5% cada dos capas.

En las capas exteriores, aumentas los pasos para quitar la separación entre cada línea. En las capas interiores reduces pasos para aumentar la separación.

Durante la impresión vas ajustando estos valores, hasta que la parte interna tiene unos mínimos espacios, y la parte superior está bien cerrada.

Anota el valor definitivo, y actualiza el fichero Configuration.h con el nuevo valor. Recompilas el marlin y ya te queda para siempre.

Con estos consejos vas a dejar la impresora calibrada al 100%!

Ajustar la velocidad y aceleración máxima

Aunque en el Slic3r o en el Cura, le digas que imprima a la velocidad de la luz, tu impresora va a tener una velocidad máxima.

Esto depende la robustez de la impresora y lo bien lubricada que la tengas. Del tipo de materiales, de la correa o del tipo de husillo que estés usando.

Los valores que trae Marlin están fuera de la realidad. Son demasiado rápidos. A ver, tiene lógica porque Marlin está pensado para la impresora Ultimaker. Pero para una una Prusa, es demasiado.

Velocidades máximas

Con este parámetro puedes configurar la velocidad máxima del eje X,Y,Z,E

#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }

Para una impresora tipo reprap, 300 es un valor bastante alto. Lo que puedes hacer es ir probando velocidades con el pronterface.

Por ejemplo:

G0 X170 F75
G0 X10 F75

Con este código, vas a ir a la posición X=170, y volver a la posición 10, a 75 mm/s

Repite la operación, subiendo la velocidad. No apures al máximo. Corres el riesgo de que en una impresión, el motor acabe perdiendo pasos. Déjalo en una velocidad suficiente para que la máquina se mueva suave.

Repite el proceso para el eje Y, y para el eje Z.

Al limitar la velocidad máxima, vas a evitar que, por una mala configuración del slic3r/cura, la impresora te pierda pasos.

Aceleración máxima

Lo mismo ocurre con la aceleración. Cuando le dices a la impresora que se mueva a una velocidad, el marlin no aplica esa velocidad al momento.

Si la impresora está parada, el motor no va a poder mover tanto peso en frio. Para arrancar, aplica una aceleración progresiva, hasta alcanzar la velocidad objetivo.

Lo mejor de Marlin es que también lo hace cuando termina el movimiento. Marlin sabe cuál es el siguiente movimiento, y calcula la frenada con antelación. De esta forma, el motor no sale disparado, y las esquinas salen bien.

Cuando reduces la aceleración, los movimientos son más suaves y la calidad de la impresión mejora.

#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }

Para una impresora tipo RepRap, estos valores son demasiado rápidos. Mi consejo es comenzar con unos valores de 1200,1200,75,1200

También tenemos que cambiar la aceleración por defecto. Es la que se aplica cuando no se especifica una aceleración en los comandos gcode.

#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves

DEFAULT_ACCELERATION es la aceleración cuando está imprimiendo.

DEFAULT_RETRACT_ACCELERATION es la aceleración para hacer la retracción (cuando la impresora quiere parar de extruir). Este valor tiene que ver con los hilos finos, como pelitos, que quedan en la pieza.

DEFAULT_TRAVEL_ACCELERATION es la aceleración cuando la impresora no se está moviendo.

El valor por defecto es, una vez más, muy rápido para una impresora tipo reprap. Prueba con 750.

El parámtro JERK

Voy a intentar explicar este valor para entender su significado y para qué sirve.

Marlin aplica una aceleración/deceleración en los movimientos si el cambio de velocidad es muy brusco. Pero si el cambio no es brusco, no se complica la vida y cambia la velocidad al instante.

Por ejemplo, si vas a 100mm/s, y quieres cambiar a 50mm/s, eso es un frenazo brusco. Marlin tiene que ir frenando poco a poco.

En cambio, si pasas de 100mm/s a 95mm/s no es un frenazo brusco, y Marlin no frena poco a poco. Esto es, pasa de 100mm/s a 95mm/m al instante, sin pasar por el algorimo de frenado.

JERK es la máxima diferencia de velocidad para que un movimiento considere brusco.

Por defecto, es muy alto, y eso hace que los movimientos no vayan todo lo fluido que debería. Mi consejo es bajarlo bastante

#define DEFAULT_XJERK 10.0
#define DEFAULT_YJERK 10.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0

Configuración de la pantalla LCD

En versiones antiguas de Marlin, esta parte era un poco lío. Pero en las versiones más recientes, es casi automático.

Sólo tienes que saber el modelo de pantalla que tienes, para poder activarla en la configuración.

Como te he aconsejado con la electrónica, es importante que revises que la pantalla está soportada en Marlin. Consulta con la tienda donde la has comprado.

Soporte para la tarjeta SD

Si tienes una RAMPS o una placa con lector de tarjetas SD, tienes que activar esta linea. Por defecto viene desactivada.

//#define SDSUPPORT

Con esto puedes leer y escribir ficheros en la tarjeta.

Poca gente lo sabe, Puedes hacer un fichero que se llame auto0.g

Cuando enciendes la máquina, Marlin va a ejecutar ese programa de forma automática. Puedes usarlo para que la impresora haga un Home, caliente la cama y el extrusor, y suene una musiquita 🙂

Modelo de la pantalla LCD

Esta sección depende mucho de la pantalla que tengas. Las más comunes hoy en día son las pantallas de RepRap Discount. Son baratas y muy comunes.

Hay dos modelos.

La más barata de todas, funciona sólo en modo texto. Esta pantalla es muy sencilla y va a funcionar siempre.

Pantalla sólo texto RepRap Discount Smart Controller
Pantalla sólo texto RepRap Discount Smart Controller

//#define REPRAP_DISCOUNT_SMART_CONTROLLER

 

La pantalla gráfica, que vale un poco más, y es más grande. Al funcionar por píxeles, muestra mucha más información, y de una forma más sencilla de ver.

Pantalla gráfica Reprap Discount Full Graphic Smart Controller
Pantalla gráfica Reprap Discount Full Graphic Smart Controller

 

//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Esta pantalla funciona muy bien, pero para poder usarla tienes que instalar una librería adicional en Arduino.

La librería se llama u8glib, y permite dibujar gráficos en pantallas LCD.

Para instalarla, es muy sencillo. Vete a esta dirección, y descarga el fichero ZIP con el código fuente.

En Arduino tienes que ir a la opción Sketch > Import Library… > Add Library , y seleccionas el ZIP que acabas de descargarte.

Con esto, ya tienes el Marlin preparado para mostrar la información por la pantalla.

Los parámetros que te he comentado son los que necesitas para configurar la impresora. Sólo con eso es suficiente para poder imprimir.

Controles de temperatura

Voy a explicarte cómo ajustar el algoritmo de control de temperatura.

No es realmente necesario, y puedes imprimir piezas de calidad sin problema. Pero es mejor ajustarlos para que la impresora se estabilize más rápido, y para que no arda por accidente.

Temperatura Mínima y Máxima

La temperatura mínima sirve para detectar cuando se ha desconectado la corriente del extrusor o de la cama. Puede pasar que por algún motivo, el cable se suelte, la resistencia se rompa o el termistor de desconecte. En ese caso, el motor sigue empujando el plástico sólido, y puede romper algo.

#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define BED_MINTEMP 5

El valor de 5 está bien, si vives en un sitio normal. Si vives en Siberia, pues tienes que bajarlo.

Lo mismo con la temperatura máxima. Si por algún caso, el GCODE pone una temperatura loca, esto te va a proteger.

Pero si el termistor está loco, y no lee la temperatura correcta… cuidado.

#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define BED_MAXTEMP 150

Parámetros PID

Marlin controla la temperatura del extrusor y de la cama caliente con un algoritmo matemático muy conocido, el PID.

Su nombre viene de Proporcional, Integral, derivado.

Marlin mide la temperatura del extrusor y de la cama caliente de forma constante, y decide si tiene que encender o apagar la corriente en cada momento.

Aqui tienes un vídeo explicativo de un sistema PID muy bueno:

Imagina que quieres que el extrusor se caliente hasta una temperatura (por ejemplo, para llegar a los  190º).

Marlin mide la diferencia entre la temperatura actual, y la temperatura que quieres conseguir. Esa diferencia es el error que hay que corregir (calentando el extrusor).

Si tenemos un error muy grande, le damos caña al extrusor. Si el error es pequeño, le damos un poquito de calor. Esta es la parte proporcional.

Pero esto no es suficiente. Si lo hacemos así, lo normal es que se pase de frenada, y supere los 190º… luego hay que esperar a que el extrusor enfríe, y bajaremos de 190º,  y volvemos a calentar… enfriar… Lo que ocurre es que la temperatura comienza a oscilar.

PID proporcional oscilando
PID proporcional oscilando y pasándose de frenada.

Además de la diferencia de temperatura, hay que tener en cuenta el error acumulado.

Si el extrusor lleva mucho tiempo sin llegar al objetivo, hay que darle más caña, pero si está dando vueltas por el mismo punto, hay que calmarlo, para que deje de oscilar.

Esta es la parte integral, porque en matemáticas (más bien, en cálculo) la suma de muchos valores pequeños se llama integral.

Si le damos caña al extrusor, y cambia muy rápido de temperatura, hay que controlarse un poco.

Asi que tenemos que tener en cuenta la velocidad a la que el extrusor se calienta, para que no se pase del objetivo.

En cálculo, la velocidad de cambio de un valor se llama derivada.

La función de este componente es corregir los problemas de la parte proporcional y la parte integral.

El algoritmo de PID necesita unos valores de configuración. Aunque el algoritmo es el mismo, estos valores son distintos para un extrusor, una cama caliente, un horno, una válvula, un drone, etc.

¿Cómo sabemos si los parámetros están bien configurados?

Lo primero, decir que no hay unos valores perfectos. Puedes configurarlo para que caliente más rápido, o para que nunca se pase y no caliente de más, o para que sea más estable. A tu gusto.

Voy a contarte cómo yo lo veo para el caso de la impresora 3D.

Cuando la impresora está fria, y quieres que se ponga, por ejemplo a 200º, ocurre lo siguiente:

Lo primero le metes mucha caña al extrusor, el 100% de la corriente, para que el extrusor comience a calentar. La temperatura empieza a subir sin control.

Pero cuando se acerca a la temperatura objetivo, el LED de la corriente empieza a parpadear (primero de forma ocasional, y luego más rápido).

Lo que ocurre es que se reduce la cantidad de corriente que pasa por la resistencia del extrusor.  La temperatura sigue subiendo, pero cada vez más despacio.

Cuando la temperatura llega a su objetivo, y lo ideal es que no se pase, o se pase apenas un par de grados.

Entonces comienza a enfriar y a volver a calentar. La temperatura comienza a oscilar.

Lo que quieres es que apenas oscile, y que se mantenga en el punto objetivo, de forma estable, sin variar apenas 1 ó 2 grados.

Cada extrusor es distinto, y deberías consultar con el vendedor qué parámetros son los adecuados.

En Marlin tienes 3 parámetros, KP, KI, KD, para configurar el algoritmo.

KP se corresponde a la parte proporcional, y dice cuanta caña hay que darle para corregir el error. Si este valor es muy alto, llegas rápido a la temperatura objetivo, pero te vas a pasar un huevo de frenada.

KI es la parte integral, y la idea es reducir la oscilación, cuando llega a la temperatura objetivo.

KD es la parte derivada, y se ajusta para que nunca te pases del valor objetivo, y quemes el plástico.

Autotune de los parámetros PID

Puedes poner estos parámetros a mano, pero la verdad es que hay que ser un maestro jedi para saber qué poner.

Por fortuna, Marlin tiene una función para autocalibrar (PID AUTOTUNE). Asi que no te tienes que preocupar. Lo que hace es probar diferentes parámetros, y ver cómo responde el extrusor.

En ese caso, te conectas a la placa por el puerto serie, con un programa como Pronterface, y escribes:

M303 E0 S200 C8

Con esto, le decimos a Marlin que realize una prueba sobre el extrusor 0, a una temperatura de 200º, y que pruebe 8 veces.

Cuando termina, Marlin imprime por la consola los valores calculados. Si usas pronterface, podrás verlo sin problema.

bias: 92 d: 92 min: 196.56 max: 203.75
Ku: 32.59 Tu: 54.92
Clasic PID
Kp: 19.56
Ki: 0.71
Kd: 134.26
PID Autotune finished ! Place the Kp, Ki and Kd constants in the configuration.h

La cama es el extrusor -1, asi que tienes que usar:

M303 E-1 S60 C8

Con esto vas a probar la cama 8 veces, a una temperatura de 60 grados.

Con estos valores, actualizamos la configuración en marlin. A mí me gusta tener mi propia sección. Así que comento la configuración de Ultimaker (la que viene por defecto), y meto la mía.

#define DEFAULT_Kp 19.56
#define DEFAULT_Ki 0.71
#define DEFAULT_Kd 134.26

Para que funcione el autotune para la cama caliente, recuerda descomentar #define PIDTEMPBED

Control del comando M109

Cuando defines una temperatura para el extrusor puedes usar el comando M109 (o con el comando M190 para la cama).

Este comando va a esperar a que la temperatura se estabilice, y no te permite continuar enviando más comandos. Asi que te garantizas que la temperatura esté correcta a partir de este comando.

Cuando el extrusor alcanza la temperatura deseada, el control PID tiende a oscilar (si no lo tenemos bien calibrado).

Con estos parametros puedes configurar el tiempo que Marlin espera para que se estabilice.

Si tenemos el PID bien ajustado (con el comando M303), puedes reducirlo, y comenzar a imprimir antes.

#define TEMP_RESIDENCY_TIME 10 // (seconds)
#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered “close” to the target one
#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.

// Bed temperature must be close to target for this long before M190 returns success
#define TEMP_BED_RESIDENCY_TIME 10 // (seconds)
#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered “close” to the target one
#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.

Con TEMP_RESIDENCY_TIME le dices el tiempo que espera una vez que se alcanza la temperatura para que se estabilize. Si te molesta que la impresora tarde mucho en imprimir, mi consejo es que calibres el PID, y bajes este tiempo.

TEMP_HYSTERESIS es el margen que tiene Marlin para considerar que la temperatura está en el rango adecuado.

Un valor de 3 quiere decir que si le decimos 190º, considera la temperatura desde 187º hasta 193º como temperaturas válidas, mientras nos estamos estabilizando. Para mí, con un valor de 3 va bien.

TEMP_WINDOW es el margen, en grados, para empezar la estabilización. Si quieres llegar a los 190º, en cuanto llegue a 189º ya empieza a contar los 10 segundos de estabilización.

El valor de 1 está bien, pero si el PID calienta rápido y oscila poco, con un valor de 3 ahorramos unos segundos.

Configuración Avanzada

Cuando tengas la impresora funcionando, puedes tunerla un poco a tu gusto. Estos parámetros que te voy a contar aqui son opcionales, pero muy recomendables.

Velocidad del puerto serie

Con esto ajustamos la velocidad del puerto serie USB, y la velocidad a la que se envían comandos entre el ordenador y la electrónica.

#define BAUDRATE 250000

Yo suelo bajar la velocidad a 115200 porque alguna vez he tenido problemas con esto. Depende sobre todo del cable que uses.

Si tienes un cable con ferrita, no hay problema, pero con cables normales, no es la primera vez que me falla la comunicación. La verdad que para enviar unas líneas de gcode, 115200 es más que suficiente.

Uso de la EEPROM

Con los comandos GCODE,puedes cambiar casi todos los valores, sin tener que volver a compilar el marlin.

//#define EEPROM_SETTINGS

Activando este parámetro, Marlin puede leer y escribir los valores de configuración en la memoria permanente del micro.

Si usas una pantalla LCD, te van a aparecer unas opciones para guardar la configuración. Puedes probar a cambiar algún valor, si cuando estés contento, lo almacenas. Si no te gusta, reinicias, y vuelves a empezar.

 

Nombre de la impresora

Si estás usando una pantalla LCD, te recomiendo poner un nombre a la impresora

//#define CUSTOM_MACHINE_NAME "3D Printer"

Yo les pongo nombres a las impresoras para identificar su configuración. Lo que hago es copiar el marlin en una carpeta para cada impresora, configurar los parámetros y definir este nombre.

Cuando vuelvo a mirar el código varias semanas más tarde, para estar seguro, miro el nombre. Si hago un cambio, suelo poner algún tag, como “slow”, o “accel 1000” para saber que he cambiado algo especial.

 

Número de Extrusores

El siguiente parámetro es el número de extrusores. Si te has comprado la primera impresora, lo más normal es que tengas sólo un extrusor.

# define EXTRUDERS 1

Con Marlin puedes configurar hasta 4 extrusores como máximo.

Extrusor Dual
Extrusor Dual

A la hora de generar el gcode, el primer extrusor es el 0. Asi que en el GCODE, vas a ver que los comandos ponen E0 para mover el primer extrusor.

G0 X100 Y100 Z10 E3 ; muévete a 100,100, con altura 10, y extruye 3mm con el extrusor 3

 

Velocidad de Homing

Cuando buscamos el final de carrera, el motor no debería de ir muy rápido, si no quieres cargarte algo. Pero tampoco puedes ir muy lento si no quieres perder el tiempo.

Con este parámetro, puedes ajustar esa velocidad.

#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (4*60)

Lo de multiplicarlo por 60 viene de pasar mm por segundo a mm por minuto. Decir 50 mm por segundo es lo mismo que decir 3000 mm por minuto.

Para esta opción, Marlin necesita los mm/m, pero es más común hablar de mm/s, y es lo más recomendable.

Yo no tocaría este parámetro, a no ser que quieras acelerar un poco el proceso de impresión.

Resumen en formato vídeo

Me encantaría tener una versión en vídeo de este post. Una explicación detallada y paso a paso para configurar Marlin.

Si crees que una buena idea, déjame un comentario con lo que te gustaría encontrarte en el vídeo.

Pero mientras, te dejo esta versión en inglés, muy detallada, que te puede servir para configurar la impresora (si entiendes el inglés…)

 

Conclusión Final

Increíble.

Has llegado hasta aqui. Hasta el final.

Según las estadísticas de la web, sólo el 20% de la gente que empieza el post, lo termina.

Enhorabuena, ahora perteneces a ese 20% de lectores que dominan a fondo todas  las opciones de Marlin.

Hoy has aprendido todo esto:

  • Cómo instalar Marlin
  • Configurar las opciones clave de la impresora
  • Ajustar los pasos por mm de la impresora
  • Ajustar la aceleración por defecto
  • Configurar el algoritmo de temperatura

Estoy seguro que hay muchas más opciones que te gustaría conocer. Como la configuración del autolevel o los comandos GCODE raros.

Por eso necesito de tu ayuda. No es fácil explicar todo esto sin aburrirte. Te invito a que me dejes un comentario con tu experiencia. Ayúdame a mejorar esta guía con tu propia experiencia.

¿Te ha servido de algo? ¿Hay alguna opción que no has visto? ¿Te ha parecido muy largo?

Muchas gracias, de verdad, por leer este post hasta el final

 

252 commentarios

      • Me gustó mucho el post y la manera de explicarlo es muy buena detalle a detalle. Parece que tú y yo nos parecemos en eso de no poder conciliar el sueño si un cable queda mal puesto o algo no queda perfecto jeje. Pero siendo sincero entré aquí por un problema que me trae de cabeza con mi impresora 3D. Tengo una Anet A8 y hasta ahora funcionaba bastante bien pero me está dando problemas el eje Z pues ahora mismo no hace el Home en Z y si muevo los motores manualmente solamente sube hacia arriba hacia abajo no se mueve y la verdad esque estoy bastante estresado con el asunto porque no encuentro una respuesta clara a ese problema en internet y me urge tener la impresora operativa.

        Si sabes que puede ser o necesitas más información y quieres ayudarme encantado de hablar contigo

        Un saludo

        • es muy raro, es como si el pin de DIR no variase… estará mal el driver? mmn, si no has tocado nada del firmware, pues es posible que el driver esté cascadete

          saludos!

          • Muy buena guía, gracias.
            Respecto al problema que comenta, es posible que se haya desconectado o falle el sensor de min_Z.

  1. Buuuua!!! Hypermega completo… Por algo Staticboards es y será siempre una referencia para todos nosotros Javier. Gracias por todo lo que nos aportas día a día… Este post junto con el de los motores paso a paso hacen y harán todo un referente en la comunidad hispana. Con tu permiso lo comparto.

  2. Te ha quedado genial, creo que es de mucha ayuda para principiantes y no tan principiantes. Ojala lo hubiera tenido a mano cuando empece :P.

    Enhorabuena.

    • muchas gracias!! si, he pensado sobre todo en los que están empezando y están algo perdidos con tanta información

      gracias por pasarte por el blog!

  3. Impresionante!!!
    Tus Guias y Tutoriales se están convirtiendo en todo un referente para makers.
    Muchisimas gracias por compartir tu conocimiento y sobre todo con esa minuciosidad y con estas guias tan completas, ya que supone un curro de la leche.
    Gracias, de verdad.

    Puedo hacer una sugeriencia? Las guías son tan completas que sería genial tenerlas en PDF o algún otro formato electrónico para llevarlas como libros de referencia.
    Un saludo.

    • Es un trabajo grande, eso es cierto, pero es un trabajo necesario que ayuda a mucha gente de verdad.

      Sobre lo de publicarlo en PDF, pues en algun momento se podrá hacer algo asi, por qué no! Un ebook completo con las guias más importantes para empezar en el mundo Maker

      Un saludo y muchas gracias por visitar el blog!

  4. Un trabajo muy currado, creo que es el mejor artículo que he visto sobre el tema.

    Ten por seguro que lo recomendaré a todos los que me pregunten y que la leeré más veces.

  5. Hace tiempo compre una GEEETech sentía curiosidad, la monte y funcionaba la pantalla se encendía,los motores funcionaban,pero uno de ellos iba al en sentido contrario por tanto invertí los cables y funcionó en su sentido,después de unos cuantos movimientos todo se apago, comprobé corriente todo bien pero la pantalla no se enciende ni los motores se mueven.
    Agradezco mucho tu relato que ademas de ameno, me llena de esperanza y intentaré por todos los medios ponerla en marcha.
    Gracias Javier.

  6. Madre mía Javier, nivelazo total de artículo!!!!!!
    Como siempre, muy completo y con un nivel explicativo en el que sin ningún lugar a dudas se aprende mucho para los que no saben, se amplían conocimientos para los que saben algo.
    Es una verdadera joya de explicación. Clara, concisa, sin chorradas. No tengo palabras más que de agradecimiento por el excelente trabajo realizado.
    Así si se aprenden cosas y no con “artículillos” de tres al cuarto que argumentan poco y enseñan casi nada.
    Que gustazo da saber que aun hay gente con verdaderas dotes docentes y explicativas que escriben cosas de nivel aptas para todos los públicos.
    Una vez más, muchas gracias Javier.
    Tienes en mi un incondicional lector impaciente por seguir aprendiendo y complementar mis conocimientos ya adquiridos con el paso del tiempo.
    Muchas gracias y enhorabuena por un trabajo de tanta calidad.

  7. Buenas Noches Javier,
    No me ha dado tiempo a terminar de leer tu trabajo pero no me resisto a darte la enhorabuena sobre el fantástico trabajo que has realizado

    Yo tuve muchos problemas al configurar mi CNC/3D, pase muchos ratos malos y muchas horas perdidas navegando en Internet buscando soluciones y al final tuve que solucionarlo yo porque no encontré respuestas a mis problemas,ahora la tengo terminada y funcionando a tope, tengo la misma maquina para la CNC y para la 3D, por medio de reles consigo que me valga el mismo chasis para CNC y 3D

    Si hubiese encontrado tu guía la hubiese puesto antes en funcionamiento
    ¿Se podría pasar a PDF tu guía?

    Bueno solo me queda darte las gracias por compartir tu trabajo y desearte suerte

    • Hola!

      muchas gracias por leer el post. Voy a darle un tiempo para que pueda incluir las preguntas más comunes en el post, corregir fallos, etc.

      Y pasarlo a PDF, me parece una buena idea. Antes hay que repasar el formateado, y preparar las páginas y las imágenes, para que sea sencillo de leer.

      Un saludo!

  8. Muy buen artículo sí señor, claro y bien explicado, has realizado un duro trabajo al plasmar todos estos conocimientos, te doy gracias por ello y te animo ya que se te da bien a que continúes con ello, un saludo cordial.

  9. he llegado al final por supuesto, con una leida rapida, ahora me bajo todo. Gracias por tu tiempo dedicado y espero poder colaborar a futuro con algunas experiencias.

    • Lo bonito es compartir experiencias. Lo que para tí puede parecer sencillo, para otra persona es muy complicado.

      Gracias por visitar el blog!

  10. GRACIAS con mayúsculas!
    Este mismo post hace 1 año me hubiese ahorrado muchos quebraderos de cabeza.
    A día de hoy tras “aprender a base de ostias”(perdón por la expresión pero aquí en Navarra es muy común), me aclara muchas dudas de el porque de cada cosa.
    Aun así siempre tendremos dudas y siempre habrá alguien para aportar su grano de arena como es tu caso, así que gracias por compartir tus conocimientos y hacer que esta “tercera revolución industrial” como algunos la llaman, sea posible. Al final es una simbiosis en la que los unos sin los otros no somos nada.
    Y dicho esto aprovecho para decirte que recientemente acabo de adquirir unos drivers TMC2100(256 micropasos) que estoy pensando en instalarlos en una placa Rumba. Tienes alguna experiencia con estos Drivers? Consejos? Que tengo que modificar…
    La verdad que comparando el precio de estos con el de otros drivers, no me gustaría arruinar ninguno .
    De hecho creo que seria un post interesante los distintos tipos de drivers. A priori he probado solo 2

    me reitero en mis felicitaciones y gracias\
    Javi

    • Hola,

      Espero que al menos, ahorre algunas “ostias futuras” a los que empiezan!

      Los TMC2100 no los he probado, y no puedo hablarte en primera persona. Sé que son silenciosos, pero que se calientan un montón.

      Espero poder probarlos pronto!

      Saludos

  11. Entre porque siempre he estado buscando una guía para configurar Marlin que recogiera lo esencial y por mucho que buscaba no encontré algo que me convenciera. Cuando vi lo largo que era el post pensé: “Pff esto es muy extenso y se me va a hacer aburrido”, pero para nada, mi sorpresa fue que cuando me di cuenta había acabado de leer el post entero y sin duda es la mejor guía que he visto, tanto por lo ameno que se hace de leer como por lo bien explicado que está todo. Un curro enorme y super buen trabajo!!

    Un saludo

  12. De momento no estoy muy interesado en montar una impresora 3D, mis intereses son más en cosas tipo plotter, tornos y maquinitas de dificil clasificación, pero es un placer leer tus post’s, siempre se aprende algo, y aunque a priori no sepas en que aplicarlo con el tiempo surgen opciones.
    Muchas Gracias por tu esfuerzo.

  13. Enhorabuena, muy buen trabajo. Para mi que es la primera vez que manejo marlin, arduino y una impresora 3D me ha resultado fácil encontrar y cambiar. En cuanto termine de montar el hardware probaré el software y te comento.

    El artículo muy bueno, yo por ejemplo añadiría a título informativo los cálculos con drivers A4988.

    Gracias!!!

  14. Muchas gracias por tomarte el tiempo para este post pues me ha dado información clara que no tenia. Tengo una CNC de tipo fresadora con Arduino uno de tres ejes y quiero agregarle dos ejes más por lo que estoy averiguando sobre el mega y la ramps 1.4 para ver si los puedo configurar. No sé si el Marlyn me sirva. Estaría muy agradecido si me pudiesen orientar al respecto.

    • creo que si, el marlin podría servirte, pero no tengo claro si los movimientos te quedarían muy bien. Para 5 ejes, no he probado nada, sorry

      un saludo!

  15. Buenísimo. He empezado hace muy poco tiempo en este mundillo de las impresoras 3d. Y con respecto al auto level te puedo decir que mi externos no ha sido muy positiva. He empezado con una HE3D. una impresora China muy económica. Pero que deja bastante que desear. Para el eje Z solo tiene un husillo, que además está en uno de los laterales. Esto hace que el carro no suba todo lo uniforme que debiera.
    El husillo tiene un poco de backslash que no se si se puede corregir por software en el marlin.
    Al usar el nivelado automático, el eje Z está en continuo movimiento para adaptarse al nivel de la cama. Así pues, en mi caso se une ese movimiento irregular con el backslash del husillo y termina por hacer verdaderos churros. Es mucho mejor nivelar bien la cama y que e eje Z solo a mueva para subir de capa. Hay un kit para poner un segundo motor al eje Z. Pero estoy pensando en comprar unos perfiles y montarme una impresora tipo CoreXY reutilizando la electrónica y los motores.
    Por cierto… Mi castaña de impresora es exactamente igual a la tevo tarántula.

  16. Muchas gracias Javier. Muy completo, pero lo que me parece mejor es la claridad. Y es que ya se sabe: para explicar algo tan clarito hasta para zangolotinos como yo… hay que saber mucho del tema… y hacerlo con muchas ganas.

    Un Saludo.

  17. Muy buenas,

    Un gran tutorial. Por fin entiendo las aceleraciones, los JERK y las configuraciones de los pullups!!
    Además la idea de medir los pasos del eje Z en el propio eje y no en el cubo de calibración es un gran acierto :D!
    He utilizado una brida en la varilla lisa del eje Z para medir la distancia y de paso también he calibrado los pasos con este método en los ejes X e Y. A ver como me sale el cubo de calibración 😛

    Te envio una foto de los apuntes del tutorial que he cogido :D: http://erikcrane.net/2017-05-26_10-37-00_398.jpeg

    Un saludo y gracias por compartir este gran trabajo

  18. Hace tiempo que recibí un mail anunciando un nuevo post del gran Javier de Staticboards, lo tenía guardado en tareas pendientes y hoy saqué un rato para leerlo. Una vez más te has superado con tu facilidad para comunicar y enseñar. Mi más sincera enhorabuena por este gran post!!!!
    Sin duda es un post para aprender en la primera lectura y guardar en favoritos para futuras consultas.

    Muchas gracias una vez más por tus aportaciones 😊

  19. Hola como va ? Esta genial la guia ! Felicitaciones . Te hago unas correcciones asi las modificas , fijate que pusiste ” Decir 50 mm por segundo es lo mismo que decir 3000 mm por SEGUNDO.” creo que quisiste poner minutos . En otra parte pusiste “Si la cama es de 200 mm x 200 mm, y el eje X está 20 mm dentro de la cama, podemos bajar el máximo, a 180, o subir el mínimo a 20.” , me quedo la duda si esta bien pero por ahi yo no entendí . La otras es en ” En las capas INTERIORES, aumentas los pasos para quitar la separación entre cada línea. En las capas INTERIORES reduces pasos para aumentar la separación. ” .El post para todos los temas tratados no es largo , esta bien , contiene mucha información es agradable leerlo y fácil de entender , GRAN TRABAJO , seguí asi , un gusto leer tus post , Saludos .

    • Hola

      Muchas gracias por las correccciones! He incluido un dibujito para que se entienda mejor lo de la posición minima y máxima de la cama caliente

      saludos!

  20. Gracias por tamaño aporte que has realizado, todo muy claro y bien explicado
    Me gustaría que un futuro pudieras hacer un post con la configuración de diferentes sensores de calibración como son el 3d touch, capacitivos e inductivos

    Gracias nuevamente, saludos

  21. Excelente!
    Gracias Javier por compartir tus conocimientos…

    llegue hasta aca porque intento agregar una opcion al menu de mi prusa i3
    tengo 3 impresoras y las uso a todas con su memoria (nunca estan conectadas a una pc) y a veces cuando quiero cambiar el pico, necesito levantar el Z para que me resulte mas comodo, y no encuentro otra opcion que no sea conectando la pc y con el repetier levantar el Z… despues de lleer un poco tu guia, creo que voy a intentar hacer un codigo G que levante el Z. o si existe otra opcion, agradeceria me comentaran cual, desde ya muchisimas gracias! Abrazo desde Argentina

    • Hola

      en el marlin, puedes ir a “Prepare” (o preparar) y ahi tienes “move axis” (o mover eje). En esa opción puedes hacerlo

      otra opción es hacer un gcode a mano, que suba el Z, y almacenarlo en la tarjeta de memoria. Esta es la que más me gusta

      un gcode para subir el extrusor (G0Z50 por ejemplo, sube)

      otro para extruir plástico. Este es más complicado. Tendrias que calentar el extrusor, definir el 0, y extruir un poco

      G21 ;metric values
      G90 ;absolute positioning
      M82 ;set extruder to absolute mode
      M107 ;start with the fan off
      M109 S180 B210 F1;activate auto temp min 180 max 210 scaling factor 1 (for PLA)
      G28; Home Axis
      G1 Z50.0 F9000 ;move the head 50mm
      G92 E0 ;zero the extruded length
      M109 S200 ; heat nozzle to 200 degC and wait until reached
      G4 P10000 ; wait 10 seconds for nozzle length to stabilize
      G1 E10 ; extrude 10 mm of filament
      G92 E0 ; reset extruder

      espero que te sirva!

  22. Buenas noches:

    Estoy empezando con una impresora delta y mi problema es que el motor del eje Z solo vibra y se mueve muy lento.He probado a subirle los pasos y la tensión de entrada con el tornillo del polollu pero sigue igual.

    ¿Alguien me puede ayudar?

    gracias

  23. Hola, buenas tardes. Lo primero, gracias por tu post porque permite configurar el Marlin hasta casi cualquier burro. Pero el tema es que has topado con el burro que no es capaz de salir del paso xD.

    Entonces ahí vamos, con la pregunta del millón. Yo he ido siguiendo fielmente tu post y tratado de cumplir al pie de la letra, cuando me encuentro que al subir el programa al mega me aparece en mi pantalla el siguiente error:

    “killed printer halted please reset”

    con el añadido de que el buzzer no para de pitar con un sonido horrible.

    Después de llevarme un rato las manos a los oídos y de tirar del ext1 parece que he podido volver a mi ser y escribir un mensaje pidiendo ayuda xD.

    Lo dicho, si puedes explicarme que puede haber sucedido, he buscado en foros pero no tengo muy claro por donde puede venir el problema.

    Gracias por tu atención, y por tu post A4988 vs DRV8825

    Saludos

    • Conectándome por pronterface he obtenido este resultado.

      Connecting…
      start
      Printer is now online.
      echo:Marlin 1.1.4
      echo: Last Updated: 2017-07-04 12:00 | Author: (none, default config)
      Compiled: Jul 11 2017
      echo: Free Memory: 4020 PlannerBufferBytes: 1232
      echo:Hardcoded Default Settings Loaded
      echo: G21 ; Units in mm
      echo: M149 C ; Units in Celsius
      echo:Filament settings: Disabled
      echo: M200 D3.00
      echo: M200 D0
      echo:Steps per unit:
      echo: M92 X160.00 Y160.00 Z8000.00 E320.00
      echo:Maximum feedrates (units/s):
      echo: M203 X300.00 Y300.00 Z5.00 E25.00
      echo:Maximum Acceleration (units/s2):
      echo: M201 X3000 Y3000 Z100 E10000
      echo:Acceleration (units/s2): P R T
      echo: M204 P3000.00 R3000.00 T3000.00
      echo:Advanced: S T B X Z E
      echo: M205 S0.00 T0.00 B20000 X20.00 Y20.00 Z0.40 E5.00
      echo:Home offset:
      echo: M206 X0.00 Y0.00 Z0.00
      echo:Material heatup parameters:
      echo: M145 S0 H200 B50 F0
      M145 S1 H240 B110 F0
      echo:PID settings:
      echo: M301 P22.20 I1.08 D114.00
      echo:SD init fail
      echo:SD init fail
      Error:KILL caused by KILL button/pin
      [ERROR] Error:KILL caused by KILL button/pin

      Error:Printer halted. kill() called!
      [ERROR] Error:Printer halted. kill() called!

      SD init fail, por ahí van los tiros. ?Alguna idea de qué puede ser?

      Gracias de nuevo.

  24. Muy buen tutorial. Enhorabuena.
    Me surge una duda, si quisiera usar el marlin para una cnc en lugar de una imp.3d, ¿dónde debo anular los extrusores y la cama caliente?
    Muchas gracias

  25. Me viene muy bien este manual. Ahora que voy a realizar el cambio completo del extrusor de 3mm a 1,75mm y el tiempo que hace que no realizo ninguna modificacion me viene de perlas la parte de la configuravion de la calibracion del extrusor.

    Muchas gracias.

  26. buen día, no se como agradecerte tu gran esfuerzo, genial . yo hasta hora estoy espesando esto de las impresora 3d y buscaba algo como esto, y esta espectacular..mil y mil gracias desde Colombia Bogotá.

  27. Hola Javier.
    Lo primero es que tus post son buenísimos, nos facilitan mucho las cosas a los que estamos empezando, por eso te doy las gracias.
    Aunque todo está claro como el agua, este menda tiene un problema con una impresora china, la tronxy p802m. Se pone loca a mitad de la impresión, al principio lo hacía poco pero ahora no pasan 5 min. Y el LCD se vuelve loco y el extrusor da botes a lo bestia. Por todo lo que he leído creo que sera la temperatura, pero ¿me puedes dar tu opinión? y también que puedo hacer, ya que la fuente es de 20A,. Todo empezó cuando le cambie la cama caliente por una de mejor calidad. ¿le pongo un rele?
    También quería preguntarte por la placa de esta impresora, una Melci, ahora no recuerdo la versión, creo que la 2.0, ya que no lleva el chip Atmega2560 y el que lleva, la Melzi, no me aparece. ¿como hago para cargarlo?

    Muchas gracias por todo y perdona por todas estas preguntas, pero es que estoy muy pelao en todo esto.

    De nuevo GRACIAS.

    • Hola,

      pues yo le pondría un relé, si. Al menos no le hace daño.

      Sobre la melci, ni idea, es la primera vez que escucho algo así. Eso te lo tiene que decir el que te vendió la impresora, que seguro que tiene información sobre eso.

      Saludos!

  28. si, el marlin no necesita la pantalla, aunque esté compilado con soporte de pantalla. Sin la SD te da un error por la consola del pronterface, pero es sólo informativo

    saludos!

  29. Estoy diseñando un equipo que me funcione como impresora 3d y al mismo tiempo como router cnc, quisiera saber cómo configurar el segundo extrusor para configurarlo como cuarto eje ya que para mí proyecto necesito un eje rotacional para tallar superficies cilindricas, si podrías guiarme con este proceso sería de gran ayuda.

  30. Hola Javier buenos días:

    Tengo conectada una pantalla MKF TFT28 V2.0 en la salida AUX 1 pero no se donde conectar el cable de 8 PINES (igual que el otro) de la tarjeta DS, en AUX 3?

    Gracias.

      • Hola Javier buenos días:

        Gracias, la pantalla no se si está pensada para la ramps pero se conecta al puerto AUX1 y va correctamente, controlo los motores con la pantalla (falta el resto, extrusores, cama, ventiladores etc), me faltaba saber donde conectar la salida de la tarjeta (ya que los cables son de 8 pines y no de 10 como el resto de las pantallas), gracias. Por favor podríamos tener un tutorial o al menos saber para que sirven las salidas auxiliares de la ramps?

        Gracias y un saludo.

        Toni

          • Hola Javier buenas tardes:

            Tengo conectada la pantalla a AUX3, el lector de tarjetas a AUX1, conde conecto el modulo wifi con un conector de 8 cables como en aux1 y 3?
            Por otro lado, si utilizo dos extrusores pero no voy a utilizar cama caliente; puedo conectar al conector “8 bed” un ventilador de capa? podria apagar y encender ese ventilador con la salida de termistor?

            Gracias y un saludo

            Toni

          • Sobre el modulo wifi, la verdad, no sabría decirte. Qué modulo estás usando?

            sobre los dos extrusores, si, puedes cambiar la configuracion de marlin.

            en board, le dices que use la 46

            #define BOARD_RAMPS_14_EEF 46 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)

            gracias!

  31. Hola Javier.
    Antes de nada, agradecerte el trabajo que te pegas para que patosos como yo podamos entrar mejor en este mundillo.
    Me surgen dos dudas. Una es ¿que diferencia hay entre la varilla de métrica 8 (M8) que tiene un avance de 1.25mm por vuelta, y los husillos de 8mm? leo por ahí que tienen un avance de ¿8mm por vuelta?
    Otra duda es los pasos por mm. Para marlin para una varilla M8 y pololus de 16 pasos, la fórmula es :
    ( 200 pasos por vuelta * 16 micro pasos por cada paso) / 1.25 mm por vuelta = 2560 pasos por mm.
    Pero en el artículo de GRBL pone (200*16) / 8 = 400 pasos! , no lo acabo de entender.

    Un saludo y muchas gracias.
    P.d. (Compré la ramp sb, la cnc sb, y estoy deseando ver los drivers SB, ¿para cuando? )

    • gracias por leer el articulo.

      los husillos tienen una forma especial para tuercas pensadas para movimiento. Ahora si de memoria, no sabría decirte si el avance es el mismo, pero me imagino que sí. Pero como te digo, la diferencia está en la muesca y en la tuerca.

      voy a revisar el post de GRBL, porque creo que tienes razón, y está mal explicado.

      los drivers sb están más cerca de lo que piensas

  32. Se agradece las aportaciones de este estilo, claras y concisas, me hubiera gustado encontrarlo hace un par de años cuando empece con el mundo de las impresoras, muchas gracias de todas maneras.
    Mi problema es el tema de nivelación, he visto que no has hecho mucho inca pie y es algo bastante importante y donde todos tropezamos. Hasta ahora lo había probado manualmente pero hace un par de meses le instale un 3DTouch para facilitar la faena, hay empezaron mis problemas, aunque hay manuales para su configuración en el Marlin aun no he encontrado la que me sirva para la Kossel mini y el Marlin 1.1, tu podrías ayudarme?
    Muchas gracias!!

    • pues la verdad que no uso autonivelación y no es un tema que domino, aunque me gustaría la verdad. Si un día lo reviso a fondo, escribiré un artículo completo.

      saludos.

  33. Un gran trabajo.
    Pero tengo una duda, si quiero actualizar Marlin (version), como puedo guardar los parametros de mis impresora para no tener que volver luego a meter todo?. Es posible o al hacerlo me cargo la configuración y he de volver a meterlo todo?.
    Gracias por tu gran trabajo

    • Hola,

      en Marlin tienes que activar la EEPROM, descomentando esto

      #define EEPROM_SETTINGS

      Vuelve a subir el marlin, y verás una nueva opción para cargar y salvar la memoria.

      saludos

  34. Hola!!!
    Excelente trabajo, me sirvió y ya tengo mi 3d funcionando de re pelos. Tengo un pregunta a ver si me ayudas. Eh visto en otra 3D que desde el LCD se puede calibrar manualmente la cama, es decir con solo apretar el boton la cama y el X e Y se mueven en distintos puntos para hacer la calibración, como se puede abilitar dicha opción en el Marlin? Aguardo tu respuesta. Saludos

    • sé que es algo del autolevel, pero no lo he probado.

      me gustaría un día ponerme en serio, y testearlo a fondo, para poder escribir sobre esto

      saludos!

  35. Hola Javier,
    Impresionante el articulo, tengo una duda, en el articulo cuando calculas los pasos del eje Z con M5 , el resultado es 8000, cuando especificas en el código pones 2000,¿ puedes decirme que es lo que no comprendo? jejeje.

    Al actualizar el Marlin he introducido 8000 y los motores vibran y se quedan agarrados cuando realizo el Home, pero si los muevo manualmente se mueven bien, pero al revisar el código del Marlin antiguo tenía 8000 y funciona perfectamente.

    He probado con 2000 y realiza el Home y al movimiento bien, pero mucho más lentos.
    Un saludo y gracias.

  36. Mil millones de gracias! Menuda pasada de curro!

    Me ha encantado y me ha venido genial!

    Ahora a intentar configurar el autolevel! Da gusto el trabajazo que te has pegado! solamente decir que ánimo y que por favor publiques más!

    Un saludo!!

  37. Estoy planeando la construcción de la impresora H bot. Ya pedí algunas piezas a Dold Mekhatronic, he desarrollado los planos en Autocad de acuerdo a las indicaciones de la página CNC con Arduino de Youtube. No he podido bajar el Marlin. Voy a intentarlo de acuerdo a tus instrucciones.
    Agradezco tu amable aporte y generosidad. Ya dejaste algo importante en tu vida.
    Cordial saludo: Carlos Ibáñez

  38. Gracias. Para instalar el Marlin en windows cuales drivers especiales debo aplicar? Tengo algunas dificultades en este sentido. Agradezco tu amable atención.

  39. Bonjour,
    Un grand merci à vous pour le travail effectué.
    Je suis français et ne parle ni espagnol ni anglais.
    J’ai pu suivre vos explications grâce à la traduction simultanée, comme je ne trouve pas les renseignements vraiment utiles en français je suis contant de vous lire malgré une traduction un peu aléatoire.
    Merci.

  40. Me ha encantado la mega guía esta muy completa, muchas gracias por compartirlo.
    Sería genial un tutorial de autolevel con sensor capacitivo/inductivo (Compre uno y no soy capaz de configurarlo), como digo sería una gran ayuda para toda la comunidad
    Muchas gracias !!

  41. En la impresora 3d donde estudió, cuando le damos home, el zerozero sale de la placa. No sería mucho problema si aun así pudiera imprimir en toda la superficie. Detecta como si la placa estuviera desplazada. Cómo puedo arreglarlo?

  42. Muchas gracias por compartir ,sin duda si no es la mejor entrada esta entre las mejores en español ,si la hubiera tenido en su día ya no hubiera comprado la impresora montada ,pero ahora me sirve de cara a entender problemas y corregir errores .muchas gracias .

  43. Excelente guía. yo hace rato q tengo la impresora y algunas cosas las fui aprendiendo por foros, pero hay otras que acá me quedaron mucho mas claras.
    la verdad me encanto, ya me lo guarde porque estas cosas están buenas para pasárselas cuando algún nuevo pregunta en los foros

  44. Gran tutorial como todos los que has hecho, enhorabuena y gracias por compartir estos conocimientos tan valiosos.
    Estoy empezando en esto y me han servido de mucha ayuda.

    Sólo comentar un detalle que me ha dado problemas al configurar mi Marlin e imprimir ya que he puesto los parámetros que aconsejas de JERK y en tramos rectos todo perfecto pero en círculos lo hacía fatal, dejaba unos rastros horrorosos.
    Después de muchas pruebas repasando y cambiando todo lo que se me ha ocurrido he visto que lo que aconsejas #define DEFAULT_EJERK 0.10 era muy bajo, subiendo el valor a 5 todo casi perfecto.
    Como soy nuevo en todo esto no se si es algo que deberías corregir en tu guía o es cosa de mi impresora (Tronxy X1 con arduino+ramps1.4).
    Felicidades de nuevo

  45. Buenas noches.
    Gran manual el que has hecho, yo tengo una duda no se si puedes ayudarme, tengo la placa GT2560 Rev. A+, lo configuro en el marlin la placa y todos los parametros, pero el display no hay manera de hacerlo funcionar, no se me enciende, probado con el #define REPRAP_DISCOUNT_SMART_CONTROLLER pero no me hace nada.
    Gracias

  46. ¡Con artículos de esta calidad da gusto! Muchas gracias por tomarte tu tiempo para escribirlo y compartirlo.

    Por aportar algo, decir que yo tuve problemas al utilizar el comando “M303 E-1 S60 C8”. Me decía que el extrusor no existía. Resulta que tenía que descomentar la línea “#define PIDTEMPBED”, para permitir la calibración PID en la cama.

    Un saludo!

  47. Muchas gracias.
    Algo hemos aprendido, para poder modificar nuestro Marlin.
    La verdad que esta muy bien explicado.
    Hasta las personas como yo con pocos conocimientos se nos hace claro y fácil de entender.
    Sigue así.

  48. estoy construyendo una cnc e impresora 3d, la parte mecanica esta lista, me faltaba configurar la electronica, no podia mover mas que el eje z, despues de seguir todos tus pasos, ya cobro vida. Todo funciona, solo falta llegue de china la electronica de la impresora( extrusores, hotend, cama caliente, etc) por ahora la usare como cnc con una dremell, un fuerte abrazo desde argentina

  49. Hola! es muy bueno tu tutorial! me sirvio para entender muchas cosas. tengo 2 problemas, cuando hago homing no hace mas que subir unos mm el extrusor y mover la cama hacia atras y nada mas. Usando pronterface no me deja mover el eje x mas que a la derecha y el Z solo sube y no me deja bajar. Ademas de que tengo un autolevel y por mas que active las opciones no funciona 🙁 espero con ansias ese tutorial sobre como configurarlo que comentaste mas arriba. Saludos desde Argentina

  50. Buenos dias. Muy buen blog. Tengo una impresora 3D que compre en Argentina y me vino mal configurada la parte de los extrusores. Tiene un Diamond Hotend Triple extrusor. Al momento de imprimir con el extrusor 0 no hay ningun problema, pero al usar el extrusor 1 o 2 no levanta el Hotend y empieza a hacer el movimiento de impresion. Se supone que el Marlin tiene que tener configurada la opcion de que solo usa un termistor para los tres extrusores. Podrias pasarme algun lugar de donde sacar mas informcaion de la configuracion de extrusores multiples. Muchas Gracias

  51. Tengo problemas de DEF en mi anet A8 el error lo produce la placa y no la cama caliente , ya que al conectar la cama donde el extrusor la temperatura la da buena

  52. Muchísimas gracias Javier.

    Gracias a ti he podido ser capaz de conectar mi Tevo Tarántula al PC, poder instalar MARLIN y darle caña a las primeras impresiones. (De momento una ampliación de las tuercas de la cama para hacer leveling y un benchy que estoy imprimiendo ahora mismo y ya veo que está saliendo fatla jajaja pero bueno, me falta ponerle un ventilador para que me enfríe la capa ).

    En fin, que muchísimas gracias, iré modificando configuraciones para que mejore ésto y ya le meteré un BLTouch más adelante.

  53. ¡¡¡INGREIBLE!!! este post.
    Quiero tus placas pero no tengo un pu…o euro.
    Gracias por la ayuda que nos brindas a todos y sigue manteniendo esa calidad que tienes en todos tus productos.

    Un saludo y MAKEEEE

  54. Muy bueno!
    Ahora mismo uno de mis problemas es que no logro actualizar el firmware de la prusa i3 hephestos de 1.4.2 a 2.5.1 porque hay que compilar con un make.cmd el marlin 2.5.1 Con Windows no lo he logrado y de Linux no tengo ni idea. 🙁 Además el marlin de bq a partir de la versión 2 no incorpora el archivo marlin.ino

  55. excelente post, muy bien explicado, quiza no es tan fácil de entender cuando una persona no se encuentra familiarizado con arduinos y cosas asi, quiza por eso seria mejor colocar un poco mas de imagenes, pero del resto, el mejor, muy, pero muy completo. muchas gracias

  56. Es impresionante es trabajo que has hecho, muy completo y perfectamente explicado, acabo de comprar una impresora 3D, que tengo que montar, también he comprado, (XCSOURCE® Kit de impresora 3D con RAMPS 1.4 Controlador + Mega 2560 Board + 5pcs A4988 Controlador de motor de pasos con disipador de calor + LCD 12864 Controlador gráfico de visualización inteligente con adaptador para Arduino TE621) para jugar en el futuro, te puedo asegurar que me has sido muy útil. por lo tanto te doy las gracias

  57. Más que un comentario que ya sería repetirme en alabanzas a las que hasta aquí he leído, aunque nunca viene mal una mas: Un artículo digno de ser comentado largo y tendido por su forma de explicar las cosas que a todos nos cuesta entender y por la gran cantidad de cosas que expones en el espacio de que dispones. Mira me decidí escribir porque tengo una 3d Tevo Tornado nueva pero que de seguir así nunca conseguiré poner en marcha. La situación es que al actualizarle el firmware a la ultima versión tal como me indicaban en las observaciones me quedá con la pantalla de la 3d y ahora no me deja volver a instalarle nada. Pienso que hay algo qu impide que el nuevo firmware entre. He estado buscando formas de borrar la eprom. Siempre me da el mensaje de acceso denegado. El programa Arduino me lo compila bien pero el problema lo tengo al intentar instalarle el Marlin de Tornado que ya me dice que acceso denegado. He estado por tirarla y comprar otra (cuando disponga de dinero, claro) Como que tu artículo va sobre el tuneo pues pienso que es una forma de ponerla a tu gusto (Si sabes, como tu, no como yo). Gracias por tu paciencia. Un saludo de una persona de 71 años pero con inquietudes todavía jóvenes.

    • Hola!

      mmn, puff, un poco lio. Quizás sea posible borrar el firmware, pero necesitas un programador (no es caro) pero bueno, es un poco complicado.

      No tengo ni idea de qué placa tiene la 3d Tevo tornado, lo siento, no sé qué tipo de chip lleva. Puedes subir el ejemplo de blink de arduino?

      saludos!

  58. impresionante pedazo de post!!
    la verdad es que estoy dentro de este mundillo desde solo 20 días y me he visto cientos de vídeos en ingles, español y italiano para ebntenderlo todo lo más rápido posible y todo lo que has dicho me suena… pero tu lo has explicado a fondo y bien! …y este es un gran cumplido por mi parte.

    Yo tengo una impresora barata ctc prusa i3 diy, que después de tunear el firmware, un par de bobinas de ensayos/errores y medio bote de laca 🙂 empieza a gustarme mucho.

    Por cierto! cuando puedas échale un vistazo a la placa GT2650. Me parece una muy buena placa para empezar.

    Una pregunta… para el futuro.
    ¿Cual es la placa más barata para poner 4 extrusores?
    Estoy construyendo una prusa pero un poco más grande (cama de 30×30) y estoy pensando de ponerle 4 extrusores bowden con un diamon o un sistema tipo el de prusa…. pero que placa hay para 4 extrusores que no cueste un reñon?

    • Miraré esta placa que me recomiendas!

      Para 4 extrusores? pues no sabría decirte, pero me imagino que una de 32bits, y no son muy baratas. A ver si este año sale alguna mejor (como la OVM20 pro 🙂

      saludos!

  59. Hola, creo que hay un pequeño error aquí:


    Si usas finales de carrera montados en una placa, descomenta la linea:

    //#define ENDSTOPPULLUPS

    Si lo entiendo bien, creo que la frase tendría que ser:
    “Si usas finales de carrera montados en una placa, *comenta* la linea:”

    saludos
    MaX

  60. Magnífico artículo, como todos los que escribes en esta web. Muchas gracias por reunir y compartir tanta información. Ahora manos a la obra a ver si tuneo el Marlin para la nueva OVM20 lite que le voy a colocar a mi Anet E10 ;-D

    Saludos!

  61. Ola! Sou brasileiro, e a dias estou com a impressora parada por falta de conhecimento.. Seu post salvou minha impressora… Aqui no brasil nao existe informacao de configuracao com tanto detalhe e claresa.. Parabens… parabens parabens.

  62. Excelente post… Fue claro, preciso y con información que en otros lados lo dan por sentado u omiten. Gracias por este súper aporte.
    Lo que si no me quedo claro y perdón si es una burrada, es si con todo el firmware calibrado y todo listo te lee los archivos de programas como por ejemplo el Cura o el Makerbot…

    • gracias!!!

      si, la idea del Marlin es leer los ficheros que genera Cura,etc (que son ficheros de gcode). Makerbot no lo sé, quizás tenga un par de comandos raros, pero Cura o Slic3r lo soporta sin problema.

      saludos!

      • Javier… Te hago otra consulta. que opinas si la maquina la armo con la placa madre gt2560 en lugar de la placa arduino mega2560 y la ramp 1.4 (hablando de la original, ningun clon de la placa ni nada por el estilo)????
        Saludos y gracias de nuevo por el aporte…

  63. Todavía no me ha llegado la placa, que de momento no es la vuestra, pero la próxima lo será sin duda.
    Me he leído y he ido aplicando lo que explicáis, pero yo actualizaría la parte de los pasos por mm y añadiría los husillos trapezoidales, estos no tienen el mismo paso que las varillas, aún siendo del mismo diámetro.
    Un saludo y muchas gracias por el currazo.

  64. Un artículo genial, seguro que cuando disponga de más tiempo me pongo a ello en mi legio, que entre unas cosas y otras no acabo de dejarla fina.

    Un saludo

  65. Enhorabuena Javier, da gusto buscar información sobre algo y toparse con un trabajo así. me ha encantado. Muchas gracias por compartir esta información de este modo tan exquisito.

  66. Magnifico aporte,
    Tengo una anet A8, mi primera impresora 3D, para empezar creo que es lo mejor, asi puedes cacharrear, y tu aporte es vital para entender el funcionamiento y corregir posibles fallos o incluir mejoras…
    Gracias.

  67. Excelente post, realmente se agradece el tiempo y las ganas de compartir lo aprendido, me dio la impresión de que ya no necesito leer otro 😀 , sobretodo por los detalles técnicos que no siempre los encuentras tan explicados, mil gracias.

    Saludos desde Perú

  68. Me suscribo a tus productos. Ya tengo la OVM20 lite, un éxito por lo facil y buena que es. Y esperando tu proximo top ventas, para mi siguiente impresora (eustathios spider v2)

  69. Tengo un problema con mi imprsora 3D. No sé si me podriais ayudar.

    Mi impresora 3D es una prusa hephestos. Como no tenía suficiente precisión, le cambié el firmware por el marlin para poder cambiar el numero de pasos y corregir el error. Al ir a probarla, el eje x iba en dirección contraria, chocó contra el extremo y estuvo un rato haciendo cla-cla, hasta que la desconecté. Al volver a conectarla, el eje x ya no se movía.

    Cambié el motor del ejex de puerto y sí se movía. Por tanto, no es un problema del motor.

    Cambié la rampa y no se solucionó.

    Cambié la placa por otra arduino mega 2560 y sigue igual.

    Cambié los controladores de los motores y nada.

    No tengo ni idea de qué puede fallar.

    • Hola,

      hay varias líneas que puedes cambiar en el Configuration.h

      // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
      #define INVERT_X_DIR false
      #define INVERT_Y_DIR true
      #define INVERT_Z_DIR false

      #define X_HOME_DIR -1
      #define Y_HOME_DIR -1
      #define Z_HOME_DIR -1

      a ver si con eso te funciona bien

      saludos!

      • He tenido que hacer más cambios y algunos de los que proponías diferentes. Lo pongo aquí por si a alguien le puede interesar. Para una prusa hephestos:
        // invierto los finales de carrera
        #define X_MIN_ENDSTOP_INVERTING true
        #define Y_MIN_ENDSTOP_INVERTING true
        #define Z_MIN_ENDSTOP_INVERTING true

        //bajo la acerleración máxima
        #define DEFAULT_MAX_ACCELERATION { 1200, 1200, 75, 1200 }

        // bajo la aceleración
        #define DEFAULT_ACCELERATION 1200
        #define DEFAULT_RETRACT_ACCELERATION 1200
        #define DEFAULT_TRAVEL_ACCELERATION 1200

        //invierto únicamente el motor z
        #define INVERT_Z_DIR true

        //bajo la velocidad del autohome
        #define HOMING_FEEDRATE_XY (25*60)
        #define HOMING_FEEDRATE_Z (2*60)

        //lo pongo en castellano
        #define LCD_LANGUAGE es

        //activo la tarjeta SD
        #define SDSUPPORT

        //defino la pantalla LCD
        #define REPRAP_DISCOUNT_SMART_CONTROLLER

  70. Enhorabuena, la verdad que me ha impresionado el tuto y para uno que no tiene ni idea es muy facil empezar asi, gracias sigue trabajando asi y seguiremos aprendiendo.
    PD, donde hay un tuto sobre la autocalibración?

  71. Estimado Javier, gracias por haber invertido tu tiempo en escribir esta SUPER Guia. Todavia no tengo mi impresora 3D, pero seguro volvere a releerla cuando la tenga.
    Gracias por el aporte!

  72. Entre por un problema que tenía en la configuración de los pasos del motor y me termine leyendo todo. La verdad, no tengo palabras para describir lo EXCELENTE que es este post, te pasaste! supe completo y todo perfectamente explicado hasta el punto en el que llegas a pensar, “espera un poquito, para que tanto” jajajaja pero de todas formas es muy necesario. Lástima que lo único que puedo hacer desde acá es agradecerte, mínimo te debo una cerveza 😛 SOS UN GENIO.

  73. Un post GENIAL!!! Muchísimas gracias por compartir ete conocimiento. Si hicieras el vídeo sería la Host… En el vídeo podrías mostrar las acciones y reacciones de la máquina al cambio de parámetros (ejemplo: acceleracciones).
    Ánimo y continúa así, muchos agradecemos y necesitamos a gente como tú.

  74. No te conocia, pero no te perdere de vista, enhorabuena por el articulo, el mejor y mas completo que me he encontrado. Normalmente no acostumbro a comentar, pero hoy si. El link lo guardare por escrito en una libreta de papel no sea que se pierda.
    De nuevo enhorabuena.

  75. Excelente tutorial, tengo un error, cuando esta terminando de subir sale
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_ReceiveMessage(): timeout
    avrdude: stk500v2_getsync(): timeout communicating with programmer
    Ha ocurrido un error mientras se enviaba el sketch
    No encuentro como solucionarlo, saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Índice

Últimos Artículos

CONTACTO

info@staticboards.es

C/Emilio González López, 29

15113 Malpica, A Coruña

Spain

SÍGUENOS

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

¿Te ha gustado?

¡Compártelo con tus amigos!

No se realizarán envíos el viernes 20 y el Lunes 23 de Abril. Puedes hacer el pedido, y lo enviaremos el próximo Martes. Descartar

¿Te está gustando el artículo?

Déjame tu dirección de correo,

y recibirás un aviso cuando publique el siguiente

Muchas Gracias!

Recuerda que tienes que confirmar tu correo

si quieres recibir las actualizaciones