We often get asked how we calculate our flow rate.
The flow rate is calculated based on the following parameters:
- Nozzle (extrusion) width, as specified on the head (or, optionally, in gcode); should match the extrusion width in your recipe and gcode.
- Layer thickness (height), as specified in your gcode. Width times Height tells us the Cross Section of your print path.
- X/Y/Z distance to move from current position, as specified in your gcode. Cross Section times Distance tells us the Volume to be printed this move.
- Print speed, as specified in your gcode. Volume divided by print speed tells us how many nl per second to dispense.
- Pulses/nl, as specified on the head (or, optionally, in gcode). Pulses/nl times nl/second tells us how many pulses per second to dispense.
- Feed Rate %, as specified on the head (or, optionally, in gcode). Feed Rate % is a direct modifier of your other calculations; 1.00 = no modification; 0.90 means 10% less flow, etc.
So, how can you specify this in GCode?
One of the things that a slicer does is generate extrusion values along with the moves, so that printers know how much material to deploy (or not to deploy any) during a move. For example:
G1 X107.310 Y122.630 E1.45876
This line tells the printer to do a normal speed move from the present location to position X=107.310 and Y=122.630 while extruding a certain amount E1.45876 of material. However, on Hyrel machines, the material feed rate is calculated from the data stored on the print head, and is not taken directly from the gcode.
We do a simple boolean check on the G1 move to determine if it is a printing move or not (if it has an E value or not), and we calculate our own flow based on path width, layer height, pulses per nanoliter and the FR Scale which are stored in the head data. We also calculate our own prime/unprime settings based on the data displayed and stored on the print head.
The default setting for the EMO-25 is 1.76 pulses/nl and 1.0 feed rate. In gcode, this is:
M221 S1 P1.76 T12
This tells the printer to do a Set tool values of Feed Rate Adjustment (fudge factor) times Pulses per nanoliter for the Tool at Yoke 1, Position 2
This is sourced in as a default when you start the job, but can be changed programmatically in the gcode as follows: