Marlin固件参数配置

本文最后更新于:2023年4月12日 晚上

Marlin固件中,主要使用以下2个配置文件 (Configuration.h、Configuration_adv.h) 进行参数配置,其中Configuration.h包含了常用的基础参数,而Configuration_adv.h中包含了更多高级参数,请谨慎设置参数!由于参数众多,以下只是列出部分参数,更多详细参数配置请查看 Marlin官方参数配置文档

Configuration.h参数配置

主板

主板型号

#define MOTHERBOARD BOARD_RAMPS_14_EFB

1
更多主板型号请查看Marlin固件根目录下的 Marlin/src/core/boards.h,根据自己的主板型号进行修改成对应的即可。
设置串口

#define SERIAL_PORT 0

1
2
3
4
当主板上有多个串口时,需要指定连接主机的串口号;如果是Arduino Bootloader,默认是0 或者 -1

可选参数:
[-1, 0, 1, 2, 3, 4, 5, 6, 7]
波特率设置

#define BAUDRATE 115200

1
2
3
4
太高的波特率可能会导致丢步。

可选波特率:
[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
辅助串口

#define SERIAL_PORT_2 -1

1
2
3
4
5
选择一个辅助串口用于与主机通信。

可选参数:
[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
目前 Ethernet[-2] 仅在Teensy 4.1主板上支持。
UUID设置

#define MACHINE_UUID "3682152d-530b-4428-944a-d0ab87819724"

1
打印机唯一ID,用于区分不同的打印机。

步进电机

电机驱动芯片型号

#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
#define E0_DRIVER_TYPE TMC2209

1
2
3
4
5
6
7
分别对应X、Y、Z、E轴的步进电机驱动芯片型号,不同的芯片型号可以混合使用。

可选电机驱动芯片型号:
['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']

注意:
'_STANDALONE' 后缀表示不启用UART模式,使用STEP模式驱动电机。
旋转方向控制

#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false

1
分别代表XYZ、E轴步进电机旋转方向的逻辑信号;如果复位时,发现某个轴的电机旋转方向不对,可将对应的信号逻辑进行反转。
使能信号控制

#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0

1
分别代表X、Y、Z、E轴电机使能信号(0=Low, 1=High)。
每移动1mm所需脉冲数

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, 141.542817 }

1
2
3
4
5
6
7
8
9
10
分别设置X、Y、Z、E轴每移动1mm需要多少脉冲,计算公式:

同步带传动(通常是X,Y轴):
(360°/步距角*细分数)/(齿间距*齿数)=(360/1.8*16)/(2*16)=100

丝杆传动(通常是Z轴):
(360°/步距角*细分数)/丝杆导程=(360/1.8*16)/8=400

齿轮传动(通常是E轴):
(360°/步距角*细分数)/挤出轮周长=(360/1.8*16)/(7.2Π)=141.542817

挤出机

挤出机数量

#define EXTRUDERS 1

1
2
可选挤出机数量:
[0, 1, 2, 3, 4, 5, 6, 7, 8]

热床

设置可打印空间大小

#define X_BED_SIZE 240
#define Y_BED_SIZE 210
#define Z_MAX_POS 200

1
分别代表XYZ轴相对于原点(0,0,0)可移动的最远距离,即打印空间大小,单位:mm。

坐标

原点坐标

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0

1
设置XYZ轴复位时的坐标点,一般默认为(0,0,0)。

限位

软限位
最小软限位设置

#define MIN_SOFTWARE_ENDSTOPS

  • #define MIN_SOFTWARE_ENDSTOP_X
  • #define MIN_SOFTWARE_ENDSTOP_Y
  • #define MIN_SOFTWARE_ENDSTOP_Z
1
2
3
4
5
6
#define MIN_SOFTWARE_ENDSTOPS : 最小软件限位总开关,防止X、Y、Z轴移动时超出X_MIN_POS、Y_MIN_POS、Z_MIN_POS设定坐标点。

可单独设置哪些轴启用最小软件限位:
#define MIN_SOFTWARE_ENDSTOP_X : 启用X轴最小软限位
#define MIN_SOFTWARE_ENDSTOP_Y : 启用Y轴最小软限位
#define MIN_SOFTWARE_ENDSTOP_Z : 启用Z轴最小软限位
最大软限位设置

#define MAX_SOFTWARE_ENDSTOPS

  • #define MAX_SOFTWARE_ENDSTOP_X
  • #define MAX_SOFTWARE_ENDSTOP_Y
  • #define MAX_SOFTWARE_ENDSTOP_Z
1
2
3
4
5
6
#define MAX_SOFTWARE_ENDSTOPS : 最大软件限位总开关,防止X、Y、Z轴移动时超出X_BED_SIZE、Y_BED_SIZE、Z_MAX_POS设定的最大距离。

可单独设置哪些轴启用最大软件限位:
#define MAX_SOFTWARE_ENDSTOP_X : 启用X轴最大软限位
#define MAX_SOFTWARE_ENDSTOP_Y : 启用Y轴最大软限位
#define MAX_SOFTWARE_ENDSTOP_Z : 启用Z轴最大软限位
硬限位
最小硬限位设置

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG

#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

1
2
3
分别代表XYZ轴复位时的最小行程限位开关,最小行程限位开关需接线到控制板的X-、Y-、Z-接口。

分别代表复位时XYZ轴终点方向。(-1=MIN, 1=MAX)
最大硬限位设置

#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
#define USE_ZMAX_PLUG

#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1

1
2
3
分别代表XYZ轴复位时的最大行程限位开关,最大行程限位开关需接线到控制板的X+、Y+、Z-+接口。

分别代表复位时XYZ轴终点方向。(1=MAX, -1=MIN)
硬限位开关信号设置

#define X_MIN_ENDSTOP_INVERTING false
#define Y_MIN_ENDSTOP_INVERTING false
#define Z_MIN_ENDSTOP_INVERTING false

1
设置XYZ轴限位开关是常闭或者常开的信号判断逻辑,如限位开关触发状态不对,可按实际情况修正对应的限位开关信号判断逻辑。

传感器

挤出机温度传感器

#define TEMP_SENSOR_0 1

1
2
0: 代表禁用
1:代表启用
热床温度传感器

#define TEMP_SENSOR_BED 1

1
2
0: 代表禁用
1:代表启用

温度

挤出机最高工作温度

#define HEATER_0_MAXTEMP 275

1
设置 挤出机 最高加热温度,超过会停止加热;请根据打印耗材设置最高温度!
热床最高工作温度

#define BED_MAXTEMP 150

1
设置 热床 最高加热温度,超过会停止加热;请根据耗材设置最高热床温度!
挤出机最低工作温度

#define HEATER_0_MINTEMP 5

1
设置 挤出机 的最低工作温度,低于该设定温度时会停止加热;出现这种状况可能是热敏电阻断线,避免造成安全隐患。
热床最低工作温度

#define BED_MINTEMP 5

1
设置 热床 的最低工作温度,低于该设定温度时会停止加热;出现这种状况可能是热敏电阻断线,避免造成安全隐患。
挤出机最低挤出温度

#define EXTRUDE_MINTEMP 200

1
设置 挤出机 挤出耗材时的最低温度,防止耗材还没达到热熔温度就开始挤出,造成挤出机损坏。

热保护

开启所有挤出机的热保护

#define THERMAL_PROTECTION_HOTENDS

1
详细配置参数请到 Configuration_adv.h --> #if ENABLED(THERMAL_PROTECTION_HOTENDS) 修改。
开启热床的热保护

#define THERMAL_PROTECTION_BED

1
详细配置参数请到 Configuration_adv.h --> #if ENABLED(THERMAL_PROTECTION_BED) 修改。
开启加热室的热保护

#define THERMAL_PROTECTION_CHAMBER

1
详细配置参数请到 Configuration_adv.h --> #if ENABLED(THERMAL_PROTECTION_CHAMBER) 修改。
开启激光冷却的热保护
1
详细配置参数请到 Configuration_adv.h --> #if ENABLED(THERMAL_PROTECTION_COOLER) 修改。

PID控制

热端PID温度控制

#define PIDTEMP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
开启热端PID控制,能更精确的控制热端温度。

可以通过上位机发送如下指令进行热端PID自适应测试:

M303 E0 S215 C10

该指令将在215°下对挤出机1运行自适应测试10次,并返回测试结果;
请手动将测试结果填入Configuration.h中如下代码 DEFAULT_Kp、DEFAULT_Ki、DEFAULT_Kd之后。

#if ENABLED(PIDTEMP)
...
#else
#define DEFAULT_Kp 18.83
#define DEFAULT_Ki 1.82
#define DEFAULT_Kd 48.59
#endif
#endif
热床PID温度控制

#define PIDTEMPBED

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
开启热床PID控制,能更精确的控制热床温度。

可以通过上位机发送如下指令进行热端PID自适应测试:

M303 E-1 S60 C10

该指令将在60°下对热床运行自适应测试10次,并返回测试结果;
请手动将测试结果填入Configuration.h中如下代码 DEFAULT_bedKp、DEFAULT_bedKi、DEFAULT_bedKd之后。

#if ENABLED(PIDTEMPBED)
...
#define DEFAULT_bedKp 53.04
#define DEFAULT_bedKi 2.93
#define DEFAULT_bedKd 640.13
#endif

耗材

耗材直径

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

1
2
3
4
请按实际耗材直径设置,在体积挤出模式下,E轴挤出量单位是mm^3,而不是mm,固件会根据耗材直径自动计算出指定体积下的挤出长度。

可选耗材直径:
[1.75, 2.85, 3.0, ...]
单次挤出的耗材长度

#define EXTRUDE_MAXLENGTH 200

1
2
3
设置挤出机自动装载耗材时单次挤出的耗材长度;如果只使用一种耗材进行打印,按默认值设置就行;

在进行多色打印换料时,需要正确设置该值,防止挤出过量耗材,对换色打印造成影响。

速度

XYZE轴最大移动速度

#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }

1
(linear=mm/s, rotational=°/s)
XYZE轴打印时移动加速度

#define DEFAULT_ACCELERATION 3000

1
(linear=mm/(s^2), rotational=°/(s^2))
XYZE轴最大移动加速度

#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }

1
(linear=mm/(s^2), rotational=°/(s^2))
XYZE轴未打印时移动加速度

#define DEFAULT_TRAVEL_ACCELERATION 3000

1
(linear=mm/(s^2), rotational=°/(s^2))
E轴回抽加速度

#define DEFAULT_RETRACT_ACCELERATION 3000

1
(linear=mm/(s^2), rotational=°/(s^2))
XYZ轴回原点的速度

#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }

1
(linear=mm/min, rotational=°/min)

存储

启用EEPROM

#define EEPROM_SETTINGS

1
启用EEPROM存储功能,可以保存部分打印配置参数;固件调试阶段建议关闭,防止将错误参数存放到EEPROM中,造成不必要的麻烦。
统计打印数据

#define PRINTCOUNTER

1
2
3
4
5
开启该功能,会统计以下数据,并保存到EEPROM中:
1. 总打印次数
2. 成功打印次数
3. 失败打印次数
4. 总打印时间

LCD显示

启用LCD 2004显示

#define REPRAP_DISCOUNT_SMART_CONTROLLER

1
启用LCD 2004显示。
启用LCD 12864显示

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

启用LCD 12864显示时,需要 U8glib库 ,否则会报错。

设置LCD显示语言

#define LCD_LANGUAGE en

1
2
en: 设置显示语言为英文。
zh_CN:设置显示语言为中文。

中文语言仅支持128 x 64 点阵液晶显示器

旋转编码器方向选择

#define REVERSE_ENCODER_DIRECTION
#define REVERSE_MENU_DIRECTION

1
2
3
只启用 #define REVERSE_ENCODER_DIRECTION,反转菜单上下方向和编辑操作方向。
只启用 #define REVERSE_MENU_DIRECTION,只反转菜单上下方向,不反转编辑操作方向。
以上二项都开启时,只反转编辑操作方向。
启用独立轴复位菜单

#define INDIVIDUAL_AXIS_HOMING_MENU

1
可在LCD上增加单独复位XYZ轴的菜单操作。

启用SD卡

#define SDSUPPORT

1
开启SD卡功能;可以将切片软件生成的.gcode文件复制到SD卡中进行打印。

蜂鸣器

#define SPEAKER

1
启用蜂鸣器;用于警报。

多色打印

#define MMU_MODEL PRUSA_MMU2

1
2
3
4
Marlin 支持Prusa官方多色换料系统,更详细的配置操作请查看后续高级功能。

可选型号:
[PRUSA_MMU1, PRUSA_MMU2, PRUSA_MMU2S, EXTENDABLE_EMU_MMU2, EXTENDABLE_EMU_MMU2S]

Configuration_adv.h参数配置

设置挤出机热保护参数

#if ENABLED(THERMAL_PROTECTION_HOTENDS)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif

1
2
3
4
WATCH_TEMP_PERIOD: 加热超时时间,单位是秒(S)
WATCH_TEMP_INCREASE: 温度值

当 挤出机 设定温度与实际温度差值超过 WATCH_TEMP_INCREASE 且 等待加热时间超过 WATCH_TEMP_PERIOD 时,Marlin固件会给出警告(E0 Heating failed)并复位。

设置热床热保护参数

#if ENABLED(THERMAL_PROTECTION_BED)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif

1
2
3
4
WATCH_TEMP_PERIOD: 加热超时时间,单位是秒(S)
WATCH_TEMP_INCREASE: 温度值

当 热床 设定温度与实际温度差值超过 WATCH_TEMP_INCREASE 且 等待加热时间超过 WATCH_TEMP_PERIOD 时,Marlin固件会给出警告(Bed Heating failed)并复位。

设置加热室热保护参数

#if ENABLED(THERMAL_PROTECTION_CHAMBER)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif

1
2
3
4
WATCH_TEMP_PERIOD: 加热超时时间,单位是秒(S)
WATCH_TEMP_INCREASE: 温度值

当 加热室 设定温度与实际温度差值超过 WATCH_TEMP_INCREASE 且 等待加热时间超过 WATCH_TEMP_PERIOD 时,Marlin固件会给出警告(Bed Heating failed)并复位。

设置激光冷却热保护参数

#if ENABLED(THERMAL_PROTECTION_COOLER)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif

1
2
3
4
WATCH_TEMP_PERIOD: 加热超时时间,单位是秒(S)
WATCH_TEMP_INCREASE: 温度值

当 激光冷却 设定温度与实际温度差值超过 WATCH_TEMP_INCREASE 且 等待加热时间超过 WATCH_TEMP_PERIOD 时,Marlin固件会给出警告(Bed Heating failed)并复位。

Z探针探测区域

#if PROBE_SELECTED && !IS_KINEMATIC
#define PROBING_MARGIN_LEFT 25
#define PROBING_MARGIN_RIGHT 10
#define PROBING_MARGIN_FRONT 5
#define PROBING_MARGIN_BACK 0
#endif

1
设置Z探针可探测的热床区域,防止Z探针探测区域超出热床范围,导致喷嘴撞在热床上损坏。

TMC驱动设置

#if AXIS_IS_TMC_CONFIG(X)
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11 // Multiplied x1000 for TMC26X
#define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ...
//#define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X axis
//#define X_HOLD_MULTIPLIER 0.5 // Enable to override 'HOLD_MULTIPLIER' for the X axis
#endif

1
2
3
4
5
6
7
8
9
此处只列举X轴的TMC驱动配置,其他轴的驱动设置以此类推;

X_CURRENT: 设置电机驱动电流
X_CURRENT_HOME: 无传感器复位时的电流
X_MICROSTEPS: 驱动细分数
X_RSENSE: 采样电阻阻值
X_CHAIN_POS: 级联控制?
X_INTERPOLATE: 未知参数
X_HOLD_MULTIPLIER: 未知参数

优化斩波器参数

#define CHOPPER_TIMING CHOPPER_DEFAULT_12V

1
2
3
4
5
6
7
8
9
10
使用预定义的参数集优化spreadCycle斩波器参数,请按照供电电压来设置正确的斩波器参数。

可选参数:
CHOPPER_DEFAULT_12V
CHOPPER_DEFAULT_19V
CHOPPER_DEFAULT_24V
CHOPPER_DEFAULT_36V
CHOPPER_09STEP_24V // 0.9 degree steppers (24V)
CHOPPER_PRUSAMK3_24V // Imported parameters from the official Průša firmware for MK3 (24V)
CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9

双Z自动平衡

#define Z_STEPPER_AUTO_ALIGN

1
2
3
3D打印机使用双Z轴且两个Z轴丝杆电机使用同一个驱动器驱动时,有时会导致两个丝杆步进电机出现不同步现象而导致一边高一边低,致使打印件在Z轴方向上产生层纹;开启此功能可以在打印前进行双Z轴自动平衡,来保证打印质量,但需要占用主板上额外的一个电机驱动模块。

如果热床有自动调平功能,可以不使用该功能。

设置打印进度

#define SET_PROGRESS_MANUALLY

  • #define SET_PROGRESS_PERCENT
  • #define SET_REMAINING_TIME
  • #define SET_INTERACTION_TIME
  • #define M73_REPORT
1
2
3
4
5
#define SET_PROGRESS_MANUALLY : 开启打印进度功能
#define SET_PROGRESS_PERCENT : 添加 'P' 参数设置完成百分比
#define SET_REMAINING_TIME : 添加 'R' 参数设置剩余时间
#define SET_INTERACTION_TIME : 添加 'C' 参数设置下次更换耗材时间,一般用于多色打印
#define M73_REPORT : 向主机报告打印进度

显示打印进度

#define SHOW_PROGRESS_PERCENT
#define SHOW_ELAPSED_TIME
#define SHOW_REMAINING_TIME
#define PRINT_PROGRESS_SHOW_DECIMALS

1
2
3
4
#define SHOW_PROGRESS_PERCENT : 显示打印进度百分比(P表示)
#define SHOW_ELAPSED_TIME : 显示打印时间(E表示)
#define SHOW_REMAINING_TIME : 显示预计完成时间(R表示)
#define PRINT_PROGRESS_SHOW_DECIMALS : 用十进制显示进度

多色打印

(待补充…)

常用功能

热床自动调平(ABL)

详细请查看官方文档说明:Automatic Bed Leveling

  1. 将 Z探针 连接到 Z-MIN位置后,在Configuration.h中需开启此选项:

    1
    #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

    对于RAMPS控制板,Z-MIN连接到主板的D32 PIN;对于其他控制板,可以在 Marlin/src/pins/ramps/pin_RAMPS.h 中修改 Z-MIN引脚 (#define Z_MIN_PROBE_PIN 32)为对应的PIN即可。

  2. 选择 Z探针 传感器类型

    Marlin支持的 Z探针 类型 如下,详细请查看Marlin官方探针配置说明

    • Simple switch (FIX_MOUNTED_PROBE)
    • Switch on a servo arm (Z_ENDSTOP_SERVO_NR)
    • Switch on a solenoid (SOLENOID_PROBE)
    • Inductive probes (FIX_MOUNTED_PROBE)
    • BLTouch - and clones (BLTOUCH)
    • Sled-mounted probe (Z_PROBE_SLED)
    • Allen-key delta probe (Z_PROBE_ALLEN_KEY)
    • No probe (PROBE_MANUALLY)

    如探针接触到热床平面后的 逻辑信号不对,可修改此参数反转信号逻辑:#define Z_MIN_PROBE_ENDSTOP_INVERTING false

  3. 设置 Z探针 相对于 喷嘴位置偏移量

    1
    #define NOZZLE_TO_PROBE_OFFSET { 23, 5, -0.82 }

    可以按照以下步骤确定上述参数中的X,Y,Z偏移量:

    • 将喷嘴安装在3D打印机挤出机上,用双手旋转Z轴,让喷嘴位置往下降,当喷嘴刚好触碰到热床平面时停住,这时调整Z探针位置,将Z探针的探头也触碰到热床平面;该操作使得 喷嘴和Z探针的探头底部平齐。
    • 准备一张白纸 ,用手轻微旋转Z轴,让白纸刚好能从热床平面与Z探针之间的缝隙穿过,这时用胶带将白纸四周固定在热床平面上;用手慢慢旋转降下Z轴 ,让Z探针的探头刚好接触白纸(注意不要顶住白纸),用笔在纸上标记出当前探头位置。
    • 启动3D打印机(不要执行回原点操作),用LCD控制旋钮控制步进电机移动X、Y轴,将喷嘴移动到标记点,记录移动前后的距离差,便能得出Z探针相对于喷嘴的X、Y位置了。
    • X,Y偏移量的 ± 由以下位置方向确定:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      *            后
      * +-- BACK ---+
      * | [+] |
      * L | 1 | R <-- Example "1" (right+, back+) Z探针位于位置1区域时X为 + ,Y 为 +
      * E | 2 | I <-- Example "2" ( left-, back+) Z探针位于位置2区域时X为 - ,Y 为 +
      * 左 F |[-] N [+]| G 右 <-- Nozzle 喷嘴
      * T | 3 | H <-- Example "3" (right+, front-) Z探针位于位置3区域时X为 + ,Y 为 -
      * | 4 | T <-- Example "4" ( left-, front-) Z探针位于位置4区域时X为 - ,Y 为 -
      * | [-] |
      * O-- FRONT --+
      * 前
    • Z偏移量计算方法如下:
      • Configuration.h中,将该参数进行注释:#define MIN_SOFTWARE_ENDSTOP_Z,使Z轴能移动到负值,便于测算Z偏移量,等测得Z偏移量后,建议开启此参数,防止误操作导致Z轴移动到负值撞击热床!!!
      • 关闭3D打印机电源,在热床上铺一张白纸,用双手同步慢慢旋转双Z轴,使喷嘴刚好接触到纸面后停止旋转Z轴;注意不要将喷嘴压紧纸张,纸张在喷嘴与热床之间可以来回抽动即可。
      • 准备一根扎带,松开固定Z探针的螺丝,用手将Z探针往远离热床平面方向稍微抬起一段距离,将扎带放在Z探针与热床平面之间的缝隙里,用手将Z探针往下推,直至抵住扎带,此时固定Z探针螺丝。
      • 用双手同步旋转双Z轴,使喷嘴远离热床平面;打开3D打印机电源,用LCD旋钮选择 回原点(G28),等待3D打印机回原点后,使用LCD旋钮控制Z轴电机,一边让Z轴慢慢下降,不断接近纸张,一边用手来回拖动纸张,使之在热床平面上来回移动,当喷嘴降到刚好接触纸张,且拖到纸张时有轻微阻尼感,这时在LCD上显示的Z轴数值就是Z偏移量,按照此方法测得的Z偏移量为负值。
  4. 设置 Z探针 距离 边缘的距离

    1
    #define PROBING_MARGIN 10
  5. 设置 Z探针 在X、Y轴方向上的移动速度(mm/min)

    1
    #define XY_PROBE_FEEDRATE (133*60)
  6. 设置 Z探针 探测次数

    1
    #define MULTIPLE_PROBING 3
  7. 启用M48重复性测试 Z探针 的准确性

    1
    #define Z_MIN_PROBE_REPEATABILITY_TEST
  8. 选择调平方式,以下方式只可选其一进行启用

    1
    2
    3
    4
    5
    //#define AUTO_BED_LEVELING_3POINT
    //#define AUTO_BED_LEVELING_LINEAR
    #define AUTO_BED_LEVELING_BILINEAR
    //#define AUTO_BED_LEVELING_UBL
    //#define MESH_BED_LEVELING
  9. 设置探测网格点数

    1
    #define GRID_MAX_POINTS_X 5
  10. 启用EEPROM,保存热床调平计算的数据

    1
    #define EEPROM_SETTINGS
  11. 启用Z安全复位

    1
    #define Z_SAFE_HOMING
  12. 回原点前Z轴的抬升高度

    1
    #define Z_HOMING_HEIGHT  20
  13. 下载固件,测试热床自动调平

    使用上位机连接3D打印机,使用 G28 复位X,Y,Z轴,使用 G29 开始热床自动调平测试,测试完成后,使用 M500 将热床调平数据保存到EEPROM中,可以输入 M420 V 查看热床调平数据,格式为:

    1
    2
    3
    4
    5
    6
    7
         0      1      2      3
    0 -1.089 -1.048 -1.113 -1.503
    1 -0.147 +0.049 +0.231 +0.268
    2 +0.668 +0.874 +1.033 +1.117
    3 +1.350 +1.524 +1.693 +1.927

    # (0,0)对应的是坐标轴原点位置,横向是X轴,纵向是Y轴。

热床统一调平(UBL)

详细请查看官方文档说明:Unified Bed Leveling

  1. 设置 Z探针 相对于 喷嘴位置偏移量

详情请查看 热床自动调平(ABL) -> 步骤3

  1. 开启热床统一调平功能
1
#define AUTO_BED_LEVELING_UBL
  1. 启用G28后恢复床调平功能
1
#define RESTORE_LEVELING_AFTER_G28
  1. 启用 G26 网格验证模式工具。
1
2
3
4
5
6
7
8
9
10
#define G26_MESH_VALIDATION
#if ENABLED(G26_MESH_VALIDATION)
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) 喷嘴大小.
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) G26打印测试时的层高.
#define MESH_TEST_HOTEND_TEMP 215 // (°C) G26打印测试时的喷嘴温度.
#define MESH_TEST_BED_TEMP 60 // (°C) G26打印测试时的热床温度.
#define G26_XY_FEEDRATE 20 // (mm/s) G26打印测试时X、Y轴运动的进给率.
#define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) G26打印测试时X、Y轴移动的进给率.
#define G26_RETRACT_MULTIPLIER 1.0 // G26 Q(回缩)默认用于网格测试元素之间.
#endif
  1. 热床统一调平参数设置
