Flow Rate

From Hyrel3D
Jump to: navigation, search

M221 Note!

This page describes our native Hyrel flow calculations. If you are using M229 E1 D1 to opt in to using the E values produced by the slicer, IGNORE THIS PAGE.

Overview

We often get asked how we calculate our flow rate.

365现金买球不使用您的切片器生成的E(流)值或前进/撤回命令. This means we do not use your slicer-generated extrusion width variations, filament width variations, flow rate multipliers, or any of that.

What do we use? 365现金买球使用X/Y/Z定位和速度,365现金买球使用温度和冷却. 365现金买球不使用您的流命令-除了确定哪些是和不是打印移动.

365现金买球根据以下参数计算每一步的流量:

  1. Nozzle (extrusion) width, as specified on the head (or, optionally, in gcode); should match the extrusion width in your recipe and gcode.
  2. Layer thickness (height), as specified in your gcode. Width times Height tells us the Cross Section of your print path.
  3. Print speed, as specified in your gcode. Volume divided by print speed tells us how many nl per second to dispense.
  4. 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.
  5. 材料流量倍增器,如在头指定(或,可选,在gcode中). Material Flow Rate Multiplier is a direct modifier of your other calculations; 1.00 = no modification; 0.90 means 10% less flow, etc.

Note: Versions 1.x and 2.x used pulses per ~10 nanoliters (nl). Version 3.x uses pules per microliter (μl).


我只是需要为另一个客户再次输入这个,所以我将保存文本在这里:
To determine flow we consider:

1. Path Width, as specified in the nozzle diameter paramenter on the data for that print head (不是切片器中的路径宽度)[除非你手动在gcode中硬编码一个值];

2. Path Height (or Layer Thickness), as specified in your gcode by an M756 command with an S (slice thickness) value (NOT on the print head);

- 1 x 2 - these two define the a cross section to fill during this move.

3. Print Speed, as specified in your gcode by a G1 command with an F (feed rate) value (which should be set by your slicer, but may be edited afterward);

- 1 x 2 x 3 - cross section times linear speed gives us volume per unit time (in nl/sec) to be dispensed.

4. Pulses per Microliter (on v3, this was pulses for 10 nanoliters), as specified on the data for that print head (不是切片器中的路径宽度)[除非你手动在gcode中硬编码一个值];

- 1 x 2 x 3 x 4 - volume per unit time times pulses per unit volume gives us how fast in pulses per second to dispense.

5. Material Flow Rate Multiplier, as specified on the data for that print head (不是切片器中的路径宽度)[除非你手动在gcode中硬编码一个值];

- 1 x 2 x 3 x 4 x 5 -每秒脉冲由材料流量倍增器(默认为1)修改,以解释纤维尺寸过大/过小或由于粘性材料造成的滑移.

365现金买球还决定何时在打印和非打印移动之间过渡, 并根据打印头中存储的变量进行prime (advance)和unprime (retract)处理(或者在gcode中手动指定).

GCode

So, how can you specify this in GCode?

切片机所做的事情之一是随着移动生成挤压值, 这样,打印机就知道在移动过程中需要部署(或不需要部署)多少材料. For example:

G1 X107.310 Y122.630 E1.45876

这一行告诉打印机以正常速度从当前位置移动到当前位置 X=107.310 and Y=122.630 while extruding a certain amount E1.45876 of material. However, on Hyrel machines, 材料的进料速度是根据存储在打印头的数据计算出来的, and is not taken directly from the gcode.

365现金买球对G1移动做一个简单的布尔检查,以确定它是否是一个打印移动(是否有E值), and we calculate our own flow based on path width, layer height, 每10纳升的脉冲和储存在磁头数据中的FR刻度. 365现金买球还根据打印头显示和存储的数据计算自己的质数/非质数设置.

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

这告诉打印机设置材料流量倍增器(以前称为进料速度调整或“蒙混系数”)的工具值。 S1 times Pulses per 10 nanoliters P1.76 for the Tool at Yoke 1, Position 2 T12.

This is sourced in as a default when you start the job, but can be changed programmatically in the gcode as follows:

 G1 F1200            ; set print speed to 1200 mm/min (20 mm/sec)
 G1 X10 Y10 Z0.25    ; move to start of line 1
 M221 S1 P1.76 T12   ; set extrusion rate to 1*1.76 on yoke 1, tool 2 (base value)
 G1 X60 Y10 E1       ; 1st printing move
 G1 X10 Y20          ; move to start of line 2 
 M221 S1.1 P1.76 T12 ; set extrusion rate to 1.1*1.76 on yoke 1, tool 2 (10% greater than line 1)
 G1 X60 Y20 E1       ; 2nd printing move
 G1 X10 Y30          ; move to start of line 3
 M221 S1.2 P1.76 T12 ; set extrusion rate to 1.2*1.76 on yoke 1, tool 2 (20% greater than line 1)
 G1 X60 Y30 E1       ; 3rd printing move

To give this more depth, here is exactly how we calculate the flow rate.

At the start of a job (when you click "Run Job"), Repetrel通过gcode命令向STM407运动控制器发送设置, based on the data you have displayed for that print head. For our example, I have a MK1 head loaded in slot 2:

 M6 T12 O2 X0 Y0 Z0
 M721 S10000 E300 P80 T12
 M722 S10000 E300 P105 T12
 M221 S1.0 T12 P0.80 W0.5 Z0.3

Let's break this down:

M6 T12 O2 X0 Y0 Z0 -设置工具2的偏移量(通常为零,除非你有头配合打印, but you could program them for their distance from center; T2 is centered on newer printers, and 35mm off center in the +X direction on older printers. 在所有打印机上,T3偏离中心35mm在-X, T1是70mm +X, T4是70mm -X.

M721 S10000 E300 P80 T12 -设置插槽2 (T)的UNPRIME值,速率(S),最小驻留时间(E)和脉冲(P)

M722 S10000 E300 P105 T12 - sets the PRIME values as above;

M221 S1.0 T12 P0.80 W0.5 Z0.3 - sets up your flow data: S1.0 = adjustment value of 1.0 (100% of the pulses per 10 nanoliters) T12 = tool at yoke 1, slot 2 P0.80 = pulses per 10 nanoliters W0.5 = extrusion width Z0.3 = Z layer thickness

现在,这些变量中的任何一个或所有这些变量都可以由后续变量更新为新值 M221 command; all values are persistent unless/until updated to a new (possibly 0) value later on in the code - or by adjusting the S or P values live on the print head.

Immediate Commands

While M721 S10000 E300 P105 T12 will set up the prime values for the print head, it will not cause these values to be executed.

M721 I1 will cause that print head last addressed (or M721 T12 I1 if you want to specify) to perform the unprime at this point in the code, with the values previously stored for that head.

Likewise, M722 I1 will cause the print head to do a prime.

Initial Numbers

So, sometimes people ask us where we get our numbers for pulses per microliter, and prime, and unprime.

Flow

First, we determine the flow. M221 is detailed at http://hyrel3d.net/wiki/index.php?title=Gcode#M221_Set_Flow_Rate but I will reproduce this here:

M221 sends information to the printer about material flow:

  • P is the number of pulses on the motor to dispense 10 nl of material;
  • S是直接流量倍增器(允许库存过小或过大;
  • W is the width of the cross section of the volume to fill;
  • Z is the height (layer thickness) of the cross section of the volume to fill; and
  • T is the tool (head) to which these values will be applied.

Here is an example:

 M221 S1.0 T11 P77 W0.5 Z0.3

These commands are decoded and executed by the printer as follows:

  • M221 (Set Flow Rate)
    • S1.0 (flow multiplier of 1.0)
    • T11 (for far left head)
    • P77 (77 pulses per microliter)
    • W0.5 (0.5mm nozzle)
    • Z0.3 (0.3mm层厚度)-注意你的gcode M756将覆盖这个值)


这可以像设置z - 0一样简单,然后像这样打印一条“数字蛇”——以恒定的速度打印一系列长的行(没有页眉和页脚), using slot 2 (T1):

 T1
 G0 X50 Y50
 G1 X150 Y50 E1 F2000
 G1 X150 Y60 E1
 G1 X50 Y60 E1
 G1 X50 Y70 E1
 G1 X150 Y70 E1
 G1 X150 Y80 E1
 G1 X50 Y80 E1
 G1 X50 Y90 E1
 G1 X150 Y90 E1

So, that's fine if everything's perfect. 但是假设你的脉冲量被设定为每微升80次,但是你没有输出足够的物质. We would change the flow parameters with each line, like this:

 T1
 G0 X50 Y50
 M221 T12 P81 ; 81 pulses
 G1 X150 Y50 E1 F2000
 G1 X150 Y60 E1
 M221 T12 P82 ; 82 pulses
 G1 X50 Y60 E1
 G1 X50 Y70 E1
 M221 T12 P83 ; 83 pulses
 G1 X150 Y70 E1
 G1 X150 Y80 E1
 M221 T12 P84 ; 84 pulses
 G1 X50 Y80 E1
 G1 X50 Y90 E1
 M221 T12 P85 ; 85 pulses
 G1 X150 Y90 E1

Now, we'll inspect these lines, and let's say the lines printed with 83 pulses was very good, but we want it to be even better; we'd do this:

 T1
 G0 X50 Y50
 M221 T12 P82.4 ; 82.4 pulses
 G1 X150 Y50 E1 F2000
 G1 X150 Y60 E1
 M221 T12 P82.6 ; 82.6 pulses
 G1 X50 Y60 E1
 G1 X50 Y70 E1
 M221 T12 P82.8 ; 82.8 pulses
 G1 X150 Y70 E1
 G1 X150 Y80 E1
 M221 T12 P83 ; 83 pulses
 G1 X50 Y80 E1
 G1 X50 Y90 E1
 M221 T12 P83.2 ; 83.2 pulses
 G1 X150 Y90 E1

Now, we inspect these again, and decide that 82.8 pulses is our number. 或者,365现金买球可以以较小的增量重复这个过程,直到365现金买球得到最合适的数字. Then we'll test it on actual prints.

When we're happy with the flow number, we'll move on to the Unprime...

Unprime

Now we need to dial in the Unprime. M721 is detailed at http://hyrel3d.net/wiki/index.php?title=Gcode#M721_Set_Unprime_Values but I will reproduce it here:

当检测到从打印移动到非打印移动的过渡时,M721向打印机发送信息,说明有多少材料要取消:

  • S is the speed at which unprime moves should be executed; this is normally 10,000;
  • E is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials;
  • P是为接下来的移动启用流率之前暂停的毫秒数;
  • T is the tool (head) to which these values will be applied; and
  • I is the flag for executing an Immediate action; so M721 I1 would execute an unprime with the previously specified values at that point in the gcode.

Here is an example:

 M721 S10000 E100 P-15 T11

These commands are decoded and executed by the printer as follows:

  • M721 (Set Unprime Values)
    • S10000 (10,000 pps)
    • E100 (100 pulses)
    • P-15 (15ms before end of print move sequence)


I normally take the same digital snake from above, but I make the short moves non-printing by removing the E1:

 T1
 G0 X50 Y50
 G1 X150 Y50 E1 F2000
 G1 X150 Y60 
 G1 X50 Y60 E1
 G1 X50 Y70 
 G1 X150 Y70 E1
 G1 X150 Y80 
 G1 X50 Y80 E1
 G1 X50 Y90 
 G1 X150 Y90 E1

If the unprimes are good, we're done. If not, I change the values for each printing move. 例如,如果非质数脉冲为100,这还不够,我将只改变脉冲:

 T1
 G0 X50 Y50
 M721 T12 E100 ; unprime 100 pulses
 G1 X150 Y50 E1 F2000
 M721 T12 E120 ; unprime 120 pulses
 G1 X150 Y60 
 G1 X50 Y60 E1
 M721 T12 E140 ; unprime 140 pulses
 G1 X50 Y70 
 G1 X150 Y70 E1
 M721 T12 E160 ; unprime 160 pulses
 G1 X150 Y80 
 G1 X50 Y80 E1
 M721 T12 E180 ; unprime 180 pulses
 G1 X50 Y90 
 G1 X150 Y90 E1

Using the same logic as above, 我给非素数输入适当的脉冲数,这个数字应该和素数一样, below.

由于365现金买球总是将最优/非最优利率保持在10000,接下来365现金买球将拨出驻留时间. For filament heads this is usually between 20 and 35msec, but for reservoir prints, it's usually much larger. I like to use 1/10 of the number of pulses; so, if my unprime is 4000 pulses, I'll set the delay to 400msec for reservoir heads.

Prime

Lastly, we dial in the Prime. M722 is detailed at http://hyrel3d.net/wiki/index.php?title=Gcode#M722_Set_Prime_Values but I'll reproduce it here:

当检测到从非打印移动到打印移动的过渡时,M722向打印机发送关于多少材料到质料的信息:

  • S is the speed at which prime moves should be executed; this is normally 10,000;
  • E is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials;
  • P是为接下来的移动启用流率之前暂停的毫秒数;
  • T is the tool (head) to which these values will be applied; and
  • I is the flag for executing an Immediate action; so M721 I1 would execute a prime with the previously specified values at that point in the gcode.

Here is an example:

 M722 S10000 E100 P20 T11

These commands are decoded and executed by the printer as follows:

  • M722 (Set Prime Values)
    • S10000 (10,000 pps)
    • E100 (100 pulses)
    • P20 (20ms before start of print move sequence)
    • T11 (for far left head)

Next, 我将质数设置为与非质数相同的值(除了正的驻留时间, unlike the negative dwell for unprimes). If that works, great! If not, we'll need to tune it up...

365现金买球将对质数使用相同的gcode,但365现金买球将设置质数的值:

 T1
 G0 X50 Y50
 M7212 T12 E100 ; prime 100 pulses
 G1 X150 Y50 E1 F2000
 M722 T12 E120 ; prime 120 pulses
 G1 X150 Y60 
 G1 X50 Y60 E1
 M722 T12 E140 ; prime 140 pulses
 G1 X50 Y70 
 G1 X150 Y70 E1
 M722 T12 E160 ; prime 160 pulses
 G1 X150 Y80 
 G1 X50 Y80 E1
 M722 T12 E180 ; prime 180 pulses
 G1 X50 Y90 
 G1 X150 Y90 E1

Next, using the same logic and methodology as before, we'll adjust, print, and observe until we get these final numbers set to our satisfaction.