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 |
|
设置串口
#define SERIAL_PORT 0
1 |
|
波特率设置
#define BAUDRATE 115200
1 |
|
辅助串口
#define SERIAL_PORT_2 -1
1 |
|
UUID设置
#define MACHINE_UUID "3682152d-530b-4428-944a-d0ab87819724"
1 |
|
步进电机
电机驱动芯片型号
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
#define E0_DRIVER_TYPE TMC2209
1 |
|
旋转方向控制
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
1 |
|
使能信号控制
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0
1 |
|
每移动1mm所需脉冲数
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, 141.542817 }
1 |
|
挤出机
挤出机数量
#define EXTRUDERS 1
1 |
|
热床
设置可打印空间大小
#define X_BED_SIZE 240
#define Y_BED_SIZE 210
#define Z_MAX_POS 200
1 |
|
坐标
原点坐标
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
1 |
|
限位
软限位
最小软限位设置
#define MIN_SOFTWARE_ENDSTOPS
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
#define MIN_SOFTWARE_ENDSTOP_Z
1 |
|
最大软限位设置
#define MAX_SOFTWARE_ENDSTOPS
#define MAX_SOFTWARE_ENDSTOP_X
#define MAX_SOFTWARE_ENDSTOP_Y
#define MAX_SOFTWARE_ENDSTOP_Z
1 |
|
硬限位
最小硬限位设置
#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 |
|
最大硬限位设置
#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 |
|
硬限位开关信号设置
#define X_MIN_ENDSTOP_INVERTING false
#define Y_MIN_ENDSTOP_INVERTING false
#define Z_MIN_ENDSTOP_INVERTING false
1 |
|
传感器
挤出机温度传感器
#define TEMP_SENSOR_0 1
1 |
|
热床温度传感器
#define TEMP_SENSOR_BED 1
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 |
|
开启热床的热保护
#define THERMAL_PROTECTION_BED
1 |
|
开启加热室的热保护
#define THERMAL_PROTECTION_CHAMBER
1 |
|
开启激光冷却的热保护
1 |
|
PID控制
热端PID温度控制
#define PIDTEMP
1 |
|
热床PID温度控制
#define PIDTEMPBED
1 |
|
耗材
耗材直径
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
1 |
|
单次挤出的耗材长度
#define EXTRUDE_MAXLENGTH 200
1 |
|
速度
XYZE轴最大移动速度
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
1 |
|
XYZE轴打印时移动加速度
#define DEFAULT_ACCELERATION 3000
1 |
|
XYZE轴最大移动加速度
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
1 |
|
XYZE轴未打印时移动加速度
#define DEFAULT_TRAVEL_ACCELERATION 3000
1 |
|
E轴回抽加速度
#define DEFAULT_RETRACT_ACCELERATION 3000
1 |
|
XYZ轴回原点的速度
#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
1 |
|
存储
启用EEPROM
#define EEPROM_SETTINGS
1 |
|
统计打印数据
#define PRINTCOUNTER
1 |
|
LCD显示
启用LCD 2004显示
#define REPRAP_DISCOUNT_SMART_CONTROLLER
1 |
|
启用LCD 12864显示
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
启用LCD 12864显示时,需要 U8glib库 ,否则会报错。
设置LCD显示语言
#define LCD_LANGUAGE en
1 |
|
旋转编码器方向选择
#define REVERSE_ENCODER_DIRECTION
#define REVERSE_MENU_DIRECTION
1 |
|
启用独立轴复位菜单
#define INDIVIDUAL_AXIS_HOMING_MENU
1 |
|
启用SD卡
#define SDSUPPORT
1 |
|
蜂鸣器
#define SPEAKER
1 |
|
多色打印
#define MMU_MODEL PRUSA_MMU2
1 |
|
Configuration_adv.h参数配置
设置挤出机热保护参数
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif
1 |
|
设置热床热保护参数
#if ENABLED(THERMAL_PROTECTION_BED)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif
1 |
|
设置加热室热保护参数
#if ENABLED(THERMAL_PROTECTION_CHAMBER)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif
1 |
|
设置激光冷却热保护参数
#if ENABLED(THERMAL_PROTECTION_COOLER)
...
#define WATCH_TEMP_PERIOD 40 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif
1 |
|
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 |
|
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 |
|
优化斩波器参数
#define CHOPPER_TIMING CHOPPER_DEFAULT_12V
1 |
|
双Z自动平衡
#define Z_STEPPER_AUTO_ALIGN
1 |
|
设置打印进度
#define SET_PROGRESS_MANUALLY
#define SET_PROGRESS_PERCENT
#define SET_REMAINING_TIME
#define SET_INTERACTION_TIME
#define M73_REPORT
1 |
|
显示打印进度
#define SHOW_PROGRESS_PERCENT
#define SHOW_ELAPSED_TIME
#define SHOW_REMAINING_TIME
#define PRINT_PROGRESS_SHOW_DECIMALS
1 |
|
多色打印
(待补充…)
常用功能
热床自动调平(ABL)
详细请查看官方文档说明:Automatic Bed Leveling
将 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即可。选择 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
。- Simple switch (
设置 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偏移量为负值。
- 在Configuration.h中,将该参数进行注释:
设置 Z探针 距离 边缘的距离
1
#define PROBING_MARGIN 10
设置 Z探针 在X、Y轴方向上的移动速度(mm/min)
1
#define XY_PROBE_FEEDRATE (133*60)
设置 Z探针 探测次数
1
#define MULTIPLE_PROBING 3
启用M48重复性测试 Z探针 的准确性
1
#define Z_MIN_PROBE_REPEATABILITY_TEST
选择调平方式,以下方式只可选其一进行启用
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设置探测网格点数
1
#define GRID_MAX_POINTS_X 5
启用EEPROM,保存热床调平计算的数据
1
#define EEPROM_SETTINGS
启用Z安全复位
1
#define Z_SAFE_HOMING
回原点前Z轴的抬升高度
1
#define Z_HOMING_HEIGHT 20
下载固件,测试热床自动调平
使用上位机连接3D打印机,使用
G28
复位X,Y,Z轴,使用G29
开始热床自动调平测试,测试完成后,使用M500
将热床调平数据保存到EEPROM中,可以输入M420 V
查看热床调平数据,格式为:1
2
3
4
5
6
70 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
- 设置 Z探针 相对于 喷嘴位置偏移量
详情请查看 热床自动调平(ABL) -> 步骤3
- 开启热床统一调平功能
1 |
|
- 启用G28后恢复床调平功能
1 |
|
- 启用 G26 网格验证模式工具。
1 |
|
- 热床统一调平参数设置
1 |
|
- 启用EEPROM
1 |
|
编译固件上传
热床统一调平初始化
1 |
|
- 执行热床统一调平测试
1 |
|
测量打印模型
使用游标卡尺测量模型各个坐标点的厚度是否为0.2mm,如果测量结果有偏差,记下该坐标点与偏差值,便于在步骤11中进行微调。
微调热床统一调平网格数据
请在LCD控制器上进行操作:
- 按下旋钮 -> Motion -> Unified Bed Leveling -> Mesh Edit
- 等待X、Y、Z轴自动复位后,喷嘴自动移动到(0,0)坐标点且屏幕上显示网格数据;使用旋钮移动到需要修改的坐标点,按下旋钮后根据偏差值来设置Z Value,修改完成后按下旋钮确认,此时喷头会移动到该坐标点相邻点进行进一步调整,如果不需要调整,请再次按下旋钮,直到修改完附近的点,喷头会再次移动到(0,0)坐标点;如还需调整其他坐标点,重复上述操作即可,直到全部调整完成后,长按旋钮保存网格数据,再次执行G26 C测试;重复步骤10 -> 11,直到测试模型达到近乎完美即可。😅
- 在切片软件中设置
耗材断料检测
使用断料检测传感器检测耗材是否装载,防止耗材异常断开或用尽后3D打印机还在继续工作;也为后续升级多色打印换料提供保障。
启用耗材断料检测
1
#define FILAMENT_RUNOUT_SENSOR
耗材插入挤出机后,用上位机连上3D打印机,使用
M119
查看各传感器的状态,如果filament返回的值为open,则需要反转耗材检测传感器的逻辑判断信号:#define FIL_RUNOUT_STATE HIGH
启用高级暂停
该参数在 Configuration_adv.h中进行启用:
1
#define ADVANCED_PAUSE_FEATURE
编译固件,即可开启耗材检测
高级功能
多色打印
(暂未升级 0.0)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!