An attempt to investigate pressure in the extrusion system with a Diamond hot end.

Warning. To absorb all the information in this post, along with it’s accompanying video will take about half an hour or more. If you are short of time, come back later.

Thanks to all those who have helped, I’ve finally got a link to the video to appear correctly in this blog. Had I previously known how to do this, I’d have created short clips and embedded each one at the appropriate point in the post. Hind site is a wonderful thing….

However, until I get time to change it, the clips are all in one video so I would ask readers to bear with me and for now, play the video but hit pause at the appropriate points. So, on with the post………….

It seems to me that nobody has really demonstrated how or why pressure builds up in a hot end. Or more precisely the “extrusion system”. By that I mean the part of the filament path between the extruder and the nozzle tip. I use that term because pressure could build up in the filament path itself, or inside the melt chamber, or at the nozzle tip but they are all linked together, and so pressure building up in one section would likely be transferred to the others. In my case, I have 3 Bowden tubes. Each one is about 200mm long starting from the heat break, through the heat sink and into the extruder, ending close to the hobbed bolt. So called “Direct drive” systems still have a section of filament between the hobbed blot and the melt chamber but it is obviously much shorter.

There are lots of theories which seek to explain this pressure, and based on those theories we have a range of measures designed to compensate for it. For example, retraction during non-print moves, coasting, pressure advance and more recently non-linear extrusion. For sure, these compensating measures lead to better print quality but it irks me that there is a shortage of actual tests and measurements of the fundamental mechanisms behind the thing that we are trying to compensate. At least, my searches have revealed very little in the way of what I would call “scientific testing”.

I have often thought that it would be a good idea to fit a pressure transducer inside a hot end. Then we could measure, in real time, what actually happens. One idea I have is to use a 5 colour Diamond hot end, fit a transducer into one of the inputs and load filament into other 4. A high speed camera filming the molten filament as it exits the nozzle, and\or the extruder drive might reveal something too. As would filming the filament inside a Bowden tube. However, I’m just an old guy tinkering about in a spare bedroom so I don’t have the resources, financial or otherwise to do these things.

So I decided to try and devise a test methodology to attempt to quantify the pressure build up, with the limited resources that I have at my disposal. Based on my earlier work with high speed printing, I decide to use a Diamond 3 colour nozzle because it has shown to be capable of high melt rates due to utilising 3 melt chambers. Also running three extruders, should enable higher pressures inside the nozzle to be attained before the extruder itself starts to skip steps, slip, or grind away at the filament.

The effect of pressure build up should manifest itself by the amount of filament exiting the nozzle being greater or lesser than the amount of filament demanded. i.e. over extrusion or under extrusion. This is not easy to evaluate when printing objects. Under extrusion might show as gaps between lines and over extrusion might show as raised areas but it’s difficult to evaluate and almost impossible to quantify.

Therefore, I decided that an appropriate test might be to print a series of parallel lines, spaced some distance apart with each line being printed at an ever higher speed. Under extrusion should show as thinner lines, or lines that are less than the demanded layer height, while over extrusion should show as thicker lines and perhaps “blobs”. With my other tests of high speed printing, I printed a cuboid 300mm long so I decided to use just one of those 300mm long moves. A quick glance at the gcode file for that part showed that the extrusion amount for one of those moves was around 14.6 mm. Given that I would be printing at high speed, straight onto the print bed, I decided to increase this by about 10% in the hope that a slightly fatter line would help with adhesion, and also variations in line width might be more noticeable. So I settled on using a value of 16mm extrusion.

I then wrote a simple gcode file which would start at X=30 Y=20 Z=0.3, then move in X 300 mm to the right while extruding 16mm of filament, then retract, move towards the rear 20mm (in Y), unretract, then move 300mm to the left at higher speed while extruding 16mm of filament, move towards the rear another 20mm etc. The speed range was 40mm\sec then increasing by 10mm\sec up to a maximum of 300 mm\sec which is a bit extreme but that is very idea behind the tests. The non-print moves in the Y direction were all printed at 6000mm\min (100mm\sec) although in reality these would be limited by the rate of acceleration due to their short distance. Here is a sample of the gcode file.

