When you are trying to get a print right and the nozzle clogs, it is pretty frustrating. When you are trying to print a large object and you fail on hour 35, it can make you want to throw your 3D printer through the nearest window, or take a 3D printed bat and smash it to pieces. Cooler heads generally prevail at all things, and one designer opted for hitting the drawing board, instead of his printer, and encourages other to follow his lead. This frustration led one Maker (who goes by the alias Florian) to design a 3D printed encoder that measures filament speed. The encoder is designed to warn the user when the nozzle is about to clog.
Florian’s encoder uses a small 3D printed wheel in which the filament passes through before it is fed into the 3D printer. The encoder then measures the gray code pulses as it rotates and is streamed over the serial port to a computer. The encoder is hooked up to an Arduino which makes this all possible. When the filament feed begins to slow down or stop due to some sort of clog , there is a notification sound that the Python script plays to inform the user that they need to check the nozzle or their print might be damaged.
“An Arduino is used to listen to the grey code from the rotary encoder and send the data over serial to a Python script. The Python measures the time since the last update from the Arduino, and annoyingly ‘beeps’ three times when it exceeds 15 seconds,” wrote Florian on a cuddleburrito blog post. Florian even graphed out his results to share with everyone. “I’ve graphed two 2-hour prints worth of data below. The first half has five tall spikes where I paused the printer to fix the jams. The second half is after I replaced the entire print head assembly and the problems seem to subside.”
Florian is still working out some of the details, but, eventually, he might find a way to stop the print completely once the filament clogs up. “My system works fantastic but I want to use an optical encoder for the next version. It’s the obvious choice and if I had one at the time I put this together I would have used it. The filament feed rate is the best metric to indicate problems but the rotary encoder I have is barely precise enough. When printing layers with small features, the printer can slow down and cause false positives to occur. This is visible in the data at the end of the prints since the final few layers need slow feed rates and show up as spikes in the data. A more precise encoder can lead this project to pause prints on its own with 99% accuracy and finally give the peace of mind that the printer is somewhat fault tolerant.”
C’mon, Florian! Be a hero to us all!






That looks great. I just did a research what FDM printers out there already have this kind of feature. I found the ZEUS 3D Printer from AIO Robotics has a little encoder wheel as well to track filament consumption / track filament feeding errors. I love that a few printers finally have this feature!
Yeah, very similar to one I have been using over a year now. The sailfish firmware has had this option for a long time and the Marlin and Repetier firmwares have added the supporting code recently. This is the one I am using that is done about the same way with programmable timeouts and monitors for the start of the print before beginning. http://www.toybuilderlabs.com/products/tunell-3d-printer-filament-monitor https://uploads.disquscdn.com/images/06e8e62f92b82695284286dd568160308bccea31334501f35c41a252489afa75.jpg
Great find. We have been working on an on-line product that does something similar, since we all have same problems with FDM.
Plus we wanted to be informed when a print ends.
It is not as sophisticated, however all you need to run it is a spare optical mouse, 30mm tube and a computer with Chrome browser and Internet connection.
Full description is on this page
http://cost-o-meter.com/speed-o-meter/
Although still under development, we hope you find it useful. Your feedback is more than welcome. 🙂
looks like he’s using an UP plus 2 or something. It’s really just an issue with the extruder not being able to deal with filament that changes diameter. I added a thin piece of foam tape to the drive wheel area as a way to keep more tension on the filament. It helps a lot. I never have prints fail due to jams, just tangled filament 🙂
I’m trying to figure out how to deal with tangled filament. Is there some optimal way to prevent it?
The extruder of newer MakerBots detects filament transport issues and pauses the print automatically. I agree with Florian and the author that this is a crucial feature for long prints.
I have had prints fail at various stages of completion. Fortunately, I have had luck with cutting away the section of the model in Netfabb that printed, and then printing what remains and assembling the parts to complete the print.
The Tunell 3D Filament Monitor uses a 24 PPR encoder to detect filament jams and out-of-filament conditions. It is a popular upgrade for MakerBot (and clone) printers, and also works with an upgraded Marlin-based printers as well. (http://www.toybuilderlabs.com/products/tunell-3d-printer-filament-monitor)