A potentially confusing area when setting up prints with Silkworm is the amount of plastic that needs to be flowing through the extruder in order to get a desired thickness of printed line. This post is meant to illuminate the principles and calculations involved in this, as well as develop how you can use this understanding to better control the materiality of the printed object.
G Code offers an instruction to the printer’s motors to move to a specific coordinate and maybe do something while it is moving.
The plastic flow of your extrusion refers to the amount of plastic being moved through your extruder over the course of a movement from one point to another. In Rep Rap G Code, this flow is measured as the millimetre length of plastic filament being pulled into the extruder from your spool (the E value above). Because of this all the calculation for plastic flow is left to the software or user creating the G Code.
In order to calculate the amount of plastic being pushed out of the end of the nozzle, and thus the thickness/ height of the line of plastic being printed, it is important to note the shape of the forces acting on the molten plastic (see illustration below). These forces cause an irregular shape to be produced. The calculation to find the amount of plastic needed to produce a given width of printed line needs three parameters, filament diameter, nozzle diameter and layer height of the print.
This diagram shows the cross section of an extruded line. A length of plastic filament coming into the extruder assembly (which is the length that the G Code counts) is pulled through the heating element and extrudes through a nozzle which is smaller than the diameter of the filament. When it comes out of the nozzle there is another set of calculations that can help us understand how the geometry is determined, and how to control the output.
Here are some calculations and principles from Josef Prusa (you can find the explicit calculations in the source code, Ctrl+U):
- Layer Height (LH) = height of each printed layer above the previous
- Line Width (LW) = width of extruded line
- Width Over Height (WOH) = line width/ layer height
- Free Extrusion Diameter (extDia) = nozzle diameter + 0.08mm
- Line Width (LW) = LH ×WOH
- Free extrusion cross section area (freeExt) = (extDia/2)×(extDia/2)×π
- Extruded line cross section area (extLine) = LW ×LH
- Suggested bridge flow-rate multiplier = (freeExt*0.7)/extLine
- WOH smaller than 2.0 can produce weak parts
- WOH bigger than 3 decreases the detail of printed part, because of thick line
- Minimal extrusion cross section area for stable extrusion (minExt) = freeExt×0.5
You can reverse engineer some of these calculations to understand a few basic principles. Basically everything is driven by the choice of layer height and line width. Layer height primarily affects the smoothness of solid elements and adhesion to plastic beneath (large layer heights will create potentially brittle prints). Line width can determine the accuracy of detail in solid printing, but it is important to have a thick enough line to adhere to neighbouring lines if a solid surface is to be achieved. The difference between free extrusion cross section area calculation and extruded line cross section area calculation is that the first is a cross section through the plastic as it is free falling from the nozzle (i.e. a cylinder), and the second is a cross section through the plastic as it is being extruded onto a surface below it (i.e. a squashed cylinder, see diagram above).
To calculate how much ingoing filament is required for a given layer height to achieve a specific line width we need to first do the calculation as areas. If x is the amount of filament going in (which we want to calculate):
Filament cross section = x multiplied by filament diameter
Extruded (squashed) cross section = layer width multiplied by layer height
Ratio of extruded plastic to filament= nozzle diameter divided by filament diameter
Thus we can find that cross section area of x = extLine (LW ×LH) multiplied by the above ratio
and x will then be that divided by the filament diameter
The feed-rate (the F value above) of a movement in G Code is the speed (measured in mm/s) that the motors of the printer move all together. Thus it is the speed at which the printer will move to a coordinate and/or extrude or retract plastic.
As you can see from these two prints; the feed-rate of the movement, which varies as the extruder moves around the curves, when set against a constant flow rate, will stretch the plastic at higher speeds. This created the effect of very delicate strands of plastic, but because the plastic is a continuous strand, it still retains a certain amount of material strength and springiness.
Taking flow and feed-rates one step further, stringing is the act of creating strands without any plastic flow. Usually regarded as an error in the print, the diagrams below demonstrate how it is achieved with changes in nozzle chamber pressure:
In Silkworm the chamber pressure of the nozzle, as well as the start and end vectors for a particular movement, can be controlled through the use of Delimiters:
The Delimiter allows complete control over the start and end conditions of a movement, and the connecting, non-extruding movements between extruding movements. By specifying a different chamber pressure at the beginning or end, it is possible to created specific stringing and warping effects in the material product.