Programar fácil con Arduino

Programar fácil con Arduino, entiende cómo funciona el mundo.

  • Blog
  • ¿Quién soy?
  • Podcast
  • Curso Arduino [GRATIS]
  • Curso Domótica [GRATIS]
  • Acceder
Usted está aquí: Inicio / Blog / Arduino / Cómo funciona una impresora 3D gracias a Arduino: firmware Marlin, drivers A4988, DRV8825, TMC2209

Cómo funciona una impresora 3D gracias a Arduino: firmware Marlin, drivers A4988, DRV8825, TMC2209

Danilo Muñoz Jaramillo

En el artículo anterior puedes ver la primer parte de esta serie donde hablamos todo sobre motores paso a paso. En esta segunda parte, toca tratar el funcionamiento de los drivers para este tipo de motores.

Cuando hablamos de impresoras 3D, máquinas de Control Numérico computarizado, CNC (Computarized Numeric Control), trazadores gráficos (plotters) o de robots, nos asombramos de los movimientos tan precisos que deben realizar e imaginamos cómo debe ser la electrónica para poder controlar los motores que estas máquinas utilizan. En este artículo vamos a analizar los motores paso a paso y los drivers A4988, DRV8825 y TMC2209 encargados de realizar esta función, también veremos las bases del firmware Marlin.

Así que, si te interesan estos temas de la tecnología, te invito a que te sientes cómodamente y vamos a empezar.

Indice de contenidos

  • 1 Partes de una impresora 3D
  • 2 Motores NEMA 17 y NEMA 23
  • 3 A4988 DRV8825 TMC2209 drivers más usados en impresoras 3D
  • 4 Driver para motores paso a paso A4988
  • 5 Chip del driver A4988
  • 6 Configuración de pines del driver A4988
  • 7 Cómo se usa el driver A4988
  • 8 Driver para motores paso a paso DRV8825
  • 9 Chip del driver DRV8825
  • 10 Configuración de pines del driver DRV8825
  • 11 Cómo se usa el driver DRV8825
  • 12 Driver para motores paso a paso TMC2209
  • 13 Chip del driver TMC2209
  • 14 Configuración de pines del driver TMC2209
  • 15 Esquema de conexiones Arduino, TMC2209 y motor paso a paso
  • 16 Cómo se usa el driver TMC2209
  • 17 Marlin el firmware para impresoras de código abierto
  • 18 ¿Qué es Marlin y para qué sirve?
  • 19 Conclusión sobre los drivers para impresoras 3D
A4988-DRV8825-TMC2209-Marlin-impresoras-3D-motores-paso-a-paso

Partes de una impresora 3D

Una impresora 3D es un dispositivo capaz de reproducir un objeto sólido en 3 dimensiones mediante la adición de material (método aditivo). En este punto está la gran diferencia con las máquinas CNC, que también imprimen o más bien moldean, realizan torno, rectificación o corte de objetos con la sustracción de material (método sustractivo) y por tanto generan más residuo, aunque también son más rápidas.

En este artículo nos centraremos en las impresoras 3D y cómo se realiza el control de sus motores paso a paso, especialmente aquellas impresoras ensambladas por makers que basan su funcionamiento en el Arduino Mega y el modulo (shield) RAMPS.

Si estás empezando con Arduino y no conoces estos términos, no te preocupes que lo irás entendiendo a lo largo del artículo. Pero antes un resumen general y muy básico del funcionamiento de las impresoras 3D.

Existen muchos tipos de impresoras 3D según la tecnología que se utilice. Algunas de ellas son las FDM o Modelado por Deposición Fundida (Fused Deposition Modeling), SLS o Sintetización Selectiva por Láser (Selective Laser Sintering), SLA o estereolitografía (stereolithography), DLP o Procesamiento Digital por Luz (Digital Light Processing), entre otras. Aquí nos interesa el metodo que permita crear facilmente nuestros propios cacharros.

:) «hazlo tú mismo, DIY (Do It Yourself)».

Por ello en este artículo nos centraremos en las impresoras 3D FDM.

Algunas de las características más importantes de una impresora 3D FDM son:

  • Componentes económicos
  • Costos por impresión bajos
  • Relativamente fáciles de usar

Así mismo hay varios tipos de impresoras 3D FDM.

  • Cartesiana
  • Delta
  • Core XY
  • Polar
  • Brazo Robot

La gráfica inferior nos muestra una impresora 3D FDM cartesiana típica, que es la que usaremos como referencia en nuestro artículo.

Este tipo de impresoras cuentan con 3 ejes perpendiculares y son de las más comunes en el mercado; utiliza el sistema de coordenadas dimensionales cartesianas X, Y, Z.

impresoras 3D como funciona

Su funcionamiento se basa en un sistema de extrusión (del latín extrudere, que significa expulsar) de un filamento de material termoplástico (hay mucha variedad, ABS (Acrylonitrile Butadiene Styrene), PLA (PolyLactic Acid), que es biodegradable, entre otros), que es empujado por un motor paso a paso, a través de un orificio o boquilla previamente calentada que lo derrite y lo deposita capa por capa sobre la cama o base de impresión (que puede ser caliente o fría), en unas coordenadas que le hemos indicado previamente, para así formar un objeto tridimensional, algo así como un pastelero con su manga pastelera recubriendo un pastel ;).

En la imagen inferior podemos observar un sistema de extrusión que está creando un objeto capa por capa.

Sistema de extrusión

Las impresoras 3D las podemos descomponer en tres partes o elementos: hardware, software y mecánica.

  • Hardware

Para construir una impresora 3D FDM cartesiana, se requiere el control de varios motores paso a paso (al menos 4, uno para cada eje X, Y, Z y otro para alimentar el filamento) y ese trabajo lo realizará el Arduino MEGA.

Arduino MEGA 2560

Además no podemos utilizar un controlador (driver) como el L298D, ya que para controlar la dirección y la velocidad de giro de cada uno de los cuatro motores paso a paso necesitaríamos muchos puertos del Arduino. Entonces usaremos controladores de motor paso a paso dedicados tales como el A4988, DRV8825 y TMC2209. Estos irán instalados en un modulo RAMPS (RepRap Arduino Mega Pololu Shield), que es una tarjeta de expansión (shield) fabricada para el Arduino MEGA.

RepRap es un proyecto para crear máquinas autorreplicables, es decir impresoras 3D que sean capaces de producir componentes para crear copias de sí mismas, este proyecto popularizó la fabricación de impresoras 3D en la cultura maker, y Pololu es una marca comercial que hace uso del circuito integrado A4988 desde hace bastante tiempo.

Escudo RAMPS para Arduino MEGA

La placa RAMPS, que observamos en la imagen superior, no solo puede controlar cinco motores paso a paso por medio de los drivers A4988, DRV8825 o TMC2209 sino también y dependiendo del modelo, otros dispositivos necesarios en la impresora 3D tales como calentador, ventilador, termistores y cama caliente, entre otros.

La extrusora es un componente muy importante en la impresora 3D y se encarga de empujar el filamento hasta la boquilla (Hot End).

Tenemos dos tipos de extrusión: la directa (Direct Drive), que empuja el fiamento directamente a la boquilla y la extrusora Bowden que está montada en el chasis de la impresora y empuja el filamento a través de un tubo hasta el extremo caliente.

Cada tipo de extrusora tiene sus ventajas y desventajas; si se desea trabajar con filamentos flexibles, es recomendable la extrusora directa.

También es necesario en el hardware la fuente de alimentación (Power Supply), sus valores de tensión, corriente y potencia dependerán de la impresora 3D; un ejemplo puede ser 12 VDC, 15 A, 180 W.

  • Software

Tenemos dos tipos de software, uno para la calibración de los parámetros de la impresora 3D (firmware) y otro para la impresión.

Hay muchas opciones, como ejemplos para software de calibración tenemos PronterFace y los firmwares Sprinter y Marlin.

Para la impresión, el modelado 3D se puede hacer con Tinkercad, Rhinoceros, Fusion 360, FreeCAD entre otros o bajar de algún repositorio de archivos en 3D como Thingiverse o Cults3D. De estos programas podemos obtener archivos de extensión .STL para luego pasar ese archivo a un laminador y crear el Código G (G-Code), que es lo que entenderá el Arduino MEGA, puede ser con Slicer o Ultimaker Cura, entre otros.

  • Mecánica

Son varias las partes mecánicas de la impresora 3D, las más importantes son los motores paso a paso (electromecánico), las correas, los husillos y las varillas roscadas.

Motores NEMA 17 y NEMA 23

Para realizar los movimientos X, Y, Z, alimentar el filamento para el hot end y realizar la impresión 3D, es necesario utilizar motores PaP. Ingresa en el sieguiente artículo si deseas conocer con detalles el funcionamiento de un motor paso a paso.

Un motor paso a paso es un motor de corriente continua sin escobillas cuya rotación se divide en un número discreto de pasos, su eje se desplaza por saltos y no de forma continua como lo hace un motor DC tradicional de escobillas; es decir convierte pulsos eléctricos en desplazamientos angulares. Su principal característica es que permite un desplazamiento preciso, aunque por esta misma razón requieren de un controlador basado en Arduino y un amplificador de corriente, llamados también controladores de motor o drivers.

Aunque existen motores paso a paso unipolares y bipolares, en este artículo nos interesa los bipolares. En la imagen inferior observamos el diagrama esquemático simplificado de un motor paso a paso bipolar. Tiene dos bobinas independientes y por tanto cuatro hilos para su conexión.

Diagrama esquemático simplificado de un motor paso a paso bipolar

Abajo podemos observar el interior de un motor paso a paso.

Estator y rotor de un motor paso a paso

Dos de los motores paso a paso bipolares más usados en impresoras 3D y CNC son los llamados NEMA 17 y NEMA 23. Estos motores cumplen con las normas NEMA y mirando su referencia, podemos conocer las características más importantes de los mismos. Veamos un listado de ellas para cada uno de estos dos motores.

MOTOR NEMA 17

Motor NEMA 17
  • Modelo: 17HS4401S
  • Tipo de motor: bipolar
  • Número de conductores: 4
  • Fases: 2
  • Resistencia del devanado: 1.5 Ω
  • Tensión de alimentación: 2.6-24 VDC
  • Pasos por revolución: 200 (paso nominal)
  • Ángulo de paso: 1.8°
  • Consumo de corriente: 1.7 A / fase
  • Torque: 0.43 Newton/metro o 4.3 kg/cm

MOTOR NEMA 23

Motor NEMA 23
  • Modelo: 57H1876-420-8-21B
  • Tipo de motor: bipolar
  • Número de conductores: 4
  • Fases: 2
  • Resistencia del devanado: 0.6 Ω
  • Tensión de alimentación: 5-36 VDC
  • Pasos por revolución: 200 (paso nominal)
  • Ángulo de paso: 1,8°
  • Consumo de Corriente: 4.2 A / fase
  • Torque: 1.8 Newton/metro o 18 kg/cm

Comparando estas características en estos modelos particulares de motores paso a paso NEMA 17 y NEMA 23, podemos concluir que el NEMA 23 por su mayor torque, es recomendable para situaciones que requieran trabajo con cargas más pesadas.

A4988 DRV8825 TMC2209 drivers más usados en impresoras 3D

Sabemos que Arduino puede proporcionar en sus salidas una tensión de 5 V y una intensidad de corriente baja (unos 40 mA) y vimos que un motor paso a paso necesita tensiones que pueden llegar a ser de 12, 24 o 36 V y corrientes de un amperio o más, por lo tanto no es posible un acoplamiento directo entre Arduino y el motor paso a paso, necesitamos entonces de una interfaz de potencia o driver para satisfacer las necesidades de corriente de nuestro motor.

Las tensiones de alimentación de los motores paso a paso generalmente son de 12 a 24 VDC, pero al tener sus bobinas una resistencia interna tan baja, se generan corrientes muy altas que pueden dañarlas, de allí la necesidad del uso de drivers que trabajan con señales de Modulación por Ancho de Pulso, PWM (Pulse Width Modulation) y así se limita la corriente, ya que el motor no trabajará permanentemente sino por cortos periodos de tiempo, esta forma de limitar la corriente se llama Chopping.

Los drivers dedicados para motores paso a paso nos simplifican mucho el trabajo de control, ya que son autónomos y se encargan de generar todas las señales necesarias para el buen funcionamiento de los motores con solo dos señales de control desde Arduino, una que indique el sentido de giro y otra para indicar el avance de un paso al motor. Estos controladores nos ofrecen también la posibilidad de realizar micropasos (microstepping) para aumentar la precisión en el giro del motor y además ofrecen protección por temperatura y regulación de intensidad de corriente.

Los drivers para motores paso a paso pueden ser colocados en una protoboard para realizar algunas pruebas de verificación, pero para un diseño definitivo se utilizan las llamadas tarjetas de expansión, de esta forma se facilita la conexión del controlador.

La imagen inferior muestra una tarjeta de expansión que puede ser utilizada con los drivers A4988, DRV8825 y TMC2209.

Tarjeta de expansión para drivers A4988 y DRV8825