G1 X30 Y20 F6000.000
G11 ; unretract
G1 X330 Y20 E16 F2400.000; 40mm\sec
G10 ; retract
G1 X330 Y30 F6000
G1 X30 Y30 E16 F3000.000; 50mm\sec
G1 X30 Y40 F6000
G1 X330 Y40 E16 F3600.000; 60mm\sec
G1 X330 Y50 F6000
G1 X30 Y50 E16 F4200.000; 70mm\sec
G1 X30 Y60 F6000
G1 X330 Y60 E16 F4800.000; 80mm\sec

One thing I realised was that as there would be no previous layers, the bed height itself could affect the line thickness. That is to say, my print bed would have to be completely flat and level otherwise, there would be variations in line thickness which were due to the distance of the nozzle to the bed, rather than any other effect. So I made a copy of the above gcode file and changed the feed rate to 2400 (40mm/sec) for all of the print moves.

Then I ran that as a print.  Readers should also be aware that these test were all run without any modifiers to speed, extrusion or such things as pressure advance. Just pure and simple unmodified gcode. Also for possible future reference, these tests were all done with Duet Firmware version 1.20. and a Diamond hot end with 0.5mm nozzle using PLA.

You should now watch the first part of the video.  A message on the video will tell you when to pause.

I did have to tweak the bed very slightly before I got that result. It was just a tad low at the rear right corner but having made that change, the lines all look pretty consistent to me. Note that my bed is mechanically flat and level. I don’t use any form of flatness or level compensation. I make this point just so that readers are clear that there is no Z movement during the tests which might have had a bearing on any test results.

There are tiny blobs at the ends of the lines. Here is a still from the video.


They occur at both the end of the print move and at the beginning. I tried every combination of (firmware) retraction from 1 mm to 10 mm and from 1200 mm/min to 9000. I can make them worse but cannot improve them or eradicate them completely. I ended up using my normal retraction settings of 5mm at 3600 mm/sec which is what I have previously ascertained as being the best setting for this hot end to avoid “stringing”.

Next up was the first test using ever increasing speeds from 40 to 300 mm\sec. However, readers should note that since I’ve added the extra 2 extruders and the second full CoreXY gantry, I have increased the mass considerably from when I last did any sort of high speed tests. I now have about 4kg moving the Y direction and about 2.1kg in X. Because this moving mass is over a metre above the floor, I found that it was making the printer rock somewhat. It printed fine but was scary to watch. For that reason, I have decreased the acceleration rate considerably and now run at 500mm/sec^2 for print moves. Using those acceleration figures, over a distance of 300mm, the maximum attainable speed is (sqrt(2*acceleration*length/2)) 387 mm\sec. The time to reach that speed is ((vf-Vi)\a) 0.6 seconds and the distance travelled while accelerating is (1/2at^2) 90mm. So at the highest speed, the acceleration and deceleration phases take up 180mm (90 mm each) so the part of the move which is at 300mm\sec is only the 120mm section in the middle. Obviously it takes far less time to reach the lower speeds so the acceleration and deceleration phases are far less significant at these lower speeds.

So the first line was at (up to) 40mm\sec, the second line at 50 mm\sec the third at 60 and so on. To work out the speed of any particular line, count from the first line, multiply by 10 and add 40.

Now go back to the video and watch tests 2 and 3………..

Firstly, I have to say that I was really surprised at just how consistent those lines are over that speed range. For sure there is a thickening at the ends of the lines at higher speeds but what really surprised me was that I can’t see any obvious signs of thinning during the high speed centre sections. The obvious thing to say is that there must be some thinning, otherwise where did the extra filament come from to make the thickening at the end? All I can say is that I can’t see it in the line thickness and running my fingers over the lines, they all feel the same height. I can’t offer an explanation so can only report what I see. Maybe a microscope would reveal more.

There were a couple of places where there are gaps in the lines. I’m inclined to think that these are down to poor adhesion in that part of the bed. The reason for that assumption is that the gaps do not coincide with the fastest lines, nor do they coincide with the fastest section of that line. They all occur on the right hand side of the print, but never on the left hand side. Where those gaps all occurred was during the acceleration and deceleration phases. As you will have noticed, I repeated the test at 200 deg C (the earlier one being at 185 deg C) but can’t honestly say that I noticed any great difference between those tests. Maybe I missed that part of the bed when I sprayed it with 3DLac.

What was noticeable was the thickening of the lines and the blobs at the ends (compared to the baseline test at 40mm\sec) which got worse as the print speed was increased. Here is another still image from the video


If the only thing that changes between moves is maximum (ultimate) speed of both the print head and the extruder, then I can’t think of any other reason for this over extrusion, than that it must be caused by pressure. That is to say, at the end of a move, the print head and extruder are decelerating but the flow at the nozzle tip is kept relatively high by the pressure. Given that the rate of acceleration is unchanged for each move, and that over extrusion increases as the maximum speed is increased then it follows that the pressure build up must be proportional to print speed, at least up to a certain point. Furthermore, this pressure is maintained and manifests itself at the start of the next move, even after a retract and unretract cycle.

Another observation is that there is something asymmetrical about those blobs. That is to say that the blobs at the end of moves appear to be larger than the blobs at the start of the next move. This might indicate that the act of retracting and unretracting might serve to relieve pressure to some degree. On the other hand, it might just be that the pressure decays over time so the reduction in blob size might be just a function of the time it takes to carry out the non-print move.

The last observation I would like to make is this. Given that I cannot see any detectable thinning of the extruded filament at high speeds, then I don’t think I am suffering from under extrusion as a result of extruder slippage. So in my case, in this configuration, with my hot end, etc etc, I cannot see that employing non-linear extrusion to increase the extruder multiplier with speed is going to help. In fact, I would have thought that it would serve only to increase pressure even more and thus exacerbate the over extrusion issues that I am seeing at the ends of the moves. There are some people who have done tests and have seen this slippage, but I have been unable to replicate those results, even with using a single extruder. There are many reasons why this might be the case. The obvious one is that in these tests I am using 3 extruders instead of one. On the other hand, people have seen this slippage at “normal” print speeds while I’m not able to detect any effect of slippage at extreme speeds up to 300mm\sec. Perhaps one reason might be that when people do static tests, they extrude 50mm or more of filament in one continuous move whereas in “real life” a 300mm move only uses around 16mm of filament. Or another reason might be that the people who have observed slippage are using 0.4mm diameter nozzles and mine is 0.5mm. I’m not going to pass any sort of judgement or advice except to say that if you normally get better results in your prints using a positive extrusion multiplier (greater than 100%), then non-linear extrusion might work for you.

Back to testing. It occurred to me that most printing is done without a retraction between every move. Given that there was a difference in “blob size” between the end of a move and the start of the next move, I wondered if pressure build up was cumulative and got progressively worse as the print progressed. i.e. is it also a function of time as well as speed? So, I made another copy of the gcode file and edited out all the retract and unretract commands. Now we have print moves in X followed by non-print moves in Y. That is to say, the extruder runs during the X moves but is stationary during the Y moves.

Run the next part of the video to see the results of test 4…………..

I guess if nothing else, that illustrates quite well why we need to use retraction for non-print moves. Just to re-iterate, the extruder was only moving during X axis print moves and was stationary during the Y axis moves. The filament line joining the two long print moves was laid down purely by the action of filament oozing from the nozzle. This “ooze” gets greater with print speed but only up to a point. That illustrates to me that there must be a pressure build up in the system. What else could cause it? Also, the amount of “oozed” filament is sufficient to cause thickening at the end of the line, bridge the 20mm gap between lines and cause thickening at the start of the next line. So it must be quite a significant amount of filament. Again, I would have thought that there ought to be obvious signs of under extrusion leading up to that point but I honestly cannot detect anything. I can offer no explanation why this is the case.

The other observation I would make is that the amount of over extrusion at the ends of lines  increases as print speed is increased but only up to a point, and thereafter seems to remain fairly constant. This would indicate that there is no cumulative affect. i.e. that for any given speed, the pressure builds up to a certain value in a fairly short space of time but does not increase further beyond that value.

