Determine real nozzle diameter
-
I am using an Anet A8 (except for the Duet Wifi part) and this supposedly comes with a MK8 0.4mm nozzle. I did not yet question this but I went through the extruder calibration described at https://mattshub.com/2017/04/19/extruder-calibration/. (I know there is a much more detailed calibration somewhere in the RepRap forums (at least I think it was there) but for this... cheap... extruder it does not make too much sense IMHO.)
Now, I calibrated my steps/mm - and I found out that RRF supports up to three decimal places, that's cool!
Next I printed the cube as described. I use Cura as a slicer and from what I can tell, Cura uses the configured nozzle diameter as wall thickness base value, hence 0.4mm.
When I measured the cube, though, it had walls with a thickness of 0.54mm. I can't believe that a nozzle could be that much off. I would need to reduce the extrusion multiplier to 74% to get to 0.4mm (I tried and it works). I also measured my filament and it is 1.78-1.8mm around the part that I used to print. This is only about 2.5% above the expected 1.75mm and also cannot explain why my wall thickness would be that much off.
So I rather believe that Anet either put a 0.5mm nozzle in the package or the quality of the nozzle is so bad that about 1kg of regular PLA already was abrasive enough to widen the nozzle to 0.5mm - none of both would strike me as a surprise though.
Now to my question: can I derive my real nozzle diameter the way I described above or is there an easy way to determine the real diameter that would be more reliable?
-
I was puzzled to find that Slic3r was dead on horizontal dimensions and Cura was off by several tenth of millimeter. I compared gcode from both and found out that Cura needs a line width of 0.45mm and an extrusion factor of 87.84% to match Slic3r
-
You should be aware that one of Cura's limitations is that it doesn't do thin walls at all well. This is because all walls are printed with two lines (the outside perimeter and the hole inside it. It does have what is known as "overlap compensation" which tries to reduce the flow for wall lines that don't actually fit in the space that is available. So, in theory, when you have a wall that is only as wide as the line width (note, not the same as the nozzle width), one of the lines will be printed using the normal line width and the second wall should be flow reduced down to nothing. Unfortunately, the overlap compensation part of Cura is very flawed and so the result is a bit hit and miss.
-
@burtoogle I did set Cura explicitly to Wall Count 1 and looking at the Gcode output by it I can confirm it just did one single perimeter. I tried also with Spiralize Outer Contour. Actually the results reported above are done with such a test cube slice with Spiralize Outer Contour enabled. When I disable it (as mentioned still get one wall only) extrusion with is reduced to 0.5mm but that is still 25% larger than the configured 0.4mm.
I will attach both GCode files here
Also when I just extrude filament into thin air with 100mm/min the strand coming out of the nozzle also measures 0.5mm.
Btw: I am the one reporting the issue with FW Retract + Relative Extrusion + Coasting - I patched CuraEngine with your fix and it is working flawlessly since. Still waiting on your Pull Request being merged.
-
If you have a 0.4mm nozzle then you won't be able to print line widths less than about 0.5mm reliably.
-
@dc42 Can you explain a little bit why that is?
-
Ah, I should have paid more attention - the cube was solid, it didn't have a hole in it so there would only be one wall, not the two I was rambling on about earlier.
I sliced that test cube using 0.2mm layers and a wall line width of 0.5mm and the extrusion rate in the gcode was such that the amount extruded per mm would fill a rectangle 0.2mm x 0.505mm.
For a line width of 0.4mm the result was 0.2mm x 0.397mm.
Yeah, Cura PRs hang around for months. I'm afraid the Cura devs are all far too busy to pay much attention to contributions.
-
@wilriker said in Determine real nozzle diameter:
@dc42 Can you explain a little bit why that is?
Two reasons:
-
Die swell.
-
If you printed lines with a circular cross section, there would be no inter-layer adhesion. So you want the extrusion to be squashed vertically - which is why you always print with a layer height below the nozzle diameter. This squashing inevitably means that the extruded filament will expand widthways.
-
-
When the layer height is 0.2mm and the line width is 0.5mm. Cura extrudes an amount that corresponds to a rectangle 0.2 x 0.5. The height of the extrusion is constrained but the width isn't and so the runny plastic prefers to expand sideways rather than "fill the corners" of the cross section rectangle.
Compare these cross sections that are intended to have the same area:
---------------- | | | | | | ---------------- /--------------\ / \ | | \ / \ -------------/
I'm sure you get the idea.
-
@burtoogle Now I get it. Thanks for making this visual, that helped a lot. Also thanks @dc42 for mentioning "die swell" that explained the part why it is also wider when simply extruding into thin air.
Now, maybe you could answer one last question: my Cura is set to a line width of 0.4mm (which simply is the default when configuring a 0.4mm nozzle). Obviously 0.5mm is much wider than this. When I do the extruder calibration like described on the page that I linked in the first post, what width would I aim for then? If I go for 0.4mm I would have to reduce flow rate to 74% which seems ridiculous to me. Do you have any advise? (It may even be something like "ignore that nonsense as long as you are happy with your prints" )
-
I use a 0.4mm nozzle and almost always use a line width of 0.5mm for walls and maybe 0.6mm for infill. That's for 0.2mm layers. Sometimes, when I really have to fit a wall in a small gap I will reduce the wall line width but I really try to avoid using less than 0.5mm.
At the end of the day, what numbers you use are completely irrelevant as long as the print quality is acceptable. I am getting very nice quality prints using either PLA or PETG.
-
@burtoogle OK, that makes sense to me. But currently Cura is configured to 0.4mm line width and what actually comes out of my nozzle is 0.5mm - which means on two perimeters the wall already is 0.2mm wider than what Cura was planning to produce.
If I set Cura to 0.5mm line width now, it will probably extrude even more plastic that would make the walls thicker again.
I am basically very happy with my prints and so far I only had issues when printing holes where screws are supposed to tap in (this might be related to printer creating wider walls and thereby smaller holes than what Cura is planning).
But I am also very pedantic and would have my workflow configured consistently so that when I change something I know it will do what I expect.
Do you know any way how I can get this discrepancy fixed? -
Small holes are particularly problematic because the inside and outside radii of the wall differ so much. It effectively overextrudes inside of the wall's centre line and underextrudes outside of that centre line. I can't remember who did the work now but years ago someone came up with a scheme whereby the number of points used for the wall of a circular hole would reduce as the hole diameter got smaller. For really small holes, the wall ends up having just 3 points (i.e. it's a triangle). Holes a little larger have 4 points, and so on. It actually worked pretty well.
Here's the scad that does this:
module polyhole(h, d, taper = 1) { n = max(round(2 * d),3); r = (d / 2) / cos (180 / n); rotate([0,0,180]) cylinder(h = h, r1 = r, r2 = r * taper, $fn = n); }
-
@burtoogle I will try this SCAD module in my next print with holes (there will be a box for the Duet soon).
-
@burtoogle I think that might have been nophead
http://hydraraptor.blogspot.ca/2011/02/polyholes.html?m=1
http://hydraraptor.blogspot.ca/2014/06/why-slicers-get-dimensions-wrong.html?m=1
-
@phaedrux said in Determine real nozzle diameter:
@burtoogle I think that might have been nophead
Yes, I think you're right. I couldn't remember, sorry nophead.