More about print speeds, melt rates, pressure advance and so forth (and an embarrassing confession).
This post builds on other work that I have done exploring high speed printing using Diamond hot ends and feeding filament equally into all the inputs.
This is going to be a long post so although I recommend that you read it in it’s entirety, if you are short of time, skip to the conclusions at the end and maybe watch the video. You may of course agree or disagree with those conclusions. I hope I will have produced enough evidence to show the reasons why I have reached them. So, if you have any comments to make, please read the text that leads to those conclusions first.
As ever, I’m not setting out to prove anything. I simply try to show what is, and what is not possible, in a factual and accurate manner and with the limited test equipment and resources that I have available. I am aware that words alone do not prove anything so as ever, there is an accompanying YouTube video which I will link to later.
The idea for this testing was to seriously look at producing real world objects at sustained high print speeds and therefore high filament melt rates, using multiple melt chambers. When I say “real world” objects, I mean something that could be of use, rather than some sort of circular or cuboid test part, and which would have would have a surface finish and the mechanical integrity comparable to something printed at lower “normal” speeds.
Previous experimental testing that I have done showed that when trying to print at high speeds, some form of compensation for nozzle pressure was needed. The last work I did on this was back in January, and at that time, pressure compensation as implemented in RepRap firmware and used on the Duet boards worked well in this respect but gave me problems when printing arcs while using multiple extruders. At that time, the consensus of opinion was that a faster processor would be needed and so I would likely have to wait for the next generation of Duet control board. For that reason, further testing was put on hold.
However at some point in time, a change in firmware has indeed fixed this issue and pressure advance with multiple extruders whilst printing curves or arcs is no longer a problem. So I am able to revisit high speed testing.
At this point, I have a somewhat embarrassing confession to make. When I embarked on this exercise, I had visions of being able to show the effect of the printer shaking when I throw my 4Kg of mass around, and then to show how this could be improved by my newly installed force cancelling gantry which I have spoken about in an earlier post. In practice, when I tried using higher speeds something happened to the extruders and they started drastically under extruding.
Here is a picture of what happened. It is under extrusion showing at the start of a move.
I initially thought I had some sort of blockage and it took me a while to track down the problem. I’m still not sure as to the exact cause but disabling the additional gantry restores extrusion to what it should be. This is what I got with everything the same except that the additional gantry was disabled.
At the time of writing, I started a thread on the Duet forums. The gantry adds two additional axes and two additional motors. We don’t think it’s a step pulse issue (but it might be) but the diagnostic report doesn’t show any step errors or significant “hiccups”. It might be a power supply issue, but again, the diagnostics report show the minimum Vin voltage to be 24.1 with no under voltage events. So at this moment in time, the cause is a bit of a mystery but for whatever reason, I was unable to print at high speed with the additional gantry enabled.
Having said all that (this is where it gets really embarrassing) I honestly can’t see anything wrong with the objects that were printed without the load balancing gantry. There is no difference in surface finish from the bottom of the object to the top, and the parts are 400 mm tall. Neither are there any noticeable differences between those printed at 120mm/sec and those printed at 300mm/sec (yes you read that right) apart from some initial under extrusion on the 300mm/sec part which I’ll talk about later. In fact the low facet count, segmented curve looks better as speed is increased.
The initial test parts were 100mm wide and so the “rocking” of the printer was fairly gentle compared to what I have seen when printing other objects. So I made an 8 pointed star, about 56mm across the points, so each flat surface is about 12mm long. It was also 400 mm tall and I printed it at 240 mm/sec although in reality, because of the short distances it never attained a speed more than about 120 mm/sec. This time, the shaking of the entire printer was much more pronounced and dramatic to watch. The print itself? Perfect – (or as near perfect as I’ve seen). I’ve included some footage of this test and the resultant printed part in the video.
I honestly find it very difficult to believe that the entire printer can shake about like that and yet no artefacts show on the part being printed. I guess that’s some sort of testament to the fact that my frame and bed attachment must more pretty rigid than I could have hope for. Anyway, in all honesty I have to admit that the force cancelling gantry, although it works well in stabilising the printer, has largely been a somewhat expensive but fruitless exercise. Oh well, as they say in Yorkshire – “If tha’s never made a mistake, tha’s never made owt”. Which for non native English speakers roughly translates to “If you have never made a mistake, it’s because you have never made anything”. Anyway, putting that aside, I’ll continue with the rest of this testing.
All tests were run using Diamond hot ends with mixing ratios set to feed equal amounts of filament into each input (melt chamber). The extruders were all Bondtech BMGs.
As I stated above, one of the initial objectives was to evaluate the effect of cancelling motion induced vibrations, which I thought might be more pronounced when the print bed was further away from the print head. So I initially decided to make the test parts tall – 400 mm tall in fact. Later on, having discovered that the force cancelling gantry wasn’t needed, it became apparent that I need not have made the objects so tall. (Hindsight is a wonderful thing).
Also, as I said in the introduction, I wanted to produce something that might reasonably be printed as an object in it’s own right, rather than just a cuboid test part. A vase came to mind but these are usually either rectangular or circular. I thought I should evaluate curved surfaces as well as sharp corners. So I decide on a cube shape but with one curved surface, giving 3 sharp corners plus the curve. I wanted the curve itself to be printed fast and, rightly or wrongly, I thought that if the segments were too small, it might print on the slow side. So I set $fn to 100 in OpenSCAD. Also, the object would need to be large for the print head to accelerate up to and maintain the required speed.
I use an acceleration of 1,000 mm/sec^2. The reason for this is as follows. From previous testing, it became obvious that acceleration plays a big part in determining the level of pressure compensation required. My belief is that at the start of a move, the print head accelerates as does the extruder drive. However, the entire extrusion system acts like a “sponge”. So any rapid change in the extruder drive creates a pressure spike and it takes time for the filament coming out of the nozzle to build up to the demand speed. Indeed, this is the reason why it is necessary to advance the extruder at the start of a move and how the compensation works. Therefore it follows that the faster the acceleration, the further the print head will move before the rate of extrusion catches up. So the higher the acceleration the more pressure advance is needed to compensate, and if acceleration is set too high, then no amount of compensation will work. Back in January, I was using a higher acceleration and so needed to use a value of around 0.7 pressure advance. This worked to a degree but the amount of extruder movement was somewhat alarming to watch, and indeed at the end of longish moves, the extruders would run backwards. Lowering the acceleration to 1000mm^2 has meant that the amount of pressure advance required has reduced from 0.7 to 0.4. Although still high by some peoples’ standards, this is a much more sensible number which is also reflected in the print quality.
I also use an instantaneous speed change (jerk) of 20 mm/sec (1200 mm/min). I anticipated that I might possibly reach a speed of 240m/sec. If my maths serve correctly, to reach a speed of 240mm/sec starting at 20mm/sec would take 0.22 seconds and during that time, the print head would travel 24.2mm. At the same time, I didn’t want to waste too much time (and filament) so I decided that a move length of 100mm would be appropriate. This would mean that at 240mm/sec the print head would be accelerating and decelerating for roughly 48mm but would maintain a constant speed of 240mm/sec for 52mm. At 300mm/sec, the acceleration and deceleration distances would be 39.2mm so the print head would be at constant speed for roughly 22mm but I doubted that I would reach that speed. Here is an open scad picture of the part.
This was then sliced using PE version of Slic3R v1.40. I set most things to their default values and let the slicer do it’s best (or worst). Speed was set to 120 mm/sec for every move type apart from the first solid base layer which was set to use 60mm/sec. This speed would mean that I could get the range of print speed needed by using the speed multiplier in the web interface. The layer height was 0.3mm which is what I usually use with my 0.5mm nozzle. Print temperature was set to my default for PLA which is 195 deg C and bed temperature was set to 50 deg C. I set it to do 3 perimeters, 2 bottom layers and no top layers. I did another copy for a 0.9 mm nozzle, with 0.6mm layer height, sliced with two perimeters in this case, and at a speed of 40mm/sec (due to the much larger volume of filament flow because of the bigger bead width and layer height).
Both parts were set to use tool 3. This was configured to use mixing a mixing ratio of 0.34:0.33:0.33. Another gcode file was made for the 5 input Diamond using tool 5. I simply edited the 3 input 0.5mm nozzle version, and changed T3 to T5. This was used with the 5 input Diamond hot end with the mixing ratio for tool 5 set to 20:20:20:20:20.
I realised that this was going to use (and waste) a lot of plastic. So all tests were run using PLA which was about 2 years old and needed using up. Maybe not the best choice of material, but for comparative purposes, I thought it would be OK. Of note is the fact that the “stripey toothpaste” effect of the Diamond nozzle is apparent in the printed objects. The filament colours were Yellow, Green and Blue and you’ll see from the tests that the side nearest the Blue inlet is indeed Blue while the other faces are a mixture of Yellow and Green.
The parts were then printed. In all cases, the base layers were printed at the default slicer speed setting of 60mm/sec to ensure good bed adhesion. The first part was printed at the “sliced” speed for the rest of the print which was 120mm/sec. This may seem fast to start with but I often print at that speed with good results. Further tests were conducted using a speed multiplier after the base layers had been printed. For all tests, the temperature was set to my default of 195 deg C until under extrusion became obvious. When this happened, the temperature was increased to 210 to see if it helped matters.
After reaching the maximum speed possible with the 3 input (colour) Diamond hot end, I fitted the 5 input hot end to see if 5 melt chambers would be better than 3. Unfortunately, I could not get much higher than 180 mm/sec before one or more of the extruders started to making “clicking” noises indicating some slippage and there were obvious signs of under extrusion. This 5 input unit has never produced what I would call great results and has suffered from heat creep in the past. So it is possible that there is some partial restriction in the area of one or more of the heat breaks. I confess that I quickly lost patience with it and gave up trying.
The final tests were done with the 3 input, 0.9mm diameter nozzle (0.6mm layer height). Shortly into these tests, it became obvious that things like retraction and pressure advance, were completely different and should have been tuned first. Also, with layers that are both thick and tall, much more part cooling is required. So I apologise that much of this tuning was done “on the fly” as the print progressed. However, regardless of these initial defects, I think I was able to demonstrate the maximum possible filament flow rate.
I guess now would be the best time to present the results and demonstrate the tests as they were run. Readers should maybe take a break, prepare a hot drink (or a cold beer), then watch the video (some of which might surprise you). The entire video is about 25 minutes long but the high speed stuff with the 0.5mm nozzle is all in the first 12 minutes or so. The test with the 0.9mm nozzle start at about 17 minutes. The part in between shows printer shake tests and the load balancing gantry in use, but this is not relevant to the purpose of this post.
With the 0.5mm nozzle and 0.3mm layer height, there was no visible sign of under extrusion up to 240 mm/sec print speed. Under extrusion became visibly apparent at a maximum speed of 300mm/sec. Increasing the print temperature from 195 deg C to 210 deg C at that speed appeared to cure this under extrusion. In practice, increasing the temperature would not be a good thing to do if the printed part contained both long and shot moves – i,e finer detail. This is because these shorter moves would not reach the maximum speed, so they would be slower and an elevated temperature under those conditions would likely lead to problems.
With the 0.9 mm nozzle and 0.6 mm layer height, there was no visible sign of under extrusion up to 100mm/sec print speed. Above this speed, under extrusion is visibly obvious.
Apart from the test with the 0.9mm nozzle, there is no discernable difference in surface finish between any of these tests apart from when under extrusion is obvious – i.e. the lower section of the part which was printed at 300mm/sec and at a temperature of 195 deg C. The upper section of this part, which was printed at 210 deg C has a surface finish that is visibly the same as all the other parts. All the printed parts showed nice sharp corners with no bulging. There are what appear to be striped bands around the objects but these are colour variations rather than raised ridges or hollow valleys. They do not show as dimensional differences on the corners. The coarsely rendered and segmented curve is smoother and appears less segmented on the parts printed at higher speeds.
Much of the finish of the part printed with the 0.9mm nozzle was not good. This is because a lot of tuning went on as the test was being run. So the corner where layer change took place was particularly nasty because the amount of retraction required differed greatly from the set value. Also, the first part of the print had far too little cooling for the volume of filament being extruded. Then, under extrusion was very apparent at speeds in excess of 100mm/sec. The final section with retraction somewhere about right and at 100mm/sec, is fairly reasonable though (considering the coarse layer height).
The dimensional accuracy was measured and tabulated in a spread sheet. Unfortunately, this free version of WordPress does not allow me import tables but I’ll make the spread sheet available to anyone who wants it. I have managed to export the file as pdf then convert that to a jpg and import the jpg files. It’s a bit messy and has resulted in two jpg files but I’ll put them in any way.
There is very little difference of the X and Y dimensions, both close to the base and close to the top between all the parts. Test 1 to 4 had 3 perimeters using a 0.5mm diameter nozzle so the expected wall thickness was around 1.5mm depending on what Slic3R decided was an appropriate layer width. Again, there is very little difference between measurement points., and also between parts. One could argue that there is some slight thinning of wall thickness at the higher speeds, but it is minimal. Test 5 had only 2 perimeters with a 0.9mm nozzle so the expected wall thickness was 1.8mm.
So overall, the dimensional accuracy and wall thickness was quite reasonable with no large discrepancies as might have been expected due to under extrusion.
The following calculations give a rough guide to the attained maximum melt rates. I haven’t taken into account the fact that the slicer may have used a layer width greater than the nozzle diameter, nor any effects of die swell.
Using a 0.5mm nozzle a rough calculation of volume flow (melt) rate is as follows:
Layer width = 0.5, layer height = 0.3, so area = 0.15mm^2. The maximum speed before under extrusion became obvious with a temperature 195 deg C was 240mm/sec. So volume flow rate = area x distance/sec = 36 mm^3/ sec
Increasing the temperature to 210 deg C increased the speed before under extrusion to 300mm/sec so using the above calculations, the volume flow rate becomes 45 mm^3/sec
Using another method. The time taken for the print at 240mm/sec was just slightly over 3 hours. The amount of filament consumed was just over 90,000 mm. Slic3R tells me that the volume of filament was slightly more than 216 cm^3. So for the entire print, we have 216,000 mm^3 of filament extruded over (3*60*60) 10,800 seconds which gives an average volume flow rate of 20mm^3/sec for the entire print. That includes the warm up time and layer change pauses where no filament was extruded, and acceleration and deceleration phases where speeds and therefore volume flow rates, were reduced.
Using a 0.9 mm nozzle, the calculations are:
Layer width = 0.9, layer height = 0.6, so area = 0.54mm^2. The maximum speed before under extrusion was 100mm/sec. So volume flow rate = 54 mm^3/sec.
It should be noted that the 0.9mm diameter version has exactly the same size melt chambers as the 0.5mm diameter version. The only difference is the nozzle diameter.
All the tests were conducted with a standard 40Watt cartridge heater. The video shows that even when changing to the highest volume flow rates, the maximum drop in hot end temperature was 0.4 deg C and this temperature recovered to the set temperature within about 15 to 20 seconds of the speed (and therefore extrusion rate) change.
- Using a 3 input Diamond hot end of 0.5mm nozzle diameter and with 0.3mm layer height, and “normal” print temperatures, it is possible to print at 240mm/sec for sustained periods of time while giving acceptable print quality.
- Raising the temperature by 15 deg C increases that maximum speed to 300mm/sec.
- Using a 0.9mm nozzle Diamond hot end with 0.6mm layer height, the maximum print speed before under extrusion is evident is 100mm/sec.
- The maximum volume flow rate for a 0.5 mm Diamond nozzle is in the order of 36mm^3/sec at normal print temperature (in this case 195 deg C).
- At elevated temperature (in this case 210 deg C), the volume flow rate increases to around 45mm^3/sec for a 0.5mm diameter nozzle.
- For a 0.9 mm diameter Diamond nozzle, the volume rate is in the order of 54 mm^3/sec.
- From (5) and (6) above, it becomes apparent that a larger nozzle will be capable of delivering a higher volume flow rate than a smaller one.
- A 40 Watt heater is capable of melting filament fast enough to achieve a volume flow rate in the order of 54 mm^3/sec.
The area of a 0.4mm nozzle is about 0.126mm^2 but the area of a 0.5mm nozzle is about 0.196 mm^2. That is about 50% larger. Given that a much higher volume flow rate was achieved when going up from a 0.5mm diameter nozzle to a 0.9 mm diameter nozzle, it follows that a smaller 0.4mm diameter nozzle might lead to lower maximum volume flow rates.
The highest volume flow rate with the large nozzle was in the order of 54mm^3/sec. The area of 1.75 mm filament is about 2.4mm^2. Therefore at that flow rate, the filament speed would be about 22mm/sec for a single extruder. But using 3 inputs and therefore three extruders, the filament speed for each input is roughly 7.5mm/sec.
As ever, I hope some of the above post has been of some interest or value for some of you. All comments welcome but be aware that I have full moderator rights which I do use for anyone who thinks it’s fun to be rude or abusive. Also, just a reminder that I do what I do for no personal gain, but merely to try and impart what I find in the hope that this knowledge will help others.
CONTENTIOUS COMMENTS BASED ON MY OBSERVATIONS
Finally as this is my blog, (and because I can), I’m going to make some contentious comments and bust a few myths. At least they are busted in my eyes and based on the testing I have done.
If you don’t like contentious comments, read no further.
- You need a bigger heater to melt filament fast – BUSTED – as shown above, 40 Watts can melt in the order of 54 mm^3/sec
- High speed and high mass, or just bigger machines, need 10mm belts or bigger. – BUSTED – I throw 4Kgs around at 300mm/sec and use 6 mm belts. These belts have been in use for around 2 years.
- Timing belts stretch – BUSTED – for the same reasons given above and I have never had to re-adjust the belt tension. (Caveat – cheap imitation belts from dubious sources might stretch).
- Lower mass will let you print fast – BUSTED (but with a slight caveat). For reasons given in the methodology above, you can’t use a high acceleration because the rate that the filament comes out of the nozzle cannot be accelerated fast. Pressure advance will only compensate up to a point, beyond which under extrusion at the start of a move is inevitable as the head will move faster than the rate of change of filament extrusion from the nozzle. So if acceleration is limited by what the filament can do, and the motors are capable of accelerating the mass much faster than that, what is the point in lowering it further? The caveat is that the lower mass will allow faster non-print moves but these generally make up a small proportion of the overall print time. My total mass in Y is about 4.2 Kgs but spread over 2 gantries. The worse case is the extruder gantry with carries about 2.2 Kgs in total (include the X carriage and rails). Now I accelerate this at 1,000mm/sec^2 but the motors are capable of achieving more than double that. So if your gantry weighs (say 500gms), you might want to think twice about buying those expensive carbon fibre rods or the expensive light weight extruder that will save 50 to 100 gms, if the reason for reducing mass is that you think you will be able to print faster. Because, you can probably already accelerate the print head much faster than the filament can cope with, so you won’t be able to make use of the weight saving. Also, the higher the mass, the lower the resonant frequency so as mass decreases, one of the possible causes of ringing increases. In a nutshell, why reduce mass to attain higher print speeds, if mass itself is not a limiting factor?
- You should never use printed parts on a 3D printer – BUSTED (with a slight caveat) In true RepRap fashion, everything on my printer apart from nuts, bolts, aluminium extrusion and other “minerals” has been printed. All the gantry and carriage plates, idler and pulley mounts, brackets, end stop fittings, electronics enclosures, motor mounts etc etc. are all printed parts – most of them from everyday PLA. The caveat is that motor mounts can distort from heat if you don’t cool the motors.
Until next time.