Monster8

MKS Monster8: Análisis y guía completa del buque insignia de MKS

Hoy os traemos una placa de MKS donde podemos ver la evolución de esta marca hacia sus orígenes creando una placa balanceada entre calidad, precio, tecnología y lo más importante bajo nuestro punto de vista documentación/soporte… en el caso que tengamos una Voron 2.4 especialmente.

Esta nueva Monster8 viene a representar a MKS en el segmentos de placas orientadas a máquinas estilo «CoreXY» como Voron 2.4 o la más reciente revisión Trident, una BLV o VCore3 siendo a día de hoy las mejores máquinas en este formato en especial si vamos a montar estos formatos en alto rendimiento.

En concreto la apuesta, teniendo en cuenta la documentación y firmware disponible está especialmente enfocada a Voron 2.4 aunque como siempre podremos adaptarla con mayor o menor trabajo dependiendo de nuestros conocimientos a cualquier otra impresora.

Os dejamos un video interesante de Makerbase sobre esta placa.

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 MKS,‌ así como otras guías de ayuda en nuestro Bot de Telegram @ThreeDWorkHelpBot.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2Fn6OuNQySeQAm9LbpuQpP%2Fimage

Principales características

Características más importantes de la Monster8:

  • MCU de 32b ARM Cortex-M4 STM32F407VET6, con una frecuencia de reloj de 168MHz y 512K de memoria flash y 192KB de RAM
  • Puede funcionar con una entrada de DC12V y 24V
  • Además cuenta con DCDC integrados para proveer alimentación a 12V y 5V ideales para instalar ventiladores silenciosos, tiras leds, sensores, etc… sin necesidad de DCDC externos
  • Hasta 4 calentadores (H-BED,HE0,HE1,HE2)… 1 para cama caliente y 3 para hotends junto con sus respectivos sensores de temperaturas (TB, TH0,TH1,TH2)
  • 3 ventiladores PWM controlables + 3 sin controlar, en todas ellas podremos seleccionar el voltaje de trabajo (VIN, 12V, 5V)
  • Hasta 8 drivers con 9 conectores para motores (Driver 0,1,2-1,2-2,3,4,5,6,7) en los cuales podremos seleccionar su funcionamiento entre 3.3V y 5V
  • Conectores EXP1/EXP2 que nos darán compatibilidad con prácticamente cualquier pantalla aunque siempre aconsejamos las propias de MKS MINI12864 o MKS TS35
  • Conector USART para TFT (usart1:PA9,PA10) aconsejamos la MKS H43 por su integración con MKS aunque podremos usar cualquier otra pantalla serial TFT
  • Soporte de BlTouch y similares con un conector destinado para ellos (PA8) y usable por otros sistemas ABL.
  • EEPROM 4K (conectada mediante I2C)
  • CAN BUS mediante conector 6P6C RJ11 para futuros módulos de expansión
  • SPI BUS puerto de expansión para módulos SPI como el MAX31865
  • UDISK integrado
  • Soporte TMC UART y SPI y funciones Sensorless/StallGuard
  • Soporte DFU mediante pulsador(Boot0)

Existen dos versiones diferentes de MKS Monster8 la V1.0_002 que fué la lanzada inicialmente y la V1.0_003 como revisión a la versión original donde se han realizado mejoras menores resaltando las de la alimentación y cama caliente.

¿Dónde puedo comprar la MKS Monster8?

Puedes adquirir la MKS Monster8 en diferentes marketplaces y tiendas de internet. Por aquí os dejamos algunos enlaces directos.

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. Algo que nos ayudará a soportar el proyecto y continuar generando contenido.

MKS Monster8Amazon Logo PNG e1579685453346aliexpress logomarkets e1632995005390

Como alternativa, tambien puedes utilizar nuestro buscador de productos para impresión 3D Markets.sx, donde con una sola búsqueda se te mostrará precios de diferentes marketplaces (Amazon, Aliexpress, Banggood, etc.)

