Guía completa SKR v1.4/v1.4 Turbo con drivers TMC Sensorless y Display TFT35 V3.0
Guía completa SKR v1.4/v1.4 Turbo con drivers TMC Sensorless y Display TFT35 V3.0

Guía completa SKR v1.4 / v1.4 Turbo con drivers TMC2209 Sensorless y Display TFT35 V3.0

Últimamente las nuevas placas electrónicas de la empresa BigTreeTech (SKR V1.4 y SKR 1.4 Turbo) están gozando de bastante notoriedad dentro del mundo de la impresión 3D. Y no es de extrañar, ya que han comprendido perfectamente el movimiento «Maker» y se han adaptado a las necesidades de los usuarios y posibles clientes potenciales.

Disponer de diferentes sockets para todo tipo de pantallas, conectores específicos de BLTouch/3DTouch, facilidad para el uso con drivers TMC sin cableados externos, conectores específicos para tiras de leds, fusibles de protección extraíbles y algunas cosas más son solamente algunos ejemplos de cómo ha enfocado el mercado BigTreeTech con bastante éxito.

De hecho, en nuestro canal de Telegram de 3DWork suele entrar bastante gente con este tipo de electrónicas a preguntar dudas. Así que ya tenía desde hace algún tiempo en mente preparar una guía para configurar Marlin 2.x con electrónicas SKR v1.4 y SKR v1.4 Turbo, drivers TMC2209 Sensorless. Y, como no, su espléndido display híbrido TFT35 V3.0, el cual me parece una auténtica virguería si te soy sincero.

Así que vamos a ello sin más dilación. Y no te olvides de añadirnos a nuestras redes sociales (FacebookTwitterInstagram), de esta forma apoyarás el proyecto 3DWork.

 

 

Introducción a electrónicas SKR

SKR V1.4Turbo 1

En el artículo de hoy vamos a enfocar cómo configurar nuestras electrónicas SKR V1.4/V1.4 Turbo, junto con drivers TMC2209 Sensorless y el novedoso display híbrido TFT35 V3.0.

Sensorless, por si no lo sabes, significa no poner finales de carrera mecánicos en los ejes X e Y. Los modernos drivers TMC2209 nos permiten efectuar esta función y nos ahorrará tiempo, dinero y cableados innecesarios.

De hecho, si ya dispones de estos finales de carreras, puedes utilizarlos como sensores de corte de filamento. Así al menos a uno le podrías dar una nueva utilidad y no quedaría en el cajón olvidado.

Tengo presente que quizá no dispongas del mismo display o tus drivers sean diferentes. No obstante, aunque así fuera el caso, bastante parte del artículo te será de utilidad, y solo deberás obviar el componente y buscar su propia configuración.

Además, si te encuentras con ganas, siempre puedes visitarnos en nuestro canal de Telegram, y en caso de no estar documentada la información necesaria ayudarnos a completar el artículo para facilitar a otros usuarios el mismo proceso.

 

Especificaciones técnicas y conexionado

Las placas SKR v1.4 y v1.4 Turbo tienen un tamaño exacto de 110 x 85mm (102 x 76mm entre agujeros). Su arquitectura es ARM Cortex-M3 (CPU) y pueden alimentarse indistintamente a 12V y 24V (5A-15A).

Disponen de conector para módulos WiFi ESP-01S, pueden utilizar distintos modos de comunicación para sus drivers (SPI, UART y STEP/DIR) y soportan motores en X, Y, ZAM, ZBM, E0 y E1.

A continuación os dejo unas imágenes oficiales del fabricante donde podéis observar todas las conexiones y zócalos de las electrónicas v1.4 y v1.4 Turbo.

Esquema electrico SKR2

Esquema electrico SKR

 

Comparativa entre SKR V1.3, V1.4 y V1.4 Turbo

H3f441862ee034d08ba037857134e8d36E

Las diferencias son más marcadas cuando ponemos en comparación una electrónica SKR v1.3 con sus versiones superiores v1.4 y v1.4 Turbo. Como puedes comprobar en la imagen superior, las electrónicas más recientes añaden funciones bastante interesantes. Doble interface para el eje Z, soporte para módulos de alimentación externa, soporte para tiras leds, y alguna que otra cosa más.

Si comparamos solamente los dos últimos modelos, lo único que diferencia la electrónica SKR v1.4 de la v1.4 Turbo es que posee un microcontrolador superior. En el modelo v1.4 podemos encontrar un micro ARM Cortex-M3 de 100 Mhz, mientras que en la v1.4 Turbo el micro que presenta puede alcanzar frecuencias de hasta 120 Mhz. Esto ciertamente es un notable incremento de un 20% de velocidad de proceso, que no es poco.

 

H6b36ffc2576c473186fe044f8715bcabc

En esta otra tabla puedes ver otra comparación sobre diferentes aspectos de las electrónicas v1.3 y v1.4/v.14 turbo, principalmente la posibilidad de comunicación vía WiFi.

Para ello es preciso disponer de un módulo específico para tal tarea, y las velocidades de transmisión son bastante reducidas ciertamente. Enviar un GCode de varios megas puede desesperarte, así que en este punto es más recomendable utilizar una Raspberry Pi con Octoprint para tal tarea.

Si desconoces que es Octoprint y las posibilidades que puede ofrecerte, te recomiendo que leas el artículo Octoprint: Gestiona tu impresora 3D remotamente con Raspberry Pi y Octopi

No obstante, aunque en estas tablas extraídas de soporte oficial de SKR se nos indica que no tiene soporte para WiFi, esto no implica de ningún modo que no puedas instalarte uno si lo deseas. Simplemente significa que las versiones v1.3 no disponen de puerto específico donde conectarlos, pero podrías enchufar tu módulo WiFi al conector TFT y remapearlo en Marlin (por ejemplo).

 

Componentes necesarios

Por aquí os dejo algunos de los componentes que aparecen en el artículo de hoy. Es mi deber informarte que son enlaces de afiliados a diferentes tiendas online Marketplaces de internet.

Si por un casual los utilizas, el precio del producto será el mismo que si accedes de manera habitual. Y a 3DWork le quedará una pequeña comisión que ayudará a mantener esta página web.

SKR v1.4 Amazon Logo PNG e1579685453346 aliexpress logo banggood LogoretinaHTA3D 575x200 1
SKR v1.4 Turbo Amazon Logo PNG e1579685453346 aliexpress logo banggood
BTT TMC2209 v1.2 Amazon Logo PNG e1579685453346 aliexpress logo banggood LogoretinaHTA3D 575x200 1
MKS TMC2209 v1.0 Amazon Logo PNG e1579685453346 banggood
MKS TMC2209 v2.0 Amazon Logo PNG e1579685453346 aliexpress logo banggood
FYSETC TMC2209 v3.0 Amazon Logo PNG e1579685453346 aliexpress logo banggood LogoretinaHTA3D 575x200 1
ERYONE TMC2209 v3.0 Amazon Logo PNG e1579685453346

O si lo deseas, puedes utilizar nuestro buscador de componentes Markets.sx, donde podrás comparar precios en diferentes Marketplaces (Amazon, Aliexpress, Banggood, etc.) con una sola búsqueda y muy fácilmente.

Markets2

 

Preparando el proyecto

Visual Studio Code

Actualiza tu impresora 3D a Marlin 2.x.x con Visual Studio Code y Platform.io

Antes de comenzar a editar Marlin, te recomiendo que te instales un buen editor de código. Para este menester lo ideal — y recomendable por mi parte — es que te instales Visual Studio Code. No solamente es un potente editor de código, sino que además cuenta con una gran cantidad de extensiones, e incluso podrás compilar Marlin directamente desde él.

Visual Studio Code puede ser descargado libremente (completamente gratis) desde la página web de su proyecto en el siguiente enlace. Y una vez que hayas editado Marlin y los parámetros necesarios — los cuales vas a encontrar un poquito más adelante — podrás compilarlo y subir tu nuevo firmware a la impresora.

En este artículo puedes encontrar más información sobre cómo compilar correctamente tu nuevo firmware Marlin y subirlo directamente a tu impresora: Configura y actualiza tu impresora 3D utilizando Visual Studio Code y Platform.io

 

Descargando Marlin 2.x

Guía completa para configurar Marlin 2.0.x desde cero y no morir en el intento

Lo siguiente que deberás hacer, como es lógico, es descargar los sources — o código fuente — de Marlin a tu ordenador. Para ello nos dirigiremos a su página web oficial y accederemos a la sección de descargas.

Por aquí te dejo el enlace directo, para que puedas ahorrar algo de tiempo. Yo suelo descargar el firmware LATEST RELEASE, justo debajo de la palabra DOWNLOAD. Allí efectua clic en el enlace 2.0.x.zip, que es el que está a día de hoy disponible para su versión 2.0.5.3.

No obstante, ten en cuenta que nuevas actualizaciones y revisiones se publican periódicamente. Así que es posible que cuando leas este artículo exista una versión superior y su nombre sea distinto. En ese caso no sería mayor problema, descargas la versión más reciente y listo.

Otra opción es descargar la versión del fabricante, aunque desconozco la configuración que llevará establecida y por supuesto no se adaptará a tu máquina. Aunque al menos la electrónica debería funcionar

 

Utilizando Marlin Builder de 3DWork

marlin2

Si bien, en el apartado anterior te recomendamos descargar Marlin directamente desde la página oficial, también puedes utilizar nuestro Marlin Builder que preparamos hace algún tiempo en 3DWork.

Marlin Builder te ofrece dos posibilidades. La primera es configurar directamente el firmware con los parámetros deseados desde tu navegador y descargarlo después. De esta manera, ahorrarás bastante trabajo al respecto y luego solo te quedará acabar de configurar con la información de este artículo tu electrónica SKR con drivers TMC.

Marlin builder 2

La segunda opción que te ofrece Marlin Builder es descargar una serie de firmwares pre-configurados que ofrece Marlin de manera oficial. Yo personalmente buscaría entre los fabricantes y firmwares si existe tu impresora y lo utilizaría como base, ya que estará absolutamente todo previamente configurado.

Después solo restará seguir las instrucciones de este artículo y podrás disfrutar de tu nueva electrónica rápidamente. Simplemente deberás seleccionar la marca y modelo de un desplegable y apretar el botón descargar (ver imagen superior).

 

Verificar la alimentación de la placa (12V/24V)

Jumper SKR VDD

Si te fijas detenidamente, hay un jumper en la parte central de nuestra electrónica SKR v1.4 y v1.4 Turbo que nos indica la forma de alimentación de la placa.

Antes de conectar tu electrónica debes seleccionar la alimentación que vas a suministrar a tu placa correctamente (5V USB o 12/24V VDD). Si vas a alimentar la placa desde un cable USB deberás elegir la opción USB, y si utilizas fuente de alimentación la opción VDD.

Mi electrónica esta conectada a mi fuente de alimentación de 24V, asi que elijo la opción de VDD como puedes ver en la imagen superior (clic para agrandar)

Otro detalle importante es que las electrónicas SKR soportan 12V o 24V. Independientemente de la fuente de alimentación que uses, debes de utilizar siempre componentes acordes a ella.

Si tu fuente de alimentación es de 24V los ventiladores que utilices deberán ser de 24V (de lo contrario puedes dañarlos irremediablemente). Probablemente no fuera necesario recordarlo pero nunca está de más, ya que son varios los componentes a tener en cuenta.

 

Configurando el firmware (Marlin)

Marlin 12

Antes de empezar con la configuración de Marlin, si estás empezando desde cero a preparar tu nuevo firmware te recomiendo que te leas antes este otro artículo: Guía completa: Configurar Marlin 2.0.x desde cero y no morir en el intento.

El motivo es que en este artículo solo voy a explicar como configurar la electrónica SKR v1.4 y SKR v.14 Turbo para utilizar toda la potencia que nos ofrecen los drivers TMC2209 (Sensorless) configurándose de manera «inteligente» y su display «híbrido» TFT35 v3.0

El resto de componentes de la impresora como puede ser número de extrusores, velocidades, tamaño de impresora, parámetros de temperatura y muchas cosas más ya las explicamos previamente en el articulo que te indiqué unas líneas más arriba (Guía completa de Marlin).

No tendría mucho sentido volver a desplegar toda esa información aquí, ya que duplicaremos contenido sin necesidad alguna. Pues aclarado este punto… ¡Vamos a comenzar!

 

Modificando archivo «Platformio.ini»

El primero archivo que vamos a modificar es el «Platformio.ini» para indicarle a nuestro compilador que tipo de microprocesador tenemos en nuestra electrónica. Si no se lo indicamos Visual Studio Code tendría problemas a la hora de compilar nuestro firmware.

Este archivo se encuentra dentro del firmware Marlin, exactamente en el directorio raíz. Aquí tienes los valores dependiendo de cuál de las dos vayamos a instalar en tu impresora.

Tipo de placa electrónica ENV_DEFAULT
SKR v1.4 LPC1768
SKR v1.4 Turbo LPC1769

Ya sabiendo que valores tenemos que utilizar, editaremos «Platformio.ini» y en el campo «env_default» pondremos el acorde a nuestra electrónica. En mi caso yo tengo una v1.4 Turbo así que añadí directamente «LPC1769»

[platformio]
src_dir = Marlin
boards_dir = buildroot/share/PlatformIO/boards
default_envs = LPC1769
include_dir  = Marlin

 

Modificando archivo «Configuration.h»

Una vez configurado en Visual Studio Code el tipo de microprocesador de nuestra electrónica, procedemos a modificar los dos ficheros que son necesarios en Marlin.

Comenzaremos con los parámetros para configurar los puertos de comunicación (principal y secundario) y la velocidad de comunicación. En este último parámetro yo suelo poner 250.000bds pero si experimentas algún problema, utiliza 115.200bds

/**
* Select the serial port on the board to use for communication with the host.
* This allows the connection of wireless adapters (for instance) to non-default port pins.
* Serial port -1 is the USB emulated serial port, if available.
* Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
*
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT 0

/**
* Select a secondary serial port on the board to use for communication with the host.
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT_2 -1
/**
* This setting determines the communication speed of the printer.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
* You may try up to 1000000 to speed up SD file transfer.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 250000

 

Ahora vamos a indicarle a Marlin exactamente qué tipo de placa electrónica posee nuestra impresora. Te dejo un listado por aquí de los diferentes modelos de SKR y a su derecha el parámetros que deberás introducir:

Tipo de placa electrónica Parámetro
SKR v1.1 BOARD_BTT_SKR_V1_1
SKR v1.3 BOARD_BTT_SKR_V1_3
SKR v1.4 BOARD_BTT_SKR_V1_4
SKR v1.4 Turbo BOARD_BTT_SKR_V1_4_TURBO

Yo dispongo de una v1.4 Turbo, así que se lo indico a Marlin de la siguiente manera:

// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO
#endif

 

Después vamos a configurar el tipo de driver que disponemos y los motores en los cuales están montados. Buscaremos las siguientes líneas y se los añadiremos. Tienes multitud de drivers diferentes, así que si el tuyo no fuera TMC2209 cámbialo por el que vayas a instalar.

/**
* Stepper Drivers
*
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
*
* A4988 is assumed for unspecified drivers.
*
* Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
*          TB6560, TB6600, TMC2100,
*          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
*          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
*          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
*          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/
#define X_DRIVER_TYPE  TMC2209
#define Y_DRIVER_TYPE  TMC2209
#define Z_DRIVER_TYPE  TMC2209
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988

 

Y para finalizar con la edición del archivo «Configuration.h» editaremos otros dos parámetros muy importantes y que no podemos olvidar. El primero de ellos nos servirá para poder activar la emulación Marlin en nuestro display.

Esto significa que si estas utilizando un display «híbrido» podrás cambiar de modo táctil a modo marlin (texto) pulsando 3 segundos el botón principal. Es una función increíble, yo personalmente odio las pantallas touch y siempre he preferido el menú original de Marlin, así que me va al pelo como se dice.

El segundo parámetro nos permitirá dar soporte a almacenamiento eeprom en nuestra impresora, también es imprescindible activarlo.

//
// RepRapDiscount FULL GRAPHIC Smart Controller
// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
//
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
/**
* EEPROM
*
* Persistent storage to preserve configurable settings across reboots.
*
*   M500 - Store settings to EEPROM.
*   M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
*   M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
*/
#define EEPROM_SETTINGS     // Persistent storage with M500 and M501

 

 

Modificando archivo «Configuration_adv.h»

Le toca el turno al archivo «Configuration_adv.h». Si has hecho los deberes y leíste nuestro anterior artículo sobre cómo Configurar Marlin 2.x desde cero, sabrás que este archivo guarda configuraciones más avanzadas sobre Marlin, así como otras más experimentales o en desarrollo.

El primero parámetro que debemos modificar es la interpolación de los pasos de nuestro driver. De esta forma, le permitiremos al driver TMC2209 que lo haga automáticamente.

#define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256

 

Acto seguido le indicaremos la tensión y los micropasos a los que deben operar cada uno de los motores. Yo dispongo de X, Y, Z y E0 solamente, así que modificaré en su correspondiente apartado los valores. Si dispones de algún extrusor extra o doble eje Z, deberás añadirlo.

#if AXIS_IS_TMC(X)
#define X_CURRENT       850        // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT_HOME  X_CURRENT  // (mA) RMS current for sensorless homing
#define X_MICROSTEPS     16    // 0..256
#define X_RSENSE          0.11
#define X_CHAIN_POS      -1    // <=0 : Not chained. 1 : MCU MOSI connected. 2 : Next in chain, ...
#endif

#if AXIS_IS_TMC(Y)
#define Y_CURRENT       850
#define Y_CURRENT_HOME  Y_CURRENT
#define Y_MICROSTEPS     16
#define Y_RSENSE          0.11
#define Y_CHAIN_POS      -1
#endif

#if AXIS_IS_TMC(Z)
#define Z_CURRENT       850
#define Z_CURRENT_HOME  Z_CURRENT
#define Z_MICROSTEPS     16
#define Z_RSENSE          0.11
#define Z_CHAIN_POS      -1
#endif

#if AXIS_IS_TMC(E0)
#define E0_CURRENT      600
#define E0_MICROSTEPS    16
#define E0_RSENSE         0.11
#define E0_CHAIN_POS     -1
#endif

 

Ahora vamos a indicar a Marlin que tensión nos ofrece nuestra fuente de alimentación, y lo más habitual viene a ser 12V o 24V. Como en mi caso es 24V se lo indico a Marlin de la siguiente manera:

/**
* Optimize spreadCycle chopper parameters by using predefined parameter sets
* or with the help of an example included in the library.
* Provided parameter sets are
* CHOPPER_DEFAULT_12V
* CHOPPER_DEFAULT_19V
* CHOPPER_DEFAULT_24V
* CHOPPER_DEFAULT_36V
* CHOPPER_PRUSAMK3_24V // Imported parameters from the official Prusa firmware for MK3 (24V)
* CHOPPER_MARLIN_119   // Old defaults from Marlin v1.1.9
*
* Define you own with
* { <off_time[1..15]>, <hysteresis_end[-3..12]>, hysteresis_start[1..8] }
*/
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V

 

Activamos diversas protecciones de temperatura para nuestros drivers TMC2209 que nos ofrece Trinamic, entre otras cosas:

/**
* Monitor Trinamic drivers for error conditions,
* like overtemperature and short to ground.
* In the case of overtemperature Marlin can decrease the driver current until error condition clears.
* Other detected conditions can be used to stop the current print.
* Relevant g-codes:
* M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
* M911 - Report stepper driver overtemperature pre-warn condition.
* M912 - Clear stepper driver overtemperature pre-warn condition flag.
* M122 - Report driver parameters (Requires TMC_DEBUG)
*/
#define MONITOR_DRIVER_STATUS

 

Procedemos a activar la opción StallGuard™ en nuestro firmware Marlin. StallGuard™ es una tecnología patentada por Trinamic que permite hacer mediciones de carga en nuestros motores paso a paso.

Y te estarás preguntando, ¿Para qué narices necesito yo eso? Bueno, la respuesta es sencilla. StallGuard™ puede detectar de una forma precisa las paradas del motor y así eliminar cualquier tipo de final de carrera (endstop). Si eres un maniático con los cables, agradecerás poder eliminar todo ese cableado extra de tu máquina y dejar todo más limpio.

Yo recomiendo eliminar solamente los finales de carrera de los ejes X e Y, dejando un sensor de autonivelación en Z. Simplemente debes descomentar la opción SENSORLESS_HOMING y ya estará disponible.

También puedes configurar la sensibilidad con los parámetros X_STALL_SENSITIVITY e Y_STALL_SENSITIVITY. El valor 0 significa que no va a parar y el valor 255 indica que al más mínimo obstáculo desactiva el movimiento del motor. Un valor recomendable para empezar es 100, así es como lo he dejado yo en mi firmware.

#define SENSORLESS_HOMING // StallGuard capable drivers only

#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
// TMC2209: 0...255. TMC2130: -64...63
#define X_STALL_SENSITIVITY  100
#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
#define Y_STALL_SENSITIVITY  100
//#define Z_STALL_SENSITIVITY  8
//#define SPI_ENDSTOPS              // TMC2130 only
//#define IMPROVE_HOMING_RELIABILITY
#endif

 

Con este parámetro dispondremos de una señal más precisa para nuestros drivers. Es recomendable activarlo así que lo haremos de la siguiente manera:

/**
* Beta feature!
* Create a 50/50 square wave step pulse optimal for stepper drivers.
*/
#define SQUARE_WAVE_STEPPING

 

Y por último, activaremos esta opción, la cual nos dará la posibilidad de debugear y saber el estado en tiempo real de nuestros drivers. Es bastante útil para saber si lo hemos configurado todo bien y tenemos activo el modo UART.

/**
* Enable M122 debugging command for TMC stepper drivers.
* M122 S0/1 will enable continuous reporting.
*/
#define TMC_DEBUG

 

Y bueno, hasta aquí todo listo, en lo que a la edición del firmware Marlin concierne. Como puedes comprobar no han sido excesivos cambios, pero ahora debemos modificar la parte «hardware» de nuestros drivers, y dependiendo del fabricante podrá variar un poquito. Lo explicamos en la siguiente sección.

 

Configurando el hardware (SKR v1.4 y Drivers TMC)

Tras haber dejado Marlin completamente configurado, vamos a proceder con los cambios a nivel hardware de nuestra electronica (placa SKR) y de los drivers TMC. De esta forma, haremos que nuestra electronica pueda comunicar en modo inteligente (UART), y disponer de todas y cada una de las ventajas de trabajar con drivers TMC.

Quisiera aprovechar este punto del artículo para recordarte que también disponemos en 3DWork de un interesantísimo artículo sobre los drivers TMC (Trinamic) donde podrás descubrir todas las tecnologías que ponen a tu disposición. Puedes acceder al mismo haciendo clic en Drivers TMC: Guía sobre los mejores drivers y sus tecnologías para impresión 3D.

Como te he comentado unas líneas más arriba, existen diversos fabricantes de drivers TMC. Tiene una fácil explicación, la empresa Trinamic vende los controladores (chips) a los fabricantes directamente y ellos desarrollan sus propias placas con la referencia que han adquirido. En realidad, no debería importar en exceso de que fabricante es el driver que tu has adquirido, ya que todas las funciones vienen integradas en el chip que ellos ensamblan.

No obstante, sí que es cierto que algunos fabricantes «facilitan» algo más las cosas. Iré exponiendo aquí las diferentes configuraciones para cada fabricante de drivers TMC2209 y en caso de que me faltara alguno, no dudes en escribirme un comentario al final del artículo e intentaré añadirlo si tengo acceso a la información. O si lo deseas, a través de nuestras redes sociales.

 

Drivers TMC2209 BIGTREETECH V1.1/V1.2

TMC Drivers BIGTREETECH 1

BigTreeTech, la empresa detrás de las electrónicas SKR, también desarrolla propios drivers que montan el chip TMC2209. Se distinguen muy fácilmente ya que, como en el anterior driver, viene serigrafiado el nombre y la versión en la parte superior de la placa.

Si este es tu caso, configurarlos para modo UART no puede ser más sencillo. Primeramente extrae todos los jumpers de tu placa y deja solo colocados los que se encuentran en la posición MS3, tal y como ves en la imagen siguiente (clic para agrandar).

Modo UART TMC2209 BIGTREETECH

Con esta simple modificación debería ser suficiente para disponer de modo inteligente UART y de StallGuard™, y podremos utilizar los motores X e Y sin finales de carrera.

Según la documentación del fabricante, si solo deseas el modo inteligente UART y vas a seguir utilizando finales de carrera mecánicos para los motores X e Y, recomiendan cortar un pin del driver como puedes observar en la imagen de abajo.

Como cortar a mi personalmente me parece una medida un poco drástica, puedes optar por doblarlo con cuidado hacia un lado. De esta manera si en un futuro deseas cambiar la configuración y utilizarlos en modo Sensorless (sin finales de carrera mecánicos), puedes hacerlo sin problema alguno.

TMC2209 Cutting Diagpin

 

Drivers TMC2209 FYSETC V3.0

TMC Drivers FYSTEC2

La empresa FYSETC, famosa por vender sus propias electrónicas, desarrolla unos drivers con el chip TMC2209 que puedes ver en la imagen superior, y que son los que yo tengo instalados en mi impresora 3D.

Para ponerlos en modo inteligente UART y utilizar la función StallGuard™ (sin finales de carrera), solo has de utilizar dos simples jumpers que voy a mostrarte en las siguientes imágenes.

En primer lugar vamos a puentear nuestra electrónica SKR de una manera poco «ortodoxa» con un jumper en diagonal. Puede parecer extraño, pero de esta forma nos evitaremos añadir cables innecesarios. Eso sí, procura hacerlo con sumo cuidado para no dañar excesivamente los pines.

SKR Modification UART3

En la imagen superior puedes comprobar como lo hice yo. Solamente he quitado el driver en el motor X para que quede al descubierto y veas exactamente que pines son los que hay que puentear en diagonal. Obviamente deberás hacerlo en todos los que desees activar UART y StallGuard™ (Sensorless).

Después, y para finalizar, deberás poner otro jumper directamente en todos los drivers. Concretamente necesitas puentear los pines RX y TX, tal como puedes ver en la imagen de más abajo (clic para agrandar). Y con esto, ya tendríamos todo configurado.

FYSETC modification

 

Drivers TMC2209 MKS V1.0

TMC2209 MKS V1.0

El fabricante de electrónicas y otros componentes de impresión 3D Makerbase, también nos ofrece drivers de manufactura propia. Como viene siendo ya habitual, en nuestra electrónica SKR solamente deberemos puentear con un jumper la linea MS3 en cada uno de los motores que deseemos activar UART y Sensorless.

Modo UART TMC2209 BIGTREETECH

Después en los drivers deberás doblar «artesanalmente» el pin de DIAG para que coincida con el conector DIAG de la placa SKR. Te dejo imagen abajo para que puedas ver como quedó en un usuario que efectuó esta modificación.

Mod TMC2209 MKS V1.0

Tras pinchar el driver en nuestra electrónica, y verificar que conecta completamente bien las líneas DIAG de driver y placa, ya tendremos disponible UART + Sensorless.

 

Drivers TMC2209 MKS V2.0

TMC2209 MKS V2.0

Tras la versión de drivers TMC2209 MKS v1.0 parece ser que Makerbase tomó nota y modificó la posición del pin DIAG en sus drivers v2.0. Esta importante mejora tiene como resultado no tener que efectuar ningún tipo de modificación en nuestros drivers TMC2209 MKS v2.0

DIAG TMC MKSComo puedes observar en la siguiente imagen (clic para agrandar), cambiaron la posición del DIAG del vértice del triángulo a otra posición, que resulta ser la misma que la del DIAG1 de nuestras SKR, un gran acierto para los usuarios de estas electrónicas.

Así que oficialmente podemos afirmar que este es el driver que más facilidad ofrece para montar en nuestra electrónica SKR v1.4.

No obstante, debemos como siempre activar el modo UART + Sensorless en nuestra placa, así que seguiremos las instrucciones de siempre, os dejo la imagen abajo de la posición de los jumpers.

Modo UART TMC2209 BIGTREETECH

 

Drivers TMC2209 WATTEROTT V2.0

Watterott TMC2209 modification3

Watterott es otro fabricante de drivers TMC, aunque en este caso la modificación puede resultar un poquito más laboriosa, ya que precisaremos de efectuar 5 operaciones (2 en nuestra electrónica SKR v1.4 y 3 en el driver) y una especie de «invento» que os explicaré más adelante.

En la imagen de arriba puedes ver las modificaciones que hay que hacer en la placa electrónica. Un jumper que colocaremos en la posición MS3 (señalados con las lineas rojas) y después un puente mediante soldadura en la parte de detrás de nuestra electrónica. Este deberemos efectuarlo con nuestro soldador, estaño y un poquito de maña (en la imagen en color amarillo)

Watterott TMC2209 modification

Tras haber acabado ambas modificaciones en la placa SKR v1.4/v1.4 Turbo procederemos a efectuar las modificaciones pertinentes en nuestros drivers. En la imagen superior puedes ver las 3 operaciones a realizar (click para agrandar). En resumen, eliminar/cortar un pin, soldar un pin «extra» a nuestro driver y por último un puente en PDN/UART, tal como puedes observar.

Vale, tenemos listo la placa SKR y el driver, ahora lo último que debemos hacer es lo siguiente. El pin que has soldado en el driver es el que corresponde a la línea de datos del DIAG. En un mundo ideal, cuando pinchamos ya el driver en la placa debería coincidir, pero en nuestra electrónica el pin DIAG no coincide en la posición que has soldado el pin en el driver.

DIAG ModSi te fijas en la primera imagen que puse, indico en azul cual es el pin DIAG1 en la SKR y este se encuentra en la tercera posición (empezando desde abajo). Sin embargo en el driver esta en la segunda posición, con lo cual al pinchar no va a estar en la posición correcta.

Así que vas a tener que poner un pin bastante largo y hacerle un par de dobles, para que cuando lo pinches encaje en el agujerito de al lado (y no en el que le corresponde). Te dejo por aquí una imagen para que pueda sacarte de dudas (clic para agrandar).

Y bueno, con todo esto ya deberías tener tus drivers TMC2209 Watterott operando en modo UART y sin ningún tipo de final de carrera (Sensorless).

 

Drivers TMC2209 ERYONE V3.0

TMC2209 ERYONE2

Por último, en este listado de Drivers TMC2209 de los diferentes fabricantes que conozco, encontraríamos el driver perteneciente a la empresa Eryone. En principio no iba a añadirlo, ya que no tengo la suficiente información al respecto salvo un usuario que sí pareció funcionarle el modo UART sin problema.

Lo primero que deberíamos hacer es configurar nuestra electrónica SKR v1.4 como venimos haciendo, colocando un jumper en MS3.

Modo UART TMC2209 BIGTREETECH

Después como viene siendo habitual, deberás conectar el pin DIAG del driver en el DIAG1 de tu placa electrónica SKR. Lamentablemente en este caso tampoco coincide el pin, así que deberás desviar de nuevo el pin para que encaje con el de la placa.

TMC2209 ERYONE3En esta imagen (clic para agrandar) puedes ver donde esta el DIAG en cada uno de los dos componentes (placa y driver), y como enlazarlo.

Si dispones de uno de estos drivers y consigues localizar DIAG y activar UART + Sensorless no dudes en comunicarmelo, ya que no tengo confirmación de que así quede operativo.

 

Verificando la comunicación UART

Testing TMC2209 UART1

Tras haber efectuado todas y cada una de las modificaciones necesarias deberás probar si UART ya funciona correctamente. Es fácil equivocarse en algún pin, sobre todo si lo que tienes que hacer son numerosas modificaciones.

Además piensa que lo tienes que hacer en mínimo 3 o 4 motores, las probabilidades como puedes imaginar de haber cometido algún error se disparan. Así que vamos a verificar si ha ido bien todo el proceso.

Existe una forma muy sencilla de determinar si ya disponemos de comunicación inteligente UART. Si mal no recuerdas, mientras configuramos nuestro firmware Marlin, activamos una opción denominada MONITOR_DRIVER_STATUS.

Esta opción nos ofrece la posibilidad de utilizar una serie de GCodes muy interesantes para monitorizar los drivers TMC2209. Son los siguientes:

  • M906Set or get motor current in milliamps using axis codes X, Y, Z, E
  • M911Report stepper driver overtemperature pre-warn condition
  • M912Clear stepper driver overtemperature pre-warn condition flag
  • M122Report driver parameters (Requires TMC_DEBUG)

El comando que vamos a utilizar será el M122, de esta forma se nos enviará en pantalla una serie de parámetros y de valores establecidos en nuestros drivers, y así verificaremos que están comunicando via UART con nuestra electrónica correctamente.

Para enviar el comando M122 yo suelo utilizar Repetier. No es que sea mejor ni peor que Pronterface (otra alternativa), pero lo utilicé muchos años como Slicer y por inercia lo uso cuando necesito enviar algún comando g-code. También puedes utilizar el emulador de g-codes que ofrece el display híbrido TFT35, pero muestra tanta información que no es lo más recomendable.

En esta imagen puedes observar la salida del comando M122 en la pantalla del log de Repetier. Te muestra infinidad de parámetros y sus valores asignados, como la tensión configurada, los micropasos establecidos, la configuración de StallGuard y sus valores de Marlin y muchas otras cosas interesantes.

Testing TMC2209 UART2

Todo esto no estaría disponible si no hubiéramos establecido UART como modo de comunicación y conectado el pin DIAG a del driver a nuestra placa SKR.

 

