¿Quién no le ha pasado que durante una impresión se ha quedado sin filamento y perdido la impresión?
Klipper dispone de soporte para sensores de filamentos que nos van a permitir detener nuestra impresión en el caso de que detecte falta de filamento.
A continuación os vamos a facilitar diferentes tipos de sensores, cada uno con sus propias características, para que podáis elegir el más adecuado/compatible con vuestra máquina:
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).
Aunque tenemos disponibles sensores simples de filamentos también podemos construirnos nuestro propio sensor usando un final de carrera de la impresora si tenemos de sobra.
La conexión a la electrónica normalmente se suelen usar pines dedicados a sensores de filamento o de final de carrera que disponemos normalmente de los 5v, GND y un pin de señal.
La configuración es muy sencilla también tan solo añadiendo la sección [filament_switch_sensor] a nuestro printer.cfg:
printer.cfg
[filament_switch_sensor my_sensor]
switch_pin: XXX ### Use your custom pin
pause_on_runout: True
runout_gcode:
M600
M118 Out of Filament
insert_gcode:
M118 Resuming
LOAD_FILAMENT
event_delay: 3.0
pause_delay: 0.1
En el ejemplo anterior se usa el gcode M118 para notificar los eventos del sensor, para tenerlo disponible es necesario añadir la sección [respond] a nuestro printer.cfg
runout_gcode nos permite ajustar que acciones realizar ante un evento de falta/falla de filamento... en el ejemplo lanzamos una notificación del evento y lanzamos la macro M600 de cambio de filamento
insert_gcode al igual que el anterior nos ayuda a ajustar las acciones para insertar filamento... en el ejemplo lanzamos la notificaión y lanzamos la macro LOAD_FILAMENT
Dyze quizás no es una marca muy extendida para amateurs del 3D pero es una marca muy reconocida para profesionales del 3D con sus sistemas de extrusión de alta calidad.
Además de disponer de sus sistemas de extrusión cuentan con el Dyze Orthus un sensor de filamentos y atascos de alta precisión, compatible con cualquier filamento y con una calidad a la altura del resto de productos Dyze... esa calidad esta acorde con su precio :).
Su funcionamiento se basa en un control preciso con control por pulsos para medir los mm de material que pasan por el además de la detección de falta de filamento. El ajuste de estos pulsos los podemos adaptar dependiendo del diámetro del filamento y de la sensibilidad que ajustemos, podemos verlos en la siguiente tabla:
Además contamos con un led que nos indica que el sensor esta alimentado y listo para su uso, parpadea indicando movimiento de filamento.
La conexión del sensor a nuestra electrónica es muy sencilla ya que solamente cuenta con 3 cables, dos de alimentación y un tercero de señal lo que lo hacen perfecto para conectarlo a los pines de endstop o servo.
La configuración en Klipper es bastante sencilla añadiendo la sección [filament_motion_sensor] a nuestro printer.cfg donde tendremos que configurar los siguientes valores:
[filament_motion_sensor Orthus]
detection_length: xxx
# The minimum length of filament pulled through the sensor to trigger a state change on the switch_pin (see table below)
extruder: extruder
# The name of the extruder section this sensor is associated with (the same name used in your config file).
# This parameter must be provided.
switch_pin: yyy
pause_on_runout: True
runout_gcode:
M118 Filament Runout Detected
M600
insert_gcode:
M118 Filament Load Detected
LOAD_FILAMENT
event_delay: 3.0
pause_delay: 0.01
En el ejemplo anterior se usa el gcode M118 para notificar los eventos del sensor, para tenerlo disponible es necesario añadir la sección [respond] a nuestro printer.cfg
detection_length es donde definiremos de filamento antes de indicar el cambio de estado en la señal del sensor switch_pin.
Tal como os mostramos en una tabla anterior este valor ha de ajustarse en concordancia con la posición del selector.
Podemos ajustar el valor de detection_length a un valor ligeramente superior al de la tabla, aumentando el valor va a bajor la sensibilidad y por lo tanto reducir falsos positivos.
extruder donde idicaremos el nombre del extruder en el que tenemos colocado el sensor, normalmente se llama extruder
switch_pin donde indicaremos el pin donde conectaremos la señal del Orthus
runout_gcode nos permite ajustar que acciones realizar ante un evento de falta/falla de filamento... en el ejemplo lanzamos una notificación del evento y lanzamos la macro M600 de cambio de filamento
insert_gcode al igual que el anterior nos ayuda a ajustar las acciones para insertar filamento... en el ejemplo lanzamos la notificaión y lanzamos la macro LOAD_FILAMENT
Es posible que nuestra interfaz Klipper no muestre correctamente los estados del sensor hasta que este no se ponga en marcha.
Revisión de Bigtreetech de su BTT SFS v1.0, que mejora en todos los aspectos a este.
Más compacto y ligero lo que facilita su instalación y compatibilidad con extrusores bowden o directos. También es compatible con Klipper, Marlin y RRF.
El SFS trabaja enviando de forma continuada enviando el estado del sensor a la electrónica/firmware. Además cuenta con una parte encoder que verifica el flujo de filamento para detectar atascos, nudos en las bobinas... y parte switch que actúa directamente ante la falta de filamento.
detection_length es donde definiremos de filamento antes de indicar el cambio de estado en la señal del sensor switch_pin. 2.88mm es el minimo requerido por el sensor, si encuentras problemas de falsos posibivos intenta incrementar en 1mm hasta que encuentres el valor óptimo.
extruder donde idicaremos el nombre del extruder en el que tenemos colocado el sensor, normalmente se llama extruder
switch_pin donde indicaremos el pin donde conectaremos la señal del BTT SFS v2.0
runout_gcode y insert_gcode, son las macros o gcodes que lanzaremos en los eventos de detección de fallo de filamento y recuperación. En el ejemplo anterior es muy simple tan solo pausando y enviando una notificación pero lo ideal es integrarlo con otras macros más avanzadas que tengas en tu Klipper como las de M600, LOAD_FILAMENT, etc...
Es aconsejable añadir las siguientes macros:
printer.cfg
[delayed_gcode SFS_BOOTDISABLE] ; This will disable the SFS 1 second after klipper starts
initial_duration: 1
gcode:
SET_FILAMENT_SENSOR SENSOR=SFS_switch_sensor ENABLE=0 ; Put your filament sensor's name after SENSOR=
SET_FILAMENT_SENSOR SENSOR=SFS_encoder_sensor ENABLE=0 ; Put your filament sensor's name after SENSOR=
[gcode_macro SFS_ENABLE] ; Add this to START_PRINT
description: Enable smart filament sensor
gcode:
M117 ENABLING the Smart Filament Sensor
G92 E0
SET_FILAMENT_SENSOR SENSOR=SFS_switch_sensor ENABLE=1 ; Put your filament sensor's name after SENSOR=
SET_FILAMENT_SENSOR SENSOR=SFS_encoder_sensor ENABLE=1 ; Put your filament sensor's name after SENSOR=
[gcode_macro SFS_DISABLE] ; Add this to END_PRINT and CANCEL
description: Disable smart filament sensor
gcode:
M117 DISABLING the Smart Filament Sensor
G92 E0
SET_FILAMENT_SENSOR SENSOR=SFS_switch_sensor ENABLE=0 ; Put your filament sensor's name after SENSOR=
SET_FILAMENT_SENSOR SENSOR=SFS_encoder_sensor ENABLE=0 ; Put your filament sensor's name after SENSOR=
SFS_BOOTDISABLE va a deshabilitar el sensor al arrancar nuestro Klipper
SFS_ENABLE lo colocaremos en nuestro gcode de inicio en el laminador para habilitar el sensor, es importante poner este antes de nuestro START_PRINT
SFS_DISABLE lo colocaremos en nuestro END_PRINT o CANCEL para deshabilitar el sensor
En el caso de RatOS es aconsejable integrar estas macros, SFS_ENABLE y SFS_DISABLE dentro de las macros _USER_ que tenemos disponibles.
Siendo aconsejable habilitar el sensor justo antes de comenzar el proceso de impresión en _USER_START_PRINT_AFTER_HEATING_EXTRUDER y justo al finalizar el proceso de impresión en _USER_END_PRINT_BEFORE_HEATERS_OFF.
Bigtreetech tiene un sensor de filamentos con interesantes opciones que permite detectar no lo la presencia de filamento si no atascos.
Es importante tener en cuenta algunas recomendaciones:
conectar a pines específicos de final de carrera o endstops
es necesario definir el pin de señal del sensor como pull-up, añadiendo ^ antes del pin... normalmente, en el caso que detectemos que el estado no cambia correctamente podemos dejarlo normal
el uso de sensorless activado en el eje de extrusion puede provocar falsos positivos, esto especialmente en electrónicas que no disponen de un jumper para activar o deshabilitar la señal DIAG del driver
es aconsejable el uso de macros para ajustar el estado inicial del sensor, activarlo en el start_print y deshabilitarlo en end_print o en eventos o macros de cancelación de impresión
dado que dispone de rodamientos para la detección de filamento y flujo de filamento es aconsejable el mantenimiento y lubricado periódico del sensor
Para la conexión solamente necesitamos tres pines, alimentación 5v, GND y el pin de señal del sensor:
La configuración de Klipper es sencilla añadiendo la sección [filament_motion_sensor] a nuestro printer.cfg:
printer.cfg
[filament_motion_sensor BTT_Smart]
detection_length: 7
# The minimum length of filament pulled through the sensor to trigger
# a state change on the switch_pin
# Default is 7 mm.
extruder: extruder
# The name of the extruder section this sensor is associated with.
# This parameter must be provided.
switch_pin: ^PA9
# changing the switch_pin name according to your motherboard
pause_on_runout: True
runout_gcode:
M118 Filament Runout Detected
M600
insert_gcode:
M118 Filament Load Detected
LOAD_FILAMENT
event_delay: 3.0
pause_delay: 0.01
En el ejemplo anterior se usa el gcode M118 para notificar los eventos del sensor, para tenerlo disponible es necesario añadir la sección [respond] a nuestro printer.cfg
detection_length es donde definiremos de filamento antes de indicar el cambio de estado en la señal del sensor switch_pin.
extruder donde idicaremos el nombre del extruder en el que tenemos colocado el sensor, normalmente se llama extruder
switch_pin donde indicaremos el pin donde conectaremos la señal del BTT SFS v1.0
Tal como os adelantamos al principio es aconsejable añadir las siguientes macros:
printer.cfg
[delayed_gcode SFS_BOOTDISABLE] ; This will disable the SFS 1 second after klipper starts
initial_duration: 1
gcode:
SET_FILAMENT_SENSOR SENSOR=BTT_Smart ENABLE=0 ; Put your filament sensor's name after SENSOR=
[gcode_macro SFS_ENABLE] ; Add this to START_PRINT
description: Enable smart filament sensor
gcode:
M117 ENABLING the Smart Filament Sensor
G92 E0
SET_FILAMENT_SENSOR SENSOR=BTT_Smart ENABLE=1 ; Put your filament sensor's name after SENSOR=
[gcode_macro SFS_DISABLE] ; Add this to END_PRINT and CANCEL
description: Disable smart filament sensor
gcode:
M117 DISABLING the Smart Filament Sensor
G92 E0
SET_FILAMENT_SENSOR SENSOR=BTT_Smart ENABLE=0 ; Put your filament sensor's name after SENSOR=
SFS_BOOTDISABLE va a deshabilitar el sensor al arrancar nuestro Klipper
SFS_ENABLE lo colocaremos en nuestro gcode de inicio en el laminador para habilitar el sensor, es importante poner este antes de nuestro START_PRINT
SFS_DISABLE lo colocaremos en nuestro END_PRINT o CANCEL para deshabilitar el sensor
En el caso de RatOS es aconsejable integrar estas macros, SFS_ENABLE y SFS_DISABLE dentro de las macros _USER_ que tenemos disponibles.
Siendo aconsejable habilitar el sensor justo antes de comenzar el proceso de impresión en _USER_START_PRINT_AFTER_HEATING_EXTRUDER y justo al finalizar el proceso de impresión en _USER_END_PRINT_BEFORE_HEATERS_OFF.
Uno de los extrusores más utilzados hoy en día son los Orbiter por su gran desempeño y bajo peso lo hacen ideales para usar en cualquier máquina.
Orbiter dispone de su sensor de filamentos con unas interesantes funciones como disponer de un pulsador desde el cual podemos lanzar una macro como por ejemplo descarga de filamento. Dispone de otro pulsador interno que se activa al introducir el filamento y que permite lanzar la macro de carga automáticamente.
Además dispone de un led que nos va a permitir, de una forma visual, ver el estado del sensor. En verde indica que el filamento está cargado, naranja al pulsar el botón de descarga cuando tenemos filamento y rojo si no detecta filamento.
Además es totalmente compatible con versiones Orbiter v1 a v2.
El sensor dispone de 4 cables que deberemos conectar a nuestra MCU en los pines adecuados en cada caso:
AZUL -> GND
ROJO -> +3.3v (aunque también soporta 5v aunque deberemos fijarnos en hacer el puente adecuado en la electrónica)
VERDE -> señal del sensor de filamentos
AMARILLO -> señal del pulsador de descarga filamento
No suele ser recomendable usar pines que lleven pull-up a 5v como por ejemplo los usados en finales de carrera. En caso de no tener otra opción es importante alimentar y ajustar el pin para usar 5v.
Una vez que ya tenemos ensamblado y cableado nuestro sensor ya solo nos queda configurar nuestro Klipper.
Descargaremos el fichero de configuración OrbiterSensor.cfg y lo colocaremos a la altura de nuestro printer.cfg
Editaremos nuestro OrbiterSensor.cfg para ajustar los pines de [gcode_button sensor_fs], donde definiremos el pin donde conectamos la señal del sensor de filamento... y [gcode_button sensor_fu], donde definiremos el pin del boton de descarga de filamento.
Si no lo usamos, el puerto/conectores bltouch suelen ser perfectos para instalarlo:
ORBITER
BLtouch port
Octopus
Octopus PRO
GND
Servo GND
3.3/5v
Servo 5v
Sensor Filamento (fs)
Servo señal
PA2
PB6
Boton Descarga (fu)
Endstop señal
PA0
PB7
En el caso de la v2.2 del sensor de filamentos las señales han de invertirse añadiendo el símbolo ! delante del pin
Añadiremos el include a nuestro OrbiterSensor.cfg a nuestro printer.cfg
Por último y para que funcionen las macros del sensor de filamentos Orbiter es necesario que en nuestra sección [extruder] tengamos definido a 180º
[extruder]
...
min_extrude_temp: 180
Macros, dado que añadiremos las macros de filament_load y filament_unload es aconsejable adaptar el uso de estas en otras que tengan dependencias en estos procesos
Pinout para sensor de filamentos
Bigtreetech
Una vez ya tenemos nuestro sensor configurado es aconsejable revisar que funciona correctamente. Para ello tenemos dos opciones:
la más sencilla normalmente es desde nuestra interfaz web, normalmente en la sección Miscelánea en nuestro Dashboard, podremos ver el estado del sensor
también podemos usar la macro de sistema QUERY_FILAMENT_SENSORSENSOR=<sensor_name> indicando el nombre del sensor y que nos va a retornar, dependiendo del tipo de sensor, su estado y propiedades
En el caso que veamos una lógica en el estado del sensor, que nos devuelva que hay filamento cuando no lo hay o viceversa, recordad que poniendo (o quitando) el símbolo ! delante del switch_pin podremos invertir la lógica del sensor para ajustarla a nuestras necesidades.
En el caso que el estado no cambie deberemos revisar que el cableado y configuración del pin de control estén correctamente.
Por último si vemos que cambia el estado solamente una vez y se queda fijo en ese estado es posible que nuestra electrónica necesite indicar si el pin usado para el sensor es pull-up (simbolo ^ delante de nombre del pin y detrás del ! si lo hemos usado).
por otro lado, tenemos la opción de habilitar o deshabilitar nuestro sensor usando la macro de sistema SET_FILAMENT_SENSOR SENSOR=<sensor_name> ENABLE=[0|1], en este caso proporcionaremos el nombre del sensor y si queremos deshabilitarlo (0) o habilitarlo (1)