Configurar Marlin 2.0.x desde cero
Recientemente, algunos usuarios de nuestro canal de Telegram en 3DWork.io se interesaron sobre como configurar Marlin 2.0.x. y lo expusieron en el grupo. Visto lo visto pensé, ¿porque no redactar una guía para configurar Marlin paso por paso?
Era algo que me rondaba la mente desde hacía tiempo, ya que mis impresoras continuaban trabajando con una versión antigua de firmware (1.1.9). Así que sin más miramientos, me puse manos a la obra.
Esta guía no pretende ser un aburrido manual sobre Marlin. Te mostrará las opciones imprescindibles a tener en cuenta para configurar Marlin rápidamente. Utilizaré como ejemplo una impresora «Custom», y paso a paso descubrirás dónde y cómo configurar Marlin 2.0.x con éxito para tu impresora.
Te recomiendo encarecidamente que sigas el orden del artículo a la hora de configurarlo. El motivo es que los parámetros los encontrarás también en ese mismo orden. Y de esta forma no correrás el riesgo de dejarte alguno por el camino.
Lo más importante en mi opinión es perderle el miedo a Marlin, y si este artículo te sirviera de ayuda habría cumplido con creces su objetivo. Conociendo Marlin lograrás entender y disfrutar un poquito más el apasionante mundo de la impresión 3D y todas sus posibilidades.
Y si te surge alguna duda por el camino, siempre puedes compartirla en nuestro canal de Telegram. Seguro que algún compañero estará más que dispuesto a echarte un cable. Así que vamos con el artículo sin más dilación…
Introducción
Configurar Marlin 2.0.x en tu impresora puede parecer un reto a simple vista y algo que solamente programadores avezados pueden conseguir. Pero esa afirmación no puede estar más lejos de la realidad, créeme.
Con un poquito de paciencia y un editor de texto, podemos configurar cualquier impresora basada en arduino con las últimas versiones de firmware sin problema alguno (y sin conocimientos de programación). De hecho, Marlin está compuesto de muchísimos archivos, pero solamente necesitaremos modificar uno o dos a lo sumo, para compilar un firmware funcional y después subirlo a nuestra impresora.
Por supuesto, puedes personalizar Marlin 2 hasta donde tu quieras, pero ya precisamos de modificar bastantes archivos que de momento no vamos a mencionar o que lo haremos más adelante.
Es probable que te estés preguntando qué necesidad tienes de aprender a configurar Marlin 2.0.x. Las respuestas pueden ser diversas, pero la que más me convence es que nos aporta seguridad, mejoras de rendimiento, y como no, correcciones de posibles errores reportados en versiones previas.
No obstante, no voy a negar que durante el proceso de configuración y compilación se pueden presentar errores o problemas que pueden aparentemente difíciles de solventar. Pero con Google y un poco de paciencia, no deberíamos tener excesivos problemas. Somos Makers, ¿Quién dijo miedo?
En este manual para configurar Marlin usaremos como ejemplo una impresora «Custom» que tiempo atrás diseñe y construí. Así podrás ver los cambios que efectúo y después aplicarlo a vuestra máquina. Abriremos los archivos e iremos cambiando los parámetros por orden (desde el principio del archivo al final).
Sobra comentar que para configurar Marlin 2 necesitarás conocer de antemano todos los datos y componentes de vuestra máquina, como por ejemplo tipo de extrusor, volumen de impresión, tipo de termistor, etc. Así que recopila toda esta información previamente y vamos a ello sin más dilación.
Marlin Builder: Configurando Marlin vía web
Antes de comenzar esta guía completa sobre como configurar Marlin quería mostraros una aplicación muy reciente que hemos desarrollado en 3DWork.io, su nombre es Marlin Builder. La forma «ortodoxa» de compilar un firmware de Marlin se resume en lo siguiente: Descargar el firmware, editarlo a mano y compilarlo (3 pasos).
No obstante, la edición del firmware es bastante extensa y debido a ello hemos creado Marlin Builder, que te puede servir de «alternativa» a editar a mano todo ese código. Si lo que deseas es editarlo a mano, cosa que a mi me encanta lo reconozco, sigue leyendo desde el siguiente punto del artículo donde ya explico todo el proceso.
Si por el contrario deseas editar vía web el firmware de Marlin, accede a nuestra aplicación en el siguiente enlace: Marlin Builder.
Básicamente, Marlin Builder se compone de un Wizard (o asistente de configuración) qué nos guiará por 5 secciones. Cada una de estas secciones controla los parámetros básicos para poder compilar un Marlin acorde a la mecánica y electrónica. Así que cuando tengas las 5 secciones configuradas, le das a descargar firmware y ya lo tienes listo. Suena fácil ¿Verdad?
Bueno, pues no te alegres tanto ya que Marlin Builder no hace milagros. Si algo lo configuras mal, el compilador te mostrará error. No obstante puedes consultar todos los parámetros en este mismo articulo, y si no tienes experiencia previa, es prácticamente obligatorio que lo leas. Suerte con ello!
Preparando nuestro PC (Archivos necesarios)
Lo primero que debemos hacer es preparar nuestro PC para poder compilar el firmware (y editarlo obviamente). Simplemente serán tres sencillos pasos, así que vamos a ello:
Descarga del firmware Marlin
Muy sencillo, tanto como ir a la web oficial de Marlin , hacer clic en la sección Download y buscar el último firmware disponible. En este artículo usaremos la versión 2.0.1 pero se publican nuevas revisiones y/o updates periódicamente, así que elegid la versión que necesitéis.
Tras descargarlo, lo descomprimimos en una carpeta en el escritorio de nuestro ordenador. No borreis el archivo comprimido, siempre nos puede servir para volver atrás en nuestros pasos si modificamos «demasiadas cosillas» dentro del firmware 🙂
Editor de texto (Notepad, Sublime, Atom, etc.)
También precisamos (aunque no es obligatorio) de un buen editor de textos. Se puede usar el interface del Arduino IDE, pero yo os recomiendo utilizar algún editor orientado a programación. Estos suelen detectar las estructuras de programación y las colorean, de tal forma que facilitan de forma considerable la compresión del código.
Yo personalmente utilizo Sublime, pero dispones de decenas de opciones, como Atom, Vim, VS Code, Notepad++ y muchos otros más. Todos funcionan muy bien, simplemente es adaptarte al que más te guste.
Descarga del Arduino IDE
Una vez modificado nuestro firmware Marlin, deberemos compilarlo antes de subirlo a nuestra impresora. Para ello utilizaremos un entorno de desarrollo integrado (o comúmente denominado IDE) que ofrece Arduino completamente gratuito a la comunidad.
Como es lógico, lo podremos descargar de la web oficial de arduino. Para ello, deberéis acceder a la sección Software->Downloads, selecciona Windows Installer (por ejemplo) y apreta el botón Just Download para descargarlo. También podéis efectuar una contribución al grandioso equipo de desarrollo que hay detrás de Arduino, simplemente pulsando en Contribute & Download y siguiendo las instrucciones que os mostrarán en su web.
Archivo «Configuration.h»
Como comenté anteriormente, existen 2 archivos principales que gestionan toda la configuración del firmware Marlin. Por supuesto, existen muchos más cambios y modificaciones que podríamos hacer pero para nuestro propósito actual, no son necesarios de momento (modificaciones del menú original, logotipos, etc.)
Vamos a comenzar a editar el archivo Configuration.h con el editor que hemos escogido (en mi caso Sublime), y seguiremos por orden las distintas opciones más comunes a configurar. Comentar que este archivo contiene las configuraciones principales de hardware, idiomas y controladores, así como configuraciones para las características y componentes más comunes de nuestra impresora.
En blanco, podréis ver las opciones que he activado (o que vienen activadas por defecto), y en gris oscuro las opciones que están desactivadas. Para activar una opción solamente debemos eliminar las dos barras «//» delante del parámetro en cuestión. Y para desactivarlas lo contrario, añadirlas. Si eres programador ya estarás bastante familiarizado con este procedimiento.
En el supuesto que nos dejemos algún parámetro en el tintero debido a la innumerable cantidad de impresoras existentes, no dudéis en indicarlo en los comentarios al final del artículo. De esta manera iremos completando poco a poco toda la información y podrá ser útil a más usuarios.
Y si lo deseáis, siempre podéis acceder a nuestro canal de Telegram y exponer vuestras dudas. Es probable que alguno de nosotros se haya peleado ya con ellas. Os dejo por aquí el enlace directo: Telegram de 3DWork.io
Logotipo Marlin (SHOW_BOOTSCREEN)
Es el logotipo de Marlin que aparece al arrancar el firmware. Por defecto aparece activo, podemos desactivarlo si lo deseamos sin problema alguno. No es algo imprescindible para configurar Marlin 2 pero quizá hasta liberemos algo de memoria 🙂
// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION ** #define SHOW_BOOTSCREEN
Velocidad de comunicación (BAUDRATE)
Velocidad a la que conectaremos nuestro ordenador a la impresora, por defecto es 250000 así que la dejaremos así. Si por un casual tenemos problemas de comunicación podemos bajar la velocidad para ver si así mejora.
/** * 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)
Aquí seleccionaremos nuestra placa de arduino. Como hay bastantes, localizamos el listado donde se encuentran y de allí sacaremos el dato (variable) que debemos escribir aquí. En mi caso mi impresora 3D utiliza una placa MKD Gen v1.4. Para ella debo escribir «BOARD_MKS_GEN_13» como podéis comprobar en la imagen.
Disponeis del listado correspondiente en el archivo «boards.h» que se encuentra en la siguiente ruta: \Marlin\src\core\boards.h
// 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 deseas que tenga tu nueva impresora configurada. Por defecto te darás cuenta que viene desactivada, de allí que aparezcan estas 2 barras «//» delante del #define.
Eliminaremos las 2 barras y dejaremos la configuración de esta manera:
// Name displayed in the LCD "Ready" message and Info menu #define CUSTOM_MACHINE_NAME "Pulsar X1 PRO"
Número de extrusores (EXTRUDERS)
Aquí vamos a configurar en Marlin el número de extrusores que tiene nuestra impresora 3D. Por defecto el valor inicial es 1, ya que la mayoría disponen de un extrusor. Si no es tu caso, introduce el número de extrusores 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)
En este apartado seleccionaremos el tipo de diámetro que gasta nuestra impresora. Por defecto viene 3.0, algo extraño ya que ahora la mayoría de las impresoras ya suelen operar en 1.75 de diámetro. Deberemos cambiarlo, muy importante 🙂
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. #define DEFAULT_NOMINAL_FILAMENT_DIA 3.0
Kit multimaterial de Prusa (PRUSA_MMU2)
Activarlo si dispones de esta máquina y del kit multimaterial original de Josef Prusa. Si no es así, déjalo como está, con las dos barritas puestas.
/** * 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 del firmware Marlin definiremos los sensores de temperatura existentes en nuestra impresora 3D. En esta última versión, se ha añadido soporte para más extrusores (con un total de 6 soportados) y también sensor para una cámara o habitáculo.
Como podéis comprobar, hay un montón, y en el propio código os aparece un listado. En el caso que no dispongas de información acerca del tuyo, puedes consultar en Google, probablemente estará documentado de algún otro usuario con tu misma impresora.
Por defecto solamente viene configurado el TEMP_SENSOR_0 con valor «1». En mi caso, allí debo colocar el valor «5» . Como además dispongo de cama calefactable para mejorar la adherencia durante la impresión, configuro TEMP_SENSOR_BED con el valor 1. El resto lo dejo a 0 ya que no dispongo de más extrusores ni de cámara caliente)
/** * --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
Límitadores de temperatura (MINTEMP & MAXTEMP)
Configurar en Marlin 2 estos parámetros es muy importante, ya que controlan las temperaturas máximas y mínimas de nuestra impresora. Definiremos en qué rangos deben estar todos y cada uno de los sensores disponibles. De esta manera, si algún sensor no alcanza o sobrepasa dicha temperatura, Marlin emite un error en el display y desactiva los Hotend y la cama calefactable.
En mi caso, suelo configurar las temperaturas de los extrusores en 5 grados (mínima) y 265 grados (máxima). En el caso de que un extrusor o la cama no llegue a 5º grados, deduciremos que el Termistor no esta instalado correctamente, o se encuentra dañado físicamente.
De igual modo, nos protegerá en el caso de que accidentalmente se sobrepase la temperatura máxima, algo crucial para nuestra seguridad.
// 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 los ajustes del algoritmo que se encarga de gestionar la temperatura de los extrusores y la cama calefactable. Podríamos entrar en más detalle sobre como funciona, pero no es el artículo adecuado. Si estáis interesados en aprender más sobre PID Tuning os recomiendo que echéis un vistazo al siguiente artículo en REPRAP sobre Pid Tuning.
Por defecto vienen ya predeterminados algunos valores para varias de las más conocidas impresoras del mercado. Como mi impresora no coincide con la descripción, simplemente he añadido mis propios valores.
// Pulsar X1 PRO #define DEFAULT_Kp 20.3 #define DEFAULT_Ki 1.43 #define DEFAULT_Kd 71.84 // Ultimaker //#define DEFAULT_Kp 22.2 //#define DEFAULT_Ki 1.08 //#define DEFAULT_Kd 114 // MakerGear //#define DEFAULT_Kp 7.0 //#define DEFAULT_Ki 0.1 //#define DEFAULT_Kd 12 // Mendel Parts V9 on 12V //#define DEFAULT_Kp 63.0 //#define DEFAULT_Ki 2.25 //#define DEFAULT_Kd 440
Para sacar los valores de vuestra impresora, podéis consultarlos en Internet o podéis hacerlos vosotros mismos con una función interna de Marlin denominada PID Autotune. Para ello, conecta tu impresora a Repetier/Simplify3D o cualquier otro software que te permita utilizar comandos Gcode. Una vez conectado, enviar el comando M303 E0 S200 C8 y comenzará el proceso.
Tras calentar y enfriar el fusor 8 veces, finalizará y mostrará la siguiente información. Solamente deberéis coger los valores de Kp, Ki y Kd e introducirlos en vuestro firmware.
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 de antes, pero para nuestra cama calefactable. Por defecto en el nuevo firmware vendrá desactivado. Si dispones de cama calefactable debes descomentar la opción #define PIDTEMPBED como verás en mi configuración.
También puedes ejecutar otra función interna de Marlin para sacar los valores de la cama. Esta se efectúa 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
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 esta encendido. La opción PREVENT_COLD_EXTRUSION directamente evita esto de manera radical.
Si este parámetro se encuentra activo, podremos configurar a qué minima temperatura le permitiremos a Marlin extruir filamento con el parámetro EXTRUDE_MINTEMP. Por defecto ambas vienen activas, así que no deberemos preocuparnos, pero siempre es interesante conocer estas opciones de seguridad.
/** * 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 bien indica en los comentarios, previene que podamos efectuar una extrusión superior a la que hayamos configurado. Esto significa que Marlin solamente te va a dejar en un solo comando GCODE extruir un máximo de 200 mm.
Si desearas extruir mucho más de 200mm en un solo comando, por ejemplo en el caso de tener una función para cargar el filamento desde el display usando 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 alguno 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 adicional térmica que ofrece Marlin para prevenir daños en nuestras impresoras. Siempre han de estar activas, de hecho así vienen en Marlin 2 por defecto, así que de ningún modo las 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
Finales de carrera disponibles (USE_XMIN_PLUG & USE_XMAX_PLUG)
En este apartado vamos a indicarle a nuestro firmware Marlin los finales de carrera que tenemos conectados a nuestra placa base. Lo más normal es disponer de 3 finales de carrera para indicar los recorridos mínimos (o topes). De esta forma Marlin determina la posición inicial (0) en todos los ejes cuando hace un HOMING.
Se pueden instalar además sensores extra para determinar los máximos recorridos. Nos servirán para prevenir que la máquina se desplace más allá de lo estrictamente necesario. No son imprescindibles, pero sí una buena opción para tener todos los imprevistos bajo control.
En mi caso particular, yo 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 tu 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 usemos tendrán una lógica diferente. No tiene mayor misterio, simplemente déjalos todos en FALSE, y si alguno no te funciona, cambia aquí la lógica (le indicas TRUE). En mi caso particular, X e Y tuve que pasarlos a 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 el firmware de Marlin 2 con los drivers que disponemos viene a ser algo imprescindible. Pero no te preocupes, ya que es un proceso muy sencillo. Por defecto verás que todas las opciones vienen inhabilitadas, así que deberás habilitar las que vayas a utilizar que serán donde hayas instalado drivers en tu placa.
En mi impresora tengo 3 motores en los 3 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.
Pero no solo deberemos habilitar la opción, sino también indicarle el driver que tienes montado en tu electrónica. Como yo tengo DRV8825, se lo he indicado al compilador, y listo. En los comentarios puedes ver todos los tipos de drivers disponibles en Marlin 2, así que localiza el tuyo y anótalo tal y como 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, 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', '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
Configuración de los pasos (DEFAULT_AXIS_STEPS_PER_UNIT)
En este apartado le indicaremos a nuestra impresora cuantos pasos se efectuarán para cada unidad de movimiento. Las unidades podrán estar definidas en milímetros o pulgadas. En el caso de utilizar pulgadas deberás activar el parámetro INCH_MODE_SUPPORT.
Nosotros no vamos a activar ese parámetro, ya que solemos trabajar con milímetros, e introduciremos en este apartado nuestros pasos para cada uno de los ejes y el extrusor. Precisas previamente conocer los valores a introducir, así que te recomiendo que los extraigas de algún firmware ya disponible de tu impresora (para ir sobre seguro).
Otra opción es buscarlo por Internet de algún otro usuario, navegar en foros, consultar al fabricante o como última opción, calcularlos tu 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 autonivelación (NOZZLE_TO_PROBE_OFFSET)
En el supuesto que utilicemos un sensor de autonivelación (como es mi caso), deberás indicarle la posición del mismo respecto al nozzle. Este obligatoriamente se encontrará separado y lo definiremos como coordenadas y en milímetros.
Mi sensor de nivelación se encuentra 37mm a la derecha del fusor, y 2 mm más atrás del mismo, así que quedaría la siguiente configuración:
/** * Z Probe to nozzle (X,Y) offset, relative to (0, 0). * * In the following example the X and Y offsets are both positive: * * #define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } * * +-- BACK ---+ * | | * L | (+) P | R <-- probe (20,20) * E | | I * F | (-) N (+) | G <-- nozzle (10,10) * T | | H * | (-) | T * | | * O-- FRONT --+ * (0,0) * * Specify a Probe position as { X, Y, Z } */ #define NOZZLE_TO_PROBE_OFFSET { 37, -2, 0 }
Velocidad desplazamiento nivelación (XY_PROBE_SPEED)
Este parámetro define la velocidad que utilizará Marlin 2 al mover el sensor de autonivelación entre 2 puntos de medición. Por defecto viene en 8000mm/m, yo lo suelo subir a 12000 mm/m
// X and Y axis travel speed (mm/m) between probes #define XY_PROBE_SPEED 12000
Invertir dirección de motores (INVERT_X_DIR)
Modificaremos estos parámetros si al hacer un HOME o al imprimir cualquier pieza con nuestra impresora, alguno de los motores va en la dirección incorrecta. Por defecto vienen todos configurados con la opción FALSE, yo en particular tuve que invertir la dirección de mi cama (eje Y) como podéis ver a continuación:
// 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)
Definiremos aquí las medidas exactas de nuestro volumen de impresión (cama). Mi impresora dispone de una cama en posición horizontal de 285 mm x 206 mm, así que quedaría de esta forma configurada:
// The size of the print bed #define X_BED_SIZE 285 #define Y_BED_SIZE 206
Límites de movimiento (MIN_POS & MAN_POS)
Una vez definidas las medidas de nuestra base de impresión (cama), debemos configurar Marlin 2 con los mínimos y máximos límites de movimiento.
Por defecto para los mínimos Marlin viene configurado con el valor 0, el cual no debemos modificar ya que es el HOME. Para los límites máximos Marlin directamente usa las medidas actuales de nuestra cama en X e Y (que previamente habíamos dejamos configuradas en el parámetro anterior.
Para finalizar con la configuración, en el eje Z la medida que debemos añadir es la altura máxima de impresión de nuestra máquina. En mi caso particular puedo imprimir unos 296mm aproximadamente, así que introduzco su 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 de nuestra impresora, Marlin 2 viene por defecto configurado para que no podamos superar los límites mínimos. Esto significa que al llegar a un final de carrera o sensor, no dejará avanzar más el motor aunque lo hagas manualmente.
Sin embargo, como muchas otras cosas en Marlin 2, puedes inhabilitar 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 os he comentado, salvo que sea imprescindible o sepas muy bien lo que haces, debes dejar los valores 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 nos ofrece la posibilidad de cambiar la configuración de nuestra impresora desde el propio display y luego guardarlos en la Eeprom. Si deseamos tener activa esa posibilidad, debemos activar este parámetro en nuestro firmware.
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
Pre-calentamiento ABS/PLA (PREHEAT)
Como habrás podido comprobar si ya has trasteado tu impresora, Marlin te ofrece dos opciones para pre-calentar la impresora previamente a una impresión. Puedes configurar las temperaturas disponibles para filamentos de ABS y PLA.
Modificando esta sección, incluirás tus propias temperaturas, algo bastante útil porque las que vienen por defecto en el firmware son mejorables. Yo personalmente dejo estas configuraciones:
// Preheat Constants #define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 195 #define PREHEAT_1_TEMP_BED 65 #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 y cada uno de los menús del firmware Marlin 2 (display). De momento, el que más me convence es el español, así que es el que tengo seleccionado. Por defecto viene inglés, probablemente desearás 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
Soporte para SD Card (SDSUPPORT)
Más que probable que debas activar esta opción, te permite cargar los archivos STL utilizando una SDCard. Viene por defecto desactivada, si es el caso, necesitarás activarla, como yo hice.
/** * 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 da la posibilidad de navegar por infinidad de menús desde su display, hasta un punto que es agobiante (al menos para mí). Muchos de estos parámetros deberías haberlos configurado previamente en tu firmware, sin necesidad de modificarlos «al vuelo».
Para reducir los menús, Marlin te ofrece la opción de simplificarlos con el parámetro SLIM_LCD_MENUS. No solamente simplificará los menús, sino que ahorrarás una no despreciable cantidad de memoria.
/** * 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)
Y por último, hemos llegado a la configuración del display. Si echamos un detenido vistazo al archivo configuration.h veremos que hay infinidad de displays. Puede parecer un poco complicado, pero en realidad lo único que debemos hacer es encontrar la descripción de nuestra pantalla LCD y descomentar para poder configurar Marlin 2.
Existen displays basados en texto, displays LCD gráficos, OLED displays, y alguno más que otro. Yo tengo uno basado en gráficos denominado MKS MINI 12864 (foto arriba). Para ello he descomentado la siguiente linea.
Si no encuentras el nombre de tu display, te recomiendo que utilices 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 pequeño detalle a tener en cuenta. En algunos casos (como el mío particular), es necesario disponer de librerías externas para compilar el firmware con soporte a nuestro display. Es el caso del display MKS MINI12864, precisa de buscar e instalarlas manualmente.
Si intentas compilarlo Marlin te dará error, y te indicará qué librería precisas instalar. A mi por ejemplo en mi compilación 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 muy sencilla, iremos al menú Herramientas -> Administrar bibliotecas… y haremos clic. En el cuadro de búsqueda introduciremos U8glib y presionaremos INTRO. Nos aparecerán las librerías online disponibles con este parámetro de búsqueda y veremos que al final se encuentra la nuestra «U8glib by Oliver». Otro clic en el botón INSTALAR y solucionado.
Por último, la configuración de contraste del display no me convencía demasiado, ya que se veía algo oscura al principio, así que decidí cambiarla. Puedes modificar el contraste (poner la pantalla más clara/oscura) desde el propio display, pero prefiero dejárselo ya puesto en el mismo firmware, ya que es una opción que no volveré a modificar, y en caso de que resetee la EEPROM no tendré que configurarlo de nuevo.
Para ello tuve que editar un archivo especial denominado «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    // Añadido por Peter //
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. Por defecto vienen desactivadas en el firmware así que deberemos activarlas para poder hacer uso de ellas.
Explicarlas todas y cada una de ellas daría para escribir un artículo completo, 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 yo personalmente utilizo en mi impresora con mi sensor de nivelación en el cabezal. En mi caso utilizo un sensor de infrarrojos, pero es aplicable para cualquier tipo de sensor (inductivo, capacitivo, IR, etc.)
Si dispones de un BLTouch, si que te recomiendo que busques algún manual más específico, ya que Marlin trae funciones específicas para él. En un futuro próximo publicaremos un artículo sobre BLTouch y como configurarlo.
Volviendo a nuestra configuración, la primera modificación que efectuaremos será indicarle a Marlin que disponemos de un sensor de autonivelación fijo en nuestra máquina, para ello editaremos la siguiente línea y la dejaremos así:
/** * 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
Luego configuraremos cuantos puntos de prueba (Probe points) deseamos que efectúe nuestra 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 debemos editar un nuevo archivo denominado configuration_adv.h. Se diferencia del primero básicamente en que nos ofrece opciones de personalización más detalladas, complementos y funciones experimentales o en desarrollo (como es el BABYSTEPPING)
Yo en mi impresora uso una función de nivelación disponible en Marlin 2 denominada BABYSTEPPING. Esta función me permite calibrar con un folio la altura de mi sensor de nivelación en el centro de la cama una sola vez.
Más tarde, la impresora efectuará 9 puntos de testeo (probe points) automáticamente al comenzar cada impresión. De esta forma no tendré que ir esquina por esquina innecesariamente para calibrar mi cama. Por defecto viene desactivada, así que activaremos la opción BABYSTEPPING tal y como os muestro a continuación:
#define BABYSTEPPING #if ENABLED(BABYSTEPPING) //#define BABYSTEP_WITHOUT_HOMING //#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_MULTIPLICATOR_Z 20 // Babysteps are very small. Increase for faster motion. #define BABYSTEP_MULTIPLICATOR_XY 1 #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 BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). //#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 que las nuevas versiones de Marlin aparecieron (2.0.x) es posible generar mallas en 3D de nuestra superficie de impresión sin la necesidad de utilizar Octoprint o cualquier de sus interesantísimos plugins.
Marlin ahora te facilita un archivo que puedes modificar y cargar en Open SCAD 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 curioso truco que nos ofrece Marlin es poder activar una serie de juegos ocultos dentro de su firmware. Para ello es preciso disponer de una pantalla LCD gráfica, y modificar algunas cosillas dentro del mismo firmware.
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, precisas de una pantalla LCD gráfica, generar el logotipo y preparar la imagen deseada.
Por supuesto deberás modificar algunas cosillas dentro del mismo 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
Bueno, ha costado pero al final hemos llegado a este punto. Si todo está correcto deberíamos compilar el firmware sin problema alguno. Lo primero que debemos hacer para poder compilar el firmware es cargarlo en el IDE de Arduino, obviamente 🙂
Para ello, abriremos la carpeta donde teníamos descomprimido el firmware, iremos a la carpeta /Marlin y haremos clic dos veces en el archivo del proyecto denominado Marlin.ino. Esto debería cargar el proyecto completo en el IDE.
Tenemos básicamente dos opciones, una es verificar/compilar el firmware. Esta opción simplemente hará una compilación previa del firmware y nos indicará si está todo correctamente configurado. La segunda opción es subir el firmware, la cual directamente lo compilará y lo subirá a tu impresora.
Ten en cuenta que si le das a subir el firmware, deberás haber previamente configurado el IDE de arduino y conectado tu impresora por USB a tu ordenador. Si no detecta la placa de tu impresora, después de la compilación dará error y no subirá el firmware.
Así, que llegados a este punto, nos vamos a limitar simplemente a darle a la opción verificar/compilar el firmware, y una vez veamos que compila todo correctamente pasaremos al siguiente paso que ya será el definitivo, subir el firmware a nuestra máquina. Para ello iremos al menú Programa -> Verificar/Compilar o pulsaremos las teclas rápidas Ctrl+R.
Subiendo Marlin a tu impresora
Como hemos comentado en el apartado previo, antes de poder subir el firmware finalizado a nuestra impresora, debemos configurar el IDE de Arduino. Iremos al menú Herramientas y configuraremos estos 3 apartados:
- Placa: Selecciona el tipo de placa de tu impresora
- Procesador: ATMega 2560 o ATMega 1280
- Puerto: Aparecerá un puerto COM, seleccionalo manualmente
Si hemos seleccionado todo correctamente, no deberíamos tener mayor problema. Para subirlo definitivamente iremos a Programa -> Subir o pulsaremos las teclas rápida Ctrl+U.
Compilar electrónicas de 32bits con Visual Studio Code y Platform.io
En el supuesto de que dispongas de una placa electrónica de 32bits, te recomendamos utilizar Visual Studio Code y su extensión Platform.io, el cual es un editor freeware de código muy ligero y potente.
Tienes un estupendo artículo también en nuestra página web donde paso a paso se explica como hacerlo, te dejo por aquí el enlace directo: Configura y actualiza tu impresora 3D utilizando Visual Studio Code y Platform.io
Observaciones finales
Espero y deseo que este artículo con la última versión de Marlin 2 haya podido ser de ayuda para ti. No obstante, tal como comenté al principio, no pretende ser un manual específico de uso, sino una sencilla introducción a él usando mi actual impresora como ejemplo.
Si bien, la idea es ir completando día a día el artículo con mucha más información. De antemano no descarto que se te pueda presentar algún imprevisto a la hora de configurar Marlin 2 para ti. Si ese fuera el caso, te agradecería que lo compartieras con nosotros en los comentarios o en nuestro canal de Telegram.
Y bueno, ya por último, si existe alguna errata en el artículo te pido disculpas. Configurar Marlin 2 como puedes comprobar es bastante laborioso (que no difícil), y es posible que algún parámetro se nos haya pasado por alto (nada más fácil que corregirlo en alguna posterior edición). No dudes en notificarnoslo.
Como siempre, os dejamos por aquí otros increíbles artículos que seguro que son de vuestro interés:
- 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
- ¿Que es ChiTuBox y donde 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!
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
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.
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