Cómo actualizar el firmware Marlin y no morir en el intento

Veremos la importancia de tener al día el firmware Marlin de nuestra impresora 3D


What is Marlin?

Marlin es un firmware de código abierto  gratuito    para la familia de impresoras 3d RepRap derivado de Sprinter y grbl  que  se convirtió en un proyecto de código abierto independiente el 12 de agosto de 2011 con su lanzamiento de Github bajo licencia  GPLv3 . Desde el principio Marlin fue construido por y para los entusiastas de RepRap para ser un controlador de impresora sencillo, confiable y adaptable que “simplemente funciona”. Como testimonio de su calidad, Marlin es utilizado por varias impresoras 3D comerciales respetadas  como  Ultimaker, Printrbot, AlephObjects (Lulzbot) y Prusa Research   etc . Ademas Marlin también es capaz de cotrolar las  famosas maquinas CNC ,asi como grabadores láser ,  pues en realidad  en vez extruir material de diferentes propiedades , como lo haría  una impresora 3d,  son variantes de estas al haberse sustituido el extrusor por un láser o una multiherramienta de fresado , corte,etc.

Una clave de la popularidad del fw  Marlin es que se ejecuta en microcontroladores Atmel AVR de 8 bits de bajo costo siendo en su version  2.x   compatible con  placas de 32 bits,  chips  que como sabemos  son el núcleo  de la popular plataforma de código abierto Arduino/Genuino (de  hecho la plataforma de referencia para Marlin es un Arduino Mega2560 con RAMPS 1.4 y Re-Arm con rampas 1.4).

Como producto comunitario, Marlin tiene como objetivo ser adaptable a tantas placas y configuraciones como sea posible, de modo  que sea  altamente  configurable, personalizable, extensible y económico tanto para aficionados como para proveedores de modo  que una implementación  de  Marlin puede ser muy escueta por ejemplo  para su uso en una impresora sin cabeza con un solo hardware modesto pero que  pueda  ampliarse sus características habilitando  según sea necesario para adaptar Marlin a los componentes añadidos.

Resumidamente estas son las principales características:

    • Código G completo con más de 150 comandos
    • Suite completa de movimiento de código G, que incluye líneas, arcos y curvas Bézier
    • Sistema de movimiento inteligente con movimiento de mirada anticipada, basado en interrupciones, aceleración lineal
    • Soporte para cinemática cartesiana, delta, SCARA y core/H-Bot
    • Control del calentador PID de bucle cerrado con ajuste automático, protección térmica, corte de seguridad
    • Soporte para hasta 5 extrusoras más un estampado calefactado
    • Interfaz de usuario del controlador LCD con más de 30 traducciones de idiomas
    • Impresión de tarjetas SD y basadas en host con inicio automático
    • Compensación de nivelación de cama: con o sin sonda de cama
    • Avance lineal para extrusión a presión
    • Soporte para extrusión volumétrica
    • Soporte para mezcla y multiextrusoras (Cíclope, Quimera, Diamante)
    • Soporte para sensores de ancho/de ejecución de filamentos
    • Temporizador de trabajo de impresión y contador de impresión

FDM

Marlin Firmware se ejecuta en la placa principal de la impresora 3D, gestionando todas las actividades en tiempo real de la máquina coordinando los calentadores, motores paso a paso, sensores, luces, pantalla LCD, botones y todo lo demás involucrado en el proceso de impresión 3D implementando  el famoso  proceso de fabricación aditiva llamado Fused Deposition Modeling (FDM), también conocido como Fused Filament Fabrication (FFF). En este proceso, un motor empuja el filamento de plástico a través de una boquilla caliente que funde y extruye el material mientras la boquilla se mueve bajo control informático. Después de varios minutos (o muchas horas) de colocar finas capas de plástico, el resultado es un objeto físico.REPORT THIS ADREPORT THIS AD