1
2
3
#define MESH_INSET 10                          // 设置探测网格与热床边缘距离.
#define GRID_MAX_POINTS_X 10 // 探测网格沿X轴方向探测数量,注意不要超过15.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X //探测网格沿Y轴方向探测数量.
  1. 启用EEPROM
1
#define EEPROM_SETTINGS
  1. 编译固件上传

  2. 热床统一调平初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
M502          //复位参数
M500 //保存参数
M501 //加载参数

M190 S60 //设置床温为60°
M104 S215 //设置喷嘴温度为215°

G28 //复位
G29 P1 //开始网格1的热床统一调平测试

G29 T //显示热床统一调平网络数据
G29 S1 //将热床统一调平网格数据保存到EEPROM
G29 F 10.0 //
G29 A //激活热床统一调平功能
M500 //保存数据

  1. 执行热床统一调平测试
1
2
G28
G26 C
  1. 测量打印模型

    使用游标卡尺测量模型各个坐标点的厚度是否为0.2mm,如果测量结果有偏差,记下该坐标点与偏差值,便于在步骤11中进行微调。

  2. 微调热床统一调平网格数据

    请在LCD控制器上进行操作:

  • 按下旋钮 -> Motion -> Unified Bed Leveling -> Mesh Edit
  • 等待X、Y、Z轴自动复位后,喷嘴自动移动到(0,0)坐标点且屏幕上显示网格数据;使用旋钮移动到需要修改的坐标点,按下旋钮后根据偏差值来设置Z Value,修改完成后按下旋钮确认,此时喷头会移动到该坐标点相邻点进行进一步调整,如果不需要调整,请再次按下旋钮,直到修改完附近的点,喷头会再次移动到(0,0)坐标点;如还需调整其他坐标点,重复上述操作即可,直到全部调整完成后,长按旋钮保存网格数据,再次执行G26 C测试;重复步骤10 -> 11,直到测试模型达到近乎完美即可。😅
  1. 在切片软件中设置

耗材断料检测

使用断料检测传感器检测耗材是否装载,防止耗材异常断开或用尽后3D打印机还在继续工作;也为后续升级多色打印换料提供保障。

  1. 启用耗材断料检测

    1
    #define FILAMENT_RUNOUT_SENSOR

    耗材插入挤出机后,用上位机连上3D打印机,使用 M119 查看各传感器的状态,如果filament返回的值为open,则需要反转耗材检测传感器的逻辑判断信号:#define FIL_RUNOUT_STATE HIGH

  2. 启用高级暂停

    该参数在 Configuration_adv.h中进行启用:

    1
    #define ADVANCED_PAUSE_FEATURE
  3. 编译固件,即可开启耗材检测


高级功能

多色打印

(暂未升级 0.0)


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!