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


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:

  • Cura.
  • Slic3r.
  • PrusaSlicer (anteriormente Slic3r Prusa Edition) El nuevo Kid en el bloque basado en Slic3r.
  • Simplify3D es una oferta comercial.

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. 

 

 

Fuentes de alimentación sin transformador ( parte 1 de 2)


El uso de un transformador en fuentes de alimentación de CC tradicionalmente ha sido una solución  bastante común porque son muchas las ventajas que conseguimos  con  él( especialmente  en lo que se refiere al aislamiento ) , pero sin embargo, una gran desventaja de usar un transformador es que  este no se permite  que la unidad sea compacta    añadiendo bastante peso y coste  al dispositivo que lo use ,por ello las  ventajas de usar un circuito de fuente de alimentación sin transformador  se centran en que  se reduce dramáticamente el coste  , tamaño  y peso  siendo ademas  una solución  muy efectiva para aplicaciones que requieren baja potencia para su funcionamiento,  como por ejemplo aplicaciones que requieren corriente por debajo de 100 mA.

 

 

En efecto,  incluso si el requisito actual  de consumo  para su aplicación de circuito es bajo, tradicionalmente teníamos que incluir un transformador pesado y voluminoso haciendo las cosas realmente engorrosas y desordenadas, por lo que en este post vamos a intentar buscar otras soluciones  que intentan prescindir de este caro y voluminoso componente , mas en linea con los nuevos tiempos. 

Como su nombre lo define, un circuito de fuente de alimentación sin transformador,  se aleja  del concepto clásico  de las fuentes de alimentación tradicionales  que poco  a poco  van  reservándose  para  propósitos mas  específicos   donde   básicamente suele haber un voluminoso  transformador  , un rectificador   y un circuito estabilizador ,  quitando  el  transformador(  o por lo menos uno de potencia) .

Con este nuevo enfoque   también es posible proporcionar corriente continua desde  la red de CA de alta tensión   con las ventajas  en reducción   tanto de coste  y de dimensiones  , pero  conllevando  también los   inconvenientes   en relación a  posibles peligros de contactos  de AT  ya que el circuito quedara  expuesto directamente  a la red de ca.

El secreto  de  este concepto   no es otro que  el uso de condensadores de alto voltaje para bajar la corriente de CA de red al nivel inferior requerido , lo cual  puede ser adecuado para el circuito electrónico conectado a la carga. La especificaciones de voltaje de este condensador se selecciona de tal manera que su clasificación de voltaje pico RMS es mucho mayor que el pico de la tensión de red de CA con el fin de garantizar el funcionamiento seguro del condensador.  Este condensador se aplica en serie con una de las entradas de red, preferiblemente la línea de fase de la CA.

Cuando la red AC entra en este condensador, dependiendo del valor del condensador, la reactancia del condensador entra en acción y restringe la corriente de CA de la red de exceder el nivel dado, según lo especificado por el valor del condensador.   

La reactancia capacitiva se representa por  y su valor viene dado por la fórmula:

Donde  es  la  reactancia capacitiva en ohmios., es la capacidad eléctrica en faradios, = Frecuencia en hercios y  = Velocidad angular.

 

Sin embargo, aunque la corriente está restringida la tensión no lo es, por lo tanto, si se mide la salida rectificada de una fuente de alimentación sin transformador, encontrará que la tensión es igual al valor máximo de la red de CA ( alrededor de 310  voltios)  lo cual  podría ser alarmante para cualquier nuevo aficionado,pero dado que la corriente puede ser suficientemente reducidas  por el condensador, este alto voltaje pico podría ser fácilmente abordado y estabilizado mediante el uso de un diodo zener en la salida del rectificador de puente como  vamos  a ver  mas adelante.

Por cierto , no olvidad que la potencia del diodo zener debe seleccionarse adecuadamente de acuerdo con el nivel de corriente permitido del condensador.

La serigrafia  de los condensadores

Dada la importancia del condensador , vamos a  ver como entender al serigrafia de los condensadores  CERÁMICOS y poliester usados tipicamdnte para este tipo de aplicaciones

Los condensadores cerámicos de 10 picofaradios a 82 picofaradios vienen representados con dos cifras, por tanto no tienen problema para diferenciar su capacidad.

Para los valores comprendidos entre 1 y 82, los fabricantes suelen utilizar el punto, es decir, suelen escribir 1.2 – 1.5 – 1.8 o bien situar entre los dos números la letra «p» de picofaradios, es decir, 1p2 – 1p5 – 1p8 que se interpreta como 1 picofaradio y 2 decimas, 1 picofaradio y 5 decimas, etc…

