I think the Prusa Mk3 filament sensor is a great idea. However, some filament types are difficult for the sensor to detect. There have been various efforts to develop indirect sensors that rely on sensing a proxy (usually a bearing) that moves with the filament. The filament sensor is optimised for reading stainless steel surfaces, so a ball bearing is ideal. However, many of these require firmware modification (https://www.thingiverse.com/thing:3091625, https://www.thingiverse.com/thing:3178706), or require a separate housing, leaving a void where the old sensor was (https://www.thingiverse.com/thing:3129921).
For my design I wanted to achieve several things:
• To improve the reliability of the filament sensor. As the MMU will no doubt one day be linked to the filament sensor, I wanted my filament sensor to be very reliable regardless of filament.
• To improve the reliability of the feed to and from the extruder. This means a clean, tightly constrained pathway, with no voids or sharp edges (such as those in the existing sensor chamber).
• To avoid the need to modify firmware.
• To avoid any other negative compromises in the extruder. eg: Access to the bondtech door had to be the same.
• To work with existing Prusa parts, eg: the top cover (as there are many useful modifications of that). The X-carriage plate had to remain the same (who really wants to pull apart their x-axis if they can avoid it).
This design meets all those goals, and requires the printing of only 2 parts, a single MF63zz bearing, and a 10mm countersunk m3 bolt. The parts can be printed successfully using stock standard Prusa profiles. I used the '0.15 - Optimal Mk3' profile, with the shells bumped up to 3, and gyroid infill (cause it's awesome).
To achieve this, I rotated the bearing, so that the filament sensor was reading the side of the flange. Using a printed wedge with a window cut in it meant that the sensor couldn't see anything else, such as other, non-rotating, parts of the bearing. It also means that the whole system is well secured and robust. This design means that I didn't have to move the filament sensor much at all, so the sensor wire will still pass through the existing x-carriage, and the existing top plate screw holes are in the original locations.
• Print the parts. I used the '0.15 Optimal Mk3' profile with 3 shells and gyroid infill. Use the standard Prusa orientation for the extruder body (on its back). Print the wedge upright.
• Check that the bearing chamber is clean and doesn't have any obvious strands or loose plastic in it.
• Drop the bearing in, so that it's flange is towards the sensor chamber. Use the countersunk m3 screw until it passes through the bearing. Don't worry about tightening it up tight. It just helps to hold the bearing in place while you put the wedge in place. Don't screw it in all the way. Just enough to go through the bearing, but not into the sensor chamber.
• Put some filament through the feedpath and check the bearing turns freely. It may take a few runs back and forth for everything to settle. Use a torch to see if the bearing is turning. If it isn't, check the bearing is all the way into the bearing hole, and that there's no debris in the hole.
• Drop the wedge into place. It should sit flush against the sensor chamber wall on the bearing side. If it doesn't, back of the M3 countersunk screw until it does.
• Slide the filament sensor in next to the wedge.
• Check the holes for the wedge and the filament sensor line up, and secure both with a 10mm m3 screw (the one that originally secured the filament sensor).
• Now, gently screw the countersunk screw in until its head is flush with the surface, so that it won't affect the bondtech door. Don't apply force, and keep an eye on the wedge. It should remain flush with the wall of the sensor chamber.
• Reinstall the extruder body. Check that autoload and runout detection work, and check the extruder menu under support. If there's no print running it should report intensity. For mine it's around 80-100. You can also pull the filament back out of the extruder to check it shows movement. Don't push it into the extruder or you'll active autoload.
• You can probably print the extruder body in any colour you like, so long as the wedge is black. The bearing and the wedge prevent the sensor from seeing much of anything else. (Chances are you can print the wedge any colour you like too).
• The filament path is now extremely constrained. There's no chance of a bit of rogue filament spearing off into the sensor chamber and killing your filament sensor.
• This sensor may setoff the runout sensor a smidgen earlier (maybe 0.8mm or so, I've got the bearing as high as possible), compared to the standard Prusa layout. This may help mitigate the bug where the runout is activated too late if you're printing at high extrusion rates.
Another useful mod. For even more reliability, try this mod so you don't need to little bit of PTFE tube. Instead you can run the main PTFE tube all the way to the filament sensor chamber. https://www.thingiverse.com/thing:3129388
Update 20/11/18: Added 3 .STEP files for people to play with. The extruder body and wedge, and the boolean shape used to cut the bearing chamber.