Marlin2ForPipetBot基于Arduino 平台的 RepRap 3D 打印机优化固件,支持最多九个非挤出机轴加挤出机(例如 XYZABCUVW+E 或 XYZABCW+E 或 XYZCUVW+E 或 XYZABC+E 或 XYZUVW+E)。此外,还提供对激光和主轴的支持。
G代码
Marlin2ForPipetBot 的G代码语法与 LinuxCNC(NIST RS274NGC 解释器的后继版本 - 版本 3)的语法非常相似。以下是与官方 MarlinFirmware/Marlin 不同的 G 代码列表,这些代码与 LinuxCNC 语法更加一致:
- F(G0、G1、G2、G3、G4、G5、G81、G82、G83 的进给速度)
- G10(设置偏移)
- G43(刀具长度补偿)
- G49(取消刀具长度补偿、取消刀具中心点控制)
新的G代码:
- G43.4(刀具中心点控制)
G1(线性移动)
用法
具有 9 个轴加挤出机的运动(G 代码 G1)的示例语法(默认轴名称:XYZABCUVW+E):
G1 [Xx.xxxx] [Yy.yyyy] [Zz.zzzz] [Aa.aaaa] [Bb.bbbb] [Cc.cccc] [Uu.uuuu] [Vv.vvvv] [Ww.wwww] [Ee.eeee] [Ff.ffff]
参数:
X,,YZ
在由主要线性轴 X、Y 和 Z 组成的笛卡尔坐标系中的位置。单位:毫米(G 代码 G21 之后)或英制英寸(G 代码 G20 之后)
A,,BC
由旋转轴 A、B、C 组成的伪笛卡尔坐标系中的角位置,旋转轴 A、B、C 分别与轴 X、Y、Z 平行。单位:度
U,,VW
在由与 X、Y 和 Z 轴平行的次级线性轴 U、V 和 W 组成的笛卡尔坐标系中的位置。单位:毫米(G 代码 G21 之后)或英制英寸(G 代码 G20 之后)
E
E步进电机应移动的距离。单位:毫米(G 代码 G21 之后)或英制英寸(G 代码 G20 之后)
F
LinuxCNC 定义的进给率:
- 对于涉及 X、Y 和 Z 轴中的一个或多个的运动(有或没有其他轴的运动),进给速率意味着沿着编程的 XYZ 路径每分钟的长度单位,就好像其他轴没有移动一样。
- 对于涉及一个或多个次级线性轴(轴名为“U”、“V”或“W”)且 X、Y 和 Z 轴不动(有或无旋转轴运动)的运动,进给速率意味着沿编程的 UVW 路径每分钟的长度单位(使用 UVW 坐标系中的通常欧几里得度量),就好像旋转轴没有移动一样。
- 对于涉及一个或多个旋转轴(轴名为“A”、“B”或“C”)且线性轴不动的运动,速率应用如下。设dA、dB和dC分别为绕轴 A、B 和 C 的旋转角度,单位为度。设D = sqrt((dA)^2 + (dB)^2 + (dC)^2)。从概念上讲,D是总角运动的度量,使用通常的欧几里得度量。涉及旋转轴的运动应该是协调的线性运动,以便从运动开始到结束所经过的总时间(以分钟为单位)T = D / F加上加速或减速所需的时间。
ARTICULATED_ROBOT_ARM要更改进给率解释,可以定义选项。启用该选项后,进给参考为所有轴。这意味着在所有情况下,所有轴都以协调的线性运动移动,因此移动所需的时间(以分钟为单位T = sqrt((dA)^2 + (dB)^2 + (dC)^2 + (dU)^2 + (dV)^2 + (dW)^2) / F)加上加速或减速的任何时间。
G10(设置偏移)
设置偏移量。请参阅以下参考资料:
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G10-L1 _
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G10-L2 _
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G10-L11
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G10-L20
G43(刀具长度偏移)
启用简单刀具长度补偿。请参阅以下参考资料:
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G43
G43.4(刀具中心点控制)
启用工具中心点控制。请参阅以下参考资料:
https://www.linkedin.com/pulse/g434-tool-center-point-control-tcp-abhilash-am?trk=read_lated_article-card_title
https://www.haascnc.com/service/codes-settings.type=gcode.machine=mill.value=G234.html
G49(取消刀具长度补偿)
禁用刀具长度补偿(G43)并禁用刀具中心点控制(G43.4)。进入直接关节控制模式(默认)。请参阅以下参考资料:
https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G43
https://www.haascnc.com/service/codes-settings.type=gcode.machine=mill.value=G49.html
M665(PENTA_AXIS 配置)
配置PENTA_AXIS_TRT和PENTA_AXIS_HT几何值。
用法
M665 [X<MRZP-offset>] [Y<MRZP-offset>] [Z<MRZP-offset>] [S<segments-per-second>] [I<rotational-joint-offset>] [J<rotational-joint-offset>] [K<rotational-joint-offset>]
参数
Z<MRZP-offset>
设置机器旋转零点 (MRZP) Z 偏移。
- 对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机床,这是沿 Z 轴从机床零点到旋转中心的距离。旋转中心通常是工作台顶面的中心。
- 对于头台配置 (PENTA_AXIS_HT) 的 5 轴 CNC 机床,这是当所有轴都处于零位时,沿 Z 轴从机器零点到倾斜刀头的接头水平中心线的距离。
请参阅参考资料https://linuxcnc.org/docs/html/motion/5-axis-kinematics.htmlDEFAULT_MRZP_OFFSET_Z中枢轴点()的定义Pz
X<MRZP-offset>
设置机器旋转零点 (MRZP) X 偏移。对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是当所有轴处于中性(零)位置时从机器零点到旋转中心沿 X 轴的距离。旋转中心通常是工作台顶面的中心。
请参阅参考资料https://linuxcnc.org/docs/html/motion/5-axis-kinematics.htmlDEFAULT_MRZP_OFFSET_X中枢轴点()的定义Px
Y<MRZP-offset>
设置机器旋转零点 (MRZP) Y 偏移。对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是当所有轴处于中性(零)位置时从机器零点到旋转中心沿 Y 轴的距离。旋转中心通常是工作台顶面的中心。
Py请参阅参考资料https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html中枢轴点 ( ) 的定义
I<rotational-joint-offset>
设置旋转关节 X 偏移。对于带有倾斜旋转工作台 (PENTA_AXIS_TRT) 和 XYZBC 轴的 5 轴 CNC 机器,这是沿 X 轴从旋转工作台关节的垂直中心线到倾斜工作台的关节的水平中心线的距离。当所有旋转轴都处于中立(零)位置时测量,以便工作台水平放置。
另请参阅本参考资料中“5.3. 具有旋转轴偏移的 xyzbc-trt 机器的转换”和“7. 自定义运动学组件”部分中DEFAULT_ROTATIONAL_JOINT_OFFSET_X的定义:Dx
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
J<rotational-joint-offset>
设置旋转关节 Y 偏移。对于带有倾斜旋转工作台 (PENTA_AXIS_TRT) 和 XYZAC 轴的 5 轴 CNC 机器,这是沿 Y 轴从旋转工作台关节的垂直中心线到倾斜工作台的关节的水平中心线的距离。当所有旋转轴处于中立(零)位置时测量,以便工作台水平放置。
另请参阅本参考资料中“5.3. 具有旋转轴偏移的 xyzbc-trt 机器的转换”和“7. 自定义运动学组件”部分中DEFAULT_ROTATIONAL_JOINT_OFFSET_Y的定义:Dy
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
K<rotational-joint-offset>
设置旋转关节 Z 偏移。对于带有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是沿 Z 轴从工作台顶部表面到倾斜工作台的关节水平中心线的距离。当所有旋转轴处于中立(零)位置时测量,以便工作台水平放置。
另请参阅本参考资料中“5.3. 具有旋转轴偏移的 xyzbc-trt 机器的转换”和“7. 自定义运动学组件”部分中DEFAULT_ROTATIONAL_JOINT_OFFSET_Z的定义:Dz
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
M211(软件限位开关)
设置在任何软件限位装置被触发时是否应中止打印或应限制移动。这提供了一种在发生机械故障(例如松动的联轴器、丢失的台阶、转向的轴、卡住等)时中止打印的快速方法,这些故障会导致轴偏离位置很远。
- SOFTWARE_ENDSTOPS_*至少需要一个轴。
- 使用ENDSTOPS_ALWAYS_ON_DEFAULT或M120确保限位开关监控已启用。
用法
M211 S<flag> H<flag>
参数
S<flag>
是否 (1) 启用软件限位开关。
H<flag>
是否在软件限位开关触及时中止加工 (1),或是否将移动夹紧至软件限位开关 (0)。需要ABORT_ON_SOFTWARE_ENDSTOP
配置
通过编辑文件 Marlin/Configuration.h 来完成配置。例如更改
//#define I_DRIVER_TYPE A4988
到:
#define I_DRIVER_TYPE A4988
以下是 Marlin2ForPipetBot 中的选项列表,这些选项与具有三个以上轴的机器或与 MarlinFirmware/Marlin 不同的机器相关:
X_DRIVER_TYPE
X_DRIVER_TYPE,,,,,,,,,:这些设置允许 Marlin 调整步进驱动器时序并为支持它们的步进驱动器启用高级选项。您还可以覆盖Configuration_adv.h中的时序选项Y_DRIVER_TYPE。Z_DRIVER_TYPEI_DRIVER_TYPEJ_DRIVER_TYPEK_DRIVER_TYPEU_DRIVER_TYPEV_DRIVER_TYPEW_DRIVER_TYPE
对 TMC2225 驱动程序使用 TMC2208/TMC2208_STANDALONE,对 TMC2226 驱动程序使用 TMC2209/TMC2209_STANDALONE。
每个驱动器与一个轴(内部轴标识符:X、Y、Z、I、J、K、U、V、W)或一个挤出机(E0 到 E7)相关联。每个轴根据以下设置获得自己的步进控制和限位开关: ,,,,,,,,,,,,可能, 并且定义的相应值[[I, [J, [K...]]]_STEP_PIN,,,,,,,,,,,也可能定义 的值,,,,,,,, 。必须使用值为0的 元素进行扩展, 直到 元素数量等于的 值 。[I, [J, [K...]]]_ENABLE_PIN[I, [J, [K...]]]_DIR_PIN[I, [J, [K...]]]_STOP_PINUSE_[I, [J, [K...]]][MIN || MAX]_PLUG[I, [J, [K...]]]_ENABLE_ONDISABLE_[I, [J, [K...]]][I, [J, [K...]]]_MIN_POS[I, [J, [K...]]]_MAX_POS[I, [J, [K...]]]_HOME_DIRDEFAULT_[I, [J, [K...]]]JERKDEFAULT_AXIS_STEPS_PER_UNITDEFAULT_MAX_FEEDRATEDEFAULT_MAX_ACCELERATIONHOMING_FEEDRATE_MM_MAXIS_RELATIVE_MODESMICROSTEP_MODESHOMING_BUMP_MMHOMING_BUMP_DIVISORMAX_FEEDRATE_EDIT_VALUESMAX_ACCEL_EDIT_VALUESMAX_JERK_EDIT_VALUESMANUAL_FEEDRATESENSORLESS_BACKOFF_MMHOMING_BACKOFF_POST_MMBACKLASH_DISTANCE_MMNOZZLE_TO_PROBE_OFFSETSNUM_AXES
允许的值:[A4988、A5984、DRV8825、LV8729、L6470、L6474、POWERSTEP01、TB6560、TB6600、TMC2100、TMC2130、TMC2130_STANDALONE、TMC2160、TMC2160_STANDALONE、TMC2208、TMC2208_STANDALONE、TMC2209、TMC2209_STANDALONE、TMC26X、TMC26X_STANDALONE、TMC2660、TMC2660_STANDALONE、TMC5130、TMC5130_STANDALONE、TMC5160、TMC5160_STANDALONE]
AXIS4_ROTATES
AXIS4_ROTATES,,,,,,:如果启用,则相应的轴是旋转轴AXIS5_ROTATES,其位置以角度指定AXIS6_ROTATES。对于仅涉及旋转轴的移动,进给率以角度解释。AXIS7_ROTATESAXIS8_ROTATESAXIS9_ROTATES
AXIS4_NAME
AXIS4_NAME,,,,,,:附加轴的轴代码:这定义了在 G 代码命令中用于引用特定轴的轴代码AXIS5_NAME。常规轴名称如下:AXIS6_NAMEAXIS7_NAMEAXIS8_NAMEAXIS9_NAME
“A” 表示旋转轴平行于 X
“B” 表示旋转轴平行于 Y
“C” 表示旋转轴平行于 Z
“U” 表示与 X 平行的次线性轴
“V” 表示与 Y 轴平行的次线性轴
'W' 表示与 Z 轴平行的次线性轴
无论设置如何,固件内部轴名称均为 I (AXIS4)、J (AXIS5)、K (AXIS6)、U (AXIS7)、V (AXIS8)、W (AXIS9)。
允许的值:[‘A’, ‘B’, ‘C’, ‘U’, ‘V’, ‘W’]
ARTICULATED_ROBOT_ARM
启用后,进给速率(G1 G 代码命令中的 F 字)将解释为所有轴的进给参考。为了与 Marlin <= 2.0.9.3、grblHAL/grblHAL-core、Duet3D/RepRap-Firmware、synthetos/g2core 兼容,并与 Marlin 中尚未实现逆运动学的关节机器人(机器人臂)兼容。有关进给速率的详细描述,请参阅第一节。
FOAMCUTTER_XYUV
定义FOAMCUTTER_XYUV热线切割机的运动学,其水平轴 X、U 平行,其中两个线端的高度由平行轴 Y、V 控制。目前仅适用*_DRIVER_TYPE于 5 个轴(X、Y、Z、I 和 J)的定义。可以为未使用的 Z 轴的引脚分配虚拟引脚号。保留禁用以获得默认行为(使用所有轴的多维线性插值计算步进速度)。可在https://rckeith.co.uk/file-downloads/和https://www.jedicut.com/en/download/FOAMCUTTER_XYUV找到 4 轴泡沫切割机的主机软件和 CAM 软件。
PENTA_AXIS_TRT
定义PENTA_AXIS_TRT倾斜旋转工作台配置中的 5 轴 CNC 机床的运动学,以添加对刀具中心点控制的支持(参见 G43.4 刀具中心点控制部分)。这些机床具有 3 个相互正交的棱柱形(“线性”)关节,与 XYZ 轴对齐,以及安装在倾斜工作台(A 轴或 B 轴)上的旋转工作台(C 轴)。支持两种不同的此类机床几何形状:
XYZAC TRT 机器:当所有轴都处于零位时,倾斜工作台的旋转关节与 X 轴平行,旋转工作台的关节与 Z 轴平行。这需要AXIS4_NAME 'A'和AXIS5_NAME 'C'。
XYZBC TRT 机器:当所有轴都处于零位时,倾斜工作台的旋转关节与 Y 轴平行,旋转工作台的关节与 Z 轴平行。这需要AXIS4_NAME 'B'和AXIS5_NAME 'C'(参见第节AXIS4_NAME)。
PENTA_AXIS_HT
定义PENTA_AXIS_HT头台配置中的 5 轴 CNC 机床的运动学,以添加对刀具中心点控制的支持(参见 G43.4 刀具中心点控制部分)。这些机床具有 3 个相互正交的棱柱形(“线性”)关节,与 XYZ 轴对齐,外加一个旋转头(A 轴或 B 轴)和一个水平旋转台(C 轴)。有两种可能的机床几何形状:
- XYZAC头台式机床:当所有轴处于零位时,旋转头的旋转关节与X轴平行。这要求AXIS4_NAME 'A'和AXIS5_NAME 'C'。
- XYZBC 头台式机床:当所有轴都处于零位时,旋转头的旋转关节与 Y 轴平行。这需要AXIS4_NAME 'B'和AXIS5_NAME 'C'(参见章节AXIS4_NAME)。
DEFAULT_MRZP_OFFSET_Z
机器旋转零点 (MRZP) Z 偏移。
- 对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机床,这是沿 Z 轴从机床零点到旋转中心的距离。当所有轴都处于零位时,旋转中心通常是工作台顶面的中心。
- 对于头台配置 (PENTA_AXIS_HT) 的 5 轴 CNC 机床,这是当所有轴都处于零位时,沿 Z 轴从机器零点到倾斜刀头的接头水平中心线的距离。
请参阅此参考资料中枢轴点 () 的定义Pz:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
DEFAULT_MRZP_OFFSET_X
机器旋转零点 (MRZP) X 偏移。对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是当所有轴都处于中性(零)位置时,沿 X 轴从机器零点到旋转中心的距离。旋转中心通常是工作台顶面的中心。
请参阅此参考资料中枢轴点 () 的定义Px:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
DEFAULT_MRZP_OFFSET_Y
机器旋转零点 (MRZP) Y 偏移。对于具有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是当所有轴都处于中性(零)位置时,沿 Y 轴从机器零点到旋转中心的距离。旋转中心通常是工作台顶面的中心。
请参阅此参考资料中枢轴点 () 的定义Pz:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
DEFAULT_ROTATIONAL_JOINT_OFFSET_X
对于带有倾斜旋转工作台 (PENTA_AXIS_TRT)(带有 XYZBC 轴)的 5 轴 CNC 机器,这是沿 X 轴从旋转工作台接头的垂直中心线到倾斜工作台的接头的水平中心线的距离。当所有旋转轴都处于中立(零)位置时测量,以便工作台水平放置。
参见此参考文献中的定义Dx:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
DEFAULT_ROTATIONAL_JOINT_OFFSET_Y
对于带有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,该距离为旋转工作台接头的垂直中心线与倾斜工作台的接头的水平中心线之间的 Y 轴距离。当所有旋转轴都处于中立(零)位置时测量,因此工作台处于水平方向。
参见此参考文献中的定义Dy:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
DEFAULT_ROTATIONAL_JOINT_OFFSET_Z
对于带有倾斜旋转工作台 (PENTA_AXIS_TRT) 的 5 轴 CNC 机器,这是沿 Z 轴从工作台顶部表面到倾斜工作台的接头水平中心线的距离。当所有旋转轴处于中性(零)位置时测量,以便工作台水平放置。
参见此参考文献中的定义Dz:
https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html
TOOLS
工具数量,包括挤出机。工具索引从 0 开始,必须按以下顺序分配:挤出机(需要 EXTRUDERS > 0)、激光(需要LASER_FEATURE),最后是主轴工具(需要)。必须用、和SPINDLE_FEATURE定义每个工具相对于工具 0 的偏移量。HOTEND_OFFSET_XHOTEND_OFFSET_YHOTEND_OFFSET_Z
ABORT_ON_SOFTWARE_ENDSTOPS
当触发任何软件限位开关时中止打印。此功能可通过“M211 H1”或 LCD 菜单启用。必须激活软件限位开关才能使此选项起作用。
SAFE_BED_LEVELING_START_X
SAFE_BED_LEVELING_START_X,,,,,,,,, :安全床面调平起始坐标。如果启用,则在床面调平程序开始时,相应轴将移动到指定位置。多轴机器必需(SAFE_BED_LEVELING_START_Y...已定义)。必须选择值以使床面水平放置,并使 Z 探头垂直放置。注意:如果未实施机器的逆运动学,则床面调平会在床面未水平放置或刀头未垂直放置的所有移动中产生错误结果。在这些情况下,必须禁用床面调平。SAFE_BED_LEVELING_START_ZSAFE_BED_LEVELING_START_ISAFE_BED_LEVELING_START_JSAFE_BED_LEVELING_START_KSAFE_BED_LEVELING_START_USAFE_BED_LEVELING_START_VSAFE_BED_LEVELING_START_WI_DRIVER_TYPE
LCD_SHOW_SECONDARY_AXES
在 DOGM LCD 上显示次轴 I[J[K]] 的位置而不是图标(例如 REPRAP_FULL_GRAPHICS_DISPLAY)。
QUICK_HOME_SECONDARY_AXES
如果所有轴都已归位,则首先升高 Z,然后同时将除 Z 之外的所有轴移动到其归位位置。一旦第一个轴到达其归位位置,轴将按顺序单独归位 XYZIJKUVW。需要QUICK_HOME。
CLASSIC_JERK
对于多轴机器,强烈建议启用CLASSIC_JERK。
HOTEND_OFFSET_X
HOTEND_OFFSET_X、HOTEND_OFFSET_Y和HOTEND_OFFSET_Z:每个刀具的偏移量数组。启用PENTA_AXIS_TRT或PENTA_AXIS_HT时,机器默认处于联合控制模式(刀具长度补偿和刀具中心点控制已禁用)。使用 G10 设置热端偏移(刀具偏移)。使用 G43 启用刀具长度补偿(应用热端偏移/刀具偏移)。使用 G43.4 启用刀具中心点控制。使用 G49 取消刀具长度补偿和刀具中心点控制。
Marlin2ForPipetBot 分支不适用于生产用途。请谨慎使用!
Marlin2forPipetBot 是 DerAndere 的 Marlin fork 的一个分支(基于 https://github.com/MarlinFirmware/Marlin/tree/3e9fb34892e85bc4069acf5baddbf12d6cd47789)。此分支用于修补最新的 Marlin2ForPipetBot 发布版本。
Marlin2ForPipetBot
Github链接:
https://github.com/DerAndere1/Marlin
本地下载:
Marlin2ForPipetBot固件.zip
特别说明:本项目DerAndere开发整理,还以此构建了DIY实验室机器人Pipetbot-A8,且免费开源!为DerAndere点赞!!DerAndere的官方站点https://derandere.gitlab.io/pipetbot-a8/ 。