The Prusa I3 MK3S And A Tale Of Two Sensors
When the Prusa i3 MK3 was released in 2017, it was marketed as being "bloody smart" thanks to the impressive number of sensors that had been packed into the printer. The update wasn't really about improving print quality over the MK2, but rather to make the machine easier to use and more reliable. There was a system for resuming prints that had stopped during a power outage, a thermometer so the firmware could compensate against thermal drift in the inductive bed sensor, RPM detection on all of the cooling fans, and advanced Trinamic stepper drivers that could detect when the printer had slipped or gotten stuck.
But the most exciting upgrade of all was the new filament sensor. Using an optical encoder similar to what you’d find in a mouse, the Prusa i3 MK3 could detect when filament had been inserted into the extruder. This allowed the firmware to pause the print if the filament had run out, a feature that before this point was largely unheard of on consumer-grade desktop 3D printers. More than that, the optical encoder could also detect whether or not the filament was actually moving through the extruder.
In theory, this meant the MK3 could sense problems such as a jammed extruder or a tangle in the filament path that was keeping the spool from unrolling. Any other consumer 3D printer on the market would simply continue merrily along, not realizing that it wasn't actually extruding any plastic. But the MK3 would be able to see that the filament had stalled and alert the user. The capabilities of the optical filament sensor represented a minor revolution in desktop 3D printing, and combined with the rest of the instrumentation in the MK3, promised to all but eradicate the heartbreak of failed prints.
Fast forward to February of 2019, and the announcement of the Prusa i3 MK3S. This relatively minor refresh of the printer collected up all the incremental tweaks that had been made during the production of the MK3, and didn't really add any new features. Though it did delete one: the MK3S removed the optical encoder sensor used in the MK3, and with it the ability to sense filament movement. Users would have to decide if keeping the ability to detect clogs and tangles was worth giving up all of the other improvements offered by the update.
But why? What happened in those three years that made Prusa Research decide to abandon what promised to be a huge usability improvement for their flagship product? The answer is an interesting look at how even the cleverest of engineering solutions don't always work as expected in the real-world.
Of course, Prusa Research weren't the first to try and tackle the problem of jammed filament detection. Hackers had already been cobbling together their own solutions for years by the time the MK3 was released, but most of them used a more direct approach. The most common way was to simply push a wheel against the spool or the filament itself, the rotation of which can easily be detected through a rotary encoder or Hall-effect sensor.
But the problem with this idea is that it puts additional drag on the filament, which can introduce variations in the extrusion rate that ultimately impact print quality. Users chasing perfect extrusion have developed various low-drag spool holders for exactly this reason. Adding drag into the system, even if it would allow for the detection of stalled filament, would be a non-starter for many users.
The beauty of the optical sensor was that it could "see" when the filament was moving without actually touching it. Again, Prusa Research didn't come up with this idea. There had already been attempts to visually inspect the filament as it entered the extruder, though the goal was generally to compensate for varying filament thickness.
What Prusa Research did do was come up with a low-cost open hardware sensor that combined these established ideas to create an accurate non-contact filament speed sensor. By rights, you’d expect that by now every 3D printer manufacturer on the planet would have spun up their own variation of this little sensor and bolted it onto their entry level machines.
Which they certainly would have done eventually, if the sensor had actually worked as intended.
To be clear, the optical filament sensor in the Prusa i3 MK3 did work. They wouldn't have shipped the machine out if it hadn't. It even worked pretty well… most of the time. But it had a few pretty serious issues that really only became apparent as users spent some quality time with the machine. Even before the release of the MK3S and its physical removal of the sensor, many users had simply opted to turn the optical sensor off in the firmware settings due to issues that simply became too common to ignore.
The first and most obvious problem was that the sensor had occasional difficulties seeing light colored filaments, and an even worse time with translucent ones. This alone wasn't really a huge problem for many users; a quick stroll through Thingiverse will show you that most 3D printer owners stick with black, blue, or red filament to begin with. But as users put more time in on the MK3 and started using less common colors, it became clear that not all filament was equal in the eyes of the printer.
Unfortunately, the second issue further compounded the problem. While there was a clear attempt to recess the sensor into the extruder body, dust still managed to find its way in. To a degree this was unavoidable, as the gears of the extruder invariably generate bits of plastic dust as they do their thing. The official maintenance procedure advised users to keep an eye out for dust and particle buildup around the extruder gears, but it doesn't mention checking the sensor. While removing the sensor and cleaning it without tearing the whole extruder apart isn't terribly difficult, it's not what anyone would call user friendly. It's certainly not the sort of thing you’d do on a whim, especially if there's no mention of it in the maintenance guidelines.
After awhile, this coating of dust would start to impact the sensor's ability to see the filament. Problems that you ran into only occasionally started becoming daily occurrences. You might notice that inserting filament into the extruder wouldn't always trigger the auto-load function, requiring you to engage it manually. In the worst case, the printer could suddenly decide that the filament had disappeared and stop the print. This was annoying enough if you were in the same room with it, but if you did long prints overnight or while you were out of the house, it could be a huge waste of time.
Amending the maintenance procedure to have users remove and clean the optical sensor every few months could have helped the situation, but frankly, it would have been a stopgap measure at best. Clearly the sensor wasn't up to the challenge. The accuracy wasn't high enough even under ideal conditions, and it introduced a weak spot in what was otherwise a workhorse. It had to go. But what would replace it?
In the end, Prusa Research went with a compromise. The sensor in the MK3S is still optical, but it isn't looking at the filament this time. When filament is inserted into the extruder, it pushes back a small metal ball which in turn moves a lever that interrupts a beam of light. When the filament is no longer pushing on the ball, the force of two opposing magnets return the lever to its original position.
With no springs or mechanical switch to get gummed up to wear out, the new sensor is expected to last much longer than the original version. At the same time, the pressure put on the filament itself is light and consistent enough that it shouldn't have any impact on print quality.
The obvious downside is that the sensor can no longer tell if the filament is moving, only that it's physically present. So should the hotend become clogged or the spool jammed, the filament will grind inside the extruder and the print will fail. But this doesn't mean Prusa has given up on solving the problem; the company has since decided that the best way to combat jams and clogs is to produce their own in-house filament with higher physical tolerances. The theory is that if the feed material is properly sized and formulated, there will be no reason for the printer to choke on it.
For the larger 3D printing community, it's unfortunate that Prusa's advanced filament sensor didn't work out. Though even in failure, it does serve as an important engineering lesson. It's a reminder that sometimes the simplest approaches really are the best, and that just because a piece of hardware works on your test bench doesn't mean it's going to survive the realities of everyday use.