vvvvv Click "SHOW MORE" for full instructions, BOM and setup! vvvvvv
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: https://amzn.to/3cOSfGq 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.
So far only tested on Reprap Firmware, please tell me how you set it up on your board:
Duet3 / RRF3:
M591 D0 P7 C"io6.in" S1 E50 L1.2 R50:150 A1 ; Pulse-type filament monitor on pin io6.in, 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!