As I’ve experimented with different print styles and slicers, and especially as I’ve been helping new users who are wrestling with printers that seem utterly unwilling to cooperate, I’ve become more and more convinced that one of the key variables that we should pay attention to is the rate of extrusion, expressed in terms of mm³ of plastic per second. Essentially, my hunch was that there is a maximum rate at which one can push plastic through the nozzle – and once you try to go too fast, bad things can happen. So I set out to find out definitively where that limit is.
Defining extrusion rate
The extrusion rate is the volume of plastic being extruded from the nozzle each second. The gcode defines the rate that the printer is trying to attain. If you imagine the printer laying down a long thin line of plastic for one second, it’s easy to see that volume being extruded in that one second – the extrusion rate – is the product of the width of the bead being printed, the layer height, and the distance that the head moves in one second – the print speed. Effectively we are printing a long thin rectangular block of plastic (simplifying, by ignoring the fact that in practice the plastic will tend to form rounded corners as it lays down) and by multiplying together the width, height and length of that block we get the volume of the block, and hence the rate per second.
The slicer’s view
In the ordinary course of slicing and printing, we tend not to focus on the rate itself, but instead define all the components – the layer height, nozzle width, and the print speed. Based on the height, width, and length of line segment we are printing, the slicer calculates the amount of plastic needed for each part of the print. From there, and knowing the diameter of your filament, it calculates the amount of raw filament to feed into to the printer to provide the necessary volume of plastic. This sets the E (extruder) coordinate that is included in each line of gcode, along with the X & Y (and possibly Z) components of the move. Since we’re defining how much plastic to feed in, and the speed determines how long the x & Y part of the move takes, the slicer is implicitly defining the extrusion rate. If the head is moving 100mm in 1 second, while laying down a bead 0.4mm wide and 0.2mm deep, then the extrusion rate being requested for the segment is 0.2 x 0.4 x 100 = 8mm³/s.
Where it can go wrong: a simplified view
However, as we print at ever faster rates, we may eventually find that the printer can’t keep up, and that despite requesting one rate of extrusion we get something rather less than that, because the relatively thick, sticky plastic just can’t squirt out of the tiny nozzle opening fast enough. And that then presents a problem – because the gcode is defining how much plastic gets fed into the Bowden tube – and if that’s more plastic than can exit through the nozzle, then something has to give.
To a small extent the plastic can compress, or stretch the Bowden tube to make a bit more room for itself. But mostly what happens is that the filament just stalls in place; despite being pushed faster, it can’t go anywhere… but the extruder motor keeps turning, and the knurled bolt grinds way at the filament, chewing it up. The filament quickly gets abraded away, so that the teeth of the knurled bolt don’t even dig into solid plastic any more. Furthermore, the constant excessive push of plastic into the hot end raises the pressure in the molten plastic, making it more likely that the molten plastic, unable to escape the way it is supposed to go, will instead find its way back up past the advancing filament, and get into the cooler parts of the head, where it can solidify and form a jam that will make things even worse.
In view of this, it’s important to know what the maximum sustainable extrusion rates are, so that we can be sure not to try and exceed them. (Kisslicer has a very nice feature where it allows you to specify a maximum extrusion rate, and if you set parameters that would exceed that rate, it slows the print speed down to avoid problems). Although there has been some anecdotal discussion of this on the Ultimaker forums, I didn’t find a definitive test, so I decided to conduct my own.
Measuring maximum extrusion rates
In order to find the extrusion rate limits for my Ultimaker, I set up a number of tests. In each case, I sent gcode to the printer that made it extrude for 30 seconds at a known rate. And then I took the little pile of extruded plastic, and weighed it. And since I knew the density of the plastic, I compared the extrusion I had ended up with to the amount I was expecting.
In order to decrease errors, I ran ten seconds of slow extrusion before each test, to prime the head while maintaining a low standard pressure. Then I ended with a standard retraction (4.5mm at 30mm/s – just like my normal print retractions). The gcode paused, giving me a chance to clean off the nozzle, and then the test extrusion began. At the end, another retraction was performed, to reduce the impact of oozing beyond the allotted time period, and I quickly used tweezers to pull off the plastic that was extruded during the test. In each case I used the same plastic – a 2.85mm diameter white PLA.
I weighed the extruded plastic multiple times using digital scales with 0.01g precision. And each test was repeated at least 3 times, at each of up to 14 different extrusion rates, for half a dozen or so different temperatures. And because I knew that I might be chewing up the filament, and didn’t want that to impact the outcomes, each set of test began with a fresh piece of filament loaded in the Bowden tube. After about ten hours of extruding and weighing, I had quite a collection of little pyramids of plastic, and discarded lengths of more-or-less mangled filament:
Some words of caution
Please bear in mind is that these tests used a non-standard nozzle. I have a 0.65mm diameter hole in my nozzle, not the standard 0.4mm nozzle. This means that the rates that I obtained are about 2.5 times higher than what is possible with a standard nozzle (because the area of the hole in a 0.65mm nozzle is roughly 2.5 times larger than a 0.4mm diameter hole). I plan on repeating the test using a standard nozzle later.
Secondly, this is just testing a single type of plastic – a bright white PLA. Different brands, types and colors of plastic will behave differently in terms of temperature specifics due to their differing formulations, although the general patterns should be broadly similar. Over time, I intend to repeat the testing with different plastics, in order to allow comparison between types, and make it easier to select the best temperatures and speeds for each type with less trial-and-error, and fewer wasted prints.
Extrusion rates: Requested versus actual rates
The graph below shows the results that I got.
Each line represents a different temperature. As the line goes from left to right, the gcode is requesting faster and faster extrusion rates. The height of the line indicates the actual rate that was achieved on average over the 30 seconds of the test. The grey line shows the nominal outcome we were hoping for – where actual extrusion is equal to requested extrusion. Once the lines became horizontal, so that I’d identified the maximum extrusion rate, I stopped testing at that temperature to avoid excessive damage to the filament and/or extruder.
A few things are immediately apparent:
1) The extrusion rates achieved gradually tend towards a limit, beyond which it is not possible to extrude any faster.
2) The size of that limit depends on the temperature of the plastic. The hotter the plastic (and hence the better it flows) the higher the maximum rate of extrusion. At 210 degrees, the limit is a little over 18mm³/s – by 230 degrees, that has increased to over 24mm³/s.
3) At low temperatures (200 degrees and below) the maximum extrusion rate is really quite limited. From 210 degrees and above, a broader range of extrusion speeds is attainable. However, the increase in throughput shows diminishing returns: Higher temperatures offer smaller and smaller increases in extrusion rate. (And higher temperatures introduce their own print problems due to excessively low viscosity – I tried testing at 240 degrees and was unable to get reliable results because the head oozed so much that I couldn’t define the start and end points of each test sufficiently well).
4) None of the tests extrude the desired volume even when asking for rates well below the maximum. In all cases, there is some under-extrusion, even at quite low requested rates.
Under-extrusion is all around us
I was very surprised to see that I was getting under-extrusion of 10% to 20% even at lower rates. The percentage of under extrusion gradually rises as the extrusion rate increases, until we finally hit the absolute maximum extrusion rate, where the curves become horizontal (or even start to decline due to filament grinding making it hard to keep up even that level).
I tried changing the tension in my V2 spring-tensioned extruder… and while it did seem to reduce the amount of under extrusion by a few percentage points for any given rate and temperature, it didn’t make that much difference. I think that my extruder is well constructed, and works well in general, so I don’t think its something specific to my setup. But at the same time I was puzzled – because I wasn’t getting obvious filament damage or grinding. And I also verified that the extruder gear is still turning exactly the right amount – it’s not skipping any steps.
Rather, what seems to happen is that as the requested extrusion rate is pushed higher, and the back-pressure on the filament increases, the filament starts to slip backwards as the teeth on the knurled bolt rotate. It appears that with the bolt at certain angles in its rotation, the teeth don’t bite on the plastic sufficiently, and the filament has a brief opportunity to slip backwards.
The net result is that with minimal damage to the filament, the drive bolt teeth marks simply get closer together…
The photo above shows a single piece of filament at the beginning and end of a 100mm fast extrusion – one that exhibited under-extrusion, but was below the absolute maximum rate for the temperature.
On the top left is the start of the extrusion, before pressure has built up in the head. On the top right is the end of the extrusion, by which time pressure has built up. The lighting slightly exaggerates the deformation of the plastic in the right hand piece. Seen with the naked eye, they both are pretty clean without obvious signs of chewing; the leading edge of the later teeth marks (the side towards the bottom in this picture) is a little more raised, but to a casual inspection there doesn’t seem to be any major difference – except that the teeth marks get closer together. A filament move distance that took 4 teeth bites at the start of the extrusion, requires about 5.5 teeth bites by the end. This effectively changes the necessary steps-per-e ratio by about 35%… and means that by the end of the test, I was extruding at less than 75% of the rate at which I started – for an overall average extrusion rate of about 85% across the entire test.
Respecting the limits
Armed with this data, it becomes easier to tune print settings to avoid trying to print too fast. Speed, temperature and layer height can be coordinated to fall within the sustainable limits. Kisslicer’s maximum extrusion rate settings can be refined to ensure that extrusion rates remain safe even in unusual configurations, like printing multi-layer fast infill, with wider-than-usual nozzle settings.
I believe that there may even be good reason to build some configurable limits into the firmware to help prevent excessive extrusion, even if the slicer hasn’t been smart enough to avoid it; as noted above, I’ve seen several cases where new users’ repeated print failures were solved when they were encouraged to try adjusting settings to bring the extrusion rate down below the estimated limits for 0.4mm nozzles – around 8-10 mm³/s. This isn’t helped by the fact the fast ‘QuickPrint’ setting in Cura tries to print at 11.2mm³ per second – almost certainly enough to cause problems for a 0.4mm nozzle.
I plan to continue these tests with standard 0.4mm nozzles, in order to provide more concrete information for the majority of Ultimaker users. Even if the under-extrusion issues can be mitigated, the absolute limits on extrusion are still a challenge that all users need to either be aware of, or be protected from via active safeguards and sensible defaults.
I think that we need to also consider if a better extruder drive design would reduce or eliminate this tendency to under-extrude as head pressure rises, or if not, to at least consider the practicalities of improving the firmware and/or slicers to compensate for what amounts to a dynamic steps-per-e parameter as print speed increases.