Skip to content

Filament Progression and Runout sensor (Optical Endstop and Encoder Wheel)

Creation's quality: 0.0/5 (0 votes)
Evaluation of members on the printability, utility, level of detail, etc.

3D model description


The scope of this project was to build a filament sensor that not only tracks runout (like a simple switch would do) but also the progression in order to detect jams.

Current options are either unreliable (laser sensors don't work well with transparent filaments) or expensive and finicky (Duet magnetic filament monitor)

So my idea was to use a $0.50 optical end-stop to sense pulses through an encoder wheel, just like the good old ball mouses did.

In the purest RepRap fashion, it was also designed to use as many printed parts as possible.


Here's all the hardware you will need:

1x Optical End Stop (the long, red type with the plug on the opposite side to the sensor; example: or Aliexpress)

2x MR105 Bearings (5mm ID x 10mm OD x 4mm)

6x M3 x 6mm screw

Some 4mm PTFE tube


Start by printing all the included parts. They should all print without supports at 0.2mm layer height.

The wheel should be printed in a soft material; TPU or TPE.

Then use the cutting tool to trim the slot on the PTFE tube. Check assembly in the body.

Next, assemble the Axle_A into Axle_B. Should be a tight fit, don't hesitate gently hammering it down. (Fellow Railcore users will have the privilege to use their panel corner holes)

The wheel then goes on the hex area of the Axle_B, and finish up by assembling the bearings on each end.

Text fit the axle sub-assembly in the body, it should move freely. If no make sure the wheel is well aligned on the axle, and the PTFE tube is properly cut/oriented. Check for stringing too.

If all good, move on to assembling the 2 half bodies together by tightening the 3 screws. Don't tighten in too much or you'll strip the thread.

Check again that the axle is moving freely by inserting a piece of filament and look if the encoder wheel is spinning.

If so you're almost done!

Assemble the sensor in the slot with the remaining 2 screws, slide the mount in the dovetail, and cut the extra Teflon tubing if you want it neat.

That's it!

Firmware setup:

So far only tested on Reprap Firmware, please tell me how you set it up on your board:

Duet3 / RRF3:

M591 D0 P7 C"" S1 E50 L1.2 R50:150 A1 ; Pulse-type filament monitor on pin, enabled, sensitivity 1.20mm/pulse, allowed movement 50% to 150%, check every 50.0mm

(Where io6 can be replaced by wherever you chose to plug yours)

Calibration: I would recommend setting it to S0 first, doing a test print and entering M591 D0 to get the actually measured sensitivity from the console

I hope you find it useful!

  • 3D file format: 3MF and STL
  • Publication date: 2020/06/21 at 22:20





Best sellers of the category Tool

Add a comment

Would you like to support Cults?

You like Cults and you want to help us continue the adventure independently? Please note that we are a small team of 3 people, therefore it is very simple to support us to maintain the activity and create future developments. Here are 4 solutions accessible to all:

  • ADVERTISING: Disable your AdBlock banner blocker and click on our banner ads.

  • AFFILIATION: Make your purchases online by clicking on our affiliate links here Amazon, Gearbest or Aliexpress.

  • DONATE: If you want, you can make a donation via PayPal here.

  • WORD OF MOUTH: Invite your friends to come, discover the platform and the magnificent 3D files shared by the community!