"The Scrapper’s" Optical Filament Motion Sensor (Ender 3 Spares Edition)





Description
Got an leftover parts from your old Ender 3 Pro? Switched to Direct Drive and have a spare extruder lying around? Don't throw them away. This project turns your "leftover" parts into a high-precision, optical filament movement sensor that detects clogs, tangles, and runouts.
Designed specifically for the Ender 3/Pro ecosystem, this sensor utilizes the parts you likely already have in your drawer. Unlike cheap mechanical switches that only detect if filament is present, this optical encoder ensures the filament is actually moving.
Why this design?
- Zero Cost (almost - for many): Uses the stock MK8 extruder and X-axis pulley bearings.
- Optical Reliability: Features an LM393 Optocoupler module for a clean, digital signal — no mechanical parts to wear out.
- Loading clock: Can be printed in dual colors (for look) or with physical through-holes.
Bill Of Materials:
- 1 x MK8 extruder (Creality or other) - 3.57USD at time of publishing - Aliexpress
- 1 x F688ZZ bearing (from X-Axis pulley) - Aliexpress
- 1 x Optical sensor (0.34USD at time of publishing) - Aliexpress
- 1 x M5x25 ISO4762 screw
- 2 x M3 Heat insert nuts
- 1 x M3x25 ISO4762 screw
- 1 x M3x16 ISO7380 or ISO4762 screw
- 3 x M3x16 ISO7991 screws
- 2 x M3x8 ISO7380 or ISO4762 screws
You can probably freely replace the screws with whatever suitable that you have at hand. Heat insert nuts could also be omitted, if you use one long M3 screw which goes all the way back and secures the whole thing to the Slot holder (or vise versa).
Technical Specs (For Klipper Users)
If you use the standard 11 mm MK8 drive gear and the provided 30-slot encoder wheel, your resolution is approximately 1.15 mm per pulse.
Suggested Klipper Config:
[filament_motion_sensor scrap_sensor]
detection_length: 10.0
extruder: extruder
switch_pin: ^YOUR_PIN
pause_on_runout: True
Friction: Adjust the spring tension on the MK8 arm as light as possible enough to grip, but not so tight to increase friction. I have replaced the spring with one from the bed carriage. Measured resistance is about 80-90g,
