Sensor de filamentos

No estropees tus impresiones por falta o atasco de filamentos!!!

El uso de un sensor de filamentos puede salvarnos más de una impresión, además si aplicaste la configuración SensorLess/stallGuard explicada en este documento probablemente dispongas de varios finales de carrera que puedes usar para este propósito sin gastarte nada, en Thingiverse dispones de varios adaptadores para ello.

Os recordamos que tienes más guías de ayuda en nuestro bot de Telegram @ThreeDWorkHelpBot

Algunos sensores a modo de referencia

Instalación del sensor

Dependiendo del tipo de sensor contaremos con 2 normalmente simples endstops o 3 conexiones dependiendo de si este dispone de cierta electrónica o led de control.

En cualquier caso, las tres conexiones normalmente hacen referencia a V(voltaje), S (señal) y G (negativo).

Conectando sensor a nuestra placa

Es la opción recomendada dado que el sensor estará controlado directamente por la máquina y no por un ente externo como pueda ser una pantalla TFT o una Raspberry Pi.

Es importante que revisemos el orden de pines tanto en la parte del sensor como en el de la placa para que coincidan perfectamente para evitar cualquier posible corto y que podamos estropear placa o sensor.

Para la conexión en la placa, si estas disponen de un conector dedicado suele llamarse E0-STOP, FT-STOP y en caso de no llevar suele usar el del final de carrera + que, tal como explicamos más adelante en los cambios Marlin, deberemos de verificar en el fichero pins de nuestra placa.

En cualquier caso tenéis a continuación una tabla con algunas de las placas más representativas:

Conectando sensor a nuestra pantalla TFT

Otra forma de instalar nuestro sensor, y siempre que esta lo soporte, es utilizando nuestra pantalla TFT que tiene como ventaja que no es necesario tocar Marlin, pero por otro su funcionamiento suele estar restringido a usar la TFT para gestionar tus impresiones.

Siempre que podamos, es aconsejable conectar el sensor a nuestra electrónica y que sea Marlin directamente quien lo controle.

Es importante comentar que en estos casos es muy aconsejable que nuestro Marlin, además de las opciones requeridas por nuestra pantalla (para pantallas SKR revisa esta guía), tener habilitado lo siguiente

EMERGENCY_PARSER (en Configuration_adv.h)
SERIAL_FLOAT_PRECISION 4 (en Configuration_adv.h)
HOST_ACTION_COMMANDS (en Configuration_adv.h)
HOST_PROMPT_SUPPORT (en Configuration_adv.h)
FILAMENT_LOAD_UNLOAD_GCODES (en Configuration_adv.h)

En el caso que tengamos Octoprint deberemos habilitar también estas funciones para la correcta gestión del sensor de filamentos cuando este esté conectado a la electrónica de nuestra impresora.

Independientemente si tenemos el sensor a nuestra pantalla o en la electrónica estas opciones anteriores son mas que aconsejables tenerlas habilitadas si tenemos un host como Octoprint o una pantalla TFT serial.

A continuación tienes un listado de pantallas con esta opción:

Cambios en Marlin:

  • Activar el sensor de filamentos #define FILAMENT_RUNOUT_SENSOR

Algunas placas disponen de un conector dedicado para este sensor de filamentos, otras lo ubican normalmente en X_MAX pero en cualquier caso no está de más verificar el archivo de PINS de tu placa para identificar en dónde está habilitado. Revisa la siguiente tabla para las SKR, en el caso que no esté definido puedes añadirlo tú mismo indicando un pin de un endstop que no esté en uso o en el csso que quieras cambiar el pin por defecto a otro porqué el original ha fallado (en este caso intercambiar la definición de pines si hay mas de uno o si es ussdo en otra funcion) ejemplo: Ejemplo: SKR 1.4 / 1.4 Turbo - #define FIL_RUNOUT_PIN P1_26 (E0DET) o P1_25 (E1DET)

En caso de falsos positivos se puede jugar a habilitar o deshabilitar esta función ya que en según que escenarios puede ocasionar ciertos problemas: #define FILAMENT_RUNOUT_DISTANCE_MM También aconsejan en el caso de usar Sensorless/stallGuard doblar/desoldar/cortar el pin DIAG del driver para evitar falsos positivos.

  • Si nuestro sensor el BTT SFS que tiene función de detección de atascos, deberemos asegurarnos de activar

/Marlin/configuration_adv.h
#define FILAMENT_MOTION_SENSOR // habilita sensores detección de atascos con encoder
#define FILAMENT_RUNOUT_DISTANCE_MM 7 // 7mm es lo aconsejado por el fabricante y podemos ajustarlo en el caso de falsos positivos o dependiendo de nuestra máquina

