Perfect Spool Usage

I am curious how close people are able to get their filament spools to 0kg/0mm. I constantly find myself with very used spools and I tend to assume its not enough left for whatever im trying to print. But in reality, it was probably enough but I just don’t have the courage to risk it.

This isn’t a huge deal for the common hobbyist I guess, because you’re most likely using 90-95% of the spool each time before you get scared off. But for someone who has a print farm or prints a lot, those left overs will really add up I assume.

Just a thought I had in my head that I wanted to type here…

I am always standing near the printers, so I run then down to like 3" and change the filament mid print.

1 Like

Oh wow I feel like I would miss one every now and then. Have you tried filament runout sensors?

I have one but have not plugged it in yet.

I missed one this morning, 5 hours in…huge bummer for me. It was 15 minutes from finishing.

Rather than wire in and configure a sensor a guy at our makerspace made one of those microswitch-based sensors and connected the NC contacts to a battery+buzzer. it is mounted far enough away from the extruder that he has plenty of time to come over and do a swap before it runs out.


I usually just measure how much a fully empty spool weighs then measure the partial, gives me a pretty solid estimate via the slicer if it is enough. I have ran it pretty dang close though lol. On my prusa I just go until the sensor trips if I am around the printer, still need to get that sucker programmed in on my other printer.

1 Like

So soon i am going to make an arduino scale. Get an average on core spools and be able to know how much is left. That with the estimate cura uses i think i will beable to tell what i can print with a roll. I think it will help alot!


Generally unless the filament is really stuck to the spool, I end up with about 18 inches left. That’s how far the runout sensor is from my extruder.

1 Like

I don’t trust the density estimates in slicers. Maybe they are spot on, IDK. But they compute very accurate extrusion length.

So one trick I have when the filament is low enough, I can count the number of turns left. I measure or estimate the diameter of the spool center.

Diameter * pi * number of turns = distance left.

I compare that to the slicer estimate of length left. I am surprised how often I get away with a final print.


I do the same as Jeff. Sometimes I have to pick a ‘junk’ small model to use up the last little bit, but the length by number of winds on the last layer is pretty good at using the last bit.

1 Like

I personally do as Ryan does but how about a splicer?


I use a rotary encoder sensor, and do like others by trying to finish small amounts on a small model. I’m always tossing out about 20" of filament though, since my sensor is about that far from my nozzle (mounted on rear of the enclosure). I’m OK with that since it’s a small percentage of material, and I often acquire filaments for a few bucks a spool. I keep the scraps for stuff like filament hinge pins etc, which I try to work into my designs. The nylon scraps are very useful for maintenance too (cold pulls).

The scale idea would work well for some filaments that I buy in bulk and rewind on to normal spools, because I know the weight of the spool/container/dessicant ahead of time. Water gained in the desiccant could introduce error though, and most of the filament I use comes prerolled.

I use a filament runout sensor on my Tevo. Like the MPCNC endstops it is a simple micro switch, just in a case. I have mine right at the input of the extruder, so my waste is the length of the bowden tube between the extruder and the hot end. With Marlin set up for the runout sensor it basically just triggers the code for a filament change when tripped. It will reverse a set amount of filament out of the sensor, move the hotend to the rear left corner, shut down the hot end heater and prompt you for a filament change. Remove the filament remnant, load up a new spool and continue. It leaves the heated bed at temp so your print doesn’t come unstuck. On continue it brings the hotend back up to temp then runs in a set amount of filament to get things flowing again. Then prompts you to purge more or continue. Pull the purge filament off the hotend and continue - it moves the head back to where it was and continues the print.

I have filament runout sensors on all but one printer, and will be getting a sensor on that last printer ASAP. I have found them to be helpful. They usually work pretty well.

The only FDM printer I ever bought that did not come with one was an Ender3-v2, and the only reason I bought it was to get an Ender Extender 400XL kit and extend its print volume to 400x400x500. The 400XL project was further complicated by the fact that I also bought a BTT SKR 2 and BTT TFT35-E3 v3 to replace the Creality board and touchscreen, and between the 400XL completion and the new board and TFT completion, the project got set aside for many months, only just now being (mostly) completed, as mentioned here:

I currently have 7 FDM printers, one of which is new and still in the box, not yet assembled. I also have one resin printer. On big projects it’s really helpful to spread the part printing out across multiple printers.

I kind of want to do this. But I want to use an ESP32 and connect it to my home assistant so it can bother me and only me (not wake the kids).

What sensors are good? Is there anything I should look for?

I have not tried it yet but this detects filament not moving, my second most common issue is the filament getting stuck in the spool so I hope this fixes that issue.

1 Like

Here is what I did Ryan:

I already had the sensor and bearings, and the commercially available sensors at the time I did this did not look very promising (metal/filament contact, somewhat low resolution, questionable build quality, etc). The designs on TV also fell short in my book. So I made one with all the features I thought would be good for a 100% reliable solution that is also easy to operate. It can stop if so much as 0.3mm fails to extrude… but I have it set for 2mm which is enough to save most smaller prints. The tpu tires won’t slip and give pliability to retain grip during random movements. The spring tension is adjustable to ensure creep doesn’t ruin it. There is a light pipe that makes it easy to see the state of the sensor (not just bling… can help with adjusting spring tension). I also got OCD over the filament path, to make it so no jams will ever happen when loading new filament.

So far I’ve gone through probably 10+ rolls with that thing and it hasn’t skipped a beat. With a decent extruder it isn’t really even needed over a switch. From my experience, cheap silk PLA and nylons are the most likely to clog, and this sensor has saved many such prints from failure. I’ve since upgraded to a dual gear extruder from my stock MK8, so the clogs are a lot less common. Still it’s good piece of mind to have one.

I wonder if I could get that to work outside of Marlin.

I am guessing the signal just goes high when the filament is moving, so I would need to see the start of a print (which is in HA already), and then wait until after the warm up and then watch for a full 30s without a pulse. Then disable the check when the print is done.

I’m sure you can, as they’re just rotary encoders (well not really an encoder… just on/off states). The way marlin handles it… looks for a change in signal level (0 or 5v) and marks current e position upon a change… the config file has max mm allowed without a change… mine is setup to pause/park if that happens (using advanced pause, e-parser, etc). So if you have an encoder that flops every 0.5mm of filament, you can set it to like 0.7mm and leave almost no empty lines behind on the print. 30sec is a long time… maybe a whole layer on smaller prints. So I think allowing marlin to do it is not a bad idea… not sure how else you’d get motion feedback.

You could make a circuit that raises a voltage if a certain time interval elapses with no encoder transitions, but then depending on the job you might falsely trigger. For instance if you were doing a time lapse and between layers it moved the printer to a fixed position for the photo, then it might go a while without the filament moving and it would trigger. Marlin is the most natural place to know whether filament movement is expected or not.