WebMaka
50824
16
2
I needed a filament sensor for my 3D printer, but the usual runout sensor only senses, well, when the filament runs out. This is fine and all but what if the printer's feed system jams?
Optical filament feed sensing to the rescue!
The basic premise is that the filament is pressed against a wheel with a series of holes in it, and as the filament gets pulled into the printer's extruder it rotates said wheel. An optical limit switch, set across the holes in the wheel, sees the movement as alternating light and dark (these wheels are called "choppers" because they either "chop"/block or pass light in a consistent and predictable manner as they rotate - optical chopper wheels are very, VERY commonly used for things like rotary encoding) and sends pulses to the printer's controller, which interprets the pulses as proof that the printer did in fact pull in the amount of filament it expected to pull in. The wheel has 60 holes, and a radius of 25.875 to the center of the filament, so the controller can be told that one state change (120 per rotation - 60 on, 60 off) means that roughly 1.35mm (circumference (2πr) / 120) of filament has moved through.
The prototype! I have inlet and outlet fixturing plates for the most common Bowden tube fitting sizes as well as cone and rounded-opening for direct-drive setups. My printer is a direct-drive so I printed a bracket to mount the sensor on its XZ carriage above its extruder. This also has the added benefit of keeping the filament off my carriage's cabling drag chain.
The prototype installed on my Frankensteinian monster of a 3D printer - I added two groves for O-rings (green!) to the chopper wheel aligned so as to press the filament into the middle of them, and this seems to be more than enough friction on the materials I've tested (PLA, PETG, and TPU thus far) to get a solid consistent reading on feed speed.
Aaaand prototype in action in a slow test print. Ignore the crappy test print - I wasn't using an optimized slicing profile because I wanted it to be sketchy/blobby/jammy so I could test for it catching jams. And it did - with the default setting of triggering a pause if more than 7mm was supposed to print before the sensor emitted a pulse, it caught literally every single jam I tried to force. When it did stop the print, I simply cleared the jam and resumed and all was well with the world, or at least this tiny part of it.
I've since used this sensing setup to do three 6+ hour prints, one of them 10+ hours, and it's successfully paused the printer whenever the filament decided to jam (which with the proper slicing profile was pretty rare), so it's already proven itself able to prevent losing a long print job.
In case anyone asks about downloading the STLs, I'm prepping them for upload. It requires some M4 hardware to assemble along with an optical sensor (a Lerdge optical limit switch) and a few ball bearings (688Z or similar - 16mm OD, 8mm ID, 5mm thick), and I'll throw an URL up when it's available for download.
Strostkovy
That should do it. You could also use a lens and an optical mouse sensor
WebMaka
Another approach is a spinning magnet and Hall-effect sensor. Many paths lead to this particular promised land.
UnitConversionBot
1.35mm ≈ 53.15 thousandths of an inch