Ejemplo de conexión:

  • Algunos finales de carrera requieren de eliminar el PULLUP de la configuración de Marlin para operar correctamente. Si es tu caso, debes editar esta línea y eliminar los comentarios #define FIL_RUNOUT_PULLUP o viceversa dependiendo del tipo de placa #define FIL_RUNOUT_PULLDOWN. Recuerda que solamente una de ellas debe estar habilitada.

  • Activación y el parking del cabezal para el cambio de filamentos necesario para habilitar el sensor de filamentos y las opciones en pantalla para realizar el pausado y cambio de filamento

/Marlin/configuration.h
#define NOZZLE_PARK_FEATURE
/Marlin/configuration_adv.h
#define ADVANCED_PAUSE_FEATURE

La función ADVANCED_PAUSE_FEATURE requiere que tengas habilitado una pantalla LCD con menús clásicos Marlin o EMERGENCY_PARSER en el caso que tengamos pantallas serial/táctil o similares.

  • Revisaremos que tenemos habilitada la siguiente función, la cual indica que se ejecute el comando M600 (ADVANCED PAUSE) de Marlin. El comando M600 es un asistente de cambio de filamento con indicaciones en pantalla (para pantallas emulación Marlin, en el caso de hosts deberás de revisar su compatibilidad) que además suele ser el estándar utilizado en el gcode de cambio de filamentos en laminadores. Este comando dispone de parámetros para que, normalmente desde el laminador, podamos ajustar ciertos aspectos... tienes más información en la documentación de Marlin y en el apartado ADVANCED PAUSE de esta propia guía.

/Marlin/configuration.h
#define FILAMENT_RUNOUT_SCRIPT "M600"

Comprobar que todo funciona correctamente

Usando Pronterface, Octoprint u otro cliente terminal para conectar a nuestra impresora comprobaremos que el funcionamiento del sensor es el adecuado enviando el comando M119 que nos indicará el estado del sensor.

Si tenemos nuestro sensor con filamento deberá aparecer TRIGGERED, si, por el contrario, no tenemos filamento aparecerá OPEN. En el caso de que no sea correcto tendrás que cambiar la lógica cambiando estas líneas

#define FIL_RUNOUT_INVERTING true // o false dependiendo de como queramos ajustar la lógica

Para versiones >2.0.6

#define FIL_RUNOUT_STATE HIGH //o LOW dependiendo de como queramos ajustar la lógica

Activación del sensor de filamentos

Ahora que ya tenemos configurado nuestro Marlin y revisado nuestro sensor, decidiremos el estado de la funcionalidad por defecto.

  • Podemos definir su estado directamente en Marlin ajustando la siguiente línea, siendo true que la funcionalidad estará habilitada y false que no y requerirá de activarse utilizando uno de los siguientes métodos.

#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500
  • Usando la pantalla en modo Marlin dentro de Configuración

  • Mediante gcode M412...

    • Enviando el gcode sin parámetros nos dirá el estado actual

    • con un M412 S0 deshabilitaremos su función

    • con un M412 S1 habilitaremos el sensor

Cómo ajustar el comando M600 para el cambio de filamentos:

Cuando hacemos un cambio de filamento, el comando M600 (función ADVANCED_PAUSE_FEATURE) es el que se encarga del proceso. En configuration_adv.h podemos encontrar algunas funciones interesantes para personalizarlo a nuestra máquina, aunque por norma general y salvo contadas excepciones nos funcionará sin problemas como viene de serie.

  • FILAMENT CHANGE UNLOAD LENGTH con él controlaremos qué distancia de filamento haremos retroceder. Normalmente, usaremos la distancia entre la salida del nozzle y los engranajes de nuestro extrusor más un poco de margen para asegurar que sale completamente del engranaje.

  • Es importante que si esta distancia es superior a EXTRUDE_MAXLENGTH (configuration.h) deberemos ajustar este parámetro al que necesitemos para nuestra retracción de cambio de filamento.

  • FILAMENT CHANGE SLOW LOAD FEEDRATE con este parámetro indicaremos con qué velocidad realizará la carga inicial de filamentos.

  • FILAMENT CHANGE SLOW LOAD LENGTH al igual que para la retracción aquí le indicaremos los mm de filamento a mover en la carga inicial de filamentos, normalmente el valor por defecto es el correcto

  • FILAMENT CHANGE FAST LOAD FEEDRATE en este caso indicaremos a la velocidad que realizará la carga del filamento hasta el nozzle

  • FILAMENT CHANGE FAST LOAD LENGTH usaremos una medida similar a la de UNLOAD menos SLOW LOAD LENGTH

Estos son los valores más relevantes a tener en cuenta.

Última actualización