El lenguaje de control para Marlin es un derivado del código G donde los comandos de código G le dicen a una máquina que haga cosas simples como “establecer el calentador de 1 a 180o” o “mover a XY a la velocidad F.” Para imprimir un modelo con Marlin, debe convertirse en código G utilizando un programa llamado “slicer”. Dado que cada impresora es diferente, no encontrará archivos de código G para descargar; tendrá que cortarlo  este el propio usuario  obviamente con unsw de slicing 

A medida que Marlin recibe comandos de movimiento, los agrega a una cola de movimiento para ser ejecutados segun las ordenes recibidas. La “interrupción paso a paso” procesa la cola, convirtiendo los movimientos lineales en pulsos electrónicos con precisión en los motores paso a paso. Incluso a velocidades modestas Marlin necesita generar miles de pulsos paso a paso cada segundo. (p. ej., 80 pasos por mm * 50 mm/s a 4000 pasos por segundo!) Dado que la velocidad de la CPU limita la velocidad con la que la máquina puede moverse, ¡siempre estamos buscando nuevas formas de optimizar la interrupción paso a paso!

Los calentadores y sensores se gestionan en una segunda interrupción que se ejecuta a una velocidad mucho más lenta, mientras que el bucle principal controla el procesamiento de comandos, la actualización de la pantalla y los eventos del controlador. Por razones de seguridad, Marlin realmente se reiniciará si la CPU se sobrecarga demasiado para leer los sensores.

Modelado

Mientras Que Marlin solo imprime código G, la mayoría de las segmentaciones solo cortan archivos STL.

Sea lo que sea que utilice para su cadena de herramientas CAD, siempre y cuando pueda exportar un modelo sólido, una segmentación puede “cortar” en código G, y el firmware de Marlin hará todo lo posible para imprimir el resultado final.

Antes de que Marlin pueda soñar con imprimir, primero necesitará un modelo 3D. Puede descargar modelos o crear los suyos propios con uno de los muchos programas CAD gratuitos, como FreeCAD, OpenSCAD, Tinkercad, Autodesk Fusion 360, SketchUp,etc.

Se necesita un alto grado de conocimiento para modelar objetos complejos como un cráneo T-Rex,pero otros objetos pueden ser bastante simples de modelar. Para obtener ideas y probar cosas, explore sitios como Thingiverse y YouMagine e imprima cosas por diversión.

Rebanar o “slicing”

Las segmentaciones preparan un modelo 3D sólido dividiéndolo en rodajas finas (capas). En el proceso se genera el código G que indica a la impresora con minuciosidad cómo reproducir el modelo. Hay muchas segmentaciones de datos para elegir, incluyendo:

Impresión

Marlin se puede controlar por completo desde un host o en modo independiente desde una tarjeta SD. Incluso sin un controlador LCD, una impresión SD independiente todavía se puede iniciar desde un host, por lo que el equipo se puede quitar de la impresora.

 

 

Actualización de Marlin

Para la impresoras  del famoso  fabricante Geetech , esn este link ponen a nuestra disposicion  todo el fw Marlin disponible

 

 
 
Una vez descargado , lo descomprimiremos    y nos iremos a Marlin.ino para que nos lo cargue el interfaz  de Arduino  todos los archivos necesarios:  
 

 

Antes de compilarlo  elegiremos   como placa   “Arduino:1.8.10 (Windows 10)  y la  tarjeta:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

Intentaremos compilar el fw antes de subirlo a la impresora

 

Como  podemos ver puede que nos lance  el error exit status 1  using typedef-name ‘fpos_t’ after ‘struct’

 

Tendremos que cambiar el literal   fpost_t  por fpost    en los siguientes ficheros , pero al ser un fw  el ide de arduino nos va a dar problemas a la hora de editar los ficheros , así que  lo mejor es editar con nuestro editor de texto favorito los siguientes ficheros

 

  • SdBaseFile.h
  • Configuration.h
  • pins.h

 

 

Una vez hecho esto , cuando  intente compilar el código actualizado  desde el IDE de Arduino,  vera que  ya no encuentra problemas  y por fin  ya podrá actualizar el firmware  en su impresora 3d.