Then I decided to look at the tools we currently have available for dealing with this pressure induced oozing. Firstly, there is retraction which is designed to prevent ooze during non-print moves. However, these tests show that the amount of “ooze” increases with print speed but retraction is a fixed amount. A value that is sufficient for a print speed of 40mm/sec will not be sufficient at say 100mm\sec and above. Perhaps there is a case here for retraction which increases with print speed? Better still in my opinion is to find ways to reduce the pressure.

Secondly, there is non linear extrusion but as I explained above this is designed more to compensate for extruder slippage and in this case, there is no evidence that this is happening.

Coasting might be an option. This is a feature of some slicers whereby the extruder stops before the end of the move. It might work but I have no easy way to simulate this in these tests. I would have to segment the move into say 290mm with the extruder running, followed by 10mm without the extruder running. To do this with varying amounts of extrusion\non extrusion would be a bit laborious given that I have to write the gcode file “long hand”.

Which leaves pressure advance. Now I have to say at this point that I have thought that there is a case for asymmetrical pressure advance. That is to say, reduce the pressure at the end of a move but do not increase it by the same amount at the beginning of the next move. It is somewhat born out by these test results which show that the increased pressure induced ooze continues from the end of one move into the start of the next move.

Anyway, asymmetric pressure advance is not available and the need for it is based solely on a hunch that I had, so I decided to test it in it’s current form. The other thing I wanted to double check was the fact that in my earlier testing, I found that a value of around 0.6 was necessary to cure the problems that I was seeing at that time. This is very much higher than the values that other people use. So the first test using pressure advance was with a value of 0.1. There really wasn’t much difference so I put the pressure advance setting up to 0.5 and repeated. This showed a marked improvement but there were still signs of over extrusion so I then repeated with pressure advance set to 0.7.

Play the next part of the video to see the result of tests 5, 6 and 7…………..

The first thing I want to say is that I was wrong about the need for asymmetric pressure advance. I admit now that my hunch was ill founded. I fully expected to see a reduction in the over extrusion at the end of the moves as the pressure is reduced, but that there would be little or no change to the over extrusion at the start of the next move because the pressure would be rapidly increased to “balance” the amount of filament extruded . This is clearly not the case as the results show.

So pressure advance as it stands in Duet firmware 1.20 seems to be a good way of compensating for the pressure that builds up at high speed. Furthermore, even at slow to moderate speed the “ooze” during non-print moves with no retraction seems to be greatly reduced. With that in mind, I decided to run another test, with retraction re-enabled. But rather than run with the value of 5mm that I have previously ascertained as giving me the best print results, I set it really low at 1mm (20% of what I use without pressure advance).

Play the video again to see the result of this test 8……………..

That looked pretty good to me. There isn’t all that much difference between these tests at up to 300 mm\sec and the initial baseline at 40mm\sec. There are some gaps in the right hand side of some of the highest speed lines but as those gaps are during the acceleration and deceleration phases, and also because they don’t appear on the left hand side of those lines, I’m inclined to think that it’s just an adhesion issue on that part of the bed.

So being able to run with just 1mm of retraction really excites me. The main reason is that when using a mixing hot end, we have to retreat all the filaments concurrently. This can result in the “unused” filaments being ground down which leads to extrusion issues when they next come into use.

However, I have been unable to use pressure advance because it has an adverse effect on print quality. It seems to be as a result of using multiple extruders. Basically, it results in random jerky movement when printing curves. This was the subject of a lengthy thread on the Duet 3D forum  Duet forum pressure advance thread.  It seems that the ultimate solution would be a faster processor but since I last tried it, there have been some changes to the firmware that might have improved it, so I decided to try my multiple cylinder test part again.

Play the last part of the video to see the results………………

It’s a real shame but it looks like I’ll have to wait for the next generation Duet before I’m able to print at higher speeds with the necessary high pressure advance setting and multiple extruders. So for now, I’ll just have to set pressure advance back to zero, put the retraction back up to 5mm and print at slower speeds.

I think it has been a useful exercise though, and I now have a better understanding of how pressure builds, it’s effect on print quality and how to deal with it. At least with my particular printer. I have a better understanding of the potential that my printer could deliver, even if it’s no possible to currently use that potential.

It has taken me a lot longer to put this post and video together, than it did to devise and run the tests so I hope readers will have found something in all this. Just remember to do as I try to do and keep an open mind. These tests were done with a 0.5mm diameter Diamond hot end, three E3D Titan extruders using three 200mm long Bowden tubes. The results may or may not translate to other hot end\extruder combinations.