Las dificultades comienzan a partir de los 100 picofaradios, ya que los fabricantes utilizas dispares identificaciones.

  • El primer sistema es el japonés: Las dos primeras cifras indican los dos primeros números de capacidad. El tercer número, al igual que las resistencias, indican el número de ceros que hay que agregar a los dos primeros.Por ejemplo:

100pF   se  muestra como 101 , 120pF  se muestra como 121  o  150 pifofaradios se muestran como  151.

1000pF  se muestra como 102, 1200   se muestra como 122 o  1500 picofaradios se muestran como 152,…

  • Otro sistema es utilizar los nanofaradios: en el caso se 1000 – 1200 – 1800 – 2200 pf se marcan 0´001 – 0´0015 – 0´0018 – 0´0022. Como no siempre hay sitio en las carcasas de los condensadores para tanto número, se elimina el primer cero y se deja el punto, .001 – .0015 – .0018 – .0022.

 

En cambio los condensadores de poliester usados para capacidades mucho mayores que los cerámicos ,además de ir identificado como un sistema que ya hemos visto, pueden marcarse con otro sistema que utiliza la letra griega «µ». Así pues, un condensador de 100.000 picofaradios, lo podemos encontrar marcado indistintamente como 10nf – .01 – µ10.

En la practica la letra µ sustituye al «0», por tanto µ01 equivale a 0.01 microfaradios. Entonces, si encontramos condensadores marcados con µ1 – µ47 -µ82, tendremos que leerlo como 0.1µ – 0.47µ -0.82 microfaradios.

También en los condensadores de poliéster, al valor de la capacidad, le siguen otras siglas o números que pudieran despistar. Por ejemplo 1k, se puede interpretar como 1 kilo, es decir, 1000pf, ya que la letra «K» se considera el equivalente a 1000, mientras que su capacidad es en realidad 1 microfaradio.

La sigla .1M50 se puede interpretar erróneamente como 1.5 microfaradios porque la letra «M» se considera equivalente a microfaradios, o bien en presencia del punto, 150.000 picofaradios, mientras que en realidad su capacidad es de 100.000 picofaradios.

Las letras M, K o J presentes tras el valor de la capacidad, indican la tolerancia:

  • M = tolerancia del 20%
  • K = tolerancia del 10%
  • J = tolerancia del 5 %

Tras estas letras, aparecen las cifras que indican la tensión de trabajo.Por ejemplo: .15M50 significa que el condensador tiene una capacidad de 150.000 picofaradios, que su tolerancia es M = 20% y su tensión máxima de trabajo son 50 voltios.

 

 

 

 

El circuito  

A pesar de que vemos ciertas ventajas en este enfoque  de fuente de alimentación sin trafo , también  hay algunas desventajas de un circuito de fuente de alimentación sin transformador:

  • En primer lugar, el circuito no puede producir salidas de alta corriente, pero eso no hará un problema para la mayoría de las aplicaciones .
  • Otro inconveniente que ciertamente necesita cierta consideración es que el concepto no aísla el circuito de las potencialidades peligrosas de la red de CA. Este inconveniente puede tener graves impacto para los diseños que tienen salidas terminadas o partes metálicas de metal, pero no importará para las unidades que tienen todo cubierto en una carcasa no conductora.

Por lo tanto,  debemos trabajar con este circuito con mucho cuidado para evitar cualquier contacto  con toda  la parte eléctrica pues , el circuito anterior permite que las sobre-tensiones de tensión puedan entrar a través de él, lo  que puede causar graves daños al circuito accionado y al propio circuito de suministro. Sin embargo, en el diseño de circuito de fuente de alimentación simple sin transformador propuesto este inconveniente se ha abordado razonablemente mediante la introducción de diferentes tipos de etapas de estabilización después del rectificador de puente  gracias a un diodo zenner  y un condensador electrolítico a la salida dc del puente  diodos.

En el esquema  se utiliza un condensador metalizado de alto voltaje (C1)   que protege de  sobre-tensiones instantáneas de alto voltaje  el circuito  de  utilización,  siendo el  resto del circuito  nada más que  aun típica  configuraciones de puente simple para convertir la tensión de CA escalonada a CC.

Veamos pues la solución usada mas típicamente :

 

El circuito mostrado en el diagrama anterior es un diseño clásico que se puede utilizar como una fuente de alimentación de 12 voltios DC para la mayoría de los circuitos electrónicos.

