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!