Until next time…..








6 thoughts on “An attempt to investigate pressure in the extrusion system with a Diamond hot end.

  1. Ian,
    Thank you for all of your work to improve printing quality and speed. I found this blog and video very informative and clearly shows that pressure advance works really well for straight lines.
    Is pressure advance needed for circles, after all circles are made up of very small straight lines so I can’t see how pressure advance could work and be effective in such a short time and distance.
    I wonder if it would be possible to only apply pressure advance for lines over a certain length?

    anyway, great work, thank you


    1. Hi Paul,

      Thanks for the feedback and yes, I’m with you on that.

      I think the rationale behind it is that with short segmented moves, there is a cumulative effect, so when all the short segments are added together they effectively make one long move. I can sort of see the logic behind that. However, at what point do all lot of short moves become one long one? I guess the answer is “at the end of an arc”. I’ve been doing some more testing and from what I can deduce, it seems to me as if a circle is being treated as a number of arcs under certain conditions which results in pressure advance being applied at multiple points around the circle and not just at the end. I’m just rendering another video as I type this. Hopefully, I can get DC to take a look at it and maybe take another look at the code.

      Fingers crossed……..



  2. Thank you for the research and the detailed write up.
    If you do decide to attempt coasting, or anything else that requires “periodic” changes to the G-Code and your “longhand” is the barrier, consider generating the G-Code in a spreadsheet. Spreadsheet generated code provides a great balance between the high barrier of a “conventional programming language” vs. “hand coded”. Copy/paste and a few formulas can achieve wonders.
    Feel free to contact me if the above doesn’t resonate. I’d be happy to help.


    1. Hi. Sorry for the delay in Approving your comment. I’m the other side of the world from home right now. Anyway, thanks for the tip. I never thought about using a spreadsheet. Good idea. Ian.


  3. not the one that usually comment, but must say I admire your experimental efforts!

    just some theoretical guesses.

    as you speed up more pressure is need to get more filament out. as bowden will add some “spring” effect to the system more filament needs to be feed in at extruder end to building up pressure then comes out during the acceleration “loading the spring”. when d-accelerating this extra must come out in the other end to take pressure away “unloading the spring”. the lack of filament when accelerating is probably harder to spot but the extra comes as a blob in the end when speeds gets close to 0.

    retract intend to take any pressure away that’s still there after stop to not spill during move, but as you then start a new line again the same length will be feed in just before and any reaming pressure from end of last line and its retract is then back again giving a blob at start.

    this should be independent of if its an “arc” or line that’s printed, its just dependent on print speed, so for relay small radius arcs it will be less as you cant go as fast limited by your acceleration.

    normal case I guess slicer of firmware do not compensate for this but maybe this is what “pressure advance” try to do, this is also indicated by less retraction needed hinting that there is less over pressure left at the end and that the bowden “spring” has been properly unloaded as part of print.


    1. Thanks. I agree with you about the theoretical mechanism that likely causes pressure build up. From the research that I have done, it is certainly “perceived wisdom” but as I explained in my post, until someone actually makes some measurements, it is just a theory which currently remains unproven. For sure pressure advance does compensate so it’s highly likely that the “spring” theory is correct but it’s also possible that there could be some other reason or combination of factors such as thermal expansion of the filament as it is heated. The more filament that is heated, the higher the thermal expansion which in a confined space, could lead to increased pressure. We just don’t know so I prefer not to dwell on the reasons why pressure builds up but just accept that it happens.

      The difficulty with using firmware pressure compensation is that it takes a certain amount of time for pressure to build up. So with segmented arcs which are a series of very small movements, each individual segment would experience very little pressure build up but there is a cumulative effect which becomes significant at the end of the arc. Ideally, we need to apply pressure advance at the end of the arc and not to each individual segment but it’s very difficult for firmware to “know” where the end of an arc is. Personally, I think that it would be easier for the slicer to take care of pressure advance, rather than the firmware. Prusa has recently introduced something called Linear Advance into his version of Slic3R which is very similar. When I get time, I’ll try that out.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s