El funcionamiento de esta fuente de alimentación sin transformación se puede entender con los siguientes puntos:

  1. Cuando la entrada de red de CA está presente, el condensador C1 bloquea la entrada de la corriente de red y la restringe a un nivel inferior según lo determinado por el valor de reactancia combinada de C1  en paralelo   con R1=1Mohmio  y C1=1 microfaradio / 400V AC   .   Con estos valores  la corriente que podría circular sera de  más o menos alrededor de 50mA. Sin embargo, la tensión no está restringida, y por lo tanto la tensión de  220V completa pueda  estar en la entrada pudiendo alcanzar la etapa posterior del rectificador del puente de diodos ( de ahi  el peligro de este tipo de fuentes)  
  2. El rectificador de puente rectifica este 220V C a un más alto 310V DC, debido a la conversión RMS al pico de la forma de onda AC.
  3. Esta tensión de  310V DC se reduce instantáneamente a una tensión de bajo nivel por la siguiente etapa de diodo zener, lo que lo deriva al valor zener. Si se utiliza un zener de 12V, esto se convertirá en 12V y así sucesivamente.
  4. C2 finalmente filtra el 12V DC con ondas, en un relativamente limpio 12V DC.

 

Usando  lo siguientes valores    en el  esquema anterior Podemos obtener una tensión DC de 12V  y como máximo unos 100mA:

  • R1=1Mohmio
  • C1=105 /400   PPC   donde 105=  10 00000 pf o lo que es  lo mismo 1.000.000pF , es decir 1microF. 
  • R2=50ohmios 1Watt
  • Z1= diodo zener de 12v 1W
  • C2=10mF /250V

 

 

Un ejemplo practico

El circuito anterior de fuente de alimentación capacitiva o sin transformador podría utilizarse como un circuito de lámpara LED para iluminar circuitos LED menores de forma segura, como pequeñas tiras o luces de cadena LED.  Por ejemplo para una  tira de  65 a 68 LED de 3 Voltios en serie aproximadamente a una distancia de vamos a decir 20 cm  y  esas tiras unidas para hacer una tira mayor  dando un total de 390 – 408  ledsen la tira  final.

El circuito del controlador que se muestra a continuación es adecuado para conducir cualquier cadena de bombilla LED que tenga menos de 100 LED (para entrada de 220V), cada LED clasificado en 20mA, LED de 3.3V de 5 mm:

Aquí el condensador de entrada 0.33uF/400V decide la cantidad de corriente suministrada a la cadena LED. En este ejemplo será alrededor de 17mA que es casi correcto para la cadena LED seleccionada.

Si se utiliza un solo controlador para un mayor número de cadenas LED 60/70 similares en paralelo, entonces simplemente el valor del condensador mencionado podría aumentarse proporcionalmente para mantener una iluminación óptima en los LED.

Por lo tanto, para 2 cadenas en paralelo, el valor requerido sería 0.68uF/400V, para 3 cadenas podría reemplazarlo con un 1uF/400V. De forma similar para 4 cadenas, esto tendría que actualizarse a 1.33uF/400V, y así sucesivamente.

Importante: Aunque no he mostrado una resistencia limitadora en el diseño, sería una buena idea incluir una resistencia de 33 ohmios y 2 vatios en serie con cada cadena LED para mayor seguridad. Esto se puede insertar en cualquier lugar de la serie con las cadenas individuales.

 

 

Otro ejemplo real

 

En este otro caso vamos  a  ver una bombilla led comercial  cuyo esquema se ha obtenido por ingeniería inversa

Una vez mas    tenemos como pieza clave  a la entrada  de  AC  un condensador de poliester  ( en este caso de 225pf    , 400V  y 5% de tolerancia   con  una resistencia de 603 ohmios en paralelo antes del puente de  diodos

En este caso al  tener perfectamente delimitado el consumo de 10 leds en serie  , sabemos  que aproximadamente  al ser de 1.2V la salida en el puente de diodos deberia rondar los 12V DC y como se puede ver no es preciso  un diodo zenner a la salida del puente

 

Como truco ,por cierto   esta  bombilla si queremos alimentarla con la batería de un coche  de 12V ,  por ejemplo   bastaría conectar  dos hilos de la  batería de 12V  directamente  a la salida del puente , es decir   justo en los dos polos del condensador electrolítico  respetando lógicamente  la polaridad .

 

ADVERTENCIA: AMBOS CIRCUITOS MENCIONADOS EN ESTE ARTICULO NO SON AISLADOS DE  LA TENSIÓN DE AC  POR LO TANTO TODAS LAS SECCIONES EN EL CIRCUITO SON EXTREMADAMENTE PELIGROSAS PARA TOCARLAS CUANDO SE CONECTAN AL SUMINISTRO ELÉCTRICO…