Display TFT35 Bigtreetech V3.0 «Hibrido»

Display TFT35 V30

He de confesar que las pantallas de BIGTHREETECH «hibridas» son realmente espectaculares. Siempre he preferido los menús de Marlin en mis Displays MINI12864 y disponer de la posibilidad de activar/desactivar cualquier opción del firmware sin necesidad de esperar a odiosas actualizaciones de display que, o bien llegan tarde, o simplemente no llegan. Esto es algo que suele suceder en los displays TouchScreen.

Recuerdo tiempo atrás intentar activar en displays TouchScreen la función BabyStepping con comandos G-Code y no poder hacerlo. Y aunque cueste creerlo, esa función existe desde la versión 1.x.x de Marlin!. Algo vital para calibrar la impresiones en la primera capa de forma correcta.

Cuando leí por primera vez que estas pantallas emulaban ambos modos quedé gratamente impresionado, así que me decidí a adquirir una para mí electrónica SKR sin dudarlo. ¿Que no te quieres complicar y solo vas a imprimir? Eliges modo TouchScreen. ¿Que deseas toda la potencia y versatilidad de Marlin? Cambias al emulador Marlin, así de sencillo.

Y esto no significa de modo alguno que el modo TouchScreen no sea completo, al revés. Dispone de casi todas las funciones que ofrece Marlin y que necesitas usar a diario. El soporte por parte de los programadores es digno de mención.

Display TFT35 V30 2

Debido a que vamos a utilizar ambos modos, necesitaremos efectuar 3 conexiones en nuestra placa del display, que son las que puedes observar en la imagen superior (clic para agrandar). Las 2 conexiones típicas de serial 12864, que son los conectores EXP1 y EXP2. Y luego el conector propio del TouchScreen que utilizara SKR para comunicar con el display, marcado como TFT en la imagen.

El el video a continuación puedes ver cómo cambiar entre los modos de MARLIN (modo texto) a modo TOUCHSCREEN (pantalla táctil). Como puedes observar es simplemente presionar 4 segundos el botón principal y nos dará la opción de cambiar al modo deseado, más fácil imposible.

Me disculparás por la calidad del video, ya que no tengo el soporte aun diseñado y tuve que sujetarlo con mis propias manos, pero yo creo que se ve perfectamente el proceso. Y por cierto, si lo ves entero podrás descubrir cómo utilizar el emulador de G-Codes que viene con el modo TouchScreen.

He ejecutado precisamente el comando M122 y así ves en pantalla como se verifica que la impresora tiene los drivers TMC2209 configurados en modo inteligente UART.

 

Algunas recomendaciones finales

Es probable que después de compilar el firmware de Marlin y subirlo a tu electrónica, en tu pantalla Touchscreen o la de emulación de Marlin te pueda aparecer un error de Eeprom. Si este es el caso, no te preocupes ya que es normal.

Debes ejecutar estos comandos g-code uno por uno (no los insertes de golpe) y el problema se solucionará. Los comandos son M502, M500 y M501 en este mismo orden. Te dejo aquí mismo la descripción de lo que hace cada uno de ellos.

  • M502 – Reseteo completo a valores de fábrica. No precisa del parámetro EEPROM_SETTINGS.
  • M500 – Graba toda la configuración actual a nuestra EEPROM.
  • M501 – Carga los valores actuales de la EEPROM.

Otro de los problemas que suele aparecer cuando utilizamos el modo Touchscreen (táctil) es que nos indique que no existe comunicación con nuestra impresora. Eso es debido a que tenemos diferentes velocidades de comunicación seleccionadas en nuestro Firmware Marlin y en nuestro display.

Si has seguido al pie de la letra este manual recordarás que configuramos en Marlin la comunicación a 250.000 baudios (#define BAUDRATE 250000). Ahora deberás localizar en el display donde se configura la comunicación e indicarle este mismo valor.

Recuerda que esto lo tienes que hacer desde el «Touch mode», no desde la emulación de Marlin (modo texto). Para facilitarte la tarea te pongo la ruta a seguir:
MENú -> CONFIGURAR -> UART SPEED

 

 

Y bueno, de momento esto es todo, espero que este artículo te haya servido de ayuda. Ha sido un poco más laborioso de lo que me esperaba, pero creo que merece mucho la pena el poder disponer de toda esta información en un solo artículo para futuras referencias de toda nuestra comunidad (en la cual te incluyo).

Si te surgen dudas o consultas, o localizas alguna errata en el mismo, algo que no descarto por la longitud del mismo, únete a nuestra comunidad en cualquiera de las redes sociales.

También deseo agradecer a nuestro compañero Juanjo del canal de Telegram de 3DWork su inestimable colaboración en el desarrollo del mismo, ya que me ha prestado su ayuda incondicional desde el primer minuto.

 

Si lo deseas, puedes encontrar otros artículos interesantes en 3DWork en los siguientes enlaces: