Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
I finished my Mk3 filament sensor mod to allow it to work for all filaments (transparent, black, shiny, whatever).
https://www.thingiverse.com/thing:3223513
It uses a proxy bearing, and aims to fulfill the following objectives:
• 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).
Note: Following photographs are from testing prototypes (eg: only top portion of extruder body, or top bolt holes in wrong place).
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
I'm glad to see you got this released.
Do you require the bearing to have a flange? The only mf63zz bearings I've found are flanged.
I'm looking forward to getting this installed. My MMU2 should be here right before Christmas, so I'll need to tear down the extruder then. I've got jltx' version going right now, but it won't detect a filament runout. The numbers move in the right direction, but no detection... I'm sure it's something I'm doing wrong. Stock firmware will take me out of the equation.
Are there any issues sitting in the back of your mind that I can confirm/negate? It will probably be a couple weeks before I install this, but if I can help with debug, let me know.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
It does need to be a flanged bearing, as the sensor is looking at the side of the flange through a small window in the wedge. No idea why you aren’t getting runout with jtlx’s version. Seems it should work regardless of how far from the bond tech the sensor is sited.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Step files added so people can play. 😀
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Thank you very much for this mod.
It seems to be the best no-compromise solution out there. It is printing as I write this. Unfortunately I have to wait until next week for the bearing to arrive.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Why hasn't anyone suggested using a microswitch for this function? They are extremely reliable when wetting currents are met, difficult or impossible to jam, and inexpensive.
http://www.farnell.com/datasheets/2340369.pdf
https://www.digikey.com/product-detail/en/omron-electronics-inc-emc-div/D2F-01FL2-D/D2F-01FL2-D-ND/368436
You can get off-the-shelf switches with large roller bearings attached, that can fit in small spaces like the sensor, but have the advantage of true displacement sensing: thus immune to false positives due to color.
I'd design one up - but haven't looked at the filament sensor code - to see what problems there'd be replacing a serial link with a switch. It'd be nice to have one of the I/O bits on the EINSY be a parallel detector for filament fault.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Why hasn't anyone suggested using a microswitch for this function? They are extremely reliable when wetting currents are met, difficult or impossible to jam, and inexpensive.
http://www.farnell.com/datasheets/2340369.pdf
You can get off-the-shelf switches with large roller bearings attached, that can fit in small spaces like the sensor, but have the advantage of true displacement sensing: thus immune to false positives due to color.
I'd design one up - but haven't looked at the filament sensor code - to see what problems there'd be replacing a serial link with a switch. It'd be nice to have one of the I/O bits on the EINSY be a parallel detector for filament fault.
People have used micro switches to detect filament loaded and unloaded. In fact there is a thread in this forum somewhere with a users design. It requires some coding which some people are not comfortable doing. But what the switch cannot do is detect filament movement like the optical sensor.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
But what the switch cannot do is detect filament movement like the optical sensor.
[I've edited this post to remove my own rhetoric and inaccuracies]
Just did a bit of research. The filament sensor can do a lot of tricks, but sense transparent and most translucent filament isn't one of them. Also, while the MOTION detection features of the part are being used by Prusa, heck, the motion INTerrupt out isn't connected. Filament jams are detectable (I hadn't done a deep dive into the code). At some point in the future Prusa may expand their code to do filament flow rate by reading the sensor registers and doing a bunch of math on the data, but confident that's not done today.
Nice and technologically cool part, but perhaps not the best fit for 3D printing due to material sensitivity. Of course, different color backgrounds may affect operation; who knows, maybe 18% gray works better than black.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
But what the switch cannot do is detect filament movement like the optical sensor.
Just did a bit of research. The filament sensor can do a lot of tricks, but sense transparent and most translucent filament isn't one of them. Also, the MOTION detection features of the part are NOT being used by Prusa, heck, the motion INTerrupt out isn't even connected, thus filament jams are not detectable (I haven't done a deep dive into the code, but that was my quick take-away today). Sure, at some point in the future Prusa may expand their code to do their own style of detection by reading the sensor registers and doing a bunch of math on the data, but don't think that's done today.
Are you positive, because:
1) It can clearly detect going from stopped to moving, as it will activate autoload when filament comes past the sensor.
2) It can clearly detect jams and runouts as it will stop the print, bring the extruder to the front and ask you to eject and replace the filament.
The problem with the sensor is, as you noted, problems reading some filament. Other than that, it does everything you have mentioned above. In fact, if you go to the support -> extruder menu (not during a print as that menu doesn't get updated during a print), it will show the movement of the filament, intensity of signal, etc.
Nice and technologically cool part, but perhaps not the best fit for 3D printing. It isn't clear to me, but maybe if the bearing idea were supplanted with a displacement sense... so the laser is only detecting the roller bearing movement, and together you get movement for future planning and true filament detection...
Maybe have it so the filament moves the bearing into view of the sensor. Do both functions at once. Solves the displacement and the color sensitivity.
A rough sketch ... some rethinking to eliminate debris interfering is probably in order.
Filament_Detect.jpg
I don't think this adds anything that the printer isn't doing now. It does add considerable complexity though.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
I didn't do a rigorous read of the code, and much of the code is not well documented with comments but noted some of the functions have notes regarding filament movement is not implemented. Going back and looking a bit ore closely, there are reads of registers that indicate filament has moved (no app note explaining the sensors registers at hand). It's done with a go-nogo approach. Nothing I see for actual range of flow, etc.
Also, there is no function for filament flow other than the go-nogo signal they are using (they ignore the actual value except for it being non-zero). Thus, the sensor only knows there is filament by trying to move the filament and detecting go-nogo.
int16_t dy = pat9125_y - fsensor_autoload_y;
if (dy) //? dy value is nonzero
...
if (dy > 0) //? delta-y value is positive (inserting)
At first read I thought all this mod did was add a bearing to ensure filament was positioned accurately. However this thread seems to re-aim the sensor at the bearing. If so, it would eliminate the color sensitivity. But even a bearing adds other issues. But it should fix the color dependency.
So no simple solution, yet.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
I didn't do a rigorous read of the code, and much of the code is not well documented with comments but noted some of the functions have notes regarding filament movement is not implemented. Going back and looking a bit ore closely, there are reads of registers that indicate filament has moved (no app note explaining the sensors registers at hand). It's done with a go-nogo approach. Nothing I see for actual range of flow, etc.
Also, there is no function for filament detection other than that go-nogo signal they are using. Thus, the sensor only knows there is filament by trying to move the filament and detecting go-nogo.
int16_t dy = pat9125_y - fsensor_autoload_y;
if (dy) //? dy value is nonzero
...
if (dy > 0) //? delta-y value is positive (inserting)
Perhaps the mod of this thread aims the sensor at the bearing. If so, it would eliminate the color sensitivity, which is what makes the senor useless to me.
That is correct. A bearing is used as a proxy.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
hey Martin,
So how is it running these days? Still happy with it?
My bearings have just arrived, and wondered if I should go ahead with it?
cheers
K
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Working fine for me. Ask on the facebook group. Lots of people there are using it.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Hello all,
Just waiting for my bearing to arrive so that I can fit it. As it fits on the existing X-Carriage and does nt add height to the extruder it is compatible with my full print volume volcano mod. Part of my mod is a custom X-Carriage that is compatible with the stock Prusa extruder so with this mod beind externally compatible as well is a win.
regards,
Martin
Martin Wolfe
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Thanks for the work! Any chance of a respin that works with the R4 design so that those of us that like our laser sensors can keep using them but also get the more serviceable exturder design? Or is that going to be tricky given the R4 only seems to have a single top screw?
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Thinking about it. I'll assess once the MMU2s version of the sensor shows up.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Thinking about it. I'll assess once the MMU2s version of the sensor shows up.
That would be awesome, earning you the respect of a stranger on the Internet you've never met 😉
But I understand if you decide not to.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
It’s gonna happen. I took a look at the files this morning.
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Here you go.
Still very experimental.
https://www.thingiverse.com/thing:3431164
Re: Prusa Mk3 filament sensor modification for all filaments (transparent, black, shiny, whatever).
Hot damn, that was quick! I have a couple prints in the backlog I need to finish before I tear anything down, but I should be able to print it over the course of next week.
Did you make any changes to the lower extruder holding opening, per this thread?
Rock on! 😀