BigTreeTech SKR 2: Guía y configuración de esta nueva y potente electrónica

Como muchos de vosotros sabéis, BigTreeTech (BIQU) es el fabricante de una de las electrónicas más extendidas en el mercado, las famosas SKR v1.4 / SKR v1.4 Turbo, de la cuales escribimos un extenso artículo hace algún tiempo: Guía completa SKR v1.4/v1.4 Turbo con drivers TMC2209 y Sensorless.

Ahora BigTreeTech ha lanzado una nueva revisión de estas electrónicas, cuyo nombre es BTT SKR 2, para intentar replicar el éxito de su versión anterior con un potente hardware y unas novedades muy interesantes.

Y como solemos hacer en 3DWork, vamos a analizar un poquito que ofrecen estas nuevas electrónicas y cómo podemos configurarlas para exprimirlas al máximo en nuestras impresoras 3D.

Vamos finalmente con el artículo, espero y deseo que os sirva de utilidad:

Breve introducción

Antes de continuar con el artículo me gustaría recordarte como siempre que disponemos de una gran comunidad en nuestro canal de Telegram. Allí solemos compartir todas nuestras dudas y experiencias. Si deseas formar parte de él, no tengas reparo alguno en unirte a nosotros.

También puedes encontrar mucha ayuda o recursos directamente en el grupo de Telegram de SKR,‌ así como otras guías de ayuda en nuestro Bot de Telegram @ThreeDWorkHelpBot

¿Donde puedo comprar la BigTreeTech SKR 2?

Os dejo algunos enlaces a las electrónicas mencionadas en el artículo de hoy. Es mi deber comentarte que son enlaces a tiendas online (afiliados).

Si los utilizas, el precio del producto será el mismo que si accedes de manera habitual, pero a 3DWork le quedará una pequeña comisión que ayudará a mantener este sitio web (y te estaré eternamente agradecido).

BigTreeTech SKR 2

Si lo deseas, y como alternativa, también puedes utilizar nuestro buscador de componentes Markets.sx, donde podrás comparar precios en diferentes sitios (Amazon, Aliexpress, Banggood, etc.) con una sola búsqueda muy fácilmente.

¿Qué novedades ofrece la BigTreeTech SKR 2?

Comenzamos como siempre con los diagramas de la placa, los cuales nos ayudarán de una forma rápida y visual a ver todas sus novedades y mejoras introducidas con un formato, en cuanto a tamaño se refiere, muy similar al de electrónicas anteriores.

Algunas de las importantes mejoras que podemos encontrar en esta nueva electrónica SKR 2 de BigTreeTech son las siguientes:

  • Nuevo microprocesador (o MCU) más potente
  • Protecciones en los conectores de los termistores
  • Protecciones térmicas
  • Protección en drivers (si estos son colocados en una posición incorrecta)
  • Jumpers para sensorless y evitar cortar pines en drivers
  • Puerto dedicado wifi
  • 3 ventiladores controlables
  • Mejoras en el interfaz de la SD además de incluir un conector USB

Especificaciones técnicas

En la siguiente lista podréis encontrar las especificaciones técnicas de la electrónica SKR 2:

  • Tamaño de 110mmx85mm, en la sección previa tenéis un esquema acotado de la placa
  • MCU ARM Cortex-M4 STM32F407VGT6 a 168Mhz… una auténtica bestia!!!
  • Voltajes de entrada soportados DC12V y DC24V, usando como voltaje de trabajo 3.3V
  • Soporte de los firmwares Marlin, RepRap Firmware y Klipper
  • Conector Wifi para ESP-12S/ESP-07S especialmente útil para el uso con RepRap Firmware
  • Conectores de expansión I2C, Servos, Nivelación, Relé, UPS, Filamentos, Leds, etc…
  • Soporte de drivers TMCxxxx, DRV8825, A4988, etc… soportando interfaces SPI, UART, STEP/DIR
  • Conectores para drivers X, Y, Z (con doble salida motor), E0, E1… cinco en total cada uno con interfaz para conexión a motores servo
  • Soporte para pantallas táctiles serial, SPI táctiles y displays LCD
  • Soporta cinemáticas (dependiendo del firmware) XYZ, delta, kossel, Ultimaker, CoreXY, etc…

Mejoras al detalle

Como ya hemos comentado previamente, la SKR 2 es una evolución de la antigua SKR 1.4 introduciendo un gran número de mejoras y actualizaciones. Pasemos a detallarlas a continuación.

MCU, mientras que sus hermanas SKR 1.3/1.4 montaban MCUs LPC176* la SKR 2 ha mejorado este aspecto incluyendo una MCU ARM Cortex-M4 STM32F407VGT6 a 168 Mhz que dará una potencia extra a nuestra impresora.

Termistores, como ya hemos comentado otra de las grandes mejoras son la inclusión de protecciones en las partes donde normalmente por manipulación o fallo externo hardware pueden afectar a nuestra placa. En este caso los termistores cuentan con protección para evitar cortos que puedan destruir nuestra placa.

Fusibles, cambiando de los fusibles blade tradicionales a fusibles SMD reemplazables que mejoran considerablemente la imagen final de la placa, como puedes ver en la imagen inferior

MOSFETS, una parte muy importante de nuestras placas son los MOSFETS encargados de gestionar nuestra cama y hotend así como los ventiladores. En la SKR 2 se han mejorado estos usando unos HYG090N06LS1C2 además de incluir adicionalmente un G045P03 que sirve para la protección de la placa ante posibles fugas térmicas.

Ventiladores (o fans), añadiendo 3 ventiladores controlables perfectos para usar como ventilador de capa, refrigeración controlada del hotend y de electrónica. Tenéis más información de cómo usar estos en nuestra guía de ventiladores en 3DWorkLabs.

USB y SD Card, la parte de la SD Card ha sido mejorada usando el modo SDIO y añadiendo un interfaz USB en vertical.

WiFi, aunque sus hermanas ya contaban con un conector para la conexión de WiFi, en las nuevas electrónicas SKR 2 se ha mejorado y compatibilizado con módulos ESP12S o ESP07. Sobre todo para su posterior utilización con RepRap Firmware.

Expansión, aunque no son mejoras con respecto a versiones anteriores, os recordamos las posibilidades de mejorar nuestra impresora añadiendo sensores de nivelación, módulos relé, módulos UPS, Neopixel, etc…

Una gran mejora para nuestras impresoras que nos pueden facilitar tener una primera capa lo más perfecta posible es la instalación de un sensor de nivelación como el BLTouch por ser uno de los más versátiles.

Tienes información mucho más detallada en nuestra Guía de BLTouch o si prefieres un sensor inductivo en esta otra Guía sensor inductivo.

Nos aporta un control del encendido o apagado de nuestra máquina de forma controlada, como por ejemplo apagar esta una vez finalizada la impresión.

Al igual que el módulo relé el UPS nos permite realizar un apagado de emergencia correcto sobretodo si usamos PLR (Power Loss Recovery)/restauración impresión ante fallo de corriente.

Podéis encontrar más información detallada en la siguiente guía.

Aunque no es una mejora directamente en el uso de la impresora si que es muy útil la inclusion de una tira led controlable ya sea como iluminación de la zona de impresión así como la gestión de eventos.

Os animamos a revisar la Guía de Neopixel donde encontraréis más información detallada.

Si queremos gestionar nuestra impresora remotamente, algo muy interesante y potente, podemos usar Octoprint por ejemplo que se instala sobre una Raspberry normalmente.

Podemos conectar esta por el cable USB o directamente usando GPIO de nuestra Raspberry el conector TFT (o cualquier otro serial de la placa como el que encontramos en el puerto Wifi).

La SKR 2 cuenta con interfaces para conectar motores servo siguiendo el siguiente esquema:

Drivers, sin duda uno de los grandes cambios en esta revisión sobre las antiguas electrónicas SKR 1.3/1.4 es como los drivers interactúan con el resto de la electrónica mediante la inclusión de protecciones.

Estas protecciones van a evitar la conexión incorrecta de nuestros drivers además de la inclusión del tan solicitado jumper para habilitar sensorless.

Este desgraciadamente fué eliminado en la SKR 1.4 y nos obligaba a “mutilar” nuestros drivers en caso de ejes que no fueran X, Y o en el caso de no usar Sensorless, sobre el que podéis encontrar más información en nuestra guía.

Podéis revisar las diferentes opciones en los interfaces disponibles en los drivers de la SKR 2 en las siguientes imágenes:

NOTA IMPORTANTE!!!

Las primeras unidades de SKR 2 (llamadas REV A) tuvieron un problema de diseño/componentes que precisamente provocaba los fallos que pretendía solventar en los drivers TMC.

Este error se subsanó rápidamente y ya todas las electrónicas SKR 2 en venta son versión REV B (con el nuevo componente corregido). No obstante, en el siguiente Documento de Google Docs puedes encontrar más información técnica al respecto.

Y por supuesto, si disponéis de una electrónica afectada, BigTreeTech ofrece tres solucion que van desde el reembolso del precio a la sustitución de los componentes afectados. Puedes visitar este otro enlace para más información: Solucionar problema en electrónicas afectadas.

Configuración del firmware

Como siempre, todas las placas de Bigtreetech prestan especial atención a la máxima compatibilidad con los firmwares más populares del mercado.

En este caso la SKR 2 nos asegura un soporte óptimo para firmwares Marlin, RRF o Klipper, lo que significa prácticamente cualquier entorno de impresión 3D.

Firmwares Marlin

Os aconsejamos seguir nuestra guía para “cocinar” vuestro propio Marlin que tenemos en la sección /Marlin de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot

Podéis encontrar las fuentes del firmware oficial aquí.

Modificando “Platformio.ini”

En este fichero deberemos indicar el chipset que tiene nuestra placa, por lo que deberemos buscar en el inicio del fichero el valor “env_default” y cambiarlo por el siguiente:

default_envs = BIGTREE_SKR_2

Modificando “Marlin/configuration.h”

Os aconsejamos añadir un comentario a cualquier línea que modifiquemos, ya que después nos será mucho más sencillo encontrar nuestros cambios para futuras consultas. Para ello podemos añadir:

En el caso que no tenga un comentario ya la linea
... // 3DWORK 
En el caso que ya tenga un comentario
... // 3DWORK ...

Comenzaremos por configurar correctamente los SERIAL y BAUDRATE para esta máquina, algo clave para el correcto funcionamiento de nuestra conexión TFT, USB o WIFI.

#define SERIAL_PORT 1 // 3DWORK SKR 2
...
#define BAUDRATE 115200 // 3DWORK SKR 2
...
#define SERIAL_PORT_2 -1 // 3DWORK SKR 2
...
#define SERIAL_PORT_3 3 // 3DWORK SKR 2

Ahora definiremos nuestro MOTHERBOARD, que como en el archivo “Platformio.ini” nos indica el tipo de chipset que lleva nuestra placa y que permite a Marlin usar una configuración de pines u otra.

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_BTT_SKR_V2_0_REV_B // 3DWORK SKR 2
#endif

Tal como os comentábamos anteriormente existen dos revisiones de esta placa, es importante identificar cual es la nuestra y definirla correctamente:

REV A usaremos: #define MOTHERBOARD BOARD_BTT_SKR_V2_0_REV_A
– REV B usaremos: #define MOTHERBOARD BOARD_BTT_SKR_V2_0_REV_B

Definiremos el número de extrusores y diámetro del filamento que usa nuestra impresora que básicamente indica el diámetro del mismo. Normalmente las impresoras usan filamento de 1.75 milímetros, aunque otra medida menos común (pero también estándar) es 3 milímetros.

// This defines the number of extruders
// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1

// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

Termistores, en estas variables indicaremos que termistores tenemos. Te aconsejo que identifiques cual es el tuyo o en su defecto uses uno de valor 1, que suele ser el más normal. Es importantísimo indicar el tipo de thermistor correcto para que las medidas que Marlin recibe sean las correctas para evitar problemas de extrusión y/o fallos de lecturas.

En el caso que queramos desactivar o activar la cama caliente comentaremos o activaremos el thermistor de la cama, de esta forma Marlin sabe si tiene o no cama caliente. En nuestro ejemplo y para esta placa usaremos un hotend y una cama caliente con un sensor de temperatura estándar.

#define TEMP_SENSOR_0 1 // 3DWORK SKR 2 TE0
#define TEMP_SENSOR_1 0 
#define TEMP_SENSOR_2 0 
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 1 // 3DWORK SKR 2 TB
#define TEMP_SENSOR_PROBE 0 
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0

Recordad que esta placa tiene soporte para 2 extrusores y cama caliente con lo que en caso de usarlos deberemos activar el tipo correcto en cada uno de ellos

PID, otra parte muy importante es el PID del que podéis obtener más información detallada en la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía de calibración.

Básicamente el PID ayuda a que Marlin controle de forma adecuada la temperatura sin tener grandes fluctuaciones.

#define PIDTEMP // 3DWORK PID
#define PIDTEMPBED // 3DWORK PID

ENDSTOPS o finales de carrera, es importante verificar cuando realizamos un cambio de electrónica y encendemos por primera vez que la lógica de los finales de carrera es la correcta usando el comando M119 desde un terminal como Pronterface… esto es OPEN en estado normal y TRIGGERED cuando están pulsados. Podremos invertir esta lógica cambiando:

#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.

Por otro lado y aunque lo normal es que las máquinas realicen el home en MIN (esquina inferior izquierda) en lugar de MAX (esquina superior derecha), usando HOME_DIR para este cambio -1(MIN) 1(MAX), debemos recordar que en el caso de cambiar la lógica habilitar los finales de carrera correspondientes:

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

Recordad que si disponéis de drivers TMC en modo UART podéis utilizar, si el driver lo soporta, el uso de SensorLess que permitirá prescindir de los finales de carrera físicos liberando de componentes y cables.

Podéis encontrar información de como activar SensorLess en nuestra guía para Marlin.

Drivers, como ya hemos comentado esta placa cuenta con 5 zócalos para drivers soportando diferente tipos de drivers y sus configuraciones.

En nuestro ejemplo utilizaremos unos TMC2209 en modo UART (inteligente), con doble Z independiente y un solo extrusor:

#define X_DRIVER_TYPE  TMC2209 // 3DWORK DRIVERS
#define Y_DRIVER_TYPE  TMC2209 // 3DWORK DRIVERS
#define Z_DRIVER_TYPE  TMC2209 // 3DWORK DRIVERS
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
#define Z2_DRIVER_TYPE TMC2209 // 3DWORK DRIVERS
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209 // 3DWORK DRIVERS

STEPS o pasos de motor, indicaremos a Marlin los pasos de motor para realizar movimientos. En este ejemplo usaremos los que una impresora Ender lleva por defecto.

En todo caso de nuevo os remitimos a la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o aquí para el proceso calibrar estos pasos para nuestro extrusor y ejes de movimiento.

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80.00, 80.00, 400.00, 93 } // 3DWORK pasos para Ender3 ejes X, Y, Z, Extrusor

S_CURVE_ACCELERATION, esta funcionalidad ofrece una gran mejora en la calidad de impresión ya que suaviza la aceleración o deceleración cuando el cabezal de impresión está en movimiento.

#define S_CURVE_ACCELERATION // 3DWORK MEJORAS

Nota importante!!!

Dependiendo de nuestra versión de Marlin, Linear Advance puede no ser compatible. En la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía de calibración podrás encontrar más información al respecto.

PROBE o sensor de nivelación, como hemos comentado en numerosas ocasiones, disponemos de una guía detallada para instalar un sensor BLTouch. Algo muy aconsejable a tener en cuenta para asegurarnos que nuestras impresiones siempre tienen una primera capa lo más perfecta posible.

Comenzaremos por indicar donde está conectado nuestro sensor de nivelación. En este caso lo conectaremos en el conector final de carrera de Z-.

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // 3DWORK PROBE indicamos a Marlin que nuestro sensor esta conectado en Z-STOP

Tipo de sensor BLTouch o Inductivo, existen diferentes tipos de sensores. Dependiendo del usado deberemos descomentar uno u otro. En caso de utilizar un sensor inductivo o Pinda revisa la siguiente guía.

En el caso de un sensor Inductivo:
#define FIX_MOUNTED_PROBE // 3DWORK PROBE
En el caso de un sensor tipo BLTouch:
#define BLTOUCH // 3DWORK PROBE

Offsets del sensor, es muy importante decirle a Marlin donde se encuentra exactamente instalado nuestro sensor de nivelación… esto lo haremos definiendo los PROBE OFFSET.

El Offset es la distancia entre la punta del nozzle y la punta del sensor de nivelación que dependiendo de donde esté deberán ser valores positivos o negativos, puedes usar el siguiente gráfico como ejemplo de que valor poner en cada caso.

En nuestro caso y como ejemplo nuestro sensor está desplazado hacia la izquierda del nozzle en X 30mm y 10mm en Y ya que está esa distancia hacia el fondo de la impresora.

#define NOZZLE_TO_PROBE_OFFSET { -30, 10, 0 } // 3DWORK PROBE

PROBING_MARGIN (en versiones anteriores MIN_PROBE_EDGE), es muy normal que tengamos en nuestras impresoras un cristal como base de impresión aunque personalmente nos gustan más las láminas PEI magnéticas.

Suelen ser un poco más susceptibles de marcarse con golpes, tienen una excelente adherencia, no te limitan el tamaño de la cama y retirar las piezas es extremadamente sencillo y rápido.

En cualquier caso ya tengamos cristal u otra superficie es aconsejable que el sensor este alejado de cualquier objeto que pueda molestarle durante el proceso de nivelación, ya sean grapas para fijar el cristal o el propio desajuste del inicio y final de cama que haga que el sensor nopueda medir.

Para esto usaremos este PROBING_MARGIN, al cual le indicaremos cuantos milímetros se tiene que alejar de los bordes de la cama.

En nuestro caso usando un BLTouch y una plataforma PEI lo dejamos por defecto.

#define PROBING_MARGIN 10 // 3DWORK PROBE

Dirección de motores, otro problema muy común a la hora de poner en marcha una impresora es que el cableado de las bobinas de nuestros motores no coincidan y se pueden dar dos casos:

  1. Que estén mezclados los conectores de nuestras bobinas, es muy fácil de identificar ya que el motor no girará correctamente e irá a trompicones. Para solucionarlo es aconsejable revisar el pinout de la antigua placa y/o del motor y compararlo con el de nuestra nueva placa para asegurarnos que coinciden
  2. Que el motor gire en la dirección incorrecta. En este caso de nuevo tenemos dos opciones… la primera y aconsejable es la de modificar en Marlin el giro del motor y la segunda es la de invertir el cableado de una de las bobinas del motor

En nuestro caso optamos por la primera modificando las siguientes líneas en Marlin cambiando el valor actual por el contrario… en este caso invertimos el eje Z.

#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false // 3DWORK Invertimos el giro del eje Z

Tamaño de impresión, si hemos usado un Marlin genérico es importante verificar que las dimensiones de impresión son las correctas para nuestra máquina.

Para el tamaño de cama en el ejemplo usamos una Ender 3 a su máximo tamaño, es aconsejable verificar que puedes llegar físicamente a estas medidas y ajustarlo de ser necesario:

#define X_BED_SIZE 235 // 3DWORK BED
#define Y_BED_SIZE 235 // 3DWORK BED

También definiremos el tamaño de nuestro eje Z:

#define Z_MAX_POS 250 // 3DWORK BED

Sensor de filamentos, te aconsejamos revisar en la sección /Mejoras/Sensor de filamentos de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía podréis encontrar más información detallada acerca de como instalar y configurar un sensor de filamentos.

#define FILAMENT_RUNOUT_SENSOR // 3DWORK SENSOR FILAMENTOS

Al igual que con los finales de carrera es aconsejable revisar con un M119 el estado del sensor de filamentos el cual tiene que aparecer TRIGGERED con filamento y OPEN sin. En el caso que parezca invertido deberemos de jugar con el valor de (LOW/HIGH):

#define FIL_RUNOUT_STATE LOW // 3DWORK SENSOR FILAMENTOS

También podemos indicar la distancia de filamento que queremos desde que el sensor detecta el fallo el sensor en:

#define FILAMENT_RUNOUT_DISTANCE_MM 25 // 3DWORK SENSOR FILAMENTOS

En el caso que nuestro sensor de filamento funcione por detección de flujo de filamento (como el sensor de BigTreeTech Smart Filament Sensor) deberemos habilitar lo siguiente:

#define FILAMENT_MOTION_SENSOR // 3DWORK SENSOR FILAMENTOS

Autonivelación, tal como os comentábamos anteriormente en la sección /Nivelación de nuestro bot @ThreeDWorkHelpBot tenéis más información detallada de como activar autonivelación UBL (la más avanzada y aconsejable para camas de cierto tamaño o con problemas) y MESH que permite tener una malla sin sensor haciendo el proceso manualmente.

En todo caso para este ejemplo habilitaremos BILINEAR.

#define AUTO_BED_LEVELING_BILINEAR // 3DWORK PROBE 

Es importante decirle a Marlin que habilite la autonivelación (G29) después de un homing (G28), aunque en versiones actuales ya no es necesario pero aconsejamos habilitarlo.

#define RESTORE_LEVELING_AFTER_G28 // 3DWORK PROBE

En el caso de BILINEAR especificaremos el número de puntos a realizar por malla en la siguiente parte de Marlin (por defecto lleva 3 puntos por eje, 3×3=9 puntos de comprobación).

if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension.
#define GRID_MAX_POINTS_X 3 // 3DWORK PROBE

Otra función que por seguridad debemos de habilitar es la de que realice un homing en el centro de la cama, esto nos ayuda a dos cosas… la primera a asegurar que el sensor tiene una superficie donde detectar el final de carrera y el segundo verificar visualmente que nuestros Offsets están de forma correcta ya que el sensor de nivelación tiene que quedar perfectamente posicionado en el centro de nuestra cama.

#define Z_SAFE_HOMING // 3DWORK PROBE

EEPROM, en la EEPROM Marlin guarda los valores de configuración de diferentes funciones para que estas puedan usarse por el sistema y ser cambiadas por el usuario sin necesidad de tener que modificar ficheros fuentes de Marlin, compilar y subir en cada cambio el firmware.

Es muy aconsejable activarla y con nuestra SKR 2 no tendremos problemas de memoria.

#define EEPROM_SETTINGS // 3DWORK EEPROM
#define EEPROM_CHITCHAT // 3DWORK EEPROM

Nozzle Park, en el ejemplo que estamos explicando hemos añadido un sensor de filamentos. Para que este funcione deberemos activar NOZZLE_PARK_FEATURE que básicamente nos permite “aparcar” el cabezal de impresión en una zona segura para realizar este cambio de filamentos.

Aunque si no tenemos sensor de filamentos es muy aconsejable tenerlo activo ya que nos permite mejorar las funciones de pausado.

#define NOZZLE_PARK_FEATURE // 3DWORK Cambio Filamentos

SD Card, si queremos que nuestro querido Marlin pueda leer de nuestra SD, ya sea el de la placa o en una pantalla que sea compatible (ojo que las Touch no lo son), deberemos activar el soporte de SD Card.

#define SDSUPPORT // 3DWORK SD

Menu Homing Avanzado, no es necesario pero si muy aconsejable en el caso de realizar tests habilitar esta función que nos permite poder realizar un homing por separado de cada eje.

#define INDIVIDUAL_AXIS_HOMING_MENU // 3DWORK MEJORAS

Modificando “Marlin/configuration_adv.h”

Ya hemos finalizado la primera parte y ahora tendremos que pasar a la configuración de las opciones avanzadas.

Scroll y nombres ficheros largos, es interesante activar esta función para poder mostrar el nombre completo de los ficheros a imprimir.

Al igual que el anterior y para que funcione correctamente tenemos que activar la siguiente opción.

#define LONG_FILENAME_HOST_SUPPORT // 3DWORK MEJORAS
#define SCROLL_LONG_FILENAMES // 3DWORK MEJORAS

Conexión SD, en configuration.h habilitamos el soporte para SD y en configuration_adv.h definiremos de donde Marlin intentará usar esa SD. Tal como comentamos previamente no todas las pantallas que dispongan de SD van a funcionar correctamente.

Disponemos de tres opciones:

  • LCD donde usaremos la de la pantalla Marlin.
  • ONBOARD donde usaremos la de la placa.
  • CUSTOM_CABLE donde indicaremos que usamos un lector externo conectado a la placa.
#define SDCARD_CONNECTION LCD // 3DWORK SD

Ventiladores, un gran acierto por parte de Bigtreetech es la inclusión de 3 ventiladores gestionables.

La definición del pin de cada FAN la podemos encontrar en:

  • REV A /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_REV_A.h
  • REV B /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_REV_B.h
  • Para ambas /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h

FAN0, en este caso no vamos a realizar ningún cambio en su rol ya que es el ventilador de capa y este lo gestiona el propio slicer/fileteador para enfriar el filamento.

FAN1, en nuestro ejemplo lo vamos a asignar al hotend para que de forma dinámica solamente se active cuando el hotend este en funcionamiento evitando desgastes del ventilador y ruido innecesario:

#define E0_AUTO_FAN_PIN FAN1_PIN // 3DWORK FAN1 Asignado hotend
...
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 // 3DWORK FAN1 Activación a temperatura
#define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == Full speed

FAN2, para aprovechar este arsenal de ventiladores gestionables (podemos disponer de más reutilizando pines de otras funciones como RGB por ejemplo) para asignar FAN2 como ventilador de la electrónica dinámico para que este se active cuando los drivers estén en uso minimizando de nuevo desgaste y ruido por parte del ventilador:

#define USE_CONTROLLER_FAN // 3DWORK FAN2 Habilitada ventilación gestionada de electrónica
...
#define CONTROLLER_FAN_PIN FAN2_PIN // 3DWORK FAN2 Asignado a electrónica
...
#define CONTROLLER_FAN_EDITABLE // 3DWORK FAN2 Gestionable GCode M710
...
#define CONTROLLER_FAN_MENU  // 3DWORK FAN2 Habilitar menú gestión pantalla

Babystepping, una función casi imprescindible tener es baby stepping. Babystepping nos permite ajustar la altura de Z durante una impresión para “afinar” de forma manual esta misma altura a nuestro gusto.

En nuestro ejemplo habilitaremos que se pueda activar con un doble click en el botón/encoder, que siempre esté disponible y nos muestre mejoras gráficas en el ajuste para entender la dirección del ajuste desde la pantalla.

#define BABYSTEPPING // 3DWORK MEJORAS
#define DOUBLECLICK_FOR_Z_BABYSTEPPING // 3DWORK MEJORAS
#define BABYSTEP_ALWAYS_AVAILABLE // 3DWORK MEJORAS
#define BABYSTEP_ZPROBE_GFX_OVERLAY // 3DWORK MEJORAS

Reintentos en caso de fallo en la nivelación, otra función muy útil es la de poder reintentar el proceso de homing en caso de fallo. En ocasiones nuestro sensor de nivelación puede tener un fallo puntual y mediante esta función nos permitirá volver a intentarlo un número finito de veces.

#define G29_RETRY_AND_RECOVER // 3DWORK MEJORAS
#define G29_MAX_RETRIES 4 // 3DWORK MEJORAS

En caso de usar nivelación UBL esta opción no es compatible.

Soporte ARC, una mejora sustancial en la calidad de nuestras impresiones y también cuando imprimimos a través de dispositivos serial como TFT, Octoprint, etc… Permite simplificar los comandos gcodes minimizando el numero de movimientos y haciendolos más fluidos evitando también un gran número de retracciones.

Para usarlo debemos de configurar nuestro fileteador/slicer para que aplique estos cambios o en el caso de Octoprint podemos usar un plugin. En cuanto a los cambios en en Marlin:

#define ARC_SUPPORT // 3DWORK MEJORAS

Es importante recalcar que en el caso de habilitar ARC para su uso es aconsejable, en el caso que también lo tengamos habilitado, la compatibilidad con S_CURVE. Tenéis más información en la guía de calibración.

Pausado avanzado, tal como comentamos anteriormente en este ejemplo usamos un sensor de filamentos. Para que funcione correctamente tenemos que habilitar ADVANCED_PAUSE_FEATURE que habilita el comando gcode M600 para el cambio de filamentos.

Esto puedes hacerlo con o sin sensor de nivelación y requiere NOZZLE PARK para su correcto funcionamiento.

No entraremos en la configuración detallada ya que la tienes dentro de /Mejoras/Sensor Filamentos dentro de nuestro bot o directamente en la guía.

#define ADVANCED_PAUSE_FEATURE // 3DWORK Cambio Filamentos

Configuración drivers UART/SPI, con nuestros drivers en UART/SPI tenemos que configurar correctamente los parametros avanzados que encontraremos en la sección HAS_TRINAMIC_CONFIG.

Micropasos, aunque podemos configurar desde 16 a 256 micropasos no os aconsejamos para nada usar otro valor diferente al de 16.

Con esos micropasos la definición que podríamos alcanzar mecánicamente es prácticamente imposible de alcanzar con impresoras normales además de que los drivers TMC ya realizan ellos mismo la interpolación de estos para siempre ofrecer la máxima fiabilidad y precisión.

La fiabilidad es otro aspecto importante a la hora de los micropasos. Los motores de pasos que llevan nuestras impresoras pierden torque (y pasos) a altas revoluciones así que aumentar esta definición de pasos aumentará exponencialmente el porcentaje de fiabilidad y por lo tanto que nuestras piezas no salgan correctamente.

En el ejemplo siguiente podremos ver cómo tenemos 16 micropasos para nuestro eje X.

#if AXIS_IS_TMC(X)
#define X_CURRENT 650 // (mA) RMS current
#define X_CURRENT_HOME X_CURRENT
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11
#define X_CHAIN_POS -1
#endif

Otro valor importante de los valores anteriores es el de CURRENT donde ajustaremos la corriente de nuestros motores. También puedes ajustarlos desde el LCD desde Configuración/Avanzado/TMC junto con otras opciones que explicaremos a continuación.

STEALTHCHOP, es importante habilitarlo si queremos que nuestros motores sean “silenciosos” ya que si no estará funcionando en modo SpreadCycle que es el modo potencia.

#define STEALTHCHOP_XY // 3DWORK Drivers
#define STEALTHCHOP_Z // 3DWORK Drivers
#define STEALTHCHOP_E // 3DWORK Drivers

Aunque es raro algunos extrusores pueden trabajar mejor con el modo StealthChop deshabilitado. Si es nuestro caso comentaremos la siguiente linea.

//#define STEALTHCHOP_E // 3DWORK DRIVERS

CHOPPER TIMING, es usado por StealthChop para la sincronización de señales a los motores. Este tiene que coincidir con el voltaje usado en nuestra impresora, en el caso de Ender 3 y normalmente en todas las impresoras a 24v.

#define CHOPPER_TIMING CHOPPER_DEFAULT_24V // 3DWORK DRIVERS

Monitor Status, esta función nos permite que Marlin pueda controlar en detalle todos los parámetros de los drives para poder ajustar por ejemplo la temperatura de los mismos para evitar problemas más graves.

#define MONITOR_DRIVER_STATUS // 3DWORK DRIVERS

Hybrid Threshold, otra interesante función es Hybrid Threshold que nos permite que Marlin cambie entre StealthChop (silencio) o SpreadCycle (potencia) dinámicamente en base a la velocidad de movimientos.

#define HYBRID_THRESHOLD // 3DWORK DRIVERS
#define X_HYBRID_THRESHOLD 100 // [mm/s]
#define Y_HYBRID_THRESHOLD 100
#define Z_HYBRID_THRESHOLD 15

En nuestro caso usamos los valores indicados para una Ender que son 100mm/s para X Y y de 15 para Z aunque lo podemos ajustar a nuestras necesidades.

TMC Debug, en este caso es un requerimiento de MONITOR_DRIVER_STATUS que deberemos de habilitar y nos permitirá tener accesible el comando M122 muy útil para obtener información avanzada del estado y configuración de nuestros drivers.

#define TMC_DEBUG // 3DWORK DRIVERS

Ficheros pins de nuestra SKR 2

A continuación os dejo por aquí las rutas de los ficheros pins que contienen las referencias para esta placa, y que podéis localizar dentro de los sources del firmware Marlin:

  • REV A: /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_REV_A.h
  • REV B: /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_REV_B.h
  • Para ambas: /Marlin/src/pins/stm32f4/pins_BTT_SKR_V2_0_common.h

Actualizar firmware Marlin en SKR 2

En este caso es muy sencillo y tan solo tenemos que copiar nuestro firmware.bin en la raíz de la SD formateada en FAT32, insertar la SD en la ranura del módulo y esperar unos 30seg a que finalice el proceso.

Una vez finalizado el fichero firmware.bin debe quedar renombrado a firmware.CUR el cual podemos guardar a modo de copia de seguridad (recordar que un firmware compilado no se puede modificar, ese proceso solamente se puede hacer con los ficheros fuentes de vuestro firmware y vuelto a compilar).

Firmwares RepRap

Tal como hemos comentado la SKR 2 soporta RepRap Firmware el cual podréis encontrar aquí.

Notas finales

Ahora solamente queda compilar, ajustar cualquier error que nos reporte el compilado y meterlo en nuestra placa. Como siempre, os aconsejamos verificar inicialmente la impresora de la siguiente manera:

  • Probar los finales de carrera usando un terminal (Pronterface por ejemplo) con el comando M119.
  • Revisar individualmente Homing de cada uno de los ejes de movimiento en orden (X Y Z E) e invertir giro del motor en caso necesario.
  • Verificar que nuestros termistores reportan correctamente la temperatura.
  • Revisar que nuestros calentadores de cama y de hotend funcionan correctamente.
  • Realizar la guía de Calibración Inicial que podéis encontrar en nuestro bot en el apartado /Calibración.

Como siempre, esperamos que el artículo os haya sido de utilidad para la configuración de estas nuevas electrónicas BigTreeTech SKR 2. Podéis dejar vuestros comentarios o dudas al final del mismo.

No dudes en visitar otros artículos interesantes de nuestro blog: