3Dwork - Klipper
KLIPPERMARLINLABSTelegramColabora
  • 3DWork.io - Klipper
  • Invitame a un cafe :D
  • 🖇️Klipper
    • Klipper
    • Instalación
      • Múltiples instancias Klipper
      • Klipper en Raspberry Pad 5
      • Klipper en Orange Pi Zero Plus
      • Klipper en PC con Windows (Usando WSL)
      • Duet 2 Wifi - Klipper
      • Guías Instalación específicas impresora/electrónica
        • Creality - Klipper
          • Creality Sonic Pad - Klipper Oficial, custom firmware
        • Artillery - Klipper
    • Configuración
      • Primeros pasos con Klipper
      • PID
      • Calibración extrusor (e-steps)
      • Nivelación manual de cama
      • Sensor nivelación
        • Bigtreetech Eddy
        • BIQU MicroProbe
      • Nivelación Gantry (Z-TILT)
      • Malla nivelación de cama
      • Pressure Advance
      • Input Shaper
      • Velocidad Máxima
      • Configuración Klipper en laminadores
      • SKEW : compensación chasis/cinemática
      • Ajustes avanzados TMC (VFA)
      • Retracciones en firmware
      • Configuración de una dirección IP estática y nombre DNS
      • Sincronización horaria
    • Mejoras/Tips
      • 3Dwork Klipper Bundle
      • Backup Klipper
      • Host como segunda MCU
      • Sensores de filamento
      • Cámaras - Instalación y configuración
      • Neopixel
      • Mainsail - Mejoras
        • Exclude Objects
        • Timelapses
      • Moonraker - Mejoras
        • Moonraker-Telegram
      • KlipperScreen - Mejoras
        • KlipperScreen - Personaliza arranque con un video con tu logo
        • KlipperScreen - Guia de pantallas
        • KlipperScreen Android (Wifi)
        • KlipperScreen - MKS TS35
        • KlipperScreen - Raspberry Pi 5" DSI
      • Macros - Mejoras
        • Mallado de cama inteligente
        • Test de cinemática
        • Cambio Filamentos/M600
        • Pausado en capa
      • CANbus
        • ‼️CANbus Troubleshooting
        • Octopus/Octopus Pro + EBB Toolhead (CANbridge)
        • Bigtreetech Manta + EBB Toolhead
      • Impresión desde USB
      • VPN con ZeroTier
    • ‼️Klipper Troubleshooting
    • Guía Calibración Impresoras 3D FDM/Filamento
  • ℹ️GUÍAS ESPECÍFICAS KLIPPER
    • Creality
      • Creality K2 Plus
      • Creality K1 & K1 Max
    • QIDI
      • QIDI Plus 4
      • QIDI X-MAX 3
    • Bigtreetech Hurakan
    • RatRig V-Core 3
    • RatRig V-Minion
  • 🎨ERCF
    • Enraged Rabbit Carrot Feeder (ERCF)
  • 🌐3DWORK
    • Quieres promocionar tus productos/empresa?
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Klipper
  2. Mejoras/Tips

Sensores de filamento

AnteriorHost como segunda MCUSiguienteCámaras - Instalación y configuración

Última actualización hace 1 año

¿Te fue útil?

¿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

  • 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

  • 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.

Ajustes de configuración en Klipper:

printer.cfg or config include
[filament_switch_sensor SFS_switch_sensor]
switch_pin: gpio_xx
pause_on_runout: False
runout_gcode:
  PAUSE # [pause_resume] is required in printer.cfg
  M117 Filament switch runout
insert_gcode:
  M117 Filament switch inserted

[filament_motion_sensor SFS_encoder_sensor]
switch_pin: gpio_xx
detection_length: 2.88
extruder: extruder
pause_on_runout: False
runout_gcode:
  PAUSE # [pause_resume] is required in printer.cfg
  M117 Filament encoder runout
insert_gcode:
  M117 Filament encoder inserted

Algunas secciones importantes:

  • 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

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

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

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.

  • 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

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).

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 de cambio de filamento

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 de cambio de filamento

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 , LOAD_FILAMENT, etc...

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.

Más .

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.

Más .

Aunque podéis comprar el sensor completo y ensamblado también podéis fabricaros vosotros mismo ya que están .

Descargaremos el fichero de configuración y lo colocaremos a la altura de nuestro printer.cfg

también podemos usar la macro de sistema SENSOR=<sensor_name> indicando el nombre del sensor y que nos va a retornar, dependiendo del tipo de sensor, su estado y propiedades

por otro lado, tenemos la opción de habilitar o deshabilitar nuestro sensor usando la macro de sistema , en este caso proporcionaremos el nombre del sensor y si queremos deshabilitarlo (0) o habilitarlo (1)

macro M600
macro M600
M600
​
información sobre las macros _USER_ de RatOS aquí
​
información sobre las macros _USER_ de RatOS aquí
disponibles las fuentes desde su página web
OrbiterSensor.cfg
QUERY_FILAMENT_SENSOR
SET_FILAMENT_SENSOR SENSOR=<sensor_name> ENABLE=[0|1]
🖇️
- English
https://s.click.aliexpress.com/e/_DDNmXT3s.click.aliexpress.com
Page cover image