Con las tarjetas de expansión se facilita asignar los micropasos deseados, la conexión de la fuente de poder, del motor y de los pines de control de Arduino (Enable, Step y Dir). Otro detalle, no menos importante es el condensador de 100 µF/35 V que sirve para estabilizar la tensión de alimentación del motor paso a paso.

Cuando se necesita controlar varios motores paso a paso como es el caso de una impresora 3D realizada con el Arduino MEGA, se recurre al uso de una tarjeta RAMPS, como vimos anteriormente, esta tarjeta permite la instalación de 5 drivers.

Como regla general, se debe evitar hacer conexiones y desconexiones del motor paso a paso con estos controladores energizados, para evitar daños en los mismos.

Aunque existen muchos modelos de controladores para motores paso a paso, tres de ellos son ampliamente utilizados en impresoras 3D y son los drivers A4988, DRV8825 y TMC2209. Hay algunas diferencias entre ellos y eso es lo que vamos a tratar a continuación.

No olvides que de cada uno de estos tres drivers, existen diferentes versiones y debes verificar el conexionado de pines (pinout), verificando la hoja de datos técnica (datasheet) ofrecida por el fabricante cuando vayas a implementar tus propios circuitos.

Driver para motores paso a paso A4988

El driver A4988, es un módulo controlador de micropasos que simplifica el control de motores paso a paso bipolares. Lleva muchos años en el mercado, es uno de los más usados por su fiabilidad y bajo costo.

A los módulos que llevan el circuito integrado A4988 se les acostumbra a llamar Pololu, que es una marca comercial que popularizó el uso de este circuito integrado.

En la imagen inferior observamos al driver A4988. Es un módulo que sirve de soporte al circuito integrado del mismo nombre A4988; este integrado o chip está cubierto por un disipador de calor. En el módulo hay otros componentes necesarios para su funcionamiento, el más notorio es el potenciómetro para ajustar la intensidad de corriente máxima que se entregará al motor paso a paso, y se indica con una flecha.

Driver A4988

Chip del driver A4988

El componente principal del driver A4988 es el circuito integrado o chip A4988, diseñado por la empresa Allegro MicroSystems y da su nombre a módulo controlador.

Circuito integrado 4988

El circuito integrado A4988, está compuesto por dos secciones, una parte es la lógica, que permite controlar al motor paso a paso con solo dos pines de entrada de un microcontrolador y la parte de potencia, para poder manejar la tensión y la corriente del motor paso a paso.

La sección de potencia del chip A4988 está diseñada con transistores de efecto de campo de tecnología DMOS o semiconductores de óxido metálico de doble difusión, por sus siglas en inglés. Esto le garantiza que los transistores de potencia trabajen con más seguridad y eficiencia a altas temperaturas.

Especificaciones técnicas A4988

Listemos las características técnicas más importantes del driver A4988 extraídas de su datasheet.

  • Tensión de trabajo: 3 a 5.5 VDC para la lógica y 8 a 35 VDC para el motor paso a paso
  • Intensidad máxima: 2 A
  • Color característico: verde o rojo
  • Ajuste de intensidad de corriente mediante un potenciómetro de ajuste en el módulo
  • Resolución: paso completo, 1/2 de paso, 1/4 de paso, 1/8 de paso y 1/16 de paso
  • Pines de control de paso (STEP) y dirección (DIRECTION)
  • Protección por alta temperatura, cortocircuito, sobre tensión y sobre intensidad
  • Generan ruido en el motor, pero es muy económico

Configuración de pines del driver A4988

Configuración de pines del driver A4988

Primero analicemos los terminales del lado izquierdo de la imagen, coloreados en azul, que son los pines de control.

  • ENABLE

Esta es la habilitación del módulo y la línea en la parte superior nos indica que la función es activa en bajo, es decir, se debe mantener a nivel bajo (LOW) para que el módulo se encuentre habilitado o en modo de funcionamiento normal. Este pin tiene resistencia de pull-down que mantiene habilitado el módulo.

  • MS

Los 3 pines MS o micropasos (microstepping), nos permite configurar los pasos de motor, según la siguiente tabla.

Tabla de micropasos del módulo A4988

Estas entradas MS, tienen resistencias internas de pull-down y por tanto están a nivel bajo (LOW) y si las dejamos «al aire» o sin conexión, estaremos en el primer caso de la tabla y por tanto el motor paso a paso trabajará en paso completo. Recordemos que en esta configuración se obtiene aproximadamente el 71% de la intensidad total de la corriente que entrega el controlador, a diferencia de los micropasos que obtienen el 100%, en algún momento de su funcionamiento, pero no de forma permanente.

Con el uso de la tarjeta de expansión para el driver A4988 se facilita la configuración de los micropasos por medio de tres pequeños interruptores que están montados en un solo paquete (DIP switch de 3 posiciones) que se muestra en la imagen inferior.

DIP switch para el control de los micropasos en la tarjeta de expansión de un driver A4988

Si utilizas un escudo RAMPS puedes controlar los micropasos mediante puentes (jumpers) que trae para cada uno de los cinco controladores que puede contener.

Hay que considerar que a medida que aumentamos la resolución del motor, el torque disminuye.

  • RESET

Permite restablecer o reiniciar el módulo A4988 y es activo en bajo. Este pin no tiene resistencia de pull-up.

  • SLEEP

Coloca al circuito integrado en un modo de bajo consumo, también activo en bajo. Este pin sí tiene resistencia de pull-up.

  • STEP

Arduino utiliza este pin para enviar un pulso y que el motor realice un paso.

  • DIR

Arduino enviará un alto (HIGH) o un bajo (LOW) a este pin y lograremos que el motor gire en una dirección u otra.

Ahora los pines del lado derecho, que son los pines de alimentación y del motor paso a paso.

  • Vmotor y GND

Conexión para una fuente de alimentación externa para la etapa de potencia del driver A4988 y las bobinas del motor paso a paso, está comprendida entre 8 y 35 VDC. El valor de tensión y la capacidad de corriente de esta fuente de alimentación dependerán del modelo del motor paso a paso que utilicemos.

  • 2B y 2A

Conexión para la bobina 2 del motor paso a paso.

  • 1A y 1B

Conexión para la bobina 1 del motor paso a paso.

  • VDD y GND

Es la alimentación para la parte lógica del circuito integrado A4988, puede estar comprendida entre 3 y 5.5 VDC. El consumo de corriente de esta sección es baja y por tanto podemos tomar la alimentación directamente desde Arduino.

Sistema de refrigeración: disipador de calor

Si la corriente en el motor paso a paso es inferior a 1 A, el driver A4988 puede trabajar sin disipador de calor de aluminio; para corrientes superiores a 1 A y hasta máximo 2 A, se debe utilizar un disipador de calor y de ser posible ventilación.

Disipador de calor para el driver A4988

En la imagen superior vemos un disipador de calor para el driver A4988. Para adherirse al chip, el disipador trae en la parte inferior una cinta con un protector para el adhesivo, la cinta debe retirarse al momento de colocarse en el chip.

¿Cómo limitar la corriente?

El driver A4988 posee un potenciómetro para ajustar la intensidad de corriente máxima que entregará a las bobinas del motor paso a paso. Esto lo hacemos para ajustarnos al motor específico para nuestros proyectos y se debe reajustar si cambiamos de motor por otro de diferentes características, por ejemplo de un NEMA 17 a un NEMA 23.

El fabricante del circuito integrado nos ofrece una fórmula matemática para limitar la corriente del módulo.

 I m a x=\frac{V r e f}{{8} *{R S}}

Despejemos a Vref, que es lo que necesitamos calcular:

 V r e f=\frac{I m a x}{{8} *{R S}}

Donde Vref, es el voltaje o tensión de referencia que debemos ajustar por medio del potenciómeto colocado en el módulo A4988.

Imax, es la máxima corriente que entregará el módulo A4988.

RS (Resistor Sense) es una de las dos resistencias en derivación (shunt) o resistencias de detección, una para cada fase o bobina del motor paso a paso. Son llamadas S1 y S2 (Sense 1 y Sense 2), otras veces R4 y R5, cuyos valores pueden estar comprendidos entre 0.01 hasta 0.2 Ω. Debes encontrar el valor de esas resistencias en tu driver A4988; un valor típico de RS es de 0.1 Ω, pero hay que verificarlo.

Resistencias Shunt de 0.1 Ω

En la imagen superior vemos que el valor de RS es R100, según el código de Dispositivos de Montaje Superficial, SMD (Surface Mount Device) cambiamos la R por un punto decimal, entonces RS = 0.1 Ω.

Aunque el datasheet del motor NEMA 17 de referencia 17HS4401S, que usaremos para estos ejemplos, nos indica una corriente máxima de 1.7 A por fase o bobina, usaremos una corriente de 1.5 A para no trabajar al límite.

Reemplazamos en la ecuación:

 V r e f={1.5}*{8} *{0.1}

 V r e f={1.2}{V}

Para hacer este ajuste de corriente, solo debemos conectar los 5 VDC y GND de nuestro Arduino a la parte lógica del driver A4988, VDD y GND.

Ajuste de limitación de corriente para el driver A4988

Con ayuda de un «cocodrilo» o «caimán» unimos la punta roja o positiva del polímetro o multímetro, que deberá estar ajustado como voltímetro en una escala de 2VDC, a la punta metálica de un destornillador pequeño y la punta negra o negativa a cualquier GND; luego giramos lentamente y con cuidado la perilla del potenciómetro midiendo la tensión en el cursor o parte móvil del potenciómetro hasta llegar al valor de tensión hallado en la fórmula, en tu caso puede ser un valor diferente ya que depende del valor de corriente que desees limitar, de la RS de tu controlador A4988 y de la corriente del motor paso a paso que utilices.

De esta forma, sin importar los micropasos que utilicemos, el controlador A4988, no proporcionará una intensidad de corriente superior a 1.5A; si por algún motivo el motor paso a paso exige una corriente mayor, el driver A4988 quitará la alimentación de las bobinas del motor, protegiéndolas de un posible daño.

Esquema de conexiones Arduino, A4988 y motor paso a paso

Usaremos para el ejemplo básico el diagrama de Pololu para conectar nuestro controlador Arduino con el driver A4988 y el motor paso a paso NEMA17, de referencia 17HS4401S, este esquema es el mismo que recomienda el fabricante del chip A4988 Allegro MicroSystems.

Esquemático para la prueba del driver A4988

Recuerda: por norma general, no debemos conectar y desconectar las cargas de un circuito electrónico estando encendido, conectar o desconectar el motor paso a paso con el driver A4988 energizado, no es la excepción, podemos destruir el driver.

Cómo se usa el driver A4988

Para todos nuestros ejemplos usaremos el paso completo: MS1, MS2 y MS3 al aire si usamos los drivers en protoboard, si usamos tarjeta de expansión, todos los interruptores en 0 (OFF) y si usamos una RAMPS, no colocamos puentes (jumpers) en los pines ubicados debajo de cada driver. En modo de paso completo tomaremos solo el 70.7% de la intensidad máxima calculada.

También puedes variar la resolución del motor paso a paso variando los pasos según la tabla y observar el cambio en su velocidad, por ejemplo se puede colocar a MS1 en alto o puentear sus pines y trabajar en modo de medio paso y aprovechar el 100% de la intensidad máxima, el recorrido del eje, será la mitad. También se puede ajustar un poco el VREF según las fórmulas, si se nota saltos de pasos en el motor durante su funcionamiento final, siempre respetando la intensidad máxima soportada por el motor.

Diagrama pictórico del montaje control de motor paso a paso con driver A4988

Consideraciones:

  • El controlador A4988 internamente comunica GND de la fuente de baja tensión de la lógica y GND de la fuente de mayor tensión para los transistores de potencia, por tanto no hay necesidad de hacer comunes los GND externamente, aunque podemos hacerlo ya que es costumbre y es necesario en los circuitos que utilizan dos o más fuentes de alimentación independientes.
  • Si usas el módulo A4988 en una protoboard sin su tarjeta de expansión o sin tarjeta RAMPS, debes colocar un condensador de 100 µF/35 V en los pines de alimentación de la parte de potencia del chip, respetando la polaridad de sus terminales. Es necesario este condensador ya que el controlador A4988 utiliza condensadores cerámicos de baja Resistencia Equivalente en Serie, ESR (Equivalent Series Resistance) que los hace susceptibles de daño con los picos de tensión.
  • Los pines de ajuste de resolución de pasos MS1, MS2 y MS3, pueden quedar sin conexión porque tienen resistores de pull-down y trabajaremos a paso completo.
  • El pin de ENABLE puede quedar sin conexión ya que también tiene su resistor de pull-down que habilita el módulo.
  • Conectamos con un puente (jumper) los pines RESET y SLEEP para aprovechar el resistor de pull-up de SLEEP y mantener en un nivel alto a RESET. Podemos hacer esto ya que no usaremos estos pines en nuestro circuito básico.
  • Los colores de una bobina del motor paso a paso NEMA 17 son negro y verde, la otra bobina son rojo y azul.

Código Arduino: sin biblioteca

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int paso = 2;      
int direccion = 3;    
 
void setup()
{
  pinMode(paso, OUTPUT);  
  pinMode(direccion, OUTPUT);  
}
 
void loop()
{
  digitalWrite(direccion, HIGH);
      
    for(int i = 0; i < 200; i++){  
    digitalWrite(paso, HIGH);      
    delay(10);          
    digitalWrite(paso, LOW);      
    delay(10);          
  }
  delay (1000);
    
    digitalWrite(direccion, LOW);
      
    for(int i = 0; i < 100; i++){  
    digitalWrite(paso, HIGH);      
    delay(10);          
    digitalWrite(paso, LOW);      
    delay(10);          
  }
  delay (1000);
        
}

Primero creamos dos variables que llamaremos paso y dirección, y que son las dos únicas órdenes que necesitan los controladores dedicados A4988, DRV8825 y TMC2209.

1
2
int paso = 2;      
int direccion = 3;

En la función void setup() declaramos esos pines como salida.

1
2
3
4
5
void setup()
{
  pinMode(paso, OUTPUT);  
  pinMode(direccion, OUTPUT);  
}

En la función loop(), primero hacemos rotar el motor paso a paso en una dirección.

1
  digitalWrite(direccion, HIGH);

Posteriormente, con un ciclo for() creamos los 200 pasos para un giro de nuestro motor paso a paso NEMA 17, que es de 200 pasos por giro.

Formamos una onda cuadrada de 20 milisegundos (10 ms ON y 10 ms OFF), o sea un pulso completo cada 20 ms (0.02 segundos).

Y como la frecuencia es la inversa del tiempo:

 V r e f=\frac{1}{Tiempo}

 V r e f=\frac{1}{0.02}

 V r e f={50}{Hz}

Cada segundos se generarán 50 pulsos, pero como el motor paso a paso necesita 200 pulsos para un giro completo, demorará 4 segundos para dar un giro completo en un sentido.

