Relation extrusion speed - printing speed

General discussion of 3D printers

Relation extrusion speed - printing speed

Postby Roel » Sat Jun 21, 2014 6:15 pm

Hello all,

Currently I am working on an experimental investigation directly related to 3D printing. I have an open issue and I know someone should know the answer but I can not find it on the internet nor in any literature yet. So hopefully you can help me. Here it comes:

Does anyone know the (general) algorithm of the slicing software to calculate the filament extrusion speed from the (input) printing speed? I am not a software expert so I am not able to check the sourcecode. Normally I would expect the following:

extrusion speed * area of the filament = printing speed * nozzle diameter * layer thickness.

Still I am not sure if this is really used in the software.

Thanks in advance for your help!

Best regards,
Roel

3D printer: MaukCC Cartesio
Software: Repetier Host in comb. with slic3r
Roel
 
Posts: 2
Joined: Fri Jun 20, 2014 2:22 pm

Re: Relation extrusion speed - printing speed

Postby cvoinescu » Sat Jun 21, 2014 9:42 pm

It's actually more complicated than that.

It started with the slicer outputting the desired length of extruded filament. You had to calibrate your extruder axis steps-per-mm in steps-per-mm-of-extruded-material, which was hard to do accurately. It depended on the nozzle diameter, obviously, but also on temperature, material type (PLA vs ABS), and even material color (pigments affect flow, and some colors of nominally the same material are actually different -- clear and black ABS tend to be different from all other colors). This method is no longer used.

A few years ago, it changed to slicers outputting the desired length of raw filament to be pushed through. This is much easier to measure accurately and calibrate. If the filament cross-section is known and entered correctly in the slicer, this leads to precise control of the extruded volume. This has been standard for a while, and it is still currently used. However, it has the disadvantage that each change of filament diameter requires slicing the model anew.

To solve this, the newest method is for the slicer to output the desired volume of filament to be extruded, in mm³. This way, the model needs to be sliced once for a given layer thickness, regardless of filament diameter. The diameter is then configured in the firmware, and the firmware converts from mm³ (volume) to linear mm of the given filament diameter, then to steps. Newer versions of Marlin support this.

Now, regardless of how the plastic volume is expressed (either of the three methods), the tricky part is to determine how much filament is actually needed. The standard technique, explained in the slicer documentation (at least for skeinforge), is this: the filament is assumed to be deposited in a roughly oval cross-section, as tall as the layer size, and of a width that depends on the quantity extruded. More plastic leads to a wider shape; less plastic leads to an almost round cross-section, barely flattened at all. The slicer has to make an assumption about this shape. It is less than the area of a rectangle of layer height by extrusion width; how much less is a user parameter, by default 85%.

Surprisingly, the nozzle diameter hardly matters at all. This is because the material is constrained by the layer thickness (the distance between the previous layer and the bottom of the nozzle tip), but it's free to flow and expand sideways. This is used to great effect by the slicer software, which can use a wider extrusion for the perimeter layers and a narrower one for the infill, for instance -- or even wider extrusion for the hidden bluk of the part, and narrower, finer (but slower) extrusion for the visible surfaces.

Also, the way G-code works, and the way that makes more sense, is to control not the speed, but the distance (length). The firmware will keep the motions synchronized*, resulting in a speed of extrusion that's proportional to the speed of movement during the entire move. So the formula is more like:

extrusion volume = print distance * extrusion width * layer thickness * 85%.

The extrusion volume can be outputted as such (the newest method), or as filament length = extrusion volume / filament cross-section area (currently the most popular method). As I said above, the width is a slicer parameter and does not depend a lot on the nozzle size; still, it's a good idea to extrude wider than the nozzle size, but not a lot wider. So a finer nozzle would allow you to extrude narrower "sausages", but it would reduce the maximum speed a lot.

It's not true that there isn't anything online; there's plenty (how do you think I learned all this?). Take some time to read the Skeinforge documentation, for instance. This page has some pictures of an advanced slicing algorithm, just to give you an idea of what is possible with a single nozzle size. This bit discusses (with links to read) exactly your question; I think my summary is easier to understand, but if you need details, there they are.

* Modern firmwares do better than this: rather than simply keep the extruder motion synchronized with the XY motion, they compensate for the non-instantaneous reaction of extruders by moving the extruder slightly in advance of the XY motion. This is actually a very well thought out process, and there's been a lot of progress in the last few years: modern firmwares do a lot of smart stuff like this. For instance, they can automatically increase the temperature of the hot end if a larger volume is about to be extruded. A lot of this logic has moved, over time, from the slicer to the firmware, where it helps make the sliced files more general and more portable; and some of it (the extrusion advance logic) would not have been possible to implement in the slicer at all, because the slicer does not have enough information about how the firmware plans the motions.

Edit: This article may or may not contradict my assumption that the actual extruded cross section to rectangle area is a user-defined parameter defaulting to 85%. I am not that sure anymore -- the cross-section may actually be calculated as shown in that article, for the oval shape. Read this too.
cvoinescu
 
Posts: 501
Joined: Thu Aug 09, 2012 9:12 am
Location: Camberley, Surrey, UK

Re: Relation extrusion speed - printing speed

Postby Roel » Tue Jun 24, 2014 7:24 pm

Hello Cvoinescu,

Thank you very very much for this very usefull and well explained information. I did not expect to get this kind of quality as an answer to my question. Me and a few of my students are working on this research and you helped us a lot. Thanks again. It is enough information to keep us busy for the comming two weeks or more.

Thanks again!!!

Roel
Roel
 
Posts: 2
Joined: Fri Jun 20, 2014 2:22 pm

Re: Relation extrusion speed - printing speed

Postby cvoinescu » Tue Jun 24, 2014 10:20 pm

You're welcome. I did not expect to write such a long answer when I started, but I have this habit of getting carried away. Do follow my last link, and read the stuff by nop head, including the link in the first comment to that.

I was wrong about 85% -- I was confusing it with a fudge factor that's used to account for the fact that the drive wheel teeth sink deeper in softer plastic (ABS is softer than PLA), so the effective diameter of the wheel appears smaller and feeds less filament per revolution.
cvoinescu
 
Posts: 501
Joined: Thu Aug 09, 2012 9:12 am
Location: Camberley, Surrey, UK


Return to 3D Printer General Discussion

Who is online

Users browsing this forum: No registered users and 23 guests