Creality Ender 3 V2 Filament Sensor (SFS)

Modified on Sun, 29 Jun at 11:47 AM

SFS 2.0: https://store.dremc.com.au/products/bigtreetech-sfs-v2-0-smart-filament-sensor-detection-module


Note: Requires Printed Parts (Community Mount: https://github.com/bigtreetech/smart-filament-detection-module/tree/master/V2.0/Community%20Mods) or (https://www.printables.com/model/606797-smart-filament-sensor-v2-ender-3-v2-mount)


Note: If you intended to have full functionality, you need additional 2 pin JST: (https://store.dremc.com.au/products/2-54-jst-xh-housing-male-sold-individually)


Due to SFS being 2 mode, for extended functionality we have included option to have both monitoring feature and also basic limit switch, just do note you will require spare end stop port, so if you're already running Bl Touch(5 pin setup) you should have spare end stop port.



TABLE OF CONTENTS



Basic Functionality 

Wiring (Example) Please match wiring pin out, as wiring colour can change between production batch. 


image


You will need de-pin and ground connection and match as shown below. 


https://support.dremc.com.au/en/support/solutions/articles/51000467088-depin-repin-jst-ph-xh-connectors



Firmware: 

Marlin Firmware: 

Once everything is plugged back, you will need to update motherboard firmware. 


You will need to flash updated firmware to ensure filament runout is functional.  Official firmware source https://www.creality.com/download/

https://www.crealitycloud.com/software-firmware/firmware?type=2


Ender 3 Neo: https://www.creality.com/pages/download-ender-3-neo

Ender 3 V2 Neo: https://www.creality.com/pages/download-ender-3-v2-neo

 

There is 2 version, please download and install the applicable mainboard hardware revision 4.2.7 or 4.2.2 board. 


Community Firmware: https://github.com/mriscoc/Ender3V2S1 (Ender 3 V2)

 

Example: 

Ender-3 V2-Marlin-2.0.1-HW-4.2.7-mainboard-V1.1.2-compatible with BLTouch and filament detection.zip

Ender-3 V2-Marlin-2.0.1-HW-4.2.2-mainboard-V1.1.2-Compatible with BLTouch and filament detection.zip



Klipper Firmware: [Depending on which board version, https://klipper.discourse.group/t/creality-board-4-2-2-and-4-2-7-schematics/3104], also depending on your pause command you may need to update according. 


[filament_switch_sensor RunoutSensor] 
pause_on_runout: False 
runout_gcode: PAUSE insert_gcode: 
RESUME switch_pin: !PC6


Full Functionality 

Note: Require compilation of Marlin Firmware or change to printer.cfg for klipper based printers. 

Source: https://github.com/bigtreetech/smart-filament-detection-module/issues/43#issuecomment-1784050009 

Credit: https://github.com/TacII


(Based on 4.2.7 Board)


Wiring (Example) Please match wiring pin out, as wiring colour can change between production batch. 


image


This is where the Motions Sensor Cable goes on the system board. You will need to depin 3 JST connector into 2 JST connector as shown below. 


https://support.dremc.com.au/en/support/solutions/articles/51000467088-depin-repin-jst-ph-xh-connectors
image

The Blue and Red wire pair (Switch Sensor) goes the the filament runout port on the system board and can be inserted as normal.


image


Example For Klipper


#Switch sensor, blue @PA4 + red VCC 3,3V
[filament_switch_sensor btt_switch_sensor]
switch_pin: ^PA4 
pause_on_runout: false
runout_gcode:
  M117 Switch Runout!
  {action_respond_info("BTT: Switch Runout detected!")}
  PAUSE
insert_gcode:
  M117 Filament inserted
  {action_respond_info("BTT: Filament inserted.")}
  
#Motion sensor, Green @PA7 +Black GND
[filament_motion_sensor btt_motion_sensor]
switch_pin: ^PA7 # Previous Z- on 4.2.7
detection_length: 5 # accuracy of motion sensor 2.88mm
extruder: extruder
pause_on_runout: false
runout_gcode:
  M117 Motion Runout
  {action_respond_info("BTT: Motion Sensor Runout detected!")}
  PAUSE
insert_gcode:
  M117 Filament inserted
  {action_respond_info("BTT: Filament inserted.")}

[delayed_gcode DISABLEFILAMENTSENSOR]   
initial_duration: 1
gcode:
    M117 Motion FIL. SENSOR OFF.
    SET_FILAMENT_SENSOR SENSOR=btt_motion_sensor ENABLE=0
    SET_FILAMENT_SENSOR SENSOR=btt_switch_sensor ENABLE=0

For Marlin:

Source: https://github.com/bigtreetech/smart-filament-detection-module?tab=readme-ov-file#firmware-config-for-filament-blockage-detection-1


Note: Depending on your board, you need define the pin for passive and active sensor. 


  1. uncomment #define FILAMENT_RUNOUT_SENSOR.
  2. uncomment #define FILAMENT_RUNOUT_DISTANCE_MM 5 and set it to 5mm (The detection accuracy of SFS V2.0 is 2.88mm, We set it to 5mm to leave some error margin).
  3. uncomment #define FILAMENT_MOTION_SENSOR
  4. uncomment #define FILAMENT_SWITCH_AND_MOTION
  5. uncomment #define FIL_MOTION1_PIN gpio_xx set motion pin to actual GPIO of motherboard
  6. The filament sensor feature of Marlin also needs to enable #define NOZZLE_PARK_FEATURE and #define ADVANCED_PAUSE_FEATURE. please uncomment #define NOZZLE_PARK_FEATURE and #define ADVANCED_PAUSE_FEATURE and set specific parameters according to your printer.
  7. If you are using the Serial Touch Screen of BigTreeTech, please enable the features in Marlin according to the requirements here
    • We recommended to plug SFS V2.0 into the motherboard not Touch Screen, In this case, the Marlin configuration is as described above, and the Touch Screen config.ini file needs to be set according to here
    • When the SFS V2.0 is plugged into the Touch Screen, comment out #define FILAMENT_RUNOUT_SENSOR in Marlin to disable detection of Marlin and uncomment #define M114_DETAIL for Touch Screen, And enable detection of Touch Screen in config.ini file, set fil_runout:1 to enable detection and fil_runout_distance:3 for accuracy.


Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article