Recientemente me decidí a actualizar mi venerable impresora 3D, sustituyendo el conjunto Arduino MEGA + RAMPS 1.4 por una placa de 32 bits; concretamente la SKR MINI E3 V3 de Big Tree Tech. Además de la controladora, también he actualizado el display, montando un TFT táctil de 3.5 pulgadas y un sensor BL Touch del que carecía la impresora original.
Después de comparar mil placas y ver un montón de reviews, me decidí por la tarjeta SKR MINI E3 V3 porque está bastante bien documentada, tanto por el fabricante Big Tree Tech como por la comunidad maker. Aún así, el proceso de sustitución de la placa y posterior actualización, no ha estado exento de problemas, así que voy a compartir aquí lo aprendido por el camino, con la esperanza de que sirva de ayuda y por aportar mi granito de arena a la comunidad maker.
En principio, la SKR está diseñada para ser una actualización de la Ender 3. La tarjeta viene con el firmware ya grabado de fábrica, pero el hecho de ser una placa abierta, en la que podemos grabar nuestra propia versión de Marlin, la hace apta para actualizar cualquier impresora 3D estándar.
En la imagen de arriba, puede verse el esquema de conexión de la SKR con los diferentes dispositivos de la impresora.
Aunque es una placa muy compacta, tiene todo lo necesario para actualizar tu impresora 3D con todos los extras: entrada de alimentación a 12 o 24V, sensor de auto nivelación BL Touch, ledes Neopixel, sensor de filamento, relé de auto apagado, TFT color táctil, módulo WiFi ESP32, SAI o fuente externa en caso de cortes de alimentación, drivers TMC2209 súper silenciosos, esto último es alucinante; se escuchan más los ventiladores que los motores de la impresora.
Una de las cosas que no está muy bien documentada, es la conexión del TFT35 con la SKR. Si bien la SKR sólo tiene un puerto EXP, el TFT35 tiene hasta tres puertos EXP, entonces ¿dónde se conecta? pues en nº 3. Los puertos EXP1 y EXP2 del TFT no se utilizan y es el conector EXP3 el que va a la tarjeta SKR.
Luego está el conector RS232 del TFT que tampoco está muy claro cómo se conecta en la SKR. Vale que va al puerto TFT de la motherboard ¿pero en qué sentido?
Del lado del TFT el conector RS232 tiene posición y es imposible conectarlo mal, pero en la SKR son cinco pines y si no lo tenemos claro podemos conectarlo del revés, además hay un pin suelto y otros cuatro juntos en un conector Dupont.
Después de buscar por Internet encontré un video que explica que el pin que va suelto se conecta más a la izquierda y los cuatro del conector Dupont van como en la imagen de arriba. Yo le puse un poco de silicona y los conecté juntos al puerto etiquetado como TFT de la placa SKR.
La forma de conectar el sensor BL Touch a la tarjeta SKR es como en la imagen; los cinco hilos al conector Z-PROBE.
Recuerda quitar el microswitch Z-MIN pues ya no es necesario, además hay que colocar un jumper como en la imagen de la derecha para habilitar los +5V en el conector Z-PROBE y alimentar el sensor.
Seguramente has visto por ahí que los sensores BL Touch se pueden conectar de otra manera; llevando los hilos negro y blanco a conector Z-MIN donde va el microswitch Z. Esa forma de conectar el sensor BL Touch se utiliza en placas donde el conector Z-PROBE tiene tres pines y requiere de otra configuración de Marlin.
Aunque la placa SKR MINI E3 V3 admite ambas conexiones, aquí vamos a ver la configuración del sensor con los cinco hilos al conector Z-PROBE.
Voy a explicar aquí la configuración de Marlin con BL Touch -basada en el excelente tutorial de 3dwork- por el extra de dificultad que tienen este tipo de dispositivos. Para la configuración básica echa un vistazo a este otro tutorial, también de 3dwork.
Al final de la página dejo los archivos de configuración de Marlin 2.1.2.2. con la SKR MINI E3 V3 + pantalla TFT35 E3 V3 con sensor BL Touch Antclabs conectado en el puerto Z-PROBE y sin microswitch Z; la propia sonda se utiliza para nivelar la cama y hacer Homing en Z.
Para cocinar nuestra propia versión de Marlin necesitamos una suite conde modificar los archivos, por ejemplo Visual Studio.
Hacemoc clic en Open Folder y seleccionamos la carpeta donde hemos descomprimido Marlin.
En mi caso he cambiado el nombre de la carpeta para distinguir las modificaciones que voy haciendo.
En la pestaña platformio.ini es muy importante seleccionar correctamente el entorno para el que vamos a configurar Marlin, es decir, el microcontrolador de nuestra placa. Para la SKR MINI E3 V3 el seleccionamos TM32G0B1RE_btt
Bueno, vamos al lío. En el explorador de la izquierda vamos a Marlin\Configuration.h y se abre en la ventana derecha el archivo de configuración.
Aquí es donde vamos a ir configurando las opciones de acuerdo a las características de nuestra impresora. Una vez configuradas todas las opciones, Visual Studio cocinará un archivo .bin con el firmware que luego grabaremos en el microcontrolador de nuestra placa. Esto lo veremos más adelante.
La configuración de Marlin con la tarjeta SKR MINI E3 V3.0 + TFT35 E3 V3 la he hecho siguiendo este tutorial y partiendo de los archivos de configuración de una Ender 3 Pro que es la configuración que funciona con la pantalla TFT35 E3 V3.
Nombre de nuestra impresora 3D:
#define STRING_CONFIG_H_AUTHOR "(Alias, v2.09)" // Who made the changes ** 20 julio 2024
Placa base:
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0
#endif
Puerto Serie:
#define SERIAL_PORT 2
Nombre personalizado que aparecerá en el TFT. Un truco es poner la versión de software, así sabemos que el micro se ha actualizado correctamente:
// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Alias SKR BL TOUCH v2.09"
Definir los microswitches para hacer Homing en cada eje:
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
Esta configuración le dice Marlin que el BL Touch está conectado en el puerto Z-PROBE de la SKR y que además utilizaremos la sonda para hacer Homing en Z.
/**
* Enable this option for a probe connected to the Z-MIN pin.
* The probe replaces the Z-MIN endstop and is used for Z homing.
* (Automatically enables USE_PROBE_FOR_Z_HOMING.)
*/
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
// Force the use of the probe for Z-axis homing
#define USE_PROBE_FOR_Z_HOMING // se habilita esta línea si BL Touch conectado en puerto Z-PROBE de la SKR.
Esta línea indica a Marlin en qué pin de nuestra placa se encuentra el PROBE. Sólo se habilita si conectamos la sonda en un puerto diferente del asignado por defecto.
En el caso de la SKR MINI E3 V3 como hemos conectado la sonda en el puerto correspondiente, lo dejamos deshabilitado.
//#define Z_MIN_PROBE_PIN -1 // PC14 en la SKR ya configurado por defecto.
Seleccionar el tipo de sonda, en nuestro caso BL Touch:
#define BLTOUCH
Offset del BL Touch. En mi caso está montado 37 mm a la izquierda y 14 mm delante respecto del nozzle. En la imagen es la posición nº4.
Además cuando está retraída, la sonda está 2.78 mm por encima del nozzle.
#define NOZZLE_TO_PROBE_OFFSET { -37, -14, -2.78 }
Velocidad de desplazamiento. Modifica estos campos si crees que los motores giran demasiado lento o rápido durante Homing:
// X and Y axis travel speed (mm/min) between probes
#define XY_PROBE_FEEDRATE (60*60)
#define Z_PROBE_FEEDRATE_FAST (4*60)
// Homing speeds (linear=mm/min, rotational=°/min)
#define HOMING_FEEDRATE_MM_M { (20*60), (20*60), (4*60) }
Número de mediciones por punto, si ponemos más de uno, Marlin hace la media:
#define MULTIPLE_PROBING 3
Número de puntos de medida:
#define GRID_MAX_POINTS_X 3
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Tipo de mapeado para auto level:
#define AUTO_BED_LEVELING_BILINEAR
Activan función RESTORE_LEVELING_AFTER_G28:
#define RESTORE_LEVELING_AFTER_G28
Como la sonda está desplazada respecto del nozzle, habilitamos esta opción para hacer Homing en el centro de la cama, así nos aseguramos de que la sonda no cae fuera:
#define Z_SAFE_HOMING
Si el cristal de la cama está sujeto con grapas, podemos poner un margen de seguridad para evitar que la sonda choque con ellas. En mi caso lo he dejado desmarcado:
//#define PROBING_MARGIN 10
Habilita menús en pantalla:
#define LCD_BED_LEVELING
Homing individual por ejes:
#define INDIVIDUAL_AXIS_HOMING_MENU
//#define INDIVIDUAL_AXIS_HOMING_SUBMENU
Hasta aquí la configuración básica. Vamos al archivo Configuration_adv.h
Activar reintentos en el proceso de generación de malla G29:
#define G29_RETRY_AND_RECOVER
Habilita BABYSTEPPING:
#define BABYSTEPPING
#if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
//#define BABYSTEP_WITHOUT_HOMING
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement)
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
//#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
#define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep
#define BABYSTEP_MULTIPLICATOR_XY 1
Habilitar esta línea. Dejar el valor en 500:
#define BLTOUCH_DELAY 500
Habilitar esta línea para sondas Antclabs:
#define BLTOUCH_FORCE_SW_MODE
Habilitar esta línea crea un menú que nos facilitará el trabajo más adelante. Sólo si tienes un TFT35:
#if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI)
#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
#if ENABLED(PROBE_OFFSET_WIZARD)
/**
* Enable to init the Probe Z-Offset when starting the Wizard.
* Use a height slightly above the estimated nozzle-to-probe Z offset.
* For example, with an offset of -5, consider a starting height of -4.
*/
#define PROBE_OFFSET_WIZARD_START_Z -4.0
// Set a convenient position to do the calibration (probing point and nozzle/bed-distance)
//#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER }
#endif
#endif
Una vez hechos todos los cambios, salvamos los archivos Configuration.h y Configuration_adv.h
Vamos a la pestaña Auto Build Marlin y clic en Build.
El proceso de compilación comienza.
Si la compilación resulta exitosa veremos un mensaje como el siguiente:
Y se abre una carpeta donde encontraremos el archivo firmware.bin
Copiamos el archivo firmware.bin en una tarjeta microSD, importante no cambiar el nombre ni la extensión.
Encendemos la impresora y pinchamos la microSD en nuestra placa SKR MINI E3 V3.
En la pantalla aparece el mensaje SD card OK.
Pulsamos el botón de RESET en la SKR y el proceso de grabación del micro comienza de manera automática. La TFT se reinicia y mientras se graba el firmware, la pantalla muestra el mensaje No printer attached!
Al cabo unos 10 segundos finaliza el proceso de actualización del firmware del microcontrolador y veremos en el display de la impresora el nombre que pusimos en Configuration.h
Y además, si pinchamos la SD en el PC veremos que la extensión del archivo ha cambiado a .CUR
Para activar la auto nivelación al principio de cada impresión, hay que añadir estas líneas de código G en Prusa Slicer o el que utilices en tu caso:
Una vez actualizado el firmware de la placa, es muy importante verificar el offset del eje Z respecto de la sonda. Esto es porque el offset real puede diferir respecto del que hemos puesto en el archivo Configuration.h en el campo #define NOZZLE_TO_PROBE_OFFSET { -37, -14, -2.78 }
El offset Z se puede obtener desde el TFT35 con el asistente que hemos habilitado previamente en Marlin, ver minuto 16:30 de este vídeo:
Una vez tenemos el offset real, se puede modificar desde el TFT sin necesidad de compilar Marlin de nuevo.
Para ello abrimos el Terminal y con el código M851 modificamos el offset al nuevo valor. Por ejemplo para un desfase Z de -3.01 escribimos el comando: M851 Z-3.01 y después M500 para salvar los valores en la EEPROM.
Después escribimos M503 para verificar que los valores se han guardado correctamente.
Puede que aún así, el offset necesite todavía un ajuste fino.
Calienta la cama y el extrusor para hacer Homing en Z en condiciones reales de impresión. Limpia la boquilla de restos de filamento, luego haz homing en Z.
Ve al menú Move del TFT y ve bajando el eje Z mientras compruebas con un folio la altura correcta. Toma nota del valor del eje Z.
En mi caso el eje Z está a 0.21 mm y con el folio compruebo que ya está a la altura correcta. Lo que tengo que hacer es restar 0.21 a 3.01, luego el offset real es 2.80
Lo modifico con el terminal y el resultado es un offset de -2.80.
Después de probar extensivamente la SKR MINI E3 V3 cuesta encontrar algún defecto. La verdad es que la placa tiene todo lo necesario para actualizar tu impresora.
Algunas de las cosas que más me han gustado son:
· La entrada de alimentación de 24V que permite alcanzar temperaturas de cama y extrusor más altas que otras tarjetas de 12V.
· El TFT color táctil con puerto serie para mandar comandos mediante terminal.
· Tres conexiones para controlar los ventiladores individualmente.
· Posibilidad de conectar un relé de auto apagado.
· Función Homing Sensoless, para hacer Homing con los driver TMC 2209 sin necesidad de conectar microswitches.
Por poner algún defecto, se echa en falta algo más de documentación y unos archivos de configuración ya cocinados por el fabricante.
Eso es todo. Espero os haya servido de ayuda.
¡Hasta pronto!
Donde comprar:
Placa SKR MINI E3 V3 + TFT35 E3 V3
Como cocinar Marlin y Montaje y configuración de un BL Touch , gracias a 3DWORK
Documentación y firmware de la SKR MINI E3 V3, en el GitHub de BigTreeTech
Descarga los archivos de configuración de la SKR MINI E3 V3 + TFT35 con BL Touch aquí abajo: