Marlin es el firmware de código abierto más utilizado en impresión 3D. Está detrás de millones de impresoras en todo el mundo —desde las clásicas Ender-3 hasta máquinas CoreXY de alta gama— y es mantenido por una comunidad activa desde 2011. Si tu impresora no lleva Klipper, casi con total seguridad lleva Marlin.
Esta guía cubre Marlin 2.x (versión estable actual: 2.1.2.7) — el salto generacional que añadió soporte nativo para placas de 32 bits, una arquitectura de código mucho más limpia y funciones que en Marlin 1.x directamente no existían. Verás paso a paso cómo configurarlo desde cero para cualquier impresora, sin importar tu nivel de experiencia.
Si quieres ir directamente a un apartado concreto, usa el índice a continuación.
Configurar Marlin 2.x desde cero
Los parámetros de esta guía están ordenados tal como aparecen en los archivos de configuración de Marlin. Sigue el orden y no te saltarás nada importante. Si necesitas más detalle sobre alguna función concreta, tienes la referencia completa en marlin.3dwork.io.
- Configurar Marlin 2.x desde cero
- ¿Qué es Marlin y por qué Marlin 2.x?
- Prepara tu propio Marlin para poder personalizarlo
- Ajustes extra de funciones Marlin
- Logotipo Marlin (SHOW_BOOTSCREEN)
- Puertos de comunicación (SERIAL_PORT y SERIAL_PORT_2)
- Velocidad de comunicación (BAUDRATE)
- Placa base o electrónica (MOTHERBOARD)
- Nombre de tu máquina (CUSTOM_MACHINE_NAME)
- Número de extrusores (EXTRUDERS)
- Diámetro del filamento (DEFAULT_NOMINAL_FILAMENT_DIA)
- Kit multimaterial de Prusa (PRUSA_MMU2)
- Sensores de temperatura (TEMP_SENSORS)
- Limitadores de temperatura (MINTEMP & MAXTEMP)
- PID Tuning (Extrusores)
- PID Bed Tuning (Cama calefactable)
- Extrusión en frío (PREVENT_COLD_EXTRUSION)
- Longitud de extrusión (PREVENT_LENGTHY_EXTRUDE)
- Protecciones térmicas (THERMAL_PROTECTION)
- Parámetros mecánicos (Cinemáticas COREXY)
- Finales de carrera disponibles (USE_XMIN_PLUG & USE_XMAX_PLUG)
- Lógica de los finales de carrera (ENDSTOP_INVERTING)
- Configurar los drivers (DRIVER_TYPE)
- Configuración de los pasos (DEFAULT_AXIS_STEPS_PER_UNIT)
- Ubicación sensor auto nivelación (NOZZLE_TO_PROBE_OFFSET)
- Velocidad desplazamiento nivelación (XY_PROBE_SPEED)
- Invertir dirección de motores (INVERT_X_DIR)
- Volumen de impresión (X_BED_SIZE & Y_BED_SIZE)
- Límites de movimiento (MIN_POS & MAX_POS)
- Restricciones de movimiento (MIN_SOFTWARE_ENDSTOPS)
- Almacenamiento en EEPROM (EEPROM_SETTINGS)
- Precalentamiento ABS/PLA (PREHEAT)
- Idioma de los menús (LCD_LANGUAGE)
- Soporte para SD Card (SDSUPPORT)
- Simplificar menús (SLIM_LCD_MENUS)
- Tipo de display (LCD / Controller Selection)
- Nivelación de la cama (BED_LEVELING)
- EXTRA: Trucos interesantes para Marlin
- Compilación final de Marlin con VSCode + PlatformIO + Auto Build Marlin
- Subiendo Marlin a tu impresora
- Observaciones finales
¿Qué es Marlin y por qué Marlin 2.x?

Marlin es un firmware de código abierto para impresoras 3D FDM desarrollado desde 2011 a partir del proyecto original de Erik van der Zalm. Controla cada aspecto de la impresora: movimiento de los ejes, temperaturas, nivelación de cama, extrusión, pantalla… todo. Es el estándar en la industria: Creality, Elegoo, Artillery, Sovol y la mayoría de fabricantes chinos lo usan como base en sus máquinas.
Marlin 2.x fue el salto generacional definitivo. Las mejoras clave respecto a Marlin 1.x:
- Soporte nativo para placas de 32 bits (STM32, LPC1768/LPC1769, SAM): las placas modernas como SKR, BTT Octopus, Creality 4.2.x necesitan Marlin 2.x. Marlin 1.x es solo para AVR (Mega 2560).
- Input Shaping (MPC/FTDI/ZV): compensación de resonancias por software similar a Klipper, reduciendo el ghosting en impresiones rápidas.
- Model Predictive Control (MPC): control de temperatura más preciso y estable que el PID tradicional, especialmente útil en hotends de alta temperatura.
- Mejoras en ABL: Unified Bed Leveling (UBL) con mallado de alta resolución, Bilinear, y soporte para sensores modernos (BLTouch, CR Touch, inductivos, capacitivos).
- Filament Runout, Power Loss Recovery, Filament Width Sensor: funciones de fiabilidad que en 1.x eran experimentales o inexistentes.
- Multi-extrusor y mezcla de colores: soporte mejorado para cabezales multimaterial.
Configurar Marlin solo requiere conocer bien tu impresora (tipo de extrusor, termistor, volumen de impresión, electrónica) y tener paciencia para editar los archivos de configuración. No necesitas saber programar. Los apartados siguientes cubren el proceso completo.
Si quieres profundizar más en las posibilidades de Marlin, te recomendamos nuestra guía completa de Marlin en marlin.3dwork.io, donde tienes documentación detallada de cada parámetro y función.
Prepara tu propio Marlin para poder personalizarlo
Con esta guía os vamos a explicar los pasos para generar vuestro propio Marlin para impresoras comerciales o que dispongan de un preconfigurado oficial… aunque podéis usarlo bajando la última versión estable desde el repositorio de Marlin y personalizarlo a mano aunque normalmente es aconsejable partir de un preconfigurado de una máquina similar.
Tenemos varias opciones para obtener nuestro firmware Marlin, ordenadas de más rápida a más flexible:
- Firmware precompilado oficial — MarlinBuilds: el propio equipo de Marlin publica binarios compilados para más de 80 marcas basados en sus preconfigurados oficiales. La opción más rápida si tu máquina está entre las soportadas.
- Usando nuestro Auto Builder Marlin con las fuentes y preconfiguraciones de Marlin: compilamos automáticamente más de 100 fabricantes y 421 combinaciones de impresora/electrónica, en inglés y español. Revisa si la tuya está incluida.
- Usando directamente las fuentes y preconfiguraciones de Marlin desde su GitHub: el método más flexible y el único que te permite personalizar el firmware con tus propias modificaciones. También aplica si tu fabricante dispone de un fork propio.
Firmware precompilado oficial — MarlinBuilds (recomendado si tu máquina está soportada)
Desde 2024 el propio equipo de Marlin publica binarios precompilados para la gran mayoría de impresoras comerciales en el repositorio oficial MarlinBuilds. Estos binarios se generan directamente desde los preconfigurados del repositorio Configurations, garantizando que coinciden al 100% con la configuración oficial de cada máquina.
Si tu impresora está entre las soportadas, esta es la opción más rápida: descargas el binario, lo copias en la SD y listo. No necesitas compilar nada.
- Repositorio oficial: https://github.com/MarlinFirmware/MarlinBuilds
- Más de 80 marcas y cientos de modelos soportados (Creality, Prusa, Elegoo, Artillery, Sovol, Tevo, Geeetech, Two Trees, Qidi, Kingroon, etc.)
- Para encontrar tu binario: navega por
builds/→ marca → modelo → descarga el.bino.hexapropiado para tu electrónica - Dentro de cada modelo encontrarás subcarpetas con variantes según la electrónica o sensores instalados (por ejemplo, para una Ender-3 V2:
CrealityV422/,CrealityV427/,CrealityV427-BLTouch/…)
Aviso importante: los binarios de MarlinBuilds están generados con los preconfigurados sin modificar de Marlin. Si has hecho modificaciones en tu máquina (sensor ABL diferente, driver distinto, etc.) necesitarás compilar tu propio firmware con esos cambios, siguiendo el procedimiento de las siguientes secciones.
Procedimiento automático 3Dwork usando fuentes y preconfiguraciones de Marlin
Hemos desarrollado una automatización que compila de forma automática el firmware Marlin para más de 100 fabricantes y 421 combinaciones de impresoras y electrónica, usando las fuentes y preconfigurados oficiales de Marlin. Los firmwares están disponibles en dos idiomas: inglés (EN) y español (ES), cada uno con su enlace de descarga independiente.
Puedes consultar el listado completo de máquinas soportadas, con enlace de descarga directo para cada combinación e idioma, en nuestro documento de estado de compilación: BUILD_STATUS — Listado completo de firmwares compilados por 3Dwork.
En la siguiente tabla podéis ver el listado de máquinas soportadas. Si estáis interesados en que añadamos más, podéis contactar por nuestro grupo de Telegram 3Dwork en español e inglés.
Procedimiento manual usando fuentes y preconfiguraciones de Marlin
Es el proceso que siempre recomendamos, ya que, aunque tenga algo de dificultad técnica en ocasiones, os va a permitir tener el 100% del control de vuestra máquina y opciones del firmware ajustadas a vuestro gusto.
Lo primero que debes hacer es preparar nuestro entorno para poder compilar el firmware (y editarlo, obviamente). Son solo tres pasos, así que vamos a ello:
Descargando el Firmware Marlin
Desde tu navegador, accede al GitHub oficial de Marlin:
https://github.com/MarlinFirmware/Marlin
Una vez en la página descarga el código de Marlin de la siguiente forma:


El siguiente paso, si tenemos una impresora comercial, descargaremos los preconfigurados de configuración desde https://github.com/MarlinFirmware/Configurations y siguiendo el mismo proceso que el explicado en el punto anterior

Ahora que dispones de los archivos de Marlin en tu ordenador deberemos de descomprimirlos. Idealmente, no dejar la carpeta con tu Marlin dentro de muchas carpetas anidadas ni con símbolos o acentos en los nombres de las mismas, ya que pueden provocar errores en la compilación.
Combinaremos Marlin estable con el preconfigurado de nuestra máquina
- Abrimos el explorador de archivos de Windows y accedemos a la carpeta donde hemos descargado y descomprimido el repositorio de Marlin.
- Una vez ahí, abriremos otro explorador de ficheros con el contenido del repositorio de preconfiguraciones
- Encontraremos dos ficheros de preconfiguración de Marlin para nuestra impresora, en la imagen de ejemplo usaremos una Ender 3 con las preconfiguraciones para una placa SKR MINI v2 (la carpeta a buscar sería lo indicado en el cuadro azul de la siguiente captura):

- Copiamos los archivos del interior de la carpeta de nuestro preconfigurado (cuadro rojo de la captura anterior) y los pegaremos (sustituyendo los existentes) en la carpeta «…\Marlin» donde dejamos descomprimido el repositorio de Marlin!
Con esto ya tenemos nuestro Marlin listo para compilar.
Instalación de software necesario para la edición y compilación de Marlin
El siguiente paso es instalar el software necesario, para ello descargue e instale los siguientes programas:
- Python: https://www.python.org/downloads/ también puedes descargarlo desde la Microsoft Store, que en algunos casos realiza una instalación más limpia
- Git: https://git-scm.com/
- Visual Studio Code: https://code.visualstudio.com/ A pesar de que parezca que Python y Git no se usan en ningún paso, son requerimientos de Visual Studio Code para este tutorial
- Una vez instalados ambos programas, debemos instalar el plugin PlatformIO en Visual Studio Code, para ello seguiremos los siguientes pasos:
- Presionamos los cuadrados del menú izquierdo
- En el buscador escribimos «PlatformIO»
- Presionamos sobre el rectángulo verde de instalar

Compilando nuestro Marlin
Una vez tenemos nuestro Marlin a nivel de ficheros y el software necesario instalado correctamente, toca compilarlo para poder generar el fichero a usar en nuestras impresoras:
- Una vez realizado este paso, abrimos Visual Studio Code, presionamos sobre el icono con dos documentos del menú izquierdo, y a continuación sobre el botón azul «Agregar carpeta»

- Buscamos la ubicación donde tenemos nuestro repositorio Marlin y presionamos Agregar:

Os aconsejamos no tener la carpeta con vuestras fuentes de Marlin en muchos directorios anidados, ya que esto puede provocar algunos problemas.
Lo ideal es tenerlo en la raíz de cualquiera de vuestras unidades, ej. C:/Marlin
- En Visual Studio Code, seleccionamos el archivo plaformio.ini del área de trabajo de Marlin que acabamos de añadir.
- Editamos la línea «default_envs» y sustituimos » megaatmega2560 » por el adecuado para nuestra placa/impresora, haciendo scroll en el documento encontrarás diferentes placas diversas placas, localiza la tuya y sustituye «megaatmega2560» por la correspondiente

- A continuación, si queremos hacer cambios en la configuración básica de nuestra impresora, ya sea porque le hemos hecho una modificación o para mejorar algún ajuste, desplegamos la carpeta Marlin y nos aparecerán los dos archivos de configuración. Podéis encontrar información sobre opciones básicas de Marlin en el siguiente link de su documentación o explicada de una forma más “sencilla” en esta guía de Marlin.

- Una vez realizados los ajustes deseados, presionamos sobre el botón de compilar, que se encuentra en la parte inferior izquierda y tiene forma de «check»

- Cuando ya esté compilado el código, vamos a la carpeta: «…\Marlin\.pio\build\xxxx» donde encontraremos un fichero llamado «firmware.bin» o similar dependiendo de las características que necesite nuestra electrónica.
- Copiamos este fichero en una tarjeta SD vacía en el directorio raíz o seguiremos el proceso adecuado para nuestra electrónica.
- Extraemos la SD del ordenador
- Apagamos la impresora (desconectamos el USB y la alimentación si están ambos conectados)
- Esperamos unos 30 segundos
- Colocamos la tarjeta SD con el nuevo firmware
- Encendemos la impresora. Tras unos segundos veremos cómo está instalando el nuevo firmware, y poco después arrancará con nuestro nuevo Marlin instalado.
Actualizando nuestro Marlin a una nueva versión
Muchos usuarios ven muy complicado el proceso de actualización de la versión última versión compilada por ellos a una nueva. A continuación os damos algunos consejos para realizar el proceso para que sea más sencillo.
- Descargar la nueva versión de Marlin, tal como os indicábamos, aquí descargaremos la nueva versión de Marlin ya sea desde el enlace release de su documentación o desde su Github.

Descargar Marlin desde documentación

Descargar Marlin desde su Github, es importante seleccionar la rama adecuada en la esquina superior izquierda.
- Una vez descargado y descomprimido añadiremos esa carpeta a nuestro proyecto en VSC junto con la antigua versión

- Ahora que tenemos ambos directorios en nuestro proyecto tan solo tendremos que usar la herramienta de comparación que lleva incluida VSC para comparar los ficheros de configuración de Marlin
- platformio.ini, es el fichero donde básicamente encontraremos el env de nuestra electrónica
- Marlin/configuration.h, fichero donde normalmente habilitaremos las funciones y configuración de la impresora/electrónica/extensiones
- Marlin/configuration_adv.h, similar al anterior pero donde encontraremos ciertas funciones avanzadas
- Para comparar dos ficheros, desde el panel lateral con la estructura del proyecto (Explorer), haz clic derecho sobre el fichero de la versión antigua y pulsa Select for Compare del menú contextual

- A continuación hacemos lo mismo con el fichero de la nueva versión, pero seleccionando la opción Compare with Selected y nos aparecerá una nueva pantalla con la comparación entre ellos
- En la parte superior marcada en la captura siguiente veremos el nombre y la carpeta de los ficheros a comparar
- En la parte central vemos cómo marca los cambios, en el primer bloque indica en rojo las partes que no incluye el destino (rojo), el central donde indica cambios en ambos sitios y la que normalmente usaremos para detectar ajustes (rojo/verde) y la parte inferior (verde) donde encontrarás lo que se encuentra en el nuevo y no en el antiguo

- Una vez ajustados todos los cambios, solamente toca cargar el nuevo proyecto en Platformio como os explicamos al inicio de la guía y compilar ajustando cualquier error que aparezca, que suelen ser bastante descriptivos.
Últimos Consejos
- Si vas a actualizar una impresora y no tienes los ficheros originales de Marlin, y has hecho cambios en la configuración, te aconsejamos lanzar un M503 desde un cliente de terminal como Pronterface y guardar la información que devuelve. Son los valores de la EEPROM, muy útiles para ajustar tu nuevo firmware.
- Recuerda que, tras subir el firmware, es aconsejable cargar los valores de fábrica de la EEPROM, Puedes hacerlo por terminal con M502 seguido de M500, o desde la pantalla en modo Marlin con Configuración/Restaurar seguido de Configuración/Salvar EEPROM… además del M503 con el que podrás listar los valores de tu EEPROM para asegurarte que son correctos.
- En las placas actuales se genera un firmware.bin que se copia en la SD, en estos casos si el proceso de actualización se hizo de forma correcta este fichero queda renombrado a .CUR. Así que para comprobar si el proceso fue de forma correcta extrae la SD después de realizar el proceso de actualización y comprueba desde tu ordenador que el .BIN cambió a .CUR
- En otras placas, normalmente antiguas de 8 bits, el firmware se «quema» directamente sobre la placa, por lo que es necesario tenerla conectada por USB. En algunos casos puede dar problemas al programarla por USB por lo que puedes ir a la ubicación donde se generó el binario compilado… en estos casos es un fichero .hex normalmente… y subirlo desde otras herramientas específicas para tu impresora, los slicers como PrusaSlicer o Cura pueden realizar este paso de forma bastante sencilla también
Ajustes extra de funciones Marlin
Como hemos comentado antes, hay dos archivos principales que gestionan toda la configuración de Marlin 2.0.x. Hay muchos más cambios y modificaciones posibles, pero para nuestro propósito actual no son necesarios (modificar el menú, logotipos, etc.).
Comencemos a editar el archivo Configuration.h con el editor que hayamos escogido (en mi caso Sublime) y seguiremos por orden las opciones más comunes. Este archivo contiene las configuraciones principales de hardware, idiomas y controladores, así como las características y componentes más habituales de la impresora.
En blanco veréis las opciones que he activado (o las que vienen activas por defecto), y en gris oscuro las que están desactivadas. Para activar una opción, eliminamos las dos barras «//» delante del parámetro. Para desactivarla, las añadimos de nuevo. Si eres programador, ya estarás familiarizado con este procedimiento.
Si nos dejamos algún parámetro en el tintero (hay innumerables impresoras), no dudéis en indicarlo en los comentarios al final del artículo. Así iremos completando la guía poco a poco y será útil a más usuarios.
Logotipo Marlin (SHOW_BOOTSCREEN)
Es el logotipo de Marlin que aparece al arrancar el firmware. Por defecto está activo; podemos desactivarlo si queremos. No es imprescindible para configurar Marlin 2, pero desactivarlo puede liberar algo de memoria si vamos justos.
También puedes poner tu propio logo o imagen personalizada, pero lo veremos al final de esta guía en la sección «Trucos interesantes para Marlin«.
// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
#define SHOW_BOOTSCREEN
Puertos de comunicación (SERIAL_PORT y SERIAL_PORT_2)
Son los puertos de comunicación de la electrónica. El primero no deberías modificarlo, salvo que tengas una electrónica exótica. El segundo yo lo dejo deshabilitado porque uso una MKS Gen v1.4.
Si tu placa fuera una SKR V1.4 o SKR V1.4 Turbo deberías activar SERIAL_PORT_2 y poner el valor -1 (tal y como está por defecto). Para las electrónicas SKR GTR V1.0 deberás poner los valores -1 y 3 respectivamente en SERIAL_PORT y SERIAL_PORT_2.
Estas son ciertamente las electrónicas con las que estoy más familiarizado. Para otras deberás buscar los valores por Internet, algo que no te costará localizar.
/**
* Select the serial port on the board to use for communication with the host.
* This allows the connection of wireless adapters (for instance) to non-default port pins.
* Serial port -1 is the USB emulated serial port, if available.
* Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
*
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT 0
/**
* Select a secondary serial port on the board to use for communication with the host.
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
//#define SERIAL_PORT_2 -1
Velocidad de comunicación (BAUDRATE)
Velocidad a la que el ordenador se comunica con la impresora. El valor por defecto es 250000, así que lo dejamos tal cual.
Si tienes problemas de comunicación con la impresora, puedes bajar este valor para intentar solventarlo.
/**
* This setting determines the communication speed of the printer.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
* You may try up to 1000000 to speed up SD file transfer.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 250000
Placa base o electrónica (MOTHERBOARD)
Parámetro importantísimo. Aquí seleccionamos la electrónica que tiene la impresora. Como hay muchas, tendremos que localizar la nuestra y el valor a poner.
Tenéis un listado de electrónicas compatibles en el archivo «boards.h«. Lo encontraréis en la siguiente ruta dentro del firmware Marlin: \Marlin\src\core\boards.h
En mi caso, mi impresora usa una placa MKS Gen v1.4. Por eso escribo «BOARD_MKS_GEN_13», como veis en el ejemplo. Vosotros poned la que corresponda a vuestra placa.
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_13
#endif
Nombre de tu máquina (CUSTOM_MACHINE_NAME)
Esta es fácil: el nombre que quieres que tenga tu impresora. Por defecto viene desactivada, de ahí que aparezcan las dos barras «//» delante del #define.
Eliminamos las dos barras y dejamos la configuración así:
// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Pulsar X1 PRO"
Número de extrusores (EXTRUDERS)
Aquí configuramos en Marlin el número de extrusores de la impresora. El valor por defecto es 1, ya que la mayoría solo dispone de uno. Si no es tu caso, introduce el número correcto.
// This defines the number of extruders
// :[1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1
Diámetro del filamento (DEFAULT_NOMINAL_FILAMENT_DIA)
Aquí seleccionamos el diámetro de filamento que usa la impresora. Por defecto viene 3.0, lo cual es extraño porque la mayoría de impresoras actuales usan 1.75 mm. Es importante cambiarlo.
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Kit multimaterial de Prusa (PRUSA_MMU2)
Actívalo si has instalado en tu impresora el kit multimaterial original de Josef Prusa o algún clon chino del mercado. Si no es tu caso, déjalo como está, con las dos barras delante.
/** * Prusa Multi-Material Unit v2 * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * Requires EXTRUDERS = 5 * * For additional configuration see Configuration_adv.h */ //#define PRUSA_MMU2
Sensores de temperatura (TEMP_SENSORS)
En esta sección de Marlin definimos los sensores de temperatura presentes en la impresora. La versión 2.0.7.2 añadió soporte para más extrusores (hasta 11 soportados) e incluye un sensor para el habitáculo.
Como podéis ver, hay muchísimos, y en el propio código aparece el listado. Si no tienes información sobre el tuyo, búscalo en Google: probablemente algún otro usuario con tu misma impresora lo haya documentado.
Por defecto solo viene configurado el TEMP_SENSOR_0 con valor «1». En mi caso, allí debo colocar el valor «5».
Como tengo cama calefactable (para mejorar la adherencia y evitar problemas de Warping, configuro TEMP_SENSOR_BED con el valor 1. El resto lo dejo a 0, ya que no tengo más extrusores ni habitáculo caliente (Chamber Temp).
/** * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table * * Temperature sensors available: * * -5 : PT100 / PT1000 with MAX31865 (only for sensors 0-1) * -3 : thermocouple with MAX31855 (only for sensors 0-1) * -2 : thermocouple with MAX6675 (only for sensors 0-1) * -4 : thermocouple with AD8495 * -1 : thermocouple with AD595 * 0 : not used * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup) * 331 : (3.3V scaled thermistor 1 table) * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) * 3 : Mendel-parts thermistor (4.7k pullup) * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! * 5 : 100K thermistor - ATC Semitec 104GT-2/104NT-4-R025H42G (Used in ParCan & J-Head) (4.7k pullup) * 501 : 100K Zonestar (Tronxy X3A) Thermistor * 512 : 100k RPW-Ultra hotend thermistor (4.7k pullup) * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) * 10 : 100k RS thermistor 198-961 (4.7k pullup) * 11 : 100k beta 3950 1% thermistor (4.7k pullup) * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" * 15 : 100k thermistor calibration for JGAurora A5 hotend * 18 : ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327 * 20 : Pt100 with circuit in the Ultimainboard V2.x * 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 * 61 : 100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup * 66 : 4.7M High Temperature thermistor from Dyze Design * 67 : 450C thermistor from SliceEngineering * 70 : the 100K thermistor found in the bq Hephestos 2 * 75 : 100k Generic Silicon Heat Pad with NTC 100K MGB18-104F39050L32 thermistor * 99 : 100k thermistor with a 10K pull-up resistor (found on some Wanhao i3 machines) * * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k. * (but gives greater accuracy and more stable PID) * 51 : 100k thermistor - EPCOS (1k pullup) * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup) * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) * * 1047 : Pt1000 with 4k7 pullup * 1010 : Pt1000 with 1k pullup (non standard) * 147 : Pt100 with 4k7 pullup * 110 : Pt100 with 1k pullup (non standard) * * 1000 : Custom - Specify parameters in Configuration_adv.h * * Use these for Testing or Development purposes. NEVER for production machine. * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ #define TEMP_SENSOR_0 5 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 #define TEMP_SENSOR_BED 1 #define TEMP_SENSOR_PROBE 1 #define TEMP_SENSOR_CHAMBER 0
Limitadores de temperatura (MINTEMP & MAXTEMP)
Configurar estos parámetros en Marlin 2 es muy importante: controlan las temperaturas máximas y mínimas de la impresora.
Definimos los rangos válidos para cada sensor. Si alguno no alcanza o sobrepasa esa temperatura, Marlin muestra un error en el display y desactiva el hotend y la cama calefactable.
En mi caso suelo configurar los extrusores con 5 °C (mínima) y 265 °C (máxima). Si un extrusor o la cama no llegan a 5 °C, deduciremos que el termistor no está bien instalado o está dañado físicamente.
También nos protege si accidentalmente se sobrepasa la temperatura máxima: algo crucial para tu seguridad y la de tu vivienda.
// Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. #define HEATER_0_MINTEMP 5 #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 #define HEATER_4_MINTEMP 5 #define HEATER_5_MINTEMP 5 #define HEATER_6_MINTEMP 5 #define HEATER_7_MINTEMP 5 #define BED_MINTEMP 5 // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) #define HEATER_0_MAXTEMP 265 #define HEATER_1_MAXTEMP 265 #define HEATER_2_MAXTEMP 265 #define HEATER_3_MAXTEMP 265 #define HEATER_4_MAXTEMP 265 #define HEATER_5_MAXTEMP 265 #define HEATER_6_MAXTEMP 265 #define HEATER_7_MAXTEMP 265 #define BED_MAXTEMP 120
PID Tuning (Extrusores)
Sección que controla el algoritmo encargado de gestionar la temperatura de los extrusores y de la cama calefactable.
Podríamos entrar en detalle sobre cómo funciona, pero no es el artículo adecuado. Si os interesa el PID Tuning, os recomiendo echar un vistazo al artículo de REPRAP sobre Pid Tuning.
Vienen predeterminados algunos valores para varias de las impresoras más conocidas. Como mi impresora no coincide con ninguna, he añadido mis propios valores.
#if ENABLED(PIDTEMP)
//#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)
//#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
#if ENABLED(PID_PARAMS_PER_HOTEND)
// Specify between 1 and HOTENDS values per array.
// If fewer than EXTRUDER values are provided, the last element will be repeated.
#define DEFAULT_Kp_LIST { 22.20, 22.20 }
#define DEFAULT_Ki_LIST { 1.08, 1.08 }
#define DEFAULT_Kd_LIST { 114.00, 114.00 }
#else
#define DEFAULT_Kp 20.3
#define DEFAULT_Ki 1.43
#define DEFAULT_Kd 71.84
#endif
#endif // PIDTEMP
Para obtener los valores de vuestra impresora podéis buscarlos en Internet o calcularlos con una función interna de Marlin llamada PID Autotune.
Para ello, conecta tu impresora a Repetier/Simplify3D o cualquier otro software que te permita utilizar comandos Gcode. Una vez conectado, envía el comando M303 E0 S200 C8 y comenzará el proceso.
Tras calentar y enfriar el fusor 8 veces, el proceso terminará y mostrará la siguiente información. Solo tenéis que coger los valores de Kp, Ki y Kd e introducirlos en vuestro firmware en los campos DEFAULT_Kp, DEFAULT_Ki y DEFAULT_Kd.
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
PID Bed Tuning (Cama calefactable)
Lo mismo que antes, pero para la cama calefactable. En el firmware actual viene desactivado por defecto. Si tienes cama calefactable, debes descomentar la opción #define PIDTEMPBED como verás en mi configuración.
También puedes obtener los valores de la cama con una función interna de Marlin. Se ejecuta con el comando Gcode M303 E-1 C8 S90.
//=========================================================================== //====================== PID > Bed Temperature Control ====================== //=========================================================================== /** * PID Bed Heating * * If this option is enabled set PID constants below. * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis. * * The PID frequency will be the same as the extruder PWM. * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz, * which is fine for driving a square wave into a resistive load and does not significantly * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W * heater. If your configuration is significantly different than this and you don't understand * the issues involved, don't use bed PID until someone else verifies that your hardware works. */ #define PIDTEMPBED //#define BED_LIMIT_SWITCHING /** * Max Bed Power * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis). * When set to any value below 255, enables a form of PWM to the bed that acts like a divider * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED) */ #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Sends debug data to the serial port. //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) #define DEFAULT_bedKp 347.77 #define DEFAULT_bedKi 48.46 #define DEFAULT_bedKd 623.90 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from pidautotune //#define DEFAULT_bedKp 97.1 //#define DEFAULT_bedKi 1.41 //#define DEFAULT_bedKd 1675.16 // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED
Aun así, hay ocasiones en las que activar PIDTEMPBED es contraproducente. De entrada, te recomiendo no habilitarlo.
Extrusión en frío (PREVENT_COLD_EXTRUSION)
Ambas funciones gestionan en Marlin la extrusión en frío. Como todos sabemos, no es recomendable extruir filamento si nuestro Hotend no está encendido.
La opción PREVENT_COLD_EXTRUSION directamente evitará que podamos extruir material si nuestro hotend no alcanza la temperatura mínima delimitada.
Podremos configurar a qué mínima temperatura le permitiremos a Marlin extruir filamento con el parámetro EXTRUDE_MINTEMP. Por defecto ambas vienen activas, así que no deberías preocuparte.
No obstante, he considerado importante nombrarla para que tengas constancia de que existe.
/** * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP. * Add M302 to set the minimum extrusion temperature and/or turn * cold extrusion prevention on and off. * * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! *** */ #define PREVENT_COLD_EXTRUSION #define EXTRUDE_MINTEMP 170
Longitud de extrusión (PREVENT_LENGTHY_EXTRUDE)
Como indican los comentarios, evita extruir filamento más allá de la distancia configurada. Esto significa que Marlin solamente te va a dejar en un solo comando GCODE extruir un máximo de 200mm.
Si quieres extruir más de 200 mm en un solo comando (por ejemplo, al cargar filamento desde el display con un extrusor Bowden), deberás modificar el parámetro EXTRUDE_MAXLENGTH por un valor superior. Ambos vienen activados por defecto en Marlin 2.
Si no es tu caso, déjalo como está. Yo, por ejemplo, introduzco el filamento a mano, así que no tengo necesidad de modificarlo, pero siempre está bien saberlo.
/** * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH. * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE #define EXTRUDE_MAXLENGTH 200
Protecciones térmicas (THERMAL_PROTECTION)
Estos tres parámetros activan la protección térmica adicional que ofrece Marlin 2.0.x para evitar daños en la impresora. Siempre deben estar activos; de hecho, vienen activos por defecto en Marlin 2, así que no los tocaremos.
/** * Thermal Protection provides additional protection to your printer from damage * and fire. Marlin always includes safe min and max temperature ranges which * protect against a broken or disconnected thermistor wire. * * The issue: If a thermistor falls out, it will report the much lower * temperature of the air in the room, and the the firmware will keep * the heater on. * * If you get "Thermal Runaway" or "Heating failed" errors the * details can be tuned in Configuration_adv.h */ #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber
Parámetros mecánicos (Cinemáticas COREXY)
En el mercado existen impresoras con cinemáticas muy distintas: cartesianas, deltas, tripteron, CoreXY (y sus variantes), etc. La verdad es que darían para un artículo entero.
Si tu impresora usa cinemática CoreXY o cualquiera de sus variantes, debes activar el parámetro correspondiente. Como yo tengo cinemática cartesiana, dejo todo desactivado, como podéis comprobar.
//=========================================================================== //============================= Mechanical Settings ========================= //=========================================================================== // @section machine // Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics, // either in the usual order or reversed //#define COREXY //#define COREXZ //#define COREYZ //#define COREYX //#define COREZX //#define COREZY //#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042
Finales de carrera disponibles (USE_XMIN_PLUG & USE_XMAX_PLUG)
Aquí le indicamos a Marlin qué finales de carrera tenemos conectados a la placa. Lo normal es tener tres finales de carrera para los recorridos mínimos (topes); así Marlin determina la posición inicial (0) de todos los ejes al hacer HOMING.
También pueden instalarse sensores extra para los recorridos máximos. Sirven para evitar que la máquina se desplace más de lo necesario. No son imprescindibles, pero sí una buena opción para tener todos los imprevistos bajo control.
En mi caso, dispongo de dos finales de carrera mecánicos en el eje X (extrusor) y en el eje Y (cama), y aparte tengo un sensor de nivelación en Z. Así que dejo activos en el firmware solamente los finales de carrera mínimos, como puedes comprobar tú mismo en las siguientes líneas.
// Specify here all the endstop connectors that are connected to any endstop or probe. // Almost all printers will be using one per axis. Probes will use one or more of the // extra connectors. Leave undefined any used for non-endstop and non-probe purposes. #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG
Lógica de los finales de carrera (ENDSTOP_INVERTING)
Dependiendo del tipo de sensor o final de carrera que uses, la lógica será distinta. No tiene mayor misterio: déjalos todos en FALSE. Si alguno no funciona, cambia aquí la lógica (poniéndolo a TRUE). En mi caso, X e Y los tuve que poner en TRUE, como puedes ver.
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). #define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
Configurar los drivers (DRIVER_TYPE)
Configurar Marlin 2 con los drivers que tengas es imprescindible. No te preocupes: es un proceso sencillo.
Por defecto verás que todas las opciones vienen deshabilitadas. Activa las que correspondan a los drivers instalados en tu placa.
En mi impresora tengo tres motores en los tres ejes (X, Y, Z) y un solo motor para el extrusor, así que habilito las opciones necesarias. El primer extrusor siempre se denomina E0, como puedes comprobar.
Además de habilitar la opción, hay que indicar qué driver tienes montado. En mi caso, con DRV8825, se lo he indicado al compilador y listo.
En los comentarios puedes ver todos los tipos de drivers compatibles con Marlin 2: localiza el tuyo y cópialo tal cual aparece.
/** * Stepper Drivers * * These settings allow Marlin to tune stepper driver timing and enable advanced options for * stepper drivers that support them. You may also override timing options in Configuration_adv.h. * * A4988 is assumed for unspecified drivers. * * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01, * TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE, * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ #define X_DRIVER_TYPE DRV8825 #define Y_DRIVER_TYPE DRV8825 #define Z_DRIVER_TYPE DRV8825 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 #define E0_DRIVER_TYPE DRV8825 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988 //#define E5_DRIVER_TYPE A4988 //#define E6_DRIVER_TYPE A4988 //#define E7_DRIVER_TYPE A4988
Configuración de los pasos (DEFAULT_AXIS_STEPS_PER_UNIT)
En este apartado le indicamos a la impresora cuántos pasos se ejecutan por cada unidad de movimiento. Las unidades pueden estar en milímetros o pulgadas.
Si vas a usar pulgadas, debes activar INCH_MODE_SUPPORT. Nosotros no lo activamos porque trabajamos en milímetros e introducimos los pasos de cada eje y del extrusor.
Necesitas conocer los valores a introducir. Lo recomendable es sacarlos de un firmware ya existente para tu impresora (para ir sobre seguro).
Otra opción es buscarlos en Internet (algún usuario los habrá publicado), consultar foros, preguntar al fabricante o, como último recurso, calcularlos tú mismo como puedes ver en este vídeo.
/**
* Default Axis Steps Per Unit (steps/mm)
* Override with M92
* X, Y, Z, E0 [, E1[, E2...]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 160, 160, 800, 803 }
Ubicación sensor auto nivelación (NOZZLE_TO_PROBE_OFFSET)
Si usas un sensor de autonivelación (como es mi caso), debes indicarle la posición del sensor respecto al nozzle. El sensor siempre estará desplazado respecto al nozzle, y lo definimos como coordenadas en milímetros.
Mi sensor está 37 mm a la derecha del fusor y 2 mm más atrás. La configuración quedaría así:
/**
* Nozzle-to-Probe offsets { X, Y, Z }
*
* - Use a caliper or ruler to measure the distance from the tip of
* the Nozzle to the center-point of the Probe in the X and Y axes.
* - For the Z offset use your best known value and adjust at runtime.
* - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc.
*
* Assuming the typical work area orientation:
* - Probe to RIGHT of the Nozzle has a Positive X offset
* - Probe to LEFT of the Nozzle has a Negative X offset
* - Probe in BACK of the Nozzle has a Positive Y offset
* - Probe in FRONT of the Nozzle has a Negative Y offset
*
* Some examples:
* #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1"
* #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2"
* #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3"
* #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4"
*
* +-- BACK ---+
* | [+] |
* L | 1 | R <-- Example "1" (right+, back+)
* E | 2 | I <-- Example "2" ( left-, back+)
* F |[-] N [+]| G <-- Nozzle
* T | 3 | H <-- Example "3" (right+, front-)
* | 4 | T <-- Example "4" ( left-, front-)
* | [-] |
* O-- FRONT --+
*/
#define NOZZLE_TO_PROBE_OFFSET { 37, -2, 0 }
Velocidad desplazamiento nivelación (XY_PROBE_SPEED)
Define la velocidad a la que Marlin 2 mueve el sensor de autonivelación entre dos puntos de medición. Por defecto viene a 133*60 mm/min; podéis dejarlo así o subirlo, a vuestra discreción.
// X and Y axis travel speed (mm/min) between probes #define XY_PROBE_SPEED (133*60)
Invertir dirección de motores (INVERT_X_DIR)
Modificamos estos parámetros si, al hacer un HOME o al imprimir, alguno de los motores gira en la dirección incorrecta. Por defecto vienen todos en FALSE. En mi caso tuve que invertir la dirección de la cama (eje Y), como podéis ver a continuación.
Otra opción es invertir el cable de conexión del motor: como os resulte más cómodo.
// 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
Volumen de impresión (X_BED_SIZE & Y_BED_SIZE)
Aquí definimos las medidas exactas del volumen de impresión (cama). Mi impresora tiene una cama de 285 mm x 206 mm, así que la configuración quedaría así:
// The size of the print bed #define X_BED_SIZE 285 #define Y_BED_SIZE 206
Límites de movimiento (MIN_POS & MAX_POS)
Una vez definidas las medidas de la cama, configuramos en Marlin 2 los límites mínimos y máximos de movimiento.
Por defecto, en los mínimos, Marlin trae el valor 0, que no debemos modificar, ya que es el HOME. Para los máximos, Marlin usa directamente las medidas de la cama en X e Y (que ya habíamos dejado configuradas en el parámetro anterior).
Para terminar, en el eje Z debemos añadir la altura máxima de impresión de la máquina. En mi caso puedo imprimir unos 296 mm, así que introduzco ese valor.
// Travel limits (mm) after homing, corresponding to endstop positions. #define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 296
Restricciones de movimiento (MIN_SOFTWARE_ENDSTOPS)
Por seguridad, y para no dañar los componentes, Marlin 2 viene configurado por defecto para que no podamos superar los límites mínimos. Al llegar a un final de carrera o sensor, no permitirá avanzar más el motor, ni siquiera manualmente.
Aun así, como muchas otras cosas en Marlin 2.0.x, puedes deshabilitar ese límite si lo deseas. Es una opción que NO RECOMIENDO, pero que quería comentaros para conocer su existencia.
Yo personalmente suelo quitar el límite en el eje Z, pero como ya he comentado, salvo que sepas bien lo que haces, conviene dejar los valores que trae el firmware por defecto.
// Min software endstops constrain movement within minimum coordinate bounds #define MIN_SOFTWARE_ENDSTOPS #if ENABLED(MIN_SOFTWARE_ENDSTOPS) #define MIN_SOFTWARE_ENDSTOP_X #define MIN_SOFTWARE_ENDSTOP_Y #define MIN_SOFTWARE_ENDSTOP_Z #endif
Almacenamiento en EEPROM (EEPROM_SETTINGS)
Marlin permite cambiar la configuración de la impresora desde el propio display y guardar los cambios en la EEPROM.
Si quieres tener esa opción disponible, activa este parámetro en tu firmware.
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
Precalentamiento ABS/PLA (PREHEAT)
Como habrás visto si ya has trasteado tu impresora, Marlin te ofrece dos opciones iniciales para precalentar la impresora antes de imprimir. Puedes configurar las temperaturas disponibles para filamentos de ABS y PLA, aunque podrías añadir más si lo desearas.
Es muy útil, porque las temperaturas por defecto son mejorables. Yo personalmente uso estas configuraciones:
// Preheat Constants #define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 200 #define PREHEAT_1_TEMP_BED 60 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_TEMP_HOTEND 250 #define PREHEAT_2_TEMP_BED 100 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
Idioma de los menús (LCD_LANGUAGE)
Idioma que aparecerá en todos los menús del firmware Marlin 2 (display). El que más me convence es el español, así que es el que tengo seleccionado. Por defecto viene en inglés; probablemente quieras cambiarlo.
/**
* LCD LANGUAGE
*
* Select the language to display on the LCD. These languages are available:
*
* en, an, bg, ca, cz, da, de, el, el_gr, es, eu, fi, fr, gl, hr, it, jp_kana,
* ko_KR, nl, pl, pt, pt_br, ru, sk, tr, uk, vi, zh_CN, zh_TW, test
*
* :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek', 'el_gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ru':'Russian', 'sk':'Slovak', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)', 'test':'TEST' }
*/
#define LCD_LANGUAGE es
Acentos en pantallas de caracteres HD44780: si tienes una LCD básica de 20×4 o 16×2 (las pantallas azules o verdes más comunes), para que los acentos del español (á, é, í, ó, ú, ñ) se muestren correctamente necesitas definir además el charset adecuado:
#define DISPLAY_CHARSET_HD44780 WESTERN
Los valores disponibles son JAPANESE (más común en pantallas asiáticas), WESTERN (acentos europeos) y CYRILLIC (cirílico/ruso). Si no sabes cuál tiene tu pantalla, compila con LCD_LANGUAGE test y mira en la propia pantalla qué juego de caracteres se ve correctamente.
Multi-idioma con cambio en caliente (pantallas gráficas)
En pantallas gráficas con memoria suficiente (128×64 DOGLCD tipo RepRapDiscount Full Graphic, o pantallas TFT con emulación Marlin activada) es posible compilar el firmware con varios idiomas simultáneos y cambiar entre ellos en caliente mediante el comando G-code M414, sin recompilar.
Para activarlo, define los idiomas adicionales en Configuration.h:
#define LCD_LANGUAGE es // idioma principal — español #define LCD_LANGUAGE_2 en // segundo idioma — inglés #define LCD_LANGUAGE_3 de // tercer idioma — alemán (opcional)
Una vez instalado el firmware, cambia de idioma desde la consola serie o un script de inicio:
M414 S0 ; idioma 1 -> español (LCD_LANGUAGE) M414 S1 ; idioma 2 -> inglés (LCD_LANGUAGE_2) M414 S2 ; idioma 3 -> alemán (LCD_LANGUAGE_3)
El multi-idioma no está disponible en pantallas HD44780 básicas por limitaciones de memoria del controlador. Si tu pantalla no lo soporta, define solo LCD_LANGUAGE con el idioma deseado y recompila.
Soporte para SD Card (SDSUPPORT)
Es prácticamente imprescindible activar esta opción. Te permite cargar archivos directamente desde una tarjeta SD.
Aunque parezca mentira, viene desactivada por defecto. Necesitarás activarla, como en mi configuración.
/** * SD CARD * * SD Card support is disabled by default. If your controller has an SD slot, * you must uncomment the following option or it won't work. * */ #define SDSUPPORT
Simplificar menús (SLIM_LCD_MENUS)
Marlin te permite navegar por infinidad de menús en el display, hasta un punto que llega a ser agobiante (al menos para mí).
Muchos de estos parámetros deberían quedar configurados en el firmware, sin necesidad de tocarlos «al vuelo».
Para reducir los menús, Marlin ofrece el parámetro SLIM_LCD_MENUS. No solo simplifica los menús, sino que ahorra una cantidad de memoria nada despreciable. Te recomendamos activar esta opción.
/** * LCD Menu Items * * Disable all menus and only display the Status Screen, or * just remove some extraneous menu items to recover space. */ //#define NO_LCD_MENUS #define SLIM_LCD_MENUS
Tipo de display (LCD / Controller Selection)

Por último, llegamos a la configuración del display. Si echamos un vistazo al archivo Configuration.h veremos que hay infinidad de displays.
Puede parecer complicado, pero solo hay que localizar la descripción de tu pantalla LCD y descomentar la línea correspondiente.
Existen displays de texto, LCD gráficos, OLED y alguno más. Yo tengo uno gráfico llamado MKS MINI 12864 (foto arriba); para activarlo he descomentado la siguiente línea.
Si no encuentras el nombre de tu display, usa la función «Buscar» de Windows: es lo más rápido y sencillo.
// // MKS MINI12864 with graphic controller and SD support // https://reprap.org/wiki/MKS_MINI_12864 // #define MKS_MINI_12864
Un detalle a tener en cuenta: en algunos casos (como el mío) es necesario disponer de librerías externas para compilar el firmware con soporte a tu display. Es el caso del MKS MINI12864, que requiere buscar e instalar las librerías manualmente.
Si intentas compilarlo, Marlin te dará error e indicará qué librería necesitas instalar. En mi caso, por ejemplo, me pide la librería U8glib, veamos el error:
sketch\src\HAL\HAL_AVR\u8g_com_HAL_AVR_sw_spi.cpp:65:10: fatal error: U8glib.h:
No such file or directory
La solución es sencilla: ve al menú Herramientas -> Administrar bibliotecas… y haz clic. En el cuadro de búsqueda introduce U8glib y pulsa INTRO.
Aparecerán las librerías online disponibles para esta búsqueda; veremos que al final está la nuestra «U8glib by Oliver». Pulsa INSTALAR y listo.
Por último, la configuración de contraste del display no me convencía: se veía algo oscura al principio, así que decidí cambiarla.
Puedes modificar el contraste (poner la pantalla más clara u oscura) desde el propio display, pero prefiero dejarlo fijado en el firmware: no voy a tocarlo otra vez, y si reseteo la EEPROM no tendré que configurarlo de nuevo.
Para ello tuve que editar un archivo llamado «pins_RAMPS.h» localizado en la ruta \Marlin\src\pins\ramps\. Una vez editado, añadiremos la línea #define LCD_CONTRAST 150 tal y como podemos ver en las siguientes líneas:
#elif ENABLED(MINIPANEL) #define BEEPER_PIN 42 // not connected to a pin #define LCD_BACKLIGHT_PIN 65 // backlight LED on A11/D65 #define DOGLCD_A0 44 #define DOGLCD_CS 66 // GLCD features // Uncomment screen orientation //#define LCD_SCREEN_ROT_90 //#define LCD_SCREEN_ROT_180 //#define LCD_SCREEN_ROT_270 #define BTN_EN1 40 #define BTN_EN2 63 #define BTN_ENC 59 #define SD_DETECT_PIN 49 #define KILL_PIN 64 #define LCD_CONTRAST 150
Nivelación de la cama (BED_LEVELING)
Existen diversos métodos o funciones disponibles en Marlin 2 para ayudarnos con la auto-nivelación de nuestra cama. Vienen desactivadas por defecto en el firmware, así que deberemos activarlas para usarlas.
Explicarlas todas daría para un artículo entero, así que directamente os mostraré cómo nivelar la cama de dos formas distintas. La primera en el caso de que no dispongamos de un sensor de nivelación instalado y la segunda en el caso de que sí.
Para comenzar, y en ambos casos, debemos descomentar la función AUTO_BED_LEVELING_BILINEAR y después la función RESTORE_LEVELING_AFTER_G28, para que queden activas en nuestro firmware.
/** * Choose one of the options below to enable G29 Bed Leveling. The parameters * and behavior of G29 will change depending on your selection. * * If using a Probe for Z Homing, enable Z_SAFE_HOMING also! * * - AUTO_BED_LEVELING_3POINT * Probe 3 arbitrary points on the bed (that aren't collinear) * You specify the XY coordinates of all 3 points. * The result is a single tilted plane. Best for a flat bed. * * - AUTO_BED_LEVELING_LINEAR * Probe several points in a grid. * You specify the rectangle and the density of sample points. * The result is a single tilted plane. Best for a flat bed. * * - AUTO_BED_LEVELING_BILINEAR * Probe several points in a grid. * You specify the rectangle and the density of sample points. * The result is a mesh, best for large or uneven beds. * * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling) * A comprehensive bed leveling system combining the features and benefits * of other systems. UBL also includes integrated Mesh Generation, Mesh * Validation and Mesh Editing systems. * * - MESH_BED_LEVELING * Probe a grid manually * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.) * For machines without a probe, Mesh Bed Leveling provides a method to perform * leveling in steps so you can manually adjust the Z height at each grid-point. * With an LCD controller the process is guided step-by-step. */ //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR #define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING /** * Normally G28 leaves leveling disabled on completion. Enable * this option to have G28 restore the prior leveling state. */ #define RESTORE_LEVELING_AFTER_G28
De esta forma, nuestro sensor bajará en diversos puntos y creará una malla virtual con las diferentes alturas. Y como me gusta hacer siempre el HOME en el centro de la cama activo la opción Z_SAFE_HOMING.
#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28). #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28). #endif
Una vez configurado todo esto, aplica solamente la opción que necesites para tu firmware, opción 1 sin sensor u opción 2 con sensor. Activar las 2 no es necesario y puede darte problemas o fallos de compilación. Vamos a ello…
Opción 1: Configuración sin sensor (4 esquinas)
Esta configuración es la que vamos a aplicar si no tenemos en nuestro cabezal de impresión un sensor de nivelación. Primero le indicaremos a Marlin 2 que vamos a efectuar la nivelación sin disponer de dicho sensor.
/** * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe. * Use G29 repeatedly, adjusting the Z height at each point with movement commands * or (with LCD_BED_LEVELING) the LCD controller. */ #define PROBE_MANUALLY //#define MANUAL_PROBE_START_Z 0.2
Después indicaremos cuantos puntos de prueba (Probe points) deseamos que efectúe nuestra nivelación manual, así que modificaremos los parámetros GRID_MAX_POINTS. Para nivelar las 4 esquinas necesitaremos de 4 puntos, así que dejaremos la configuración de esta forma.
// Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 2 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Por último, y no menos importante, activaremos las funciones LCD_BED_LEVELING y LEVEL_BED_CORNERS. Esto creará en el display los menús oportunos para tal efecto.
/** * Add a bed leveling sub-menu for ABL or MBL. * Include a guided procedure if manual probing is enabled. */ #define LCD_BED_LEVELING #if ENABLED(LCD_BED_LEVELING) #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment //#define MESH_EDIT_MENU // Add a menu to edit mesh points #endif // Add a menu item to move between bed corners for manual bed adjustment #define LEVEL_BED_CORNERS
Opción 2: Configuración con sensor (BABYSTEPPING)
Esta es la configuración que utilizo en mi impresora con sensor de nivelación en el cabezal. En mi caso uso un sensor de infrarrojos, pero es aplicable a cualquier tipo de sensor (inductivo, capacitivo, IR, etc.).
Si dispones de un BLTouch, sí te recomiendo buscar un manual específico, ya que Marlin tiene funciones dedicadas para él.
En 3DWork tenemos un artículo completo sobre cómo configurarlo: Instalar y configurar BLTouch / 3DTouch en Marlin 2.0.x (MKS Gen, SKR, Anet A8, RAMPS)
Volviendo a la configuración: lo primero es indicarle a Marlin que disponemos de un sensor de autonivelación fijo. Para ello editamos la siguiente línea:
/** * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. * (e.g., an inductive probe or a nozzle-based probe-switch.) */ #define FIX_MOUNTED_PROBE
Después configuramos cuántos puntos de prueba (probe points) queremos que use la nivelación con sensor, así que modificaremos los parámetros GRID_MAX_POINTS.
Yo suelo efectuar 9 puntos de comprobación antes de cada impresión, así que dejo las opciones por defecto que son 3 por eje (3 x 3 = 9).
// Set the number of grid points per dimension. #define GRID_MAX_POINTS_X 3 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Después editaremos un nuevo archivo llamado configuration_adv.h. Se diferencia del primero en que ofrece opciones más detalladas, complementos y funciones experimentales o en desarrollo (como el BABYSTEPPING).

En mi impresora uso una función de nivelación de Marlin 2 llamada BABYSTEPPING. Esta función permite calibrar con un folio la altura del sensor de nivelación en el centro de la cama una sola vez.
Después, la impresora hará 9 puntos de prueba automáticamente al comenzar cada impresión. Así no tengo que ir esquina por esquina para calibrar la cama.
Por defecto viene desactivada, así que activamos BABYSTEPPING como muestro a continuación:
/** * Babystepping enables movement of the axes by tiny increments without changing * the current position values. This feature is used primarily to adjust the Z * axis in the first layer of a print in real-time. * * Warning: Does not respect endstops! */ #define BABYSTEPPING #if ENABLED(BABYSTEPPING) //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define BABYSTEP_WITHOUT_HOMING #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps #define BABYSTEP_MULTIPLICATOR_Z 20 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle. #if ENABLED(MOVE_Z_WHEN_IDLE) #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. #endif #endif //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 #define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #if ENABLED(BABYSTEP_ZPROBE_OFFSET) //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets #define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif
EXTRA: Trucos interesantes para Marlin
Visualizar tu malla en 3D

Desde Marlin 2.0.x es posible generar mallas 3D de la superficie de impresión sin necesidad de Octoprint ni de sus plugins.
Marlin genera un archivo que puedes modificar y cargar en OpenSCAD para visualizar nuestra malla en cualquier momento. Puedes leer el artículo completo en el siguiente enlace: Visualizar malla en 3D de nuestra superficie de impresión con Marlin 2.x (y sin Octoprint)
Instalar juegos en Marlin

Otro truco curioso de Marlin es poder activar una serie de juegos ocultos en el firmware. Necesitas una pantalla LCD gráfica y modificar algunos parámetros.
Tienes el artículo completo en el siguiente enlace: Habilitando juegos ocultos en Marlin 2.0.x para tu impresora 3D
Logotipo personalizado en Marlin

Desde la aparición de la versión 1.1.0 del firmware Marlin es relativamente sencillo añadir logotipos personalizados al firmware Marlin. Como es lógico, necesitas una pantalla LCD gráfica, generar el logotipo y preparar la imagen.
Tendrás que modificar algunos parámetros dentro del firmware. Puedes leer el artículo completo en el siguiente enlace: Crea tu propio logotipo personalizado de inicio en Marlin 2.0.x
Compilación final de Marlin con VSCode + PlatformIO + Auto Build Marlin

Hemos llegado al punto donde compilamos el firmware. Desde Marlin 2.x el método estándar de compilación es Visual Studio Code + PlatformIO + Auto Build Marlin: funciona igual en placas de 8 y 32 bits, detecta tu electrónica automáticamente y te ahorra editar platformio.ini a mano.
Si todavía no tienes el entorno preparado, revisa el apartado Procedimiento manual de esta misma guía, donde explicamos cómo instalar Python, Git, VSCode y las extensiones necesarias.
Auto Build Marlin: la extensión oficial del equipo Marlin
Auto Build Marlin es la extensión oficial del equipo de Marlin para Visual Studio Code. Es la pieza que hace la compilación realmente cómoda: detecta automáticamente la placa definida en MOTHERBOARD dentro de Configuration.h y te muestra los entornos disponibles. Ya no es necesario buscar y editar manualmente default_envs en platformio.ini.
- Instálala desde el marketplace de VSCode buscando Auto Build Marlin (publicador: MarlinFirmware) o desde su página: marketplace.visualstudio.com/items?itemName=MarlinFirmware.auto-build
- Detección automática de la placa: solo muestra los entornos compatibles con tu
MOTHERBOARD, sin tocarplatformio.ini - Botones directos desde el panel lateral: Build, Upload, Clean y Debug
- Configuration Editor (alpha): editor visual para
Configuration.hyConfiguration_adv.h. Haz clic derecho sobre cualquiera de los dos ficheros y selecciona Open With… → Config Editor para buscar y activar opciones sin tocar el código directamente
Pasos para compilar
- Abre Visual Studio Code y carga la carpeta de tu Marlin (Archivo → Abrir carpeta)
- Verifica que en
Marlin/Configuration.hla directiva#define MOTHERBOARDcoincide con tu electrónica. Si lo necesitas, ajústala - Haz clic en el icono Auto Build Marlin del menú lateral de VSCode (logo de Marlin). En el panel verás los entornos detectados para tu placa
- Pulsa Build en el entorno correspondiente y espera a que termine la compilación. El binario aparece en
.pio/build/<entorno>/firmware.bin(o.hexen placas de 8 bits) - Copia el fichero generado a la tarjeta SD (placas de 32 bits) o súbelo por USB con Upload (placas de 8 bits con bootloader)
Si prefieres no usar Auto Build Marlin, puedes compilar directamente con PlatformIO pulsando el icono ✓ (Build) en la barra azul inferior de VSCode, después de fijar default_envs en platformio.ini con el valor correcto para tu electrónica.
Subiendo Marlin a tu impresora
El proceso depende del tipo de electrónica:
- Placas de 32 bits (SKR, BTT, Creality 4.2.x, MKS Robin, etc.): copia el
firmware.bingenerado a la raíz de una tarjeta SD vacía, insértala en la impresora apagada y enciéndela. Tras unos segundos arranca con el nuevo firmware. Si todo va bien, el archivo se renombra a.CURen la SD (señal de que se aplicó correctamente) - Placas de 8 bits (Mega 2560, RAMPS, MKS GEN, etc.): conecta la impresora por USB al ordenador y usa el botón Upload de Auto Build Marlin o de PlatformIO. Si VSCode no detecta el puerto, asegúrate de tener instalados los drivers de la placa y de no tener Cura/PrusaSlicer abiertos (pueden bloquear el COM). Como alternativa, puedes subir el
.hexgenerado desde Cura o PrusaSlicer (ambos integran un actualizador de firmware)
Después de actualizar es muy aconsejable resetear la EEPROM lanzando M502 seguido de M500 (o desde la pantalla: Configuración → Restaurar y luego Configuración → Salvar EEPROM). Así te aseguras de no arrastrar valores incompatibles del firmware anterior.
Observaciones finales
Esperamos que esta guía Configurar Marlin 2.x desde cero te haya sido de ayuda. No obstante, como dijimos al principio, no pretende ser un manual exhaustivo, sino una sencilla introducción a él usando mi actual impresora como ejemplo.
La idea es ir ampliando el artículo poco a poco. Es posible que te encuentres con algún imprevisto al configurar Marlin 2.0.x para tu impresora.
Si es así, te agradeceríamos que lo compartieras con nosotros en los comentarios o en nuestro canal de Telegram.
Por último, si hay alguna errata en el artículo, te pedimos disculpas por adelantado. Configurar Marlin 2.0.x es bastante laborioso (que no es lo mismo que difícil).
Es muy posible que se nos haya pasado algún parámetro por alto (no hay nada más fácil que corregirlo en una edición posterior). No dudes en notificárnoslo en los comentarios.
Como siempre, os dejamos por aquí otros interesantes artículos de 3DWork:
- Postprocesado de piezas impresas en 3D (FDM) con resina SLA ¿Es posible?
- Soportes avanzados en Simplify3D: 6 trucos imprescindibles para mejorar tus soportes
- Wall-E: Crea tu propia réplica con Raspberry Pi, Arduino e impresión 3D
- Realiza fácilmente litofanías con tu impresora 3D en 3DWork.io
- Manual de Simplify3D: Todo lo que necesitas saber de él para empezar
- El formato STL está muerto, larga vida al formato 3MF
- Fabricar ojos completamente realistas con tu impresora 3D es posible
- ¿Qué es ChiTuBox y dónde descargar el software?
- Guía para convertir archivos GCODE a STL

























Excelente artículo!!! Lo seguí paso a paso para upgradear el marlin de mi impresora (un clon de Prusa MK2) sin problema. Mi sugerencia sería incluir en «Opción 2: Configuración con sensor» que hay que tambien descomentar «#define FIX_MOUNTED_PROBE» ya que si no da error al compilar. Gracias por el artículo, fué de mucha utilidad
Corregido y añadido «#define FIX_MOUNTED_PROBE»
Un saludo!
Lo recomiendo. Quien tenga cualquier duda con cualquier impresora 3D no saldrá defraudado. Despies de muchos dias liado con el marlin y sus versiones para compilar con arduino dando errores por fin he encontrado esta guia que siguiendola paso a paso ademas de comprender los parametro principales de marlin 2.0.4.4 en mi caso he compilado ¡¡¡¡ Sin Errores!!!!!! !!!!!!!!gracias 3dwork.io !!!!!!!!!
Muchas gracias por tu crítica Juan, celebro que te haya servido de ayuda.
Muchas gracias, una guia genial, me fue de gran ayuda.
Hola a todos. Ahora tenéis disponible en 3DWork.io una nueva aplicación denominada Marlin Builder. Con ella podréis configurar la última versión de Marlin es unos pocos minutos, completamente ONLINE y sin necesidad de editar una sola línea de código.
Esta disponible en el siguiente enlace: https://3dwork.io/marlin
Un saludo!
hola como funciona esa pagina no la entiendo muy bien
tuorial super facil de entender pero una duda el pid autotune sirve con el firmware original de la anet a8?…es que voy a ver si con eso a resurgir una A8M
Entiendo que si usas el firmware original ya vendrás esos parámetros configurados de fábrica, o al menos el fabricante debería introducir los correctos. Si cambias algo de la cama, es cuando deberás recalcularlos. Un saludo!
Muy buen artículo, perfecto para quienes estén iniciándose,me sirvió de gran ayuda.
Muchas gracias por tu comentario, no dudes en visitarnos en nuestro canal de Telegram!
Un saludo!
Hola! Muy buena la guía, lo único me quedo una duda con el tema de calibración cama (Opción 1: Configuración sin sensor (4 esquinas)) se debe poner alguna medida? es que no quiero que se mueva hasta las puntas de la cama, si no unos milímetros antes del final de la cama. Desde ya muchas gracias. Abel
Creo que es LEVEL_CORNERS_INSET_LFRB, que se encuentra en la linea 1312 de la versión 2.0.4.4, pero no lo he probado. Confirma si te funcionó.
Un saludo!
hola me sale este error… Error compilando para la tarjeta Arduino Mega or Mega 2560. alguien sabe porque? esta bien configurado en herramientas, la placa y el puerto…
saludos!
tengo el mismo error …
Hola Israel y Anónimo, sin más información sobre los errores de compilación me es imposible ayudaros. Porque no os unís a nuestro canal de WhatsApp? Allí los compañeros o yo si me encuentro disponible seguro que podremos ayudar. Os dejo el enlace por aquí:
https://chat.whatsapp.com/HuBLrVrFBINAm0i0v27i2O
Marlin (en concreto SanityCheck.h) te indica que no puedes tener mas de un sensor activado. Has de elegir solo entre una de estas opciones (PROBE_MANUALLY, SENSORLESS_PROBING, BLTOUCH, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo). Revisa si tienes más de una activada en tu source. Como alternativa también puedes usar nuestro generador de firmware Marlin, no tendrás este problema (https://3dwork.io/marlin
Era el anonimo, Lo solucione usando la version de arduino beta 1.9 , me sirvio mucho la guia , se agradece mucho!! .. por fin termine de armar mi 2da impresora esta la arme yo desde cero !
la anterior me la compre ya armada , hace 1 año y medio que estoy en este mundillo que me enloquecio , Nunca se rindan gente, es frustrante de momentos pero cuando la ves funcionando perfectamente te sentis muy orgulloso
Hola Alejandro, celebro ver que has podido configurarlo correctamente.
Todo sale adelante con un poquito de tiempo y paciencia 🙂
Un saludo!
buenos dias tengo la misma pantalla pero la version de marlin que tengo la ultima, no me sale esa pantalla para configurar que puedo hacer?
Me he descargado el último firmware disponible de Marlin (v2.0.5.2). La pantalla la tienes (si es exactamente como la mía) en la linea de código 1969:
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
//
//#define MKS_MINI_12864
Simplemente debes descomentarla (quitar las dos barritas de delante).
Un saludo!
No me queda muy claro el error, pero tiene pinta de que has modificado mal alguna línea. Podrías revisar que está todo bien comentado o descomentado correctamente? Revisa la zona de código donde sale esto «/* Persistent storage with M500 and M501*/». Un saludo!
estoy volviendo a configurarlo todo, compilando cada vez que cambio algo, y parece que el fallo está cuando activo #define eeprom settings. No sé por qué será, pero bueno, si le pasa a alguien más ya sabe por qué es. Como tampoco es algo que me sea imprescindible, lo dejaré desactivado y ya está. Muchas gracias
Simplemente no podrás almacenar datos en la eeprom, como el desfase si usas sensor de autonivelación, contraste del LCD, y cosillas así. Seguro que no tienes alguna errata en esa línea y lo descomentas correctamente?
Si es que en esa línea solo pone lo que te he dicho y después un comentario con lo de m500 y 501, el cual dejo igual, así que… he probado incluso a bajar el comentario a la siguiente línea por si fuese problema de eso, pero hace lo mismo
Hola de nuevo, como no te pasas por el canal, y le echamos un ojo más detenidamente? Es muy raro que eso no compile, quizá yo o algún compañero puede arrojar algo de luz …
hola a todos mi nombre es santi,y tengo el siguiente problema y es con la configuración del autolevel en la versión 2.0.5 y es que el eje y se me queda como a 8 cm de donde tendría que empezar a medir,ya intente todo y no hay manera
En Bed leveling configura esta parte
// Set the boundaries for probing (where the probe can reach).
#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 270
#define FRONT_PROBE_BED_POSITION 20
#define BACK_PROBE_BED_POSITION 270
los valores tenes que ponerlos para que el sensor quede dentro de la cama
Hola a todos, he armado una impreora desde cero con mega 2560, ramps1.4 y marlin 2.0.5.2. la guía fue mi salvación!!! es excelente y totalmente recomendable pero (siempre hay un pero), tengo dos problemas a saber:
1) Al igual que David cuando activo la eeprom me da error de compilacion, ya miraré con mas detenimiento.
2) la cama de mi impresora es de aluminio de 500×450 mm y es indispensable el autoleveling para que corrija las variaciones en la superficie, tengo un sensor inductivo que funciona correctamente ya que al home (g28) lo ejecuta correctamente inclusive funciona el offset tambien correctamente. cuando ejecuto el autoleveling (g29) el nozzle se va a x=0; y=0 y cuando el sensor detecta la cama, no se mueve mas, tira un mensaje en el debbug «slow probe fail» error: probing failed.
desde ya muchisimas gracias salvarnos a todos !!!
Gran artículo, y más para un súper novato como yo, que se me ha metido en la cabeza, hacer una impresora por mis medios y desde 0.
Sencillo y conciso, como debe ser una guía, ya tendremos tiempo de complicarlo hasta el infinito.
Tengo una duda, cuando descargo el Marlin de la página de Marlon solo me descarga los dos ficheros que aquí indicas, sin embargo con el Marlin builder, se descarga aparte de esos dos mogollón de aechivos y carpetas; esas librerías no se descargan desde la página de Marlin?
Gran trabajo.
Hola, eso es porque apretas el enlace «View / Download» que pertenece a las «CONFIGURATIONS». Tienes que darle a descargar junto al enlace de su izquierda, denominado «2.0.x.zip» que es el de «DOWNLOAD». Un saludo!
Joder, menos mal que no era un león, jajajajaj
Gracias
Y que lo digas 😀
Gran explicación para novatos, a mi me ha surgido un problema con mi CR10S, cuando hago homming me da fallo, os pongo el enlace del vídeo, no sé por que me pasa dicho problema.
https://drive.google.com/file/d/1F57RPgV9TrdRtmaD9ppIo7H8Wa3WXv61/view?usp=sharing
Revisa si tienes bien configurado el sensor en el eje Z. Si puedes comprueba el estado y lógica de tus finales de carrera con el comando GCODE M119 (puedes conectar la impresora al ordenador con Repetier o Pronterface) y ver si funciona correctamente. Un saludo!
lo veo todo correcto y he probado con el pronterface y si actúan bien con el código M119, la lógica la veo bien
// Mechanical endstop with COM to ground and NC to Signal uses «false» here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
Puedo mover sin problema pero el problema es cuando le doy a homming, ya sea para todos los ejes o solo para 1 eje … 🙁
Pero los has probado en real, para saber que no está dañado? Puedes tener lo que quieras en el firmware pero si se encuentra dañado físicamente vas a verlo con pronterface o repetier fácilmente. Un saludo!
si si, lo he hecho con pronterface, he pulsado los finales de carrera
SENDING:M119
Reporting endstop status
x_min: TRIGGERED
y_min: TRIGGERED
z_min: TRIGGERED
filament: TRIGGERED
ok P15 B3
Los he pulsado varias veces y probado, incluso a ver que pasaba si pulsados todos a ver como hacia el homing …
Estaría bueno que hagas otro grupo de WhatsApp por qué está lleno el que dejaste acá para darnos una mano se ve que la tenes muy clara te dejo mí contacto soy de argentina por si haces el grupo +5492236696265 gracias
Hola,
Crear varios canales y segmentar la comunidad no me parece buena idea. De todas formas, porque no instalas Telegram en tu móvil? Es muy sencillo y tenemos allí creado un canal sin límite alguno, te dejo el enlace:
https://t.me/joinchat/FzEj0FezDV3S8sfJeVqCWg
Un saludo!
Hola, mi nombre es Juanjo. Ante todo agradecer el gran aporte en cuanto al tutoría. porque. me ha echo entender algún concepto de que desconocía. Querinas comentar un erro que me ha surgido al actualizar Marlin la aversión 1.19 a la 20.0.5 y es que el BLTouch no me detecta la base. es decir no actúa como endstop. en cuestión de cableado no he tocado nada. Por lo cual si con la versión antigua funciona es tema de Marlin, he comprobado si hay algún endstop invertido en diferencia con la versión que vieja y tengo todo puesto tal cual estaba. así que ya no se por donde seguir. he probado a cambiar varias cosas. volver a compilar desde cero, incluso desde Marlin builder (que es maravilloso!!) y nada de nada. SI Vuelvo a la versión anterior todo vuelve a funcionar. Pude ser que se tenga que configurar algo en Configuration_adv.h ?
Un saludo
Hola,
En principio si tienes las mismas opciones activadas en ambos firmware (viejo y nuevo), debería funcionar sin problema alguno. No obstante, hace algún tiempo preparé un artículo sobre cómo configurar BLTouch. Revísalo y compara si todas las que tienes activadas son las que aparecen en el artículo, que es como yo configuré el mío y funciona sin problema alguno. Aqui tienes el enlace: https://3dwork.io/configurar-bltouch-en-marlin
Un saludo!
Hola,
Ya lo revisé, antes de preguntar intenté por todos los medios solucionarlo… pero sin éxito.
Seguiré repasando a ver dónde puede estar el fallo, por que seguro que es alguna tontería que estoy paso por alto. He pasado como 4 veces del firmware nuevo al viejo y con el viejo no hay problema alguno. Incluso comparado los parámetros de vuestros tutoriales y la configuración que especifica el fabricante de BLTouch tal y com hice en su día.
Cuando de con la tecla, dejare escrito cual fue el problema por si pude servir de ayuda para alguien otro día…
Y por cierto, perdón por las faltas de ortografía en la pregunta anterior, pero tenia al peke de 2 años encima y escribir me resultó mas difícil que compilar Marlin con los ojos vendados jajajaja
Un saludo
Finalmente encontre el problema. Ha sido mas bien un fallo de en mi memoria que de Marlin…Resulta que mi placa es una OVM20 lite de Staticboards, la cual he de decir que funciona de maravilla. La cuestión es que la placa no lleva un pin concreto para conectar el BLTouch y que en su día configure conectando los 5v+ en el pin de x_max ya que no lo uso. Por consiguiente hay que especificar en Marlin este parámetro: Servo0_pin 2.
2 en mi caso, que es donde esta conectado. El lio de todo esto ha sido que yo trasladaba todos los parámetros de configuration.h de Marlin 1.19 a Marlin 2.0. con el fallo de que en las versiones anteriores había mas archivos para configurar. En concreto «pins ramps.h» que es donde se asignaba el pin en donde se conecta BLTouch en el caso de mi placa. Al no venir esa configuración en Marlin 2.0…. Me lo pase por alto volviéndome loco complicando una y otra vez hasta que vi la luz y me ilumine!!!!!
Resumiendo…. en configuration.h tenia que poner
#define BLTOUCH
#define SERVO0_PIN 2
Espero que sirva de ayuda para alguien.
Y de paso volver ha agradecer a Peter el gran aporte con esta guía que ayuda a despejar más de una duda.
Un saludo.
Buenas tardes Peter,
Una guía buenisima que ha sido de gran ayuda para poner un poco en situación alguien tan verde como yo. Tengo un un par de dudas a ver si me `pudieras echar un capote. ¿Qué linea/s tendría que tocar para anular el sensor inductivo de mi hephestos 2 (placa zum mega 3D) y sustituirlo por un final de carrera de pulsador para el eje Z? Y una vez hecho esto, ¿Cómo subir el Marlin modificado a mi placa? Porque en arduino no aparece mi placa. Mil gracias de antemano, haces una gran labor. Saludos.
Gracias Peter por la guía y por el grupo de whatsapp, me ha ayudado esta guía para instalar por fin el marlin en mi anet A8
Al enviar el comando M303 me da el siguiente error:
13:40:53.600 : N208 M303 E-1 C8 S90*113
13:40:53.612 : PID Autotune failed! Bad extruder number
¿Alguna idea?
SI TENES UN SOLO EXTRUSOR NO PONGAS E-1 PONE E0
Excelente !!!
Mil Gracias.
Gracias por el comentario!
Hola, gran tutorial! Muchas gracias! Tengo una duda, cuando descargue el firmware original de mi impresora no solo venian el configuration.h y el configuration_adv.H sino que ademas habia muchisimos ficheros mas. Mi duda es, son necesarios el resto de los ficheros? porque en todos los tutoriales de actualizar Marlin veo que solo se usan los dos que mencione al principio y se actualiza bien de hehco, pero para que sirven todos los demas? . Yo ya actualice sin problemas, pero me quedo esa duda de no saber si al subir sin los demas ficheros puedo estar ocasionando algun problema que aun no aparecio. Muiichas gracias!
Estos dos ficheros simplemente son los que de usan para la configuración del firmware, todos los demás conforman el firmware al completo, y sin ellos no funcionará. En realidad esos ficheros no se suben a la impresora, sino que definen cómo compilar el firmware y que parámetros utilizar durante el mismo proceso. Muchas gracias por tu comentario, un saludo!
Ah, perfecto, yo pense que subian a la impresora. O sea que si me bajo los dos Config con los parametros ya seteados para mi impresora es suficiente digamos, no es que necesito de los demas para hacer la compilacion de nuevo..
Bueno, gracias por la aclaracion!!! Saludos
Hola, yo descargué el firmware preconfigurado y tengo una duda sobre los ficheros configuration.h y configuration_adv.h, realmente llegué a esta página porque al usar por primera vez mi Artillery Genius, me di cuenta que no es compatible con los comandos G2/G3 que genera el plugin Arc Welder para Cura, me aparece un error y simplemente no funciona bien, extruye en exceso el filamento. Investigando veo que de fábrica el firmware tiene desactivado los arcs, he aquí el problema.
Casualmente analizando los archivos mencionados al inicio, veo que el configuration_adv.h es el único que tiene activado los arcos, mi duda es qué es lo que se sube a la impresora, supongo que sube el configuration.h y el otro asumo que es para usuarios avanzados, soy un total novato en esto, ¿qué tengo que hacer para que la actualización del firmware ya tenga activados los arcos? ¿copiar solo la porción de código que los activa y pegarla en el configuration.h?
Tengo 3 impresoras, una FLSUN QQS PRO, Ender 5 y la nueva Genius, descubrí el Plugin Arc Welder por un video que vi hace semanas, realmente muchos lo ven como algo innecesario (he visto comentarios en Reddit) pero en la práctica para mí ha sido fantástico, hay un video en YouTube que empieza a hacerse viral donde un tipo habla sobre esto (en inglés) https://www.youtube.com/watch?v=18uYYXecH5g&t=1s , pasé de imprimir tazas con imperfecciones en las paredes a tazas prácticamente perfectas solo activando Arc Welder e incluso aumentando la velocidad de impresión, sola la Genius no es compatible de fábrica, las otras dos impresoras si con todo y que tienen una versión antigua de Marlin.
El movimiento que hace para crear círculos o arcos en el caso de la Genius, tiene «micro pausas» debido al exceso de instrucciones que debe procesar por segundo en objetos con mallas complejas, esto me pasaba con la FLSUN pero al activar Arc Welder se solucionó, cabe señalar que los ficheros de gcode disminuyen en tamaño hasta en un 80% en algunos casos.
Esta imagen de la página de Octoprint lo dice todo:
https://plugins.octoprint.org/assets/img/plugins/arc_welder/gcode_cylinder_before_after.png
Esos micro segmentos son los que normalmente imprimen todas las impresoras 3D.
Espero puedas guiarme solo para eso de la activación de los arcos.
Gracias.
Estimados en la configuración del PID TUNNING estaría bueno que agreguen los comandos para aquellos que tienen mas de un extrusor. Por otra parte el comando que ponen para obtener los parametros de la cama caliente en mi caso me dio error el que ustedes pusieron en el foro, en cambio utilicé el comando M303 E-1 S60 C8 y me resultó.
Saludos
Uffff.
Sin palabras el nivel de esta guía… como muchos lo dicen acá, especial para novatos y sobre todo para aquellos que nos aventuramos a empezar de cero. Empezar a entender en que nos estamos metiendo es fundamental.
En verdad gracias.
Y ni hablar de la aplicación online https://3dwork.io/marlin
Espectacular!!!
Gracias por tus palabras Oscar, se agradecen 🙂
Un saludo!
HOLA BUENAS TARDES QUISIERA CONFIGURAR CORRECTAMENTE MI IMPRESORA 3D TIPO DELTA EL MODELO ES HE3D K280 ME DA ERROR CON EL CODIGO QUE TRAE POR DEFECTO, SIGO TODOS LOS PASOS AQUI MENCIONADO PERO ALA HORA DE CALIBRAR POR EJEMPLO LA CALIBRACIÓN DELTA HACE 2 ITERACIONES Y ME DA ERROR CUANDO SUBE A HACER EL HOMMING
Hola Wilbert,
Lamentablemente no he tenido la oportunidad de configurar ni utilizar una impresora 3D Delta, siento de veras no poder ayudarte ya que no tengo apenas experiencia.
Un saludo!
Una guía estupenda para novatos es código como yo y ue nos hemos animado a meterle mano al Marlon para poder implementar mejoras a nuestras máquinas.
Gracias Peter por dedicar tiempo a estos tuto
Muchas gracias por tu comentario Jaime, se agradece.
Un saludo!
Una guía perfecta y comprensible,muy bien explicada,se agradece mucho
Gracias David!
Como se maneja el display,o tengo en español,y no me aclaroAnet a8
Lo siento pero no te entiendo. ¿A qué te refieres con que no sabes manejar el display?
Un saludo!
Hola buenas, me llamo Juan y me acaban de dejar una zonestar 3d para ponerla a punto. le cambiado la tarjeta y le metido nuevos controladores tmc2208. En la configuaración de Marlin 2.0 ya parece que e conseguido que reconozca estos tmc2208.
Ahora me surge el problema de que la pantalla no se ve es una lcd 12864 B V2. E probado varias configuraciones…descomentar, comentar…pero nada. La pantalla se que funciona, porque le metido el programa original y funciona, pero quiero que vaya con Marlin 2.0.
E descomentado la línea : #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Le metido incluso estas : #define ST7920_DELAY_1 DELAY_NS(0)
#define ST7920_DELAY_2 DELAY_NS(250)
#define ST7920_DELAY_2 DELAY_NS(250)
Muchas gracias de ante mano, un saludo.
En este video:
https://youtu.be/tXRRK4562I8
Al compeñero le funciona añadiendo la 2ª linea, pero con delay 400…:
#define ST7920_DELAY_2 DELAY_NS(400)
Segun comenta, fué subiendo el valor de 50 en 50, y con 400 le funcionó
hola en la ender 3 pro, habia una opcion de cambio de filamento para poder usar es aopcion y cambiar de color por ej , ahora instale una skr mini 1.2 y no tiene dicha opcion y no la veo en el config q comando debería usar o de q forma habilitarlo? gracias
Hola, me podrías pasar si no es molestia algun contacto personal tuyo? tengo varios problemas al tratar de compilar el firmware.
Muy buena la guía pero esto no compila. No hay manera de compilar el Marlin 2.0.
Hola Arsenic,
Indica el error que te aparece, o si lo prefieres únete a nuestro canal de telegram en https://t.me/trastornados, seguro que algún compañero (o yo mismo si me encuentro disponible) podrá ayudarte.
Un saludo!
increible guia, me ha servido de mucho, haber si haceis alguna mas pro sobre como configurar mas opciones de marlin
Hola Tony,
Tengo pendiente revisar este mismo artículo y completarlo con opciones más avanzadas, para poder cubrir diferentes aspectos no reseñados aún. Lo tengo en hoja de ruta, en cuanto pueda lo realizaré.
Un saludo y muchas gracias por tus palabras,
Peter
hola, excelente guia para todos los nuevos, como yo, en el mundo de la impresion 3D. ahora mi problema para saber si pueden ayudarme un poco.
Con Arduino no compila, recibo este error: avr-gcc: error: CreateProcess: No such file or directory
exit status 1
Error compilando para la tarjeta Arduino Mega or Mega 2560.
Con Visual studio code, compila sin error, pero al querer subirlo obtengo el sig error:
avrdude: ser_open(): can’t open device «\\.\COM4»: Acceso denegado.
avrdude: ser_drain(): read error: Controlador no válido.
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: ser_recv(): read error: Controlador no válido.
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail
avrdude: stk500_send(): failed to send command to serial port
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude done. Thank you.
*** [upload] Error 1
gracias
Justo lo que estaba buscando, necesito poner una skr e3 dip v1.1 en una anet a8 con tmc2885 y estaba viendo como le iba a hacer, ahora mismo leo todo.
Hola. Estoy intentando instalar Marlin 2.0 en mi Anet a6, empleando IDE Arduino 1.8.5 y a la hora de compilar me sale el siguiente error:
Arduino:1.8.5 (Windows 10), Tarjeta:»Anet V1.0″
sketch\src\lcd\extui\nextion\nextion_extui.cpp:29:10: fatal error: ../../inc/MarlinConfigPre.h: No such file or directory
#include «../../inc/MarlinConfigPre.h»
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Error compilando para la tarjeta Anet V1.0.
Este reporte podría tener más información con
«Mostrar salida detallada durante la compilación»
opción habilitada en Archivo -> Preferencias.
Podria ayudarme alguien a solucionarlo
Excelente artículo. Estoy intentando instalar Marlin 2.0 en mi anet a6 con Arduino 1.8.5 y a la hora de compilar me sale el siguiente error:
Arduino:1.8.5 (Windows 10), Tarjeta:»Anet V1.0″
sketch\src\lcd\extui\nextion\nextion_extui.cpp:29:10: fatal error: ../../inc/MarlinConfigPre.h: No such file or directory
#include «../../inc/MarlinConfigPre.h»
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Error compilando para la tarjeta Anet V1.0.
Este reporte podría tener más información con
«Mostrar salida detallada durante la compilación»
opción habilitada en Archivo -> Preferencias.
Alguien me podría ayudar ?. Gracias . Un saludo.
Excelente articulo!
Una consulta! Tengo mi Anet A8 que le instale Marlin 2.0.9, antes el ventilador de capa funcionaba bien de manera correcta, pero desde que instale Marlin, lo debo hacer de manera manual, aunque desde el laminador ya este configurado como encendido… tienen idea que podria ser? o que faltaria configurar????
Hola, al intentar poner un single nozzle con coble extrusor, independientemente de que lo compile con el programa arduino, o con el visual studio core, siempre da error de compilacion, aunque siga todos los pasos que indican las web. alguien me puede echar una mano?
Gracias por adelantado por la informacion.
Gracias por desasnarme con el Marlin.
Ahora, después de programar mi placa, quisiera saber como activar la detección del FAULT de los drivers de motor.
En mi caso se calienta y entra en fallo. Tengo que esperar que se enfrie para poder continuar imprimiento, si me doy cuenta.
Busco poder parar la impresión ante una señal de FAULT y un tiempo despues de que desaparezca, reanudarla.
¿Es posible esto?
Hola MAC, que sepamos lo que dices no es posible ya que cuando entra en un fallo de sistema detiene la operativa de la impresora. Te aconsejaríamos que revisaras la ventilación de refrigeración de los drivers sean los adecuados además de usar el vref correcto para tus motores para evitar esos fallos que comentas.
Hola buenas.Gracias por el currazo…soy nuevo no lo siguiente..y estoy modificando algunas cosillas en mi ender 5 pro..me da error compilando para tarjeta arduino mega….el fallo es….que no se que placa y que procesador trae la ender 5 pro…de base…alguien me los puede facilitar????Gracias a todos
Hola Roberto, te aconsejaría generar el firmware tal como sugerimos en el articulo desde el generador online. En todo caso la Ender 5 Pro puede llevar 3 placas diferentes, para ello deberias abrir la electrónica y asegurarte cual es tu version ya que hay diferencias importantes..
* la V1… #define MOTHERBOARD BOARD_MELZI_CREALITY … env:melzi_optiboot_optimized env:melzi_optiboot env:melzi_optimized env:melzi
* la V4.2.2… #define MOTHERBOARD BOARD_CREALITY_V4 … env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
* la V4.2.7… #define MOTHERBOARD BOARD_CREALITY_V427 … env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
(version de placa…definicion MOTHERBOARD en Marlin… definicion environment en Platformio.ini)
hola tengo una idea-former 3d pro y en la seccion de motores ( estoy sacando los datos del antiguo marlin que traia ) no hay driver instalado,puede ser eso
//#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988
//#define Z_DRIVER_TYPE A4988
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define E0_DRIVER_TYPE A4988
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
asi esta configurado de serie
Muy buena guía, cuando se anula una impresión quiero que suba el cabezal ya que me choca con unos clips. donde debería agregar o modificar el código.?
Buenas. Os quiero hacer una pregunta. Tengo una BQ i3 hephestos con ramps y marlin y le quiero activar la cama caliente, se que en el marlin he de «descomentar» esos campos pero, ¿como le pongo que caliente hasta 60º? cuando llega a esa temperatura ¿deja de calentar por si sola? ¿como configuro que deje de calentar al cabo de una serie de capas ya impresas?
Hola David, no se si tu duda es de hace tiempo pero te respondo. La temperatura la tendrás que configurar a través de tu delaminador igual que si quieres que se apague la cama en algún momento de la impresión aunque yo no te lo recomiendo puede que se te empiecen a despegar las capas y pierdas la pieza.
Hola, estoy intentando renovar la electrónica de mi impresora y he seguido todo el proceso pero tengo un fallo desconocido al compilar a traves de platformio. El fallo sale al final. He probado a desconectar el antivirus y sigue igual. Al ser fallo desconocido no me indica donde está el problema. Copio aqui el texto del fallo:
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\LPC1768\firmware.elf] Error 1
Se agradecería la ayuda
Hola, tengo el mismo problema. ¿Encontraste la solución?
Dado que el error que muestras es muy genérico te aconsejaría que te conectes a nuestra comunidad de Telegram y aportes más información para que se te pueda dar ayuda.
Hi, in dependency graph it was found 6 libraries and import only 3 of them. It cannot import HID, EEPROM and SoftwareSerial. How can I fix it?
esta configuracion sirve para una placa MKS GEN L V1.O porque tengo una impresora flsuni3
excelente tutorial pero aun no puedo arreglar el mio aplana la mesa en todas las posiciones no se como solucionarlo estoy usando marlin 2.1.2.1 con arduino mega y rampas 1.4
This is a great guide! I’m a beginner with Marlin and this was really helpful.
This is a great guide! I’m a beginner with Marlin and this was really helpful.
Hola, intento reanudar una impresión en una Anet et 4, estimada para 25 horas y que ya llevaba 9. Y también aprender a hacerlo por si puedo rescatar otras piezas en el futuro. La idea básica es evitar el home inicial y hacer un home x,y con el cabezal alto, luego llevarlo a 10,10 luego hacer el home z ahí donde no hay pieza en progreso de impresión y luego avanzar con el programa donde se cortó.
Pero la pregunta es CÓMO PUEDO, de la manera más simple posible, DESHABILITAR EL SAFE HOME que viene el el firmware, pues eso me da al traste con mi intento.
Ya en más detalle sería así:
Tengo una
impresión estimada de 25 horas, lleva 9 horas cuando
me percato de que va mal. Está imprimiendo un
soporte con agujeros y así no va a poder terminar bien
la pieza. El problema es que si empiezo de cero, nada
me garantiza que no falle de nuevo.
VELOCIDAD MÁXIMA
Luego de muchas pruebas identifiqué que parece ser
que mi Anet ET4, tiene problemas al intentar extruír a
más de 50 mm/s. Limitando esa velocidad, por ejemplo
en los rellenos, donde el Cura le asigna 64 y hasta 80,
deja de fallar. Es decir a alta velocidad termina
enfriándose el cabezal caliente, (yanquificado es
‘hotend’) no alcanza a fundirlo y se atora el filamento.
AGUJEROS
No sé debido a qué, hubo unas zonas del soporte que
eran agujeros. Entonces puse pausa a la impresión y
decidí tapar los agujeros con resina de esa baratísima
que parece plastilina y acá se llama plasti-loka, que se
encuentra en cualquier papelería o tlapalería. Se usa
agua para amasar y que no se pegue en los dedos,
pero en particular para que quede bastante blanda, de
forma que alisé con la navaja de un cutter para que
tuviese la misma altura que la pieza. Puede esperarse
una media hora para que endurezca un poco y seguir
imprimiendo. También existen los semejantes de
curado en 5 minutos. Ahora aquí viene lo bueno,
¿Como continuar la impresión? También he de decir
que primero puse la pausa del programa de la
impresora, y no sé si se agotó un tiempo de espera o
qué pasó que cuando volteé a ver, en lugar de estar en
pausa, para continuar donde se quedó, ya estaba fuera
de la rutina de impresión, como si acabara de prender
la impresora, así que eso lleva a ubicar el punto en que
se quedó el programa.
PARA CONTINUAR
Teniendo una pieza más o menos circular (se adjunta
foto), de 15.3 mm de altura, los problemas a resolver
son 1. Saber la altura 2. Recortar el programa. 2.a
Hacer home sin que choque 2.b Levantar Z y continuar.
Para lograrlo, le pregunté al famoso chatgtp, y me dió
la solución al punto crítico: G28 (home) puede también
hacer home de un solo eje. Así que para ello:
ALTURA CON UN CALIBRADOR ELECTRÓNICO
Antes llamados vernier o pie de rey, estos aparatejos
hoy son muy baratos, acá en Mx hay como de 7 dlls.
Se toman varias medidas y se promedian. Si no sabe
usarlos, habrá en internet un tutorial para ello y da
precisión en centésimas de milímetro. Así que sobra
para determinar la capa en la que iba la impresión.
LOCALIZAR EL PUNTO DEL PROGRAMA Y BORRAR
LO YA IMPRESO
Sabiendo la altura, es muy fácil, en un block de notas
(notepad) o un editor de texto, pone el menú edición-
buscar y escribe, en este caso «Z15.» (sin comillas) y
buscando el siguiente hacia abajo encuentra uno la
medida que coincida con la capa, el calibrador me dio
15.36, así que la búsqueda me lleva a Z15.3, lo que
considerando la incertidumbre de la medida, coincide
con lo que estoy requiriendo. Entonces, se borra todo
el programa, desde antes de eso hasta el principio,
exceptuando las instrucciones que necesitamos para
que opere la impresora, es decir, las de calentamiento
de la cama y espera (en mi caso 60 grados cama)
M190 S60[font=’Söhne Mono’, Monaco, ‘Andale Mono’,
‘Ubuntu Mono’, monospace]S [/font]y la de
calentamiento del extrusor a 205 grados (PLA) M104
S205, que sitúan las temperaturas y esperan a que se
logren para continuar. Obviamente debe evitarse un
G28, así tal cual.
SITUAR EXTRUSION
Hay un problema, que el programa de impresión hecho
por Cura, maneja la extrusión en términos absolutos
(M82), así que al no ser una medida incremental, si le
decimos que use el dato que ya tenía donde se quedó,
va a tratar de extruír todo el material usado en esas
casi 9 horas. Por tanto, se sitúa el punto en que se
encuentra ‘el eje E’ que es el extrusor, o como dice
chatgtp: Adjust the E-value (extruder value) to match
the last recorded E-value when the print was
interrupted. In your case, you mentioned that you need
to set the extruder value to E3353.07582, which is the
point where the print was stopped. Entonces, cuando
encuentre el siguiente dato de extrusión, unas décimas
de milímetro más que esta medida, entenderá que
deberá enviar sólo esa pequeña cantidad. Es decir,
llevaba 3.3 metros impresos, que es lo de menos, pero
el tiempo no es lo de menos. (Esto le puede salvar el
cuello, es decir, el examen o el trabajo a más de uno,
pues volver a correr 9 horas puede ser ‘de vida o
muerte’ en esos casos)
HOME SIN CHOCAR LA PIEZA Y CONTINUAR
El código continuará situando el cabezal caliente, o
yanquificado el ‘hotend’
1. Situar Cabezal en Z mayor que la altura actual, por
ejemplo, Z15.5 Luego hacer home sólo en X,Y con
G28X y G28Y, luego situar el cabezal en G0 X10 Y10,
LUGAR DONDE NO VA A CHOCAR el cabezal con la
pieza que tengo. Para la gran mayoría de las piezas,
esa posición X,Y sería segura. Luego, G28Z, esto
hace el home sólo de Z, sin chocar con la pieza !!!
luego levantar Z por arriba de la altura de lo que lleva
mi pieza, por ej. Z15.8 y finalmente dejar correr el
programa con lo que reste. ¡FELIZ CONTINUACION!
Estar muy al pendiente, si falla algo, podríase corregir
altura o algo y repetir lo conducente. Conviene ponerle
borde a las piezas y si se detuvo el programa, fijar con
cinta de carrocero (masking tape) la pieza, para ayudar
en fijación. O hasta con un poco de cianoacrilato (kola-
loka) Aunque luego cueste removerlo con acetona o
thiner.
Habría el posible método de usar el home Z para
localizar la altura exacta sobre la pieza, y ver si hay
forma de luego situar el cabezal en zona segura X,Y y
bajarla hasta que el sensor nos indique el verdadero Z
cero y entonces redefinir Z, pero no sé si pueda
avanzar Z negativo, luego guardar el dato y entonces
reponer el cero de Z, pero alguien podría intentarlo y
comentarlo. Si hay forma de hacerlo eso sería mucho
mejor método que el antes descrito, pues daría la
máxima precisión posible y no requeriría nuestra
medición con calibrador.
No he visto la cantidad de instrucciones G que le faltan,
pero que en notepad el archivo mida 32 Mb y estemos
hablando de haberle recortado un tercio, deben ser
decenas de miles de líneas de código ya impresas y
decenas de miles por imprimir. Por cierto, un día vi un
artículo de que se puede acortar un código de este tipo
cambiando líneas por curvas. No lo he hecho, pero
alguien podría comentar si sí y qué ventajas y contras
pueda tener.
ADHERENCIA FINAL
Habría que ver que la temperatura superficial de lo
avanzado de la pieza sea muy cercana a la
especificada para ese filamento, tal vez calentar con
una pistola de aire del pelo, y si al final no hay buena
adherencia entre lo impreso primero y lo siguiente,
queda el recurso de aplicar una fina capa de resina
epoxi (de esas que vienen en doble jeringa), prensar de
forma que no se dañen las piezas pero que se haga
una capa delgada, y con eso unir las dos partes.
Incluso es una unión de mayor resistencia que las
capas adheridas normalmente. La cosa es tener la
pieza aunque tenga algunos remiendos, pues a veces lo
perfecto está peleado con lo útil y oportuno.
Bueno pues felices continuaciones de sus piezas de
larga duración!!
L J I
COMO QUEDÓ EL CÓDIGO AL PRINCIPIO DEL
PROGRAMA YA RECORTADO:
; TEMPERATURAS
M140 S60
M105
M190 S60
M104 S205
M105
M109 S205
M82 ;absolute extrusion mode
G92 E3353.07582 ; situa dato E donde se quedó
G1 F1500 E-5
M204 S1000
; Subir Z y hacer home de X e Y
G0 Z15.8 F2000
G28X
G28Y
;luego situar el cabezal en G0 X10 Y10,
;LUGAR DONDE NO VA A CHOCAR el cabezal con
; la pieza
G0 F300 X10 Y10
; HOME Z
G28Z
; luego levantar Z por arriba de la altura de lo que
; lleva mi pieza,
G0 Z15.8
;finalmente, el resto del código
;MESH:NONMESH
G0 F300 X139.682 Y116.076 Z15.3
G0 F9000 X118.828 Y99.209
G0 X115.734 Y97.291
G0 X57.161 Y76.563
G0 X56.201 Y76.022
G0 X45.206 Y74.562
G0 X44.743 Y75.479
G0 X45.339 Y75.771
;TIME_ELAPSED:30494.877340
;LAYER:100
;TYPE:SUPPORT
G1 F1500 E3353.07582
G1 F3000 X45.339 Y86.31 E3353.33871
; comparar con el dato E anterior
G1 F1500 E3348.33871
G0 F9000 X45.065 Y86.917
G0 X42.399 Y85.712
; Y unos 20,000 renglones más
¡Excelente guía! Me ha ayudado mucho a entender cómo configurar Marlin 2. Los pasos están muy bien explicados y las imágenes son súper útiles. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! He estado tratando de configurar Marlin 2 por mi cuenta y tus pasos claros y detallados realmente me han ayudado a entender el proceso. Gracias por compartir tus conocimientos. ¡Ahora me siento mucho más seguro para seguir adelante!
Muchisimas gracias!!! espero que te sea de ayuda y puedas sacarle el máximo a Marlin y tu máquina.
¡Increíble guía! Me encantó la forma en que explicaste cada paso para configurar Marlin 2. Gracias por hacer que un proceso tan complejo se sienta más accesible. Definitivamente voy a seguir tus consejos y referencias. ¡Espero ver más contenido como este!
¡Excelente guía! Me ayudó mucho a entender cómo configurar Marlin 2 desde cero. Los pasos son claros y las explicaciones son muy útiles. Gracias por compartir este recurso tan completo. ¡Sigo adelante con mi impresora 3D!
¡Excelente guía! La explicación detallada sobre cómo configurar Marlin 2 es muy útil, especialmente para los que estamos comenzando. Los pasos están claros y las imágenes ayudan mucho. Gracias por compartir tu experiencia y consejos. ¡Seguiré tus recomendaciones!
una pregunta rápida estaba revisando las configuraciones para Creality CR10S, pero mi modelo es una CR10S Pro con sensor capacitivo, y me preguntaba cual es la que mas se le acerca, ya que configurar la placa podria hacerlo yo ya que es una btt skr mini e3 1.2
¡Excelente guía! Me ha ayudado muchísimo a entender el proceso de configuración de Marlin 2. Los pasos están muy bien explicados y los consejos son muy útiles. ¡Gracias por compartir esta información!
¡Excelente guía! Me ha ayudado mucho a entender los pasos para configurar Marlin 2. Las explicaciones son claras y los consejos prácticos son muy útiles. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! Me ha ayudado mucho a configurar Marlin 2 en mi impresora 3D. Los pasos están muy claros y fáciles de seguir. Gracias por compartir tu conocimiento, ¡lo aprecio muchísimo!
¡Increíble guía! He estado buscando una manera de configurar Marlin 2 y tus explicaciones son claras y muy útiles. Gracias por tomarte el tiempo de detallar cada paso. Definitivamente intentaré seguir tus consejos. ¡Saludos!
¡Excelente guía! Me ayudó muchísimo a entender los pasos para configurar Marlin 2. Las explicaciones son claras y los ejemplos prácticos hacen que todo sea más fácil. ¡Gracias por compartir este recurso tan útil!
¡Excelente guía! Me ayudó mucho a entender cómo configurar Marlin 2 desde cero. Los pasos están muy bien explicados y los ejemplos son muy útiles. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! La explicación paso a paso hace que configurar Marlin 2 sea mucho más fácil. Aprecio los consejos adicionales y las imágenes que complementan cada sección. Definitivamente volveré a esta entrada cada vez que necesite ajustar algo. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! Me ayudó mucho a entender los pasos necesarios para configurar Marlin 2 desde cero. Las instrucciones son claras y los consejos son muy útiles. Definitivamente volveré a este post cuando necesite hacer ajustes en mi impresora. ¡Gracias por compartir!
¡Excelente guía! Me ha ayudado mucho a entender la configuración de Marlin 2. Las instrucciones son claras y fáciles de seguir. Gracias por compartir tus conocimientos, ¡definitivamente volveré a consultar este post!
¡Excelente guía! Me ayudó mucho a entender cómo configurar Marlin 2 desde cero. Las explicaciones son claras y los pasos están bien detallados. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! Me ha ayudado muchísimo a entender cómo configurar Marlin 2 desde cero. Los pasos son claros y concisos, y las imágenes son muy útiles. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! He estado batallando con la configuración de Marlin 2 y estos pasos detallados hacen que todo sea mucho más claro. Gracias por tomarte el tiempo para explicarlo tan bien. ¡Ahora tengo confianza para intentarlo de nuevo!
¡Excelente guía! Me ha sido de gran ayuda para configurar Marlin 2. Las explicaciones son claras y los pasos bien detallados. Gracias por compartir tu experiencia y hacer que el proceso sea mucho más accesible.
¡Excelente guía! Me ayudó muchísimo a entender cómo configurar Marlin 2 desde cero. Los pasos están claros y las explicaciones son muy detalladas. Gracias por compartir tu conocimiento, definitivamente no moriré en el intento ahora. ¡Un saludo!
¡Excelente guía! La explicación paso a paso es muy clara y fácil de seguir. Gracias por compartir tus conocimientos sobre la configuración de Marlin 2. ¡Me ha salvado de muchos quebraderos de cabeza!
¡Excelente guía! Me ha ayudado mucho a entender el proceso de configuración de Marlin 2. Las explicaciones son claras y los pasos son fáciles de seguir. ¡Gracias por compartir tu experiencia!
¡Excelente guía! Me ha ayudado mucho a entender el proceso de configuración de Marlin 2. Los pasos son claros y fáciles de seguir. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! Me ayudó mucho a entender cómo configurar Marlin 2 desde cero. Los pasos son claros y fáciles de seguir. Gracias por compartir tu conocimiento. ¡Espero ver más contenido como este!
¡Increíble guía! Me ha ayudado mucho a entender cómo configurar Marlin 2 desde cero. Las explicaciones son claras y los pasos bien detallados. Gracias por compartir tu conocimiento, ¡sigo adelante con mi impresora 3D!
¡Excelente guía! Me ha ayudado mucho a entender los aspectos básicos de la configuración de Marlin 2. Las explicaciones son claras y los pasos están bien detallados. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! Me ha ayudado muchísimo a entender cómo configurar Marlin 2 desde cero. Las explicaciones son claras y los pasos bien detallados. ¡Gracias por compartir tu conocimiento!
¡Excelente guía! La explicación detallada sobre la configuración de Marlin 2 me ha ayudado mucho. Aprecié especialmente los consejos sobre la calibración y los errores comunes. ¡Gracias por compartir tus conocimientos!