Cómo configurar y editar el firmware de Marlin.
Es posible que desee utilizar Marlin 2.1 en su impresora 3D, máquina CNC o robot.
Cada impresora 3D, sin importar si es casera o comprada , tiene una placa de microcontrolador . Y reside en esa placa un programa de computadora que traduce el código G en movimientos y extrusiones, se ocupa de varias entradas de sensores y controla otros aspectos de la máquina. Este es el firmware de la impresora. Si bien tenemos la opción de otras opciones interesantes de firmware de código abierto, como Klipper y RepRap, Marlin es un favorito establecido entre los fabricantes.
Su popularidad se debe en parte al gran apoyo de la comunidad que mejora constantemente a Marlin con nuevas funciones. Otra razón es el hecho de que se puede implementar en una variedad de máquinas diferentes, como fresadoras y tornos CNC, cortadoras láser y más. Actualizar a la última versión requiere algunos conocimientos, pero incluso los principiantes deberían poder lograrlo.
En este artículo, cubriremos la última versión estable, Marlinn 2.1, lanzada en junio de 2022. En particular, repasaremos puntos de configuración importantes como usar la placa base correcta, ajustar la configuración mecánica y térmica y cómo comenzar. , demostrado para una impresora CoreXY de un solo extrusor.
Si bien es posible que tenga un tipo diferente de máquina, todavía hay mucho que aprender sobre Marlin.
¿Por qué actualizar?
A medida que pasa el tiempo, los entusiastas de las impresoras 3D pueden querer jugar con la máquina para abrir más funciones, acelerarla, mejorar la calidad de impresión o un poco de todo. Con el hardware capaz de 32 bits bajando de precio y muchos usuarios que aún utilizan la configuración bastante anticuada de Arduino Mega y Ramps 1.4, o placas basadas en ella, crece la tentación de desechar lo antiguo y obtener una nueva y agradable placa controladora.
Sin embargo, comprensiblemente, podría causar cierta ansiedad alejarse de una configuración de firmware personalizada de la impresora y con la marca de la empresa, un cambio que sin duda invalidaría los reclamos de garantía que pueda tener si la impresora aún es nueva. Por lo tanto, se recomienda comprobar este tipo de cosas antes de retocar. Si bien es poco probable que rompa algo, es posible que desee considerar cuánto soporte necesitará para restaurar su firmware en caso de que algo salga mal.
Si se siente cómodo con seguir adelante, el futuro es brillante. Más potencia de procesamiento se traduce en una experiencia más fluida, (potencialmente) más entradas de sensor y una impresora que puede manejar más fácilmente cálculos adicionales, como avance lineal, sondeo y desvanecimiento de malla de cama, y más.
Sepa que, por cada nueva incorporación, deberá ajustar el firmware de su impresora. Mientras tanto, tener una comprensión básica del firmware lo ayudará a diagnosticar problemas, mejorar el hardware y acceder a nuevas funciones.
Sin embargo, antes de actualizar el firmware, veamos qué se necesita.
Requerimientos básicos
Antes de instalar un nuevo firmware en una impresora 3D, necesita lo siguiente:
- Una PC, mouse, teclado y cable USB
- Una impresora 3D con placa base compatible con Marlin
- Visual Studio Code con Platform IO y opcionalmente Marlin Auto Build instalado en su PC
- (Para placas basadas en LPC-1768) Una tarjeta SD de 32 GB
No cubriremos cómo configurar su entorno de compilación aquí, pero los enlaces anteriores deberían funcionar.
Desde la versión 2.0 de Marlin, PlatformIO en Visual Studio Code (VSC) es el entorno de compilación recomendado para todas las placas de microcontroladores ARM de 8 y 32 bits de Atmel AVR. Si bien el uso de Arduino IDE todavía funciona para las placas de procesador AVR, los usuarios informaron problemas con la compilación del firmware. Las placas antiguas aún se beneficiarán de muchas correcciones de errores y mejoras, pero debido a las restricciones de memoria, están limitadas en cuanto a la cantidad de funciones nuevas que se pueden usar con la última versión de Marlin.
Para aquellos que no están familiarizados con VSC y PlatformIO, Marlin ofrece algunas instrucciones simples , incluida una guía detallada sobre cómo configurar y usar la extensión Auto Build. Esta extensión facilita un poco la configuración de PlatformIO para construir el proyecto de firmware. (Vea el consejo en la siguiente sección).
Tenga en cuenta que la extensión Auto Build puede parecer inacabada con respecto a algunas de sus funciones, como la opción de configuración que está en construcción en el momento de escribir este artículo. Esto es, por supuesto, una pena, pero aún es posible crear, cargar y limpiar una configuración existente. Con respecto a la carga, solo hay una advertencia, y es que muchas placas de 32 bits requieren una tarjeta SD para cargar firmware y el botón de carga realmente no hace nada.
Una forma más sencilla de actualizar
Para placas AVR y ARM de 32 bits, el firmware se puede actualizar de la siguiente manera:
- Descargar Marlín .
- Edite los archivos de configuración con su editor de texto favorito o Arduino IDE.
- Compile los archivos de firmware de Marlin en código binario utilizando un entorno de desarrollo integrado (IDE), como PlatformIO o Arduino IDE.
- Sube el código al tablero.
Para tarjetas basadas en LPC-1768, siga el procedimiento de Re-ARM . Hay algunos pasos adicionales para que la placa acepte una nueva actualización de firmware, pero el resto sigue de cerca lo anterior.
Una nota sobre lo anterior: al extraer el archivo zip de Marlin 2.1, se revelan dos archivos de configuración en la subcarpeta de Marlin: “Configuration.h” y “Configuration_adv.h”. Estos son los dos archivos que deben editarse para la mayoría de las actualizaciones de firmware. Para hacerle la vida aún más fácil, hay ejemplos de configuración disponibles. Cada uno proporciona versiones de los dos archivos de configuración para una placa específica. Simplemente se pueden copiar y pegar en la subcarpeta Marlin.
CONSEJO
Se recomienda verificar si su dispositivo ya está presente como uno de los ejemplos de configuración. Si es así, asegúrese de copiar ambos archivos de configuración en la subcarpeta Marlin antes de abrirlos con PlatformIO. Marlin Auto Build reconoce automáticamente su configuración y le permite elegir entre diferentes versiones de procesador, si corresponde. Presiona el botón Construir para verificar que todo esté bien antes de editar cualquier cosa. Inténtalo de nuevo si falla la primera vez… Puede pasar.
Después de una compilación de prueba exitosa, abra los archivos de configuración en el editor de texto de su elección para verificar y eventualmente editar la configuración de su impresora como se indica en el resto del artículo.
Empezando
Antes de cualquier actualización de firmware, es aconsejable recopilar toda la información necesaria. Conocer las partes exactas del hardware en su máquina es esencial no solo para actualizar sino también para solucionar problemas más adelante.
Antes de comenzar a jugar con el firmware, tome nota de lo que tiene:
- Tipo de impresora FDM: Cartesiana, CoreXY, delta, brazo robótico, etc.
- Tipo de placa controladora: Ramps 1.4, MKS SBASE, SKR Pro, etc.
- Tipo de drivers utilizados: A4988, DRV8825, TMC2160, etc.
- Tipo de pantalla utilizada: controlador de gráficos completo, LCD, etc.
- Paradas finales: ¿Cuántas? ¿Sobre qué ejes? (Comprenda las posiciones máximas y mínimas para su impresora).
- Sensores térmicos: Tipo para cama caliente y extrusora
- Extrusoras: Tipo, número, etc.
- Tipo de sonda
- Dimensiones de su impresora: Recorrido máximo en cada eje, compensaciones entre boquilla y sonda, etc.
Como se mencionó, explicaremos cómo configurar los ajustes básicos de una impresora CoreXY de un solo extrusor porque la mayoría tendrá una impresora cartesiana, que tendrá la mayoría de los siguientes ajustes de forma predeterminada. Al revisar la actualización de firmware de CoreXY, no estaremos limitados a menos configuraciones.
Es importante destacar que no veremos todas las secciones del archivo de configuración, pero cualquiera debería poder editar el archivo con éxito con el conocimiento general obtenido a continuación. Esto le permitirá comprender la estructura y la filosofía detrás de la configuración del firmware de Marlin y, por lo tanto, podrá ajustarlo a sus necesidades.
Configuracion inicial
Al trabajar con firmware, es importante realizar un seguimiento de los cambios que realiza. Con ese fin, la sección de “información” al comienzo del código le permite agregar cualquier texto que desee entre comillas dobles. Ingresar la fecha y el tipo de cambios realizados puede ayudarlo a realizar un seguimiento de la configuración de su máquina en lugar de tener que revisar el código nuevamente. Tenga en cuenta que esto no afecta el código y no se mostrará cuando la máquina comience a funcionar.
Ahora, entremos en la sección “máquina”. De forma predeterminada, la velocidad en baudios se establece en el estándar de 250.000. Esta es la velocidad de comunicación entre la computadora y la placa del controlador cuando se conecta a través de USB. Es importante tener en cuenta este valor, ya que se le pedirá que elija una velocidad en baudios para conectarse al software host, como PronterFace o Repetier Server . Algunas placas controladoras solo aceptan ciertas velocidades en baudios para la comunicación, como Ramps 1.4 y Mega combo, que solo aceptan hasta 115,200.
A continuación, deberá seleccionar la placa controladora que está utilizando. Esto es importante, ya que decidirá la asignación de pines de entrada y salida (E/S). El valor predeterminado es Rampas 1.4, con una extrusora, un ventilador y una cama caliente como salidas de 12 V. En PlatformIO, abra el archivo “src/core/board.h” y busque su placa en la lista. Es importante destacar que si siguió nuestro consejo anterior sobre ejemplos de configuración, ¡la placa base ya debería estar configurada correctamente!
Si no puede verlo inmediatamente, desplácese hacia abajo. Por ejemplo, si está usando un tablero Azteeg, puede copiar el nombre del tablero que sigue a “#define” o usar el número directamente. En este caso, el número es 2501, así:
#define PLACA MADRE PLACA_AZTEEG_X5_GT
o
#define PLACA MADRE 2501
A continuación, deberá establecer el número de extrusores. Como estamos usando una sola extrusora, ingresamos 1 como valor:
#define EXTRUSORES 1
Por último, vamos a indicar el diámetro del filamento:
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Ajustes térmicos
Las impresoras 3D FDM extruyen plástico calentando el material a temperaturas de hasta 300 °C. Por esta razón, cada calentador viene con un termistor o termopar, un dispositivo que mide los valores de temperatura reales en tiempo real y envía información al controlador, diciéndole cuándo subir o bajar el calor. Los termistores mal seleccionados o que funcionan mal pueden generar lecturas de temperatura incorrectas y, por lo tanto, fallas en el funcionamiento del calentador.
Necesitamos seleccionar un termistor de la lista de tipos de termistores reconocidos por Marlin. Según el tipo de termistor que se utilice, se debe conectar un valor correspondiente. Por lo general, el fabricante del extremo caliente proporciona las especificaciones del termistor. El tipo más común es un termistor de 100 KΩ con un pull-up de 4,7 KΩ, lo que conduce al valor correspondiente de 5:
#define TEMP_SENSOR_0 5
Si tiene una cama con calefacción, seleccione el termistor para eso también. Nuevamente, el valor de termistor más común es 5:
#define TEMP_SENSOR_BED 5
Podemos omitir la configuración de PID (derivado integrativo proporcional) , ya que estos están bien calibrados y ajustados por sí mismos.
A continuación, llegamos a la fuga térmica. Estos dos comandos están activados por defecto, protegiendo su máquina de fallas accidentales del termistor. Para desactivarlos, puede agregar dos barras diagonales al frente. Solo haga esto si tiene una buena razón para hacerlo, como para solucionar problemas y propósitos de verificación, y si sabe lo que está haciendo. Nunca los desactive y deje la impresora sola; esto crea un riesgo de incendio.
Ajustes mecánicos
Las impresoras 3D utilizan mecanismos de movimiento para mover el extremo caliente y la plataforma de impresión entre sí. Estos mecanismos y sus ensamblajes es lo que lleva a nombres como “CoreXY” y “H-bot”. Diferentes sistemas usan diferentes representaciones matemáticas para definir el movimiento de la máquina. De forma predeterminada, Marlin supone que va a seguir adelante con una impresora 3D de estilo cartesiano estándar (también conocida como impresora de cabezal XZ o estilo i3).
Si está utilizando un sistema CoreXY o H-bot, asegúrese de activar la configuración adecuada. Para facilitarle la vida, puede descargar un ejemplo preconfigurado del depósito de configuración en GitHub . ¡Solo asegúrate de editar todos los elementos básicos ya mencionados anteriormente!
Si no encuentra el ejemplo correcto, simplemente puede activar su configuración eliminando las dos barras diagonales delante de su selección (y agregándolas a todas las demás). “COREXY” y “COREYX” son los más comunes para las impresoras CoreXY y H-bot. Ambos comparten el mismo marco matemático fundamental y, por lo tanto, una sola configuración funciona para cualquier estilo.
Como estamos usando un mecanismo CoreXY, así es como se verá nuestro código:
#define COREXY //#definir COREXZ //#definir COREYZ //#definir COREYX //#definir COREZX //#definir COREZY
Paradas finales
La configuración del tope final le permite elegir dónde desea que esté la posición de inicio de su boquilla y lecho. “XMIN” es la posición mínima, que será 0 en la mayoría de los casos, y “XMAX” será la posición máxima para el eje definido por usted. b Una vez más, deberá manipular las barras diagonales:
#define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#definir USE_XMAX_PLUG //#definir USE_YMAX_PLUG //#definir USE_ZMAX_PLUG
Al quitar el comentario de la posición “MIN” para todos los ejes, define que los tres ejes estén en sus posiciones mínimas (0,0,0).
Si quisiera que ‘X’ se ubicara en la posición mínima, pero ‘Y’ y ‘Z’ se ubicaran en sus posiciones máximas, el código se vería así:
#define USE_XMIN_PLUG //#definir USE_YMIN_PLUG //#definir USE_ZMIN_PLUG //#definir USE_XMAX_PLUG #define USE_YMAX_PLUG #define USE_ZMAX_PLUG
Finales de carrera
La mayoría de los interruptores de límite tienen dos modos básicos para que la placa del controlador sepa si el interruptor está activado o no. El primero es “normalmente cerrado” (NC) y el otro es “normalmente abierto” (NO). Dependiendo de cómo esté conectado el interruptor de límite, esto puede variar.
Cuando se presiona un interruptor de límite, envía una señal a la placa según el tipo de sensor. A veces, esta señal se invierte, lo que significa que la placa asume que el interruptor está abierto cuando el extrusor ha alcanzado su posición inicial. Si siente que su parada final no se activa correctamente, intente invertir la señal:
#define X_MIN_ENDSTOP_INVERTING falso // establece en verdadero para invertir la lógica de la parada final
Configuración de referencia
Desplácese hacia abajo hasta que vea la configuración “INICIO”. Cuando un eje vuelve a la posición inicial en la posición mínima, el valor de inicio correspondiente debe ser -1.
// Dirección de los topes finales al hacer referencia; 1=MÁX., -1=MÍN. #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1
Volumen de construcción
También deberá definir el tamaño de su volumen de construcción para no mover accidentalmente un eje más allá de sus límites. Estas son también las posiciones máximas que puede mover la impresora.
// El tamaño de la cama de impresión #define X_BED_SIZE 200 #define Y_BED_SIZE 200 // Límites de recorrido (mm) después del inicio, correspondientes a las posiciones de parada final #definir X_MIN_POS 0 #definir Y_MIN_POS 0 #definir Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #definir Z_MAX_POS 200
Ajustes de movimiento
Pasos por unidad es la única configuración que trataremos en la sección “movimiento”, pero eso no significa que será fácil… Para asegurarnos de que su impresora se mueva exactamente la distancia especificada, necesitaremos calcular el ” pasos por mm” valor para cada eje.
Pasos por mm significa el número de pasos que tiene que dar un motor para que su máquina se mueva 1 mm a lo largo de un eje en particular. Por lo tanto, este valor debe calcularse para cada uno de los ejes X, Y y Z y para el mecanismo de extrusión. Esta es la línea de código que necesitaremos modificar:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }
La mayoría de las máquinas utilizan una correa para los ejes X e Y y un tornillo de avance para levantar el cabezal de impresión o la plataforma de impresión. Las calculadoras en línea facilitan las cosas, como la calculadora. Desplácese hacia abajo hasta la sección de motores paso a paso, que tiene una sección accionada por correa y una sección accionada por husillo.
Cinturones
Para las correas, hay cuatro valores que debe conocer para calcular los pasos por mm:
- Ángulo de paso del motor: para la mayoría de los motores NEMA 17, será de 1,8°. Para estar seguro, consulte la documentación proporcionada por el fabricante del motor.
- Micropasos del controlador: la mayoría de las placas utilizan micropasos de 1/16, pero en general, esta información la proporcionará el fabricante de la placa. Si compraste las palancas de pasos por separado, puedes consultar con tu proveedor. Algunas palancas de pasos pueden hacer 1/32, mientras que otras bajan a 1/256. Cuanto más alto sea el número en el denominador, más suaves y precisos serán tus steppers. Asegúrate de no pasar de 1/16, ya que el movimiento se vuelve brusco y brusco.
- Paso de la correa: si utiliza correas GT2 estándar, el paso será de 2 mm. De lo contrario, asegúrese de comprobar las especificaciones.
- Cantidad de dientes de la polea: las poleas GT2 vienen en algunas variedades, con entre 8 y 20 dientes.
Una vez que se ingresan todos los valores, el valor final se calcula automáticamente.
Tornillos de plomo
Para el eje Z con un tornillo de avance, el ángulo de paso del motor y el micropaso del controlador serán los mismos que con las correas. Lo que queda por determinar es el paso del tornillo de avance, que puede variar bastante, desde 2 mm hasta 8 mm. (El paso es la distancia entre dos puntos idénticos adyacentes en un hilo).
Si está utilizando engranajes para aumentar el par, también puede ingresar la relación de transmisión.
Con esta información, debería poder calcular los pasos por valor de mm del eje Z.
Extrusor
Por último, deberá calcular los pasos por mm para el motor de su extrusora.
Primero, usando un calibrador preciso, mida el diámetro del engranaje dentado que impulsa el filamento hacia el interior. Llamemos a ese valor ‘d’. la fórmula es
(número total de pasos para el motor) * (valor de micropasos) / d * 3.14
Como ejemplo, supongamos que tenemos un diámetro de 10 mm y un valor de micropaso de 16. Para un motor paso a paso NEMA 17, el número total de pasos sería 200 si el ángulo de paso mínimo es 1,8°. Así, llegamos a:
200 * 16 / 10 * 3,14 = 101,9 pasos por mm
Una vez que haya marcado todos sus valores, la línea de código anterior debería verse así:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 101.9 }
Recuerde que los valores deben estar en el orden ‘X’, ‘Y’, ‘Z’ y ‘E’, y es posible que aún tenga que calibrar estos valores.
El resto de las configuraciones en la sección “movimiento” se pueden dejar como están.
Compatibilidad con LCD y tarjetas SD
Tener un lector de tarjetas SD y una pantalla LCD hace que la impresión 3D sea mucho más conveniente y también libera tu computadora. Desplácese hacia abajo hasta la sección de compatibilidad con LCD y SD, que se encuentra hacia el final de “configuration.h”.
La compatibilidad con tarjetas SD está desactivada de forma predeterminada. Para activarlo, simplemente elimine las barras diagonales:
#define SOPORTE SDS
Para la compatibilidad con LCD, deberá saber qué tipo de LCD está utilizando. Desplácese hacia abajo hasta la sección del controlador LCD y busque el tipo de LCD que tiene. Supondremos un controlador “Full Graphic Smart” como ejemplo. Una vez más, elimine las barras:
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
También deberá instalar la biblioteca u8glib. Para hacer esto, primero descargue la biblioteca u8glib de GitHub. Luego, Arduino y PlatformIO brindan instrucciones para ayudarlo a integrar la biblioteca en su IDE .
Subiendo el código
Como guía general, recomendamos hacer un buen seguimiento de lo que está editando. Realice solo una o dos ediciones a la vez y verifique si el proyecto compila. En caso de errores, lea las primeras líneas de los códigos de error para tener una idea de lo que salió mal. Luego, corrige el error y vuelve a intentarlo. Si se realizan demasiadas ediciones a la vez, puede ser un desafío rastrear todos los errores. En el peor de los casos, comience de nuevo desde un archivo de configuración limpio.
Cuando esté satisfecho de que todo se compile y haya realizado todos los cambios que desea realizar, puede cargar el archivo binario compilado. Para hacer esto, conecte su PC a su placa controladora con un cable USB o escriba el archivo .bin en una tarjeta SD e insértelo en la ranura para tarjetas SD de su placa.
En PlatformIO, puede compilar y cargar con el símbolo de marca seguido del símbolo de flecha hacia la derecha en la barra de tareas inferior. Alternativamente, puede abrir el proyecto Marlin en PlatformIO (si se editó en otro lugar), ajustar el entorno de construcción, abrir Marlin Auto Build y hacer clic en “Cargar”.
En Configuration_adv.h encontrará las funciones más avanzadas y la diversión realmente puede comenzar. Anímese e intente mejorar la calidad de impresión utilizando el avance lineal , por ejemplo.
Te gusto?
Nuestra web se mantiene gracias a la colaboración de personas como tú. Si encuentras nuestro contenido útil y quieres ayudarnos a seguir ofreciéndolo, invitamos un Tecito. Al hacerlo, estarás contribuyendo al mantenimiento y mejora de nuestro sitio. ¡Gracias por tu colaboración!