1
2
3
4
5
    for(int i = 0; i < 200; i++){  
    digitalWrite(paso, HIGH);      
    delay(10);          
    digitalWrite(paso, LOW);      
    delay(10);

Esperamos un segundo y repetimos el proceso, pero con dirección contraria y solo durante dos segundos.

1
2
3
4
5
6
7
8
9
10
   delay (1000);
    
    digitalWrite(direccion, LOW);  
    for(int i = 0; i < 100; i++){  
    digitalWrite(paso, HIGH);      
    delay(10);          
    digitalWrite(paso, LOW);      
    delay(10);
}
  delay (1000);

En pocas palabras, el motor girará una vuelta completa (360°) en 4 segundos, para y espera un segundo, invierte su giro durante dos segundos (180°), para y espera un segundo y repite este ciclo indefinidamente.

Código Arduino: uso de la biblioteca AccelStepper

Haremos uso de la librería AccelStepper escrita por Mike McCauley, la cual debemos instalar en el IDE de Arduino, si no recuerdas o no sabes cómo hacerlo, puedes ver «cómo instalar librerías» en un artículo muy interesante que se encuentra en el blog.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <AccelStepper.h>
#define paso 2
#define direccion 3
#define motorInterfaceType 1
 
AccelStepper miMotor = AccelStepper(motorInterfaceType, paso, direccion);
 
void setup() {
  miMotor.setMaxSpeed(1000);
  miMotor.setSpeed(200);
}
 
void loop() {  
  miMotor.runSpeed();
}

Invocamos la librería AccelStepper y con la directiva del compilador #define nos ahorramos un espacio en memoria que ocupa si declaramos los pines como variables de tipo entero. Podemos hacerlo ya que esos pines 2 y 3 en realidad no van a variar, son constantes y las constantes definidas con #define no ocupan espacio de memoria. En este código tan pequeño no es necesario pero, en proyectos grandes, sí es conveniente hacerlo, aunque también le da elegancia al código :).

También debemos definir el tipo de interfaz del motor, motorInterfaceType 1, esto nos indica que usaremos un controlador de paso y dirección, como el A4988.

1
2
3
4
#include <AccelStepper.h>
#define paso 2
#define direccion 3
#define motorInterfaceType 1

Creamos una nueva instancia de la clase AccelSteper, con el tipo de interfaz de motor y las conexiones de paso y dirección. A nuestro motor paso a paso lo llamaremos miMotor.

Podemos crear varias instancias de la clase AccelSteper con diferente nombres de motor, pines de paso y dirección y así controlar varios motores paso a paso.

1
AccelStepper miMotor = AccelStepper(motorInterfaceType, paso, direccion);

En la función setup() se define la velocidad máxima del motor paso a paso, se recomienda 1000.

Con el método setSpeed() definimos la velocidad, en este ejemplo colocamos 200, si ajustamos este valor observaremos los cambios de velocidad.

Si definimos setSpeed(-200), el motor paso a paso girará en sentido contrario.

1
2
3
4
void setup() {
  miMotor.setMaxSpeed(1000);
  miMotor.setSpeed(200);
}

En la función loop() dejamos correr libremente al motor paso a paso.

1
2
3
void loop() {
  miMotor.runSpeed();
}

Driver para motores paso a paso DRV8825

El driver DRV8825 es un controlador para motores paso a paso muy utilizado en impresoras 3D y máquinas CNC. , vino a ser una versión mejorada del driver A4988. Ambos controladores son muy parecidos, pero hay algunas diferencias entre ellos.

Driver DRV8825

Como podemos observar en la imagen superior, la primera diferencia entre los dos controladores es el color del módulo.

Chip del driver DRV8825

La tarjeta controladora DRV8825 incorpora el circuito integrado que le da su nombre al módulo, el chip DRV8825 fabricado por la empresa Texas Instruments.

Circuito integrado DRV8825

Al igual que driver A4988, el DRV8825 también se compone de una sección lógica y una sección de potencia.

Especificaciones técnicas DRV8825

Las principales características técnicas del módulo DRV8825 son:

  • Tensión de trabajo: 2.5 a 5.5 VDC para la lógica y 8.2 a 45 VDC para el motor paso a paso
  • Intensidad máxima: 2.5 A
  • Color característico: morado o púrpura
  • Ajuste de intensidad de corriente mediante un potenciómetro de ajuste en el módulo
  • Resolución: paso completo, 1/2 de paso, 1/4 de paso, 1/8 de paso, 1/16 de paso y 1/32 de paso
  • Pines de control de paso (STEP) y dirección (DIRECTION)
  • Protección por alta temperatura, cortocircuito, sobre tensión y sobre intensidad
  • Genera menos ruido en el motor que el driver A4988, pero es un poco más costoso

Configuración de pines del driver DRV8825

Configuración de pines driver DRV8825

Aunque difieren algunos de los nombres de los pines del controlador DRV8825 de los nombres de los pines del controlador A4988, son drivers muy parecidos en todas sus funciones, se debe tener en cuenta que las prestaciones del driver DRV8825 son un poco superiores a las del driver A4988, como se puede ver en las especificaciones técnicas.

En algunos drivers DRV8825 el pin ENABLE, no tiene resistencia de pull-down interna y se debe forzar el nivel lógico con un puente a GND.

Importante: la ubicación del potenciómetro regulador de corriente es diferente en los dos controladores y puede causar confusión. En el driver A4988 el potenciómetro está al lado de la fuente de alimentación de la sección lógica y en el driver DRV8825 está al lado de la fuente de alimentación de los transistores de potencia. Hay que prestar cuidado al ubicar los controladores en sus tarjetas de expansión o en el escudo RAMPS o se dañará el dispositivo. Se debe buscar los GND y Vmotor como referencia.

 {M0}-{M1}-{M2}

El sistema de micropasos sí difiere un poco ya que el driver DRV8825 tiene una resolución hasta 1/32 de paso, los 3 pines Modo, M (Mode), nos permite configurar los micropasos del motor, según la siguiente tabla.

Tabla de micropasos del módulo DRV8825

De manera análoga al A4988, los pines Mo, M1 y M2 del driver DRV8825 tienen resistencias internas de pull-down y por tanto si las dejamos «al aire» o sin conexión, estaremos en el modo de paso completo.

Sistema de refrigeración: disipador de calor

Si se trabaja con intensidades de corriente inferiores a 1.5 amperios no es necesario el disipador de calor, para intensidades superiores sí debe llevar el disipador de calor y ventilación.

¿Cómo limitar la corriente?

La limitación de corriente que entrega el driver DRV8825, se realiza de la misma forma que para el controlador A4988, sin embargo hay una pequeña diferencia en la fórmula:

 I m a x=\frac{V r e f}{{5}*{R S}}

Despejemos a Vref:

 V r e f ={I m a x }*{5}*{R S}

El procedimiento es el mismo que se hizo para el driver A4988 y por tanto no lo repetiremos aquí, solo hay que tener en cuenta que para el driver DRV8825, hay que multiplicar por 5 y no por 8 como en el caso del controlador A4988.

Hay que fijarse también en el valor de RS, que puede variar dependiendo del fabricante, un valor típico es 0.1 Ω.

Si es nuestro caso y RS = 0.1 Ω, la fórmula se reduce a:

 V r e f=\frac{I m a x}{2}

Esquema de conexiones Arduino, DRV8825 y motor paso a paso

Esquemático para la prueba del driver DRV8825

Usaremos para el ejemplo básico con el controlador DRV8825 el mismo diagrama que usamos para conectar nuestro controlador A4988, ya que son compatibles pin por pin, solo teniendo en cuenta las diferencias en la tensión de las fuentes de alimentación.

Cómo se usa el driver DRV8825

Diagrama pictórico del montaje control de motor paso a paso con driver DRV8825

Debemos seguir las mismas recomendaciones del montaje del driver A4988.

Código Arduino: sin biblioteca

Con este código puedes jugar, hasta cierto punto, con el tiempo de detención del motor, con el periodo de los pulsos al motor y con la cantidad de giros que dará el motor paso a paso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int paso = 2;
int direccion = 3;
int detencion = 2000;
int periodo = 1500;
 
void setup() {
pinMode(paso, OUTPUT);
pinMode(direccion, OUTPUT);
}
 
void loop(){
control(1,200);
delay(1000);
control(0,200);
delay(1000);
}
 
void control(int giro,int vueltas){
   digitalWrite(direccion,giro);
   delay(detencion);
   for(int i=0;i<vueltas;i++){
     digitalWrite(paso, HIGH);
     delayMicroseconds(periodo);
     digitalWrite(paso, LOW);
     delayMicroseconds(periodo);
     }
}

Inicializamos las variables paso, dirección, detención y periodo.

Paso y dirección para el comando del driver DRV8825.

Detención, para el tiempo que estará parado el motor paso a paso entre cambios de giro.

Y periodo, para determinar la velocidad del motor paso a paso. Tengamos en cuenta que el periodo es el inverso de la frecuencia, es decir, a mayor periodo, menos velocidad.

1
2
3
4
int paso = 2;
int direccion = 3;
int detencion = 2000;
int periodo = 1500;

En la función setup(), declaramos como salida los pines 2 y 3.

1
2
3
4
void setup() {
pinMode(paso, OUTPUT);
pinMode(direccion, OUTPUT);
}

En la función loop(), llamamos a la función control que tiene como primer parámetro el sentido de giro del motor y puede tener como argumento 1 o 0. El segundo parámetro es la cantidad de vueltas que queremos que de nuestro motor y puede tener como argumento cualquier número que deseemos, teniendo en cuenta que con 200 dará un giro completo, con 300 un giro y medio y así sucesivamente.

1
2
3
4
5
6
void loop(){
control(1,200);
delay(1000);
control(0,200);
delay(1000);
}

Creamos la función control.

1
2
3
4
5
6
7
8
9
void control(int giro,int vueltas){
   digitalWrite(direccion,giro);
   delay(detencion);
   for(int i=0;i<vueltas;i++){
     digitalWrite(paso, HIGH);
     delayMicroseconds(periodo);
     digitalWrite(paso, LOW);
     delayMicroseconds(periodo);
     }

Código Arduino: uso de la biblioteca AccelStepper

Si tienes dudas con el funcionamiento de los micropasos de un motor paso a paso, que es normal si es el primer acercamiento que tienes a este tipo de motores y sus controladores, con este programa puedes aclararlas. Mueve la configuración de los MS según la tabla y observa los cambios en el movimiento del motor paso a paso. También puedes hacer cambios en la velocidad.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <AccelStepper.h>
#define paso 2
#define direccion 3
#define motorInterfaceType 1
AccelStepper miMotor = AccelStepper(motorInterfaceType, paso, direccion);
 
void setup() {
  miMotor.setMaxSpeed(1000);
}
 
void loop() {
  miMotor.setCurrentPosition(0);
  while(miMotor.currentPosition() != 200)
  {
    miMotor.setSpeed(500);
    miMotor.runSpeed();
  }
  delay(1000);
 
  miMotor.setCurrentPosition(0);
  while(miMotor.currentPosition() != -200)
  {
    miMotor.setSpeed(-500);
    miMotor.runSpeed();
  }
  delay(1000);
  
  }

La primera parte del programa es similar al primer ejemplo con librería AccelStepper con el driver 4988, por eso no la repetiremos. Analicemos la función loop().

Con el método setCurrentPosition() definimos el punto de arranque del motor paso a paso.

Con el bucle while() aseguramos el conteo de 200 pasos, para un giro completo, a una velocidad media de 500 pasos por segundo.

El motor se detendrá y esperará un segundo.

1
2
3
4
5
6
7
  miMotor.setCurrentPosition(0);
  while(miMotor.currentPosition() != 200)
  {
    miMotor.setSpeed(500);
    miMotor.runSpeed();
  }
  delay(1000);

Repetimos todo de nuevo, pero invirtiendo el sentido de giro.

1
2
3
4
5
6
7
  miMotor.setCurrentPosition(0);
  while(miMotor.currentPosition() != -200)
  {
    miMotor.setSpeed(-500);
    miMotor.runSpeed();
  }
  delay(1000);

Driver para motores paso a paso TMC2209

Los controladores de la serie TMC2xxx son fabricados por la empresa Trinamic. Estos controladores superan en mucho la tecnología de los populares A4988 y DRV8825.

Debido a la popularidad de los controladores A4988 y DRV8825, los drivers de la serie TMC2xxx son compatibles en la asignación de pines (pinout) con aquellos, esto hace posible una sustitución directa entre los mismos.

El controlador TMC2209, es una versión mejorada del driver TMC2100, TMC2130 y TMC2208.

Conocer a fondo la familia de los controladores TMC2xxx, podría tomarnos varios artículos, ya que solo el modelo TMC2209 tiene 3 versiones. En esta parte de nuestro artículo nos centraremos en el TMC2209 versión 1.1 que se muestra en la imagen inferior.

Driver TMC2209

Como característica especial podemos notar algunos pines en la parte superior del controlador.

Chip del driver TMC2209

La tarjeta controladora TMC2209 incorpora el circuito integrado que le da su nombre al módulo, el chip TMC2209 fabricado en Alemania por la empresa Trinamic y es uno de los más sofisticados controladores de motores paso a paso bipolares del mercado.

Circuito integrado TMC2209

La gran ventaja del chip TMC2209 respecto a los chips A4988 y DRV8825, es ser ultra silencioso.

Especificaciones técnicas TMC2209

  • Tensión para la lógica: 3 – 5 VDC
  • Tensión para el motor paso a paso: 4.75 – 36 VDC
  • Intensidad máxima: 2 ARMS
  • Resolución: hasta 1/256 pasos
  • RDSon: 0.2 Ω, implica menor calentamiento del driver y una vida útil más larga
  • Componentes en el lado inferior del módulo: se ven menos afectados por el calor
  • Interfaz: UART
  • Funcionamiento ultra silencioso, pero más costoso que los drivers A4988 y DRV8825

Al igual que los drivers A4988 y DRV8825, que son sensibles a las corrientes inducidas por el motor, el driver TMC2209 lo es más. Es decir, no se debe desconectar el motor cuando el driver está energizado o con el motor en movimiento. También se recomienda colocar en primera instancia la alimentación de potencia del motor, antes que la alimentación de la lógica y así mismo retirar primero la alimentación de la lógica y de última la tensión de potencia del motor.

TMC2209 y sus características especiales

El controlador TMC2209 posee unas características que lo hacen muy superior a los drivers A4988 y DRV8825. Algunas de ellas son:

  • Standby current reduction: reducción de corriente en espera.
  • StealthChop2: para un funcionamiento silencioso con el motor parado y a altas velocidades. sin pérdida de torque, también llamado modo silencioso.
  • CoolStep: controla la corriente para disminuir drásticamente el calentamiento de los motores y controladores, reduciendo la tensión de manera inteligente cuando no existe carga.
  • StallGuard: detecta la carga del motor, reduciendo el consumo de corriente, se usa para eliminar los sensores de fin de carrera (sensorless homing).
  • Conexión UART: para configurar desde el firmware mediante puentes (jumpers) en la tarjeta que soporta a los módulos TMC2209 y memoria programabe una sola vez, OTP (One Time Programmable). Los que somos algo mayores la seguimos llamando memoria PROM (Programmable Read Only Memory) ;) para opciones de configuración avanzadas.
  • SpreadCycle: funcionamiento más suave al parar el motor y volver a acelerar, también ofrece un rendimiento superior en los micropasos, también conocido como modo fuerza.
  • DcStep: permite el movimiento a alta velocidad sin perder pasos.
  • MicroPlyer: mayor suavidad en micropasos.

Las características especiales de los drivers TMC2209, no solo se verán reflejadas en la disminución del nivel de ruido generado por los motores paso a paso, sino también en la calidad del objeto impreso en 3D.

Modos de operación

Existen tres modos de operación para los drivers TMC2209.

  • Modo Step/Direction (Step/Dir)

Es el llamado modo heredado (Legacy Mode). Este modo es el usual para poder realizar un cambio directo de un controlador A4988 o un DRV8825 por un TMC2209 obteniendo los beneficios de StealthChop y SpreadCycle.

El inconveniente al usar este modo de operación básico es que los driver TMC no pueden devolver información al controlador y por tanto no se pueden obtener los beneficios de StallGuard que permite prescindir del uso de los sensores de fin de carrera.

  • Modo UART

El puerto Transmisor Receptor Asíncrono Universal, UART (Universal Asynchronous Receiver Transmitter) utiliza un protocolo para intercambiar datos en serie entre dispositivos. Es un modo avanzado o inteligente y permite gestionar los datos con un par de cables desde otros dispositivos y aprovechar todas las características especiales de los driver TMC.

  • Modo SPI

La Interfaz Periférica Serial, SPI (Serial Peripheral interface), es el otro modo avanzado o inteligente que también aprovecha todas las características de los drivers TMC.

Configuración de pines del driver TMC2209

Configuración de pines driver TMC2209

EN: habilita (Enable) las salidas del motor. LOW: ON, HIGH:OFF.

MS2 y MS1: configuran la resolución de los micropasos según la siguiente tabla:

Tabla de micropasos del módulo TMC2209

SPREAD: pin de configuración para cambiar entre el modo StealthChop y SpreadCycle (Low=StealthChop, High=SpreadCycle)

PDN-UART: para la comunicación UART.

STEP/DIR: para el modo de operación tradicional o heredado del A4988 y del DVR8825

VM Y GND: tensión de alimentación para los MOSFET de potencia.

M2B-M2A Y M1A-M1B: conexiones para las bobinas del motor paso a paso.

VIO-GNS: tensión de alimentación para la lógica de control.

Diagrama de bloques TMC2209

La imagen inferior muestra un diagrama de bloques del driver TMC2209, ofrecido por la empresa Trinamic, fabricante del dispositivo.

Diagrama de bloques del diver TMC2209

Podemos notar la complejidad de la parte de control del circuito integrado donde, en forma de bloques, destacan las muchas ventajas tecnológicas que ofrece el TMC2209 y solo aparece finalmente el driver con los MOSFET de potencia para el control del motor paso a paso.

¿Cómo limitar la corriente?

Generalmente los drivers TMC2209 tienen una RS = 0.11 Ω, entonces la fórmula de la intensidad máxima es:

 I m a x={V r e f}*{0.707}

Despejemos a Vref:

 V r e f = \frac { I m a x } {0.707}

Supongamos que deseamos una corriente del motor máxima de unos 0.8 A.

 V r e f = \frac { 0.8 } {0.707}

 V r e f = { 1.1 } {V}

TMC2208 vs TMC2209: ¿qué diferencias hay entre ellos?

La tabla que se muestra en la parte inferior compara las características principales de los drivers TMC2208 y TMC2209.

Tabla comparativa TMC2208 vs TMC2209

Destacan en la tabla, la menor resistencia en conducción RDSon del TMC2209 que le permite manejar más corriente y tener menor disipación de potencia; la mayor tensión para el motor en el driver TMC2208, pero la mayor corriente del driver TMC2209, así como su mayor cantidad de prestaciones.

Esquema de conexiones Arduino, TMC2209 y motor paso a paso

Diagrama pictórico del montaje Arduino, driver TMC2209 y motor paso a paso.

Cómo se usa el driver TMC2209

Vamos a realizar este ejemplo en el modo Step/Dir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <AccelStepper.h>
 
#define paso 2
#define direccion 3
#define motorInterfaceType 1
 
AccelStepper miMotor = AccelStepper(motorInterfaceType, paso, direccion);
 
void setup() {
miMotor.setMaxSpeed(1000);
miMotor.setAcceleration(20);
}
 
void loop() {
miMotor.moveTo(200);
miMotor.runToPosition();
delay(1000);
miMotor.moveTo(-200);
miMotor.runToPosition();
delay(1000);
}

En este ejemplo final usamos la librería AccelStepper, como lo hemos hecho en los ejemplos anteriores, pero usamos los métodos moveTo() y runToPosition().

Podemos aumentar la aceleración y observar los cambios.

Para posteriores artículos queda el análisis de los modos inteligentes del TMC2209.

El hecho de la compatibilidad de los tres drivers A4988, DRV8825 y TMC2209, sin olvidar las diferencias que hemos visto y teniendo en cuenta el datasheet del fabricante de los drivers, nos permite el reemplazo de un driver por otro en nuestras impresoras 3D, para mejorar sus características técnicas.

Marlin el firmware para impresoras de código abierto

Marlin es un firmware para impresoras 3D de código abierto derivado de Sprinter y GRBL, fue creado en 2011 para las impresoras del Proyecto RepRap basadas en Arduino y otras impresoras 3D FDM; este proyecto ya lo habíamos mencionado al inicio del artículo y ha servido para popularizar la construcción de impresoras 3D.

Marlin también es utilizado por impresoras 3D de tipo delta o cartesiana y en impresoras 3D comerciales como Ultimaker o Prusa Research, además de ser usado en máquinas CNC y grabadoras láser.

Logotipo de Marlin.

¿Qué es Marlin y para qué sirve?

Decimos que Marlin es un firmware. Un firmware es un programa (software) que controla los circuitos electrónicos de cualquier dispositivo; es decir, tu teléfono móvil o tus auriculares bluetooth tienen un firmware. Se puede decir que un firmware es parte del software y del hardware a la vez, o que sirve de puente entre ambos.

Marlin contiene unas instrucciones básicas que le indican a la electrónica de la impresora 3D, cómo tienen qué arrancar y qué funciones tienen que realizar. Estas instrucciones deben almacenarse en una memoria ROM o EPROM donde se almacena Marlin. Algunas de estas instrucciones controlan los movimientos de los motores paso a paso de los ejes X, Y, Z, temperatura del extrusor, cama caliente, entre otros. En el caso de los motores paso a paso, lo que hace Marlin es leer una lista de comandos G-CODE y convertirlos en pulsos que utilizará para mover los motores paso a paso.

El firmware Marlin se ejecuta en la placa de control de la impresora 3D por intermedio de los drivers A4988, DRV8825 y TMC2209.

Marlin está diseñado para microcontroladores de la familia Atmel AVR de 8 bits, aunque su versión 2.x es compatible con placas de 32 bits. La placa más popular que soporta Marlin es la RAMPS 1.4.

¿Por qué debería actualizar el software de mi impresora 3D?

Es necesario actualizar el software de nuestra impresora 3D para renovar o añadir nuevas funcionalidades; además cuando se produzcan desajustes, por ejemplo en el desplazamiento de los motores paso a paso, podemos ajustarlos a los valores correctos.

Marlin no es el único

En resumen, Marlin determina el comportamiento de nuestra impresora 3D frente a los comandos G-CODE para la tarjeta controladora de la misma, además es el firmware más popular en impresoras 3D DIY.

Pero, Marlin no es el único firmware, otros muy utilizados también son Sprinter, Pronterface, FiveD, Teacup, Repetier, Klipper, RepRap, Prusa, MK4duo, entre otros.

Sprinter, es la base del Marlin y nos permite hacer pruebas sin tener conectados todos los componentes.

Pronterface, permite hacer movimiento en los tres ejes y en la extrusora para poder calibrar fácilmente.

Conclusión sobre los drivers para impresoras 3D

Ha sido bastante extenso el artículo, pero el tema de los drivers para impresoras 3D es vasto y hay bastante tela para cortar, así mismo el firmware Marlin merece uno o varios artículos por separado.

Espero que si estás empezando con la tecnología, esta información te haya aclarado algunas dudas y puedas seguir profundizando tus conocimientos.

Gracias por leer.

Gracias a Depositphotos por la cesión de las imágenes.

integraciones de Home Assistant

Integraciones de Home Assistant

En este tutorial voy a hablar de las integraciones de Home Assistant pero antes déjame contarte la historia de Jack, un norteamericano de bien, de los … [+ info...]

dispositivos inteligentes para el hogar

Tipos de dispositivos inteligentes para el hogar

En este artículo voy a hablar de los dispositivos domóticos o dispositivos inteligentes para el hogar que pueden ser integrados dentro de Home … [+ info...]

osciloscopios

Osciloscopio para proyectos con Arduino

Una imagen vale más que mil palabras. Seguro has escuchado esta frase alguna vez y es probable que en la mayoría de las ocasiones lo que dice sea … [+ info...]

Copyright © 2023 · Programar Fácil · Aviso legal

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso.Aceptar Política de privacidad y cookies
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR