Sí, es el firmware de la pantalla el que no tiene programados estos ajustes y por eso no se podrán hacer desde su menú, pero Marlin los va ha controlar por software y esa configuración se hace en él y si se quiere, se puede cambiar sin tener que volver a compilarlo y cargarlo, utilizando comandos gcode.
Vamos al tema, que es bastante largo y farragoso, así que seguramente se me habrá olvidado algo y/o habré cometido algún error: habrá que ir corrigiendo sobre la marcha.
Para la instalación del firmware en la placa y para los ajustes, necesitarás el siguiente software:
Firmware Marlin v2.1.2.4 patched
Archivos de configuración
Arduino IDE v1.8.19
Pronterface
Antes de descomprimir los archivos descargados, crea una carpeta en la raíz del disco (no en el escritorio) y descomprímelos en ella, lo que generará cuatro carpetas, una con el firmware Marlin (Marlin-2.1.x), otra con los archivos de configuración que he preparado (Conf_Marlin_2.1.2.4_MKS_GEN_L_V21_BLT), otra con el IDE de Arduino (arduino-1.8.19) y la cuarta con la aplicación Pronterface (Printrun-win-18Nov2017).
Copia el contenido de la carpeta Conf_Marlin_2.1.2.4_MKS_GEN_L_V21_BLT en \Marlin-2.1.x\Marlin\, sustituyendo los archivos originales.
Ya estamos listos para cargar el firmware en la placa, cuyos pasos son los siguientes:
1- Abre el administrador de dispositivos de Windows, conecta la impresora por USB y enciéndela: debe aparecer un nuevo dispositivo en el apartado Puertos COM y LPT; anota el número de puerto COM que se le asigna.
2- Abre la aplicación arduino.exe, que se encuentra en la carpeta arduino-1.8.19, selecciona en el menú Archivo la opción Abrir… y abre el archivo Marlin.ino, que se encuentra en Marlin-2.1.x\Marlin\.
3- Para los TMC hay que instalar sus librerías. Selecciona en el menú, Programa>Incluir librería>Administrar bibliotecas... y en el cuadro de texto escribe TMC. Te aparecerán las librerias relacionadas: instala la TMCStepper (pincha en ella y pulsa el botón Instalar).
4- En el menú Herramientas, selecciona en el apartado Placa: Arduino Mega or Mega 2560 y en el apartado Puerto:, el COM asignado en el punto 2.
5- Pulsa el botón con la flecha hacia la derecha, que se encuentra justo debajo del menú de la aplicación: comenzará la compilación y cuando termine esta, se subirá a la placa el firmware ya compilado, mostrándose el mensaje Subiendo…
6- Al finalizar el proceso, se mostrará el mensaje Subido: y se reiniciará la impresora: ya puedes cerrar la aplicación, pero no desconectes aún el cable USB.
Con eso ya tendríamos el firmware en la placa, pero antes de utilizar la impresora, hay que refrescar la memoria EEPROM, para que contenga los parámetros actuales del firmware cargado.
Como no estoy muy seguro de los menús que tiene el firmware de la pantalla, te indicaré como hacerlo mediante comandos gcode.
Para ello, sigue los siguientes pasos:
1- Arranca la aplicación pronterface.exe, que se encuentra en la carpeta Printrun-win-18Nov2017.
2- En el apartado Port:, selecciona el COM asignado antes; en el apartado @, selecciona 250000 y pulsa el botón Connect: se conectará a la impresora, se activarán los controles de movimiento de los ejes y aparecerá en el terminal (cuadro de texto de la derecha) un mensaje confirmando la conexión. Para enviar un comando, se escribe en el cuadro de texto que se encuentra debajo del terminal y se pulsa el botón Send.
3- Envía el comando M502, que carga en memoria RAM los valores de los parámetros configurados en el firmware y después envía el comando M500 para grabarlos en la memoria EEPROM: en ambos casos, debe salir un mensaje de confirmación del envío en el terminal.
Con el firmware ya cargado en la placa, ahora hay que comprobar que todo funciona bien.
Lo primero, confirmar que los ejes XYZ se mueven de forma correcta (el extrusor lo comprobaremos más adelante, pues hay que calentar el hotend para que Marlin deje moverlo), para lo que puedes utilizar los controles de movimiento que tiene Pronterface, que son estos:
Para cada uno de los ejes XYZ se tiene la posibilidad de hacer movimientos de 0,1mm, 1mm, 10mm y 100mm, tanto en dirección positiva (zona +), como negativa (zona -).
Para comprobar el movimiento de los ejes, utiliza los movimientos de +1mm: para el eje X, el cabezal de impresión debe moverse hacia la derecha; para el eje Y, la cama debe moverse hacia adelante y para el eje Z, el cabezal de impresión debe subir.
Si alguno de los ejes se mueve en sentido contrario, hay que cambiar la configuración en Marlin de los parámetros INVERT_X_DIR, INVERT_Y_DIR, INVERT_Z_DIR (el que corresponda al eje que se mueve mal): si está en false, hay que ponerlo a true y viceversa.
Para ello, con Marlin abierto en el IDE de Arduino, vamos a la pestaña del archivo Configuration.h, buscamos los parámetros correspondientes (pulsando Ctrl+f) y los modificamos.
Una vez hecho el cambio, habrá que compilar y volver a cargar en la placa, siguiendo el mismo proceso que se hizo antes.
Una vez se muevan bien los ejes, hay que comprobar que funcionan bien los finales de carrera, para lo que hay que enviar con Pronterface un comando M119, que debe indicar en el terminal open, si el final de carrera no está activado y TRIGGERED, si lo está (incluido el BL-Touch): si no sucede así, habrá que buscar donde está el problema.
Una vez sepamos que funcionan los finales de carrera, hay que comprobar la posición del origen de los ejes X e Y, para lo que debemos pulsar en el Pronterface los botones de las casitas con las letras de esos ejes.
El origen estará correcto si, colocando el centro de la boquilla justo sobre el borde izquierdo de la cama, en la pantalla se muestra que el eje X está en el punto 0.00 y colocando el centro de la boquilla justo sobre el borde delantero de la cama, en la pantalla se muestra que el eje Y está en el punto 0.00: si no sucede esto, habrá que cambiar la configuración de los offsets en el firmware, parámetros X_MIN_POS e Y_MIN_POS, restando del valor actualmente configurado, lo que indique la pantalla (ojo con los signos).
Por ejemplo, si al colocar la boquilla sobre el borde izquierdo, la pantalla indica que X está en -0.50, el valor a configurar en X_MIN_POS sería -2-(-0.5)=-1.5.
Una vez correcto el origen de XY, hay que regular el Z Probe Offset del BL-Touch, para lo que hay que seguir los siguientes pasos:
1- Calentamos hotend y cama a temperatura de impresión (con el preset de PLA, por ejemplo) y esperamos 5 minutos para que se estabilicen las dilataciones.
2- Ponemos a 0 el Z Probe Offset, enviando el comando M851 Z0.
3- Hacemos home a todos los ejes, enviando el comando G28.
4- Quitamos la limitación de movimientos negativos, enviando el comando M211 S0.
5- Con los controles de movimiento del eje Z, ajustamos la altura de la boquilla del extrusor para que roce ligeramente un folio de papel de 80 gr/m2 (lo que viene a ser una décima de milímetro). Se pueden utilizar los movimientos de 10 mm y 1 mm (si está aún lejos) y terminar con el de 0,1 mm para ajustarlo de forma precisa.
6- Fijamos el valor del desfase, enviando el comando M851 Z-n.nn, siendo -n.nn el valor que indica en este momento la pantalla para el eje Z.
7- Guardamos el valor en la EEPROM, enviando un comando M500.
8- Volvemos a activar la limitación de movimientos negativos de los ejes, enviando un comando M211 S1.
Aprovechando que está a temperatura de impresión el hotend, podemos comprobar si el extrusor se mueve en la dirección correcta, para lo que debemos pulsar en el botón Extrude: se extruirán los mm de filamento que se configuren en el campo Length:.
Si el filamento retrocede en lugar de avanzar, habrá que cambiar la configuración en Marlin del parámetro INVERT_E0_DIR, como vimos para los ejes XYZ.
Ya solo quedaría refrescar la memoria EEPROM como se hizo antes y nivelar la cama en las cuatro esquinas, utilizando el proceso implementado en la pantalla, repitiendo el proceso varias veces hasta que no varíe el ajuste en cada punto.
Con esto quedaría completa la configuración de la parte mecánica y faltaría por hacer la calibración de los PID de hotend y cama, la calibración de la extrusión (
post) y la calibración dimensional (
post).