After a number of filament breaks and a couple of incidences of running out of filament while printing pinhole cameras for my Kickstarter project “Pinhole, Printed”, I am wondering why none of all these extruder drives seem to have a microswitch to shut the printer down when there’s no filament going in?
Is it that there’s no firmware to do this or do the various boards (Sanguinololu, RAMPS, etc) not have the inputs? I have a Solidoodle 3 with a Sanguinolou 1.3a.
I dug into this awhile back and the hang-up was that stopping the print in a re-startable way is tricky due to command buffers and such.
That said if you had a switch that was located far enough from the extruder you might get enough warning to have some filament left to run-out the buffer.
That and the added complexity of adding a switch that detects no filament is more work than it’s worth. And if the switch were to accidentally trigger during a print that is working normally, you just wasted a lot material for no reason.
@Shachar_Weis perhaps, but PLA in my Printrbot simple (at least in high summer, with room temp of 35C) will jam without fail unless I cool the direct drive extruder motor. When I do, it doesn’t.
it’s not that simple. I agree in general but it can vary from batch to batch, or a loop can fall off the spool. There are a lot of variables but it should not be hard to design a reliable extruder mechanism with a built-in pause switch. If your machine is running unattended without one, it can keep going - while printing in air or driving filament through the pinch wheel (but not going into the hot end). Eventually we are going to need these kinds of controls.
@Clint_O_Connor those sorts of things are among the differences between the big expensive commercial machines and us — it wouldn’t surprise me much if it’s as yet too patent encumbered for anyone but Makerbot/stratasys to sell one.
All you need is a pinch switch where the filament keeps the contacts open. But finding a suitable material to stay in contact with the filament may be a hassle
I looked at mechanical switches but the constant contact factor had some issues. I also looked into using a light break (optical) as well, on on the more far-out side considered measuring the weight drop of the spool, odometer techniques, etc.
In the end it wasn’t worth the trouble for me personally but I can definitely see cases where it would be valuable. Once I improve more valuable things for my use I’ll probably return to this subject
@Clint_O_Connor I agree with you that there is a need for fail safes. I too have thought about this.
A simple idea is two idler wheels on each side pinching the filament slightly by spring tension, with one of them mounted to an optic rotational encoder. With proper support in the firmware that should be able detect both filament jamming and filament breaking. (filament doesn’t move when the firmware expects it to).
Another alternative would be to use a setup with the sensor from an optical mouse to detect the filament not moving as it should. @Thomas_Sanladerer uses an optical sensor for filament diameter measurement here maybe it can also be used to detect motion - I have not read up on the sensor he is using; https://plus.google.com/101189457349966331973/posts/Db1NS2Y1s6B
@korpx i’m currently using it as a feedback for my extruder (not the kind that sits in your printer, but the kind that makes filament), but using it as a realtime measuring system in a printer would definitely be possible. It uses a contrast-based algorithm to detect and measure the filament’s edges and returns a zero diameter if the contrast is too low.
For simply detecting if filament is present, a much simpler mechanism, like a light barrier or microswitch, would suffice and be much cheaper.
The sensor i use (TSL1401) is about $15 to $30, depending on where you’re buying it; it also needs a dedicated Arduino for the readout sequence ($4 to $30).
A simple mechanical switch would work for a filament break or out of filament condition. It wouldn’t work for a jam. Seems like an idler wheel would be needed to detect no movement, which could be either of the previous two or a jam where the filament is not feeding and the stepper is missing steps or stripping the filament. It wouldn’t work for the case where the filament escapes the pinch roller and goes out sideways above the hot end (happened to me - nice coil of filament everywhere) but that can be prevented through extruder design. An idler wheel wouldn’t be a simple interface to an existing controller, though, would it?
I also think this is a much needed feature. And I think the filament movement sensor, be it with idler wheel or optical mouse sensor, is a very good solution. It would also provide some other advantages for normal operation by using it as a sensor to do closed loop filament advance by the controller. One of the immediate advantages is having better control in Bowden setups by having this sensor close to the hotend, sensing how much filament is really entering/retracting.
I also find the interface of this peace of hardware to be the most challenging issue, but I do think it should be interfaced with the controller firmware.