Markets2

Diagramas MKS Monster8

Como siempre comenzamos por revisar los esquemas de conectores, pineados y medidas para hacernos una idea de la Monster8.

También podéis acceder al manual de la MKS Monster8 para Marlin y Klipper que facilita el fabricante en su Github junto con otra información interesante sobre esta placa aunque en este caso está principalmente enfocada para una Voron 2.4.

Conexiones MKS Monster8

Vamos a realizar un repaso de las diferentes conexiones y componentes de nuestra MKS Monster8.

Conectores de alimentación

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FeYWPrUBlMEhEDuwq16HG%2Fimage

La MKS Monster8, cuenta con una entrada de alimentación .Echamos de menos el disponer de otra entrada separada para motores y cama ya que esta placa está orientada a máquinas PRO este es un aspecto importante que puede a llegar a limitarnos para según que tipo de configuraciones que tengamos pensadas.Por otro lado no entendemos como MKS no ha incluío protecciones mediante fusibles extraíbles en esta placa, algo que a día de hoy contamos prácticamente en todas las placas incluso más sencillas.También como viene siendo común en este tipo de placas, y es de agradecer, dispone de dos conversores DCDC de 12V y 5V lo cual nos permitirá poner componentes que trabajen en esos voltajes sin necesidad de DCDC externos.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FJWGAEW5ehQDkgwhHHdsR%2Fimage

La MKS Monster8 cuenta con un jumper para la selección de alimentación para la electrónica usando el puerto USB-C, con este pin conectado mediante un jumper la placa se alimentará por el puerto USB-C para realizar tareas de actualización de firmware o tests básicos.
Es importante no tener puesto el jumper en un uso normal conectado a la fuente de alimentación de la impresora.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FFdyBteWKkyE9scZ7pDFe%2Fimage

Contamos con 3 salidas para hotend y una cama caliente para esta contamos con un conector más dimensionado dado que normalmente maneja mayor corriente.

spaces%2F MTqLw6KI5FruaRNEMZD

Termistores

Al poder contar con 3 salidas de hotend disponemos de 4 conectores para termistores , 3 para hotends (TH0, TH1, TH2) y 1 para la cama caliente (TB). Os recordamos que la orientación de los cables de los termistores normalmente no es importante ya que estos no suelen tener polaridad.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F5e7PK9tXe8f2dXsXKCPo%2Fimage

Ventiladores

La MKS Monster8 cuenta con 6 conectores para ventiladores siendo 3 de ellos controlables y otros tres conectores para ventiladores siempre alimentados.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FKEuafDbcBDH90L3JjoXG%2Fimage

Como ya hemos comentado podemos escoger el voltaje de estos ventiladores mediante un jumper entre 5v, 12v o 24v… se acabaron los conversores DCDC externos para silenciar nuestra impresora!!!

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FQNfuBwkXfHgGKJ4aEKpi%2Fimage

Drivers

La MKS Monster8 cuenta con 8 zócalos para drivers haciendola una electrónica perfecta para máquinas exigentes como pueden ser las impresoras CoreXY o similares.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FJSOBgUoD2zQ9hydnLa01%2Fimage

Importante resaltar que el driver normalmente asignado al eje Z (MOTOR 2) dispone de 2 conectores de motor en paralelo en el caso, que a nosotros personalmente nos gusta mucho, de no usar doble eje Z independiente y autonivelado. El soporte para casi cualquier tipo de driver y diferentes modos de los mismos nos da muchas posibilidades a la hora de confeccionar nuestra máquina. A día de hoy y bajo nuestro punto de vista lo más aconsejable es siempre habilitar nuestros drivers en modo «inteligente» (UART/SPI) siempre que estos los soporten, la MKS Monster8 también dispone de opción para usar drivers en modo standalone (Step/DIR).

A día de hoy lo más común o aconsejable es el uso de drivers TMC como los TMC2208, TMC2209 o TMC2226 los cuales se gestionan de forma inteligente usando UART.

Para configurar la placa en modo UART tan solo tendremos que usar el siguiente jumper tal como se puede ver en la siguiente fotografía:

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F3Nw8UAUG0RlQS6rGvvgD%2Fimage

Si usamos drivers SPI deberemos de conectar los jumpers en cada driver que usemos SPI según la siguiente imagen.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F1zlEioQUYJEmU6UM22yV%2Fimage

La Monster8 permite el uso de drivers en modo Step/DIR o Standalone.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2Fmwhm63IS7MR2RVFGQdcK%2Fimage
  • MKS TMC2209/TMC2226
    • M0=GND,M1=GND, 8 microstep
    • M0=VCC,M1=GND, 32 microstep
    • M0=GND,M1=VCC, 64 microstep
    • M0=VCC,M1=VCC, 16 microstep
  • MKS TMC2208(GND=jumper disconnect, VCC=jumper connect)
    • M0=GND,M1=GND, 8 microstep
    • M0=VCC,M1=GND, 2 microstep
    • M0=GND,M1=VCC, 4 microstep
    • M0=VCC,M1=VCC, 16 microstep
  • MKS TMC2225(GND=jumper disconnect, VCC=jumper connect)
    • M0=GND,M1=GND, 4 microstep
    • M0=VCC,M1=GND, 8 microstep
    • M0=GND,M1=VCC, 16 microstep
    • M0=VCC,M1=VCC, 32 microstep

Doble eje Z

Tal como hemos comentado ya esta Monster8 esta destinada a ser el corazón de máquinas potentes en las que el disponer doble, o incluso más, ejes Zs suele ser un requerimiento.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FuAL0zynq1EJ41sXprcn1%2Fimage

Ubicación del driver para doble eje en Z simple.

Sensorless

Otra función cada vez más extendida para simplificar el cableado y componentes de nuestra impresora es la de usar la función Sensorless que utilizan algunos drivers TMC. Esta función básicamente usa los motores como finales de carrera detectando picos de consumo de corriente durante el proceso de homing para simularlos.

Para habilitar esta función en un eje, recordad que hay una parte que se tiene que realizar en nuestro firmware para lo cual os aconsejamos revisar nuestra guía Sensorless, es tan sencillo como colocar un jumper en los conectores Sensorless.

Solamente contamos con opción de Sensorless para los Drive0-5, Drive6 y 7 no disponen de esta función.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F6rfJbDjBQpnR04Pa4hSF%2Fimage

Es importante recordar que el uso de Sensorless es aconsejable únicamente para los ejes X e Y ya que por su precisión y funcionamiento no se aconseja en ejes Z.

Sensores de nivelación

Como no podía ser de otra forma en esta excepcional electrónica se incluye un conector dedicado a sensores de nivelación.

A continuación podéis ver dos ejemplos de conexión a los más comunes actualmente:

Desde 3Dwork opinamos que este tipo de sensor es… por precisión y por poder usarse prácticamente en cualquier impresora y superficie de impresión… nuestro preferido.

Por otro lado suelen ser por su funcionamiento un poco más delicados y siempre es aconsejable adquirir un sensor original de Antclabs.

Dado que la Monster8 no cuenta con un puerto específico para la parte endstop del sensor deberemos usar los conectores endstop, en los siguientes ejemplos podemos ver ejemplos de el sensor conectado en Z-MAX y Z-MIN.

spaces%2F MTqLw6KI5FruaRNEMZD
Sensor conectado en Z-MAX para su uso en nivelación.
spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F0SLIfADJO26hf1vWAMLH%2Fimage
Sensor conectado en Z-MIN para su uso en homing.

Otros sensores muy extendidos son los inductivos/capacitativos siendo los más «famosos» los PINDAV2/SuperPINDA por su precisión y tener un tamaño y peso perfecto para usar en nuestras impresoras.

Este tipo de sensores a diferencia de los Bltouch/3Dtouch no actúan por contacto si no detectando campos magnéticos limitando en este caso la precisión y funcionamiento en determinadas superficies de impresión.

En este caso conectaremos el sensor directamente en el conector Z-MIN u otro dependiendo de nuestra configuración de firmware también tendremos que tener en cuenta dependiendo del sensor si hemos de habilitar el pull-down en nuestro firmware.

Es importante mencionar que contamos con un jumper para seleccionar la alimentación de voltaje de los conectores endstop entre 5v (defecto) y VIN… es importante tener este jumper conectado donde corresponda!!!

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FY5Qo45IJwANEzmZ6K69P%2Fimage

Sensores de filamentos

La Monster8 al igual que en otras placas podemos usar los conectores de los endstops para poner sensores de filamentos.

Por defecto, en Marlin usa Y+ y Z+ para estos sensores, el cual comparten rol con módulos de UPS y Relé.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FmWE5ZXciZLQrP8FiwRr7%2Fimage
//
// Misc. Functions
//
#define PW_DET                              PC5   // Y+
#define PW_OFF                              PB12  // Z+
#define MT_DET_1_PIN                      PW_DET
#define MT_DET_2_PIN                      PW_OFF
#ifndef FIL_RUNOUT_PIN
  #define FIL_RUNOUT_PIN            MT_DET_1_PIN
#endif
#ifndef FIL_RUNOUT2_PIN
  #define FIL_RUNOUT2_PIN           MT_DET_2_PIN
#endif

Puertos expansión

Otra excelente mejora introducida en la MKS Monster8 ha sido la inclusión de un puerto de conectividad CAN BUS usando un conector ethernet. Esta conexión CAN nos permitirá ampliar nuestra placa con otras de expansion a modo de más drivers, etc…

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FkY7qZMfUVOrlFDd1S9L9%2Fimage
Puerto de expansión CAN BUS.

Para otros módulos de expansión:

El módulo relé de MKS PWC nos aporta el control del apagado de nuestra impresora de forma controlada, como por ejemplo apagar esta una vez finaliza la impresion.

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2F1at3oKNNBDWU6TnoItYU%2Fimage

Conexiones:

  • MKS PWC PW_OFF conectado a Z+
  • MKS PWC PW_DET conectado a Y+

PW_OFF y PW_DET cuentan con un cable rojo que no se ha de conectar, el cable verde se conecta a SGN y el cable negro a GND

Configuración de Marlin:

  • En Configuration.h
    • Habilitaremos: #define PSU_CONTROL
    • Cambiaremos PSU_ACTIVE_STATE a HIGH

Configuración del firmware

En el caso de la Monster8 nos aseguran un soporte óptimo para firmwares Marlin y Klipper con configuraciones enfocadas a la Voron 2.4.

Marlin

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FG6shoiPuQSEuLMX6c3cj%2Fimage

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 @ThreeDWorkHelpBotPodéis encontrar las fuentes del firmware oficial aquí preconfigurado para Voron 2.4.

platformio.ini

spaces%2F MTqLw6KI5FruaRNEMZD

En este fichero indicaremos nuestro chipset/electrónica buscando al inicio del fichero el valor env_default y cambiarlo por:

default_envs = mks_monster8_usb_flash_drive

Marlin\configuration.h

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FnvE28b302k3dHnyiNdWn%2Fimage

Primero de todo y como siempre hacemos os aconsejamos añador un comentario a cualquier linea de configuración que modifiquemos, ya que después nos será mucho más sencillo encontrar nuestras modificaciones para futuros cambios/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, algo muy importante para el correcto funcionamiento de componentes como una pantalla TFT, WiFi o un dispositivo conectado por USB-C.

#define SERIAL_PORT -1 // 3DWORK TFT
...
#define BAUDRATE 250000

A continuación definiremos nuestro MOTHERBOARD, que como en el archivo platformio.ini nos indica que tipo de placa se tiene que usar a nivel de pines:

// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_MONSTER8 // 3DWORK MONSTER8
#endif

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 impresoras usan filamento del 1.75 aunque otra medida más o menos estándar es 3.

// 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, os aconsejamos que identifiquéis cuál es el vuestro o en su defecto uséis 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 MONSTER8 TH0
#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 MONSTER8 TB
#define TEMP_SENSOR_PROBE 0 
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0

Recordad que esta placa tiene soporte para 3 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 cómo 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, tos valores 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 impresion ya que suaviza la aceleración o deceleracion cuando el cabezal de impresión está en movimiento.

#define S_CURVE_ACCELERATION // 3DWORK MEJORAS

Nota importante!!! es que dependiendo de nuestra versión de Marlin y si usamos Linear Advance no son compatibles. En la seccion /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía de calibración podréis encontrar más información detallada de Linear Advanced

PROBE o sensor de nivelación, ya hemos comentado hay una guía detallada de como instalar un sensor BLTouch vamos a realizar una revisión de las partes más importantes a tener en cuenta en el caso que queramos instalar un sensor de nivelación, algo muy aconsejable 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 des-comentar uno u otro.

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 dónde 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 dónde esté deberán ser valores positivos o negativos, puedes usar el siguiente gráfico como ejemplo de que valor poner en cada caso.

e28dfb5d468ada9c88b4a

En nuestro caso y como ejemplo nuestro sensor esta 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 que aunque ser un poco mas susceptibles a marcarse con golpes tienen una excelente adherencia, no te limita 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 no pueda medir.

Para esto usaremos este PROBING_MARGIN en el cual le diremos cuántos mm 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. 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. 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 lineas 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 VCore3 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 300 // 3DWORK BED
#define Y_BED_SIZE 300 // 3DWORK BED

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

#define Z_MAX_POS 300 // 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

En el caso que nuestro sensor de filamento funcione por detección de flujo de filamento deberemos habilitar lo siguiente:

#define FILAMENT_MOTION_SENSOR // 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

Autonivelación, tal como os comentábamos anteriormente en la sección /Nivelacion 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 v2 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 SENSOR FILAMENTOS

SD, si queremos que nuestro 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.

#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

Configuración de UI Marlin para LCD/TFT, a continuación os ponemos algunos ejemplos de diferentes LCD/TFTs para usar con nuestro firmware Marlin

spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2Fa6ih8YQb4jiKlRQJNsOt%2Fimage

configuration.h habilitaremos

  • #define MKS_MINI_12864_V3
  • #define NEOPIXEL_LED
spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FOPHwKGMLwcp63j1ZFjCy%2Fimage
  • configuration.h habilitamos #define DGUS_LCD_UI_MKS
  • configuration_adv.h habilitamos #define LCD_SERIAL_PORT 1
spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FEd5BZCcJhoNPVcf7QlBI%2Fimage
  • configuration.h habilitamos #define DGUS_LCD_UI_MKS
  • configuration_adv.h habilitamos #define LCD_SERIAL_PORT 1

configuration.h file

  • Para LCD12864 habilitaremos #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
  • Para LCD2004 habilitaremos #define REPRAP_DISCOUNT_SMART_CONTROLLER

En el caso de usar una LCD12864 y observamos artefactos en la pantalla deberemos modigicar estos valores en pins_MKS_MONSTER8.h:
define BOARD_ST7920_DELAY_1 DELAY_NS(96)
define BOARD_ST7920_DELAY_2 DELAY_NS(48)
define BOARD_ST7920_DELAY_3 DELAY_NS(600)

Marlin/configuration_adv.h

spaces%2F MTqLw6KI5FruaRNEMZD

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.

Disponemos de tres opciones, LCD donde usaremos la de la pantalla Marlin… ONBOARD donde usaremos la de la placa y CUSTOM_CABLE donde le indicaremos que usamos un lector externo conectado a la placa.

Tal como comentamos previamente no todas las pantallas que dispongan de SD van a funcionar correctamente.

#define SDCARD_CONNECTION LCD // 3DWORK SD

En el caso que queramos utiliazar la SD de la placa

* platformio.ini usaremos default_envs = mks_monster8 NO podremos usar mks_monster8_usb_flash_drive o mks_monster8_usb_flash_drive_msc
* configuration.h habilitaremos #define SDSUPPORT como ya comentamos antes

Si usamos la SD de la LCD deberemos modificar tambien

* pins_MKS_MONSTER8.h habilitaremos #define SDCARD_CONNECTION LCD

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

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

  • /Marlin/src/pins/stm32f4/pins_MKS_MONSTER8.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 activacion a temperatura
#define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed

FAN2, asignaremos este 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 ventilacion gestionada de electronica
...
#define CONTROLLER_FAN_PIN FAN2_PIN // 3DWORK FAN2 asignado a electronica
...
#define CONTROLLER_FAN_EDITABLE // 3DWORK FAN2 gestionable gcode M710
...
#define CONTROLLER_FAN_MENU  // 3DWORK FAN2 habilitar menu gestion pantalla

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

En nuestro ejemplo habilitaremos que se pueda activar con un doble click en el botón/encoder, que siempre este 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 haciéndolos más fluidos evitando también un gran número de retracciones.

c9fa979e6ddc3e9d6a65d

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 SENSOR FILAMENTOS

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

Micro-pasos, aunque podemos configurar desde 16 a 256 micro-pasos no os aconsejamos para nada usar otro valor diferente al de 16. Con esos micro-pasos 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.

Hablando de fiabilidad es otro aspecto importante a la hora de los micro-pasos, 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 micro-pasos 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án 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 TIMMING, 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 VCore3 que son 160mm/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

Fichero pins de nuestra Monster8

A continuación tienes los ficheros pins que contienen las referencias para esta placa:

  • /Marlin/src/pins/stm32f4/pins_MKS_MONSTER8.h

Actualizar firmware Marlin

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

Una vez finalizado el fichero mks_monster8.bin debe quedar renombrado a mks_monster8.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).

Klipper

Klipper es un firmware open-source para nuestras impresoras 3D que usa la potencia de una Raspberry Pi, normalmente aunque se puede montar en muchos más dispositivos, para el control de la electrónica de tu impresora. Haciendo esto podemos hacer funcionar de una forma más veloz y con más precisión dependiendo del sistema y hardware que tengamos.

Algo que si que nos va a permitir Klipper en cualquier caso es el poder tener un control a más bajo nivel de nuestra máquina, que también requerirá de un extra de conocimientos/esfuerzos, mayor velocidad a la hora de aplicar cualquier cambio además de un control remoto de la máquina de primera clase.

Es importante recalcar que si venimos de otros sistemas Klipper puede tener algunas restricciones en cuanto a compatibilidad con componentes o con determinadas funciones que ahora tengamos en nuestra impresora.

Por otro lado contamos con funciones muy interesantes de control de nuestra impresora como Pressure Advance (similar a Linear Advance de Marlin) y Input Shaper los cuales van a mejorar enormemente la velocidad y calidad.

Si quieres conocer más información o soporte de la comunidad en español de Klipper no dudes en unirte al grupo de Telegram!!!

Conexión Raspberry Pi a nuestra Monster8

Como ya hemos comentado el corazón de Klipper corre en una Raspberry Pi normalmente, ya hemos comentado diferentes formas de conectar esta a nuestra Monster8 pero para nuestro ejemplo usaremos la más común/sencilla que es usando un cable USB-C.

Generación firmware Klipper

Para que Klipper pueda controlar nuestra Monster8 esta debe contener un firmware el cual podemos obtener de diferentes formas:

  • Usando los firmwares precompilados que podemos encontrar en el github de MKS aquí.
  • Compilando nuestro firmware
    • Podemos seguir la documentación oficial de Klipper para instalarlo también aconsejamos usar Kiauh, MainsailOS o Fluidd Pi dispone de una imagen que facilita mucho el proceso de instalación de todos los componentes necesarios.
    • Siguiendo la documentación anterior iremos a la opción de Building the micro-controller usando esta configuración:
      • [*] Enable extra low-level configuration options
      • Micro-controller Architecture = STMicroelectronics STM32
      • Processor model = STM32F407
      • Bootloader offset = 48KiB bootloader
      • Clock Reference = 8 MHz crystal
      • Si usamos USB-C
        • Communication interface = USB (on PA11/PA12)
    • El firmware klipper.bin se generará en la carpeta home/pi/klipper/out el cual si Klipper no es capaz de copiarlo directamente en la SD de nuestra Monster8 copiar manualmente en la SD usando WinSCP o el comando pscp en el CMD.
spaces%2F MTqLw6KI5FruaRNEMZD
  • Actualizando nuestra MKS a firmware Klipper bastará con renombrar el firmware creado/descargado mks_monster8.bin o klipper.bin generado a mks_monster8.bin que es el nombre por defecto que usa el bootloader de nuestra MKS para hacer el proceso de actualización.

Configuración básica de Klipper

  • Usando como referencia documentación oficial de Klipper para instalarlo para configurar Klipper usaremos la configuración Monster8 klipper.cfg como base para nuestro printer.cfg que incluye las definiciones correctas a nivel de pineado para nuestra Monster8. Como ya hemos comentado MKS ha enfocado nuestra Monster8 a Voron 2.4 y para ellos ofrecen un printer.cfg ya preconfigurado.
  • Puedes usar la documentación de configuración de Klipper para habilitar las funciones que más nos interesen.
  • Si vamos a usar USB-C para comunicar Klipper con Monstr8 ejecutaremos el siguiente comando desde Klipper ls /dev/serial/by-id/*, desde Kiauh disponemos desde su menú de una forma rápida y sencilla para ejecutar esta acción, para identificar el ID correcto de nuestra Monster8 y añadirlo a nuestro printer.cfg
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_0E002B00135053424E363620-if00
spaces%2F MTqLw6KI5FruaRNEMZD 887967055%2Fuploads%2FsUz1mRM92T2Refif3ZI8%2Fimage

Configuración de UI Klipper para LCD/TFT

Para habilitar la UI de Klipper para una pantalla MKS MINI12864 V3 tenemos el siguiente ejemplo mks_mini_12864_v3.cfg el cual podemos poner como include o copiar el contenido en tu printer.cfg:

######################################################################
# MKS Mini 12864Panel v3.x (with neopixel backlight leds)
######################################################################

[display]
lcd_type: uc1701
cs_pin: EXP1_3
a0_pin: EXP1_4
rst_pin: EXP1_5
contrast: 63
encoder_pins: ^EXP2_5, ^EXP2_3
click_pin: ^!EXP1_2
## Some micro-controller boards may require an spi bus to be specified:
#spi_bus: spi
## Alternatively, some micro-controller boards may work with software spi:
spi_software_miso_pin: EXP2_1
spi_software_mosi_pin: EXP2_6
spi_software_sclk_pin: EXP2_2

[output_pin beeper]
pin: EXP1_1

[neopixel mks_mini12864]
pin: EXP1_6
chain_count: 3
color_order: RGB
initial_RED: 1.0
initial_GREEN: 1.0
initial_BLUE: 1.0

Actualización mediante DFU

Nuestra Monster8 nos permite su actualización mediante DFU que nos permitirá poder subir firmware o bootloader en caso que el proceso normal no funcione usando el cable USB-C. Dado que es un proceso no recomendable para usaurios no experimentados os dejamos el enlace al documento de MKS donde explica el proceso.

3D enthusiasts