3D打印机之Marlin固件配置

东门焕
2023-12-01

参考资料

  1. RepRap_Prusa i3_3D打印机步进电机参数计算:http://www.log4cpp.com/diy/3dprinter/46.html
  2. i3型3D打印机制作详解——Marlin固件中文介绍

一、Marlin固件必要配置

configuraton.h

打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。

  1. 配置波特率
    一般来说使用默认的波特率(250000)就可以了,但是现在很多Arduino2560板都是自己按照官网的原理图优化改进得到,很多Arduino2560的USB转串口都是CH340芯片,一些小伙伴说遇到3D打印机上位机无法连接成功,或者连接成功一会又断开了。一般我都是建议他们把波特率调低,毕竟这里也不是3D打印的瓶颈,3D的打印速度主要是因为机械部分的限制。这里我建议设置成115200.
    #define BAUDRATE 115200

配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。

  1. 配置主板类型
    第 134 行 #define MOTHERBOARD BOARD_RAMPS_14_EFB
    找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子类型相同,否则无法正常使用。如果板子是RAMPS1.4,对应的配置应该为43(单打印头配置),和44(双打印头配置)。我用的是 创客基地的MKS_GEN_L, MKS_GEN_L,在固件支持的主板列表中,

主板类型,创客基地的主板选择BOARD_RAMPS_14_EFB或者43
因此就替换为 BOARD_RAMPS_14_EFB或者43。 如果你使用的是其它板子,请参考旁边的注释并选择合适的配置。

  1. 耗材直径设置
    第 152 行 #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
    市面上常见的耗材直径都是 1.75mm,固件默认是 3.0,这里我们把它修改为 1.75。
  2. 电源设置
    第 241 行 #define POWER_SUPPLY 1
    此设置一般在打印机搭载断电续打和打完关机模块时设置。
    一般设置为 1 ,如果安装有打完关机模块或者断电续打模块,则设置为 2。
  3. 温度传感器的设置
    在这几行代码的上面可以看到有一大段的注释说明支持的温度传感器型号:
  • ‘0’: “Not used”,
  • ‘1’:“100k / 4.7k - EPCOS”,
  • ‘2’:“200k / 4.7k - ATC Semitec 204GT-2”,
  • ‘3’:“Mendel-parts / 4.7k”,
  • ‘4’:“10k !! do not use for a hotend. Bad resolution at high temp. !!”,
  • ‘5’:“100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)”,
  • ‘501’:“100K Zonestar (Tronxy X3A)”,
  • ‘6’:“100k / 4.7k EPCOS - Not as accurate as Table 1”,
  • ‘7’:“100k / 4.7k Honeywell 135-104LAG-J01”,
  • ‘8’:“100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT”,
  • ‘9’:“100k / 4.7k GE Sensing AL03006-58.2K-97-G1”,
  • ‘10’:“100k / 4.7k RS 198-961”,
  • ‘11’:“100k / 4.7k beta 3950 1%”,
  • ‘12’:“100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)”,
  • ‘13’:“100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ’ & hotend ‘All In ONE’”,
  • ‘20’:“PT100 (Ultimainboard V2.x)”,
  • ‘51’:“100k / 1k - EPCOS”, ‘52’:“200k / 1k - ATC Semitec 204GT-2”,
  • ‘55’:“100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)”,
  • ‘60’:“100k Maker’s Tool Works Kapton Bed Thermistor beta=3950”,
  • ‘66’:“Dyze Design 4.7M High Temperature thermistor”,
  • ‘70’:“the 100K thermistor found in the bq Hephestos 2”,
  • ‘71’:“100k / 4.7k Honeywell 135-104LAF-J01”,
  • ‘147’:“Pt100 / 4.7k”, ‘1047’:“Pt1000 / 4.7k”,
  • ‘110’:“Pt100 / 1k (non-standard)”,
  • ‘1010’:“Pt1000 / 1k (non standard)”,
  • ‘-4’:“Thermocouple + AD8495”,
  • ‘-3’:“Thermocouple + MAX31855 (only for sensor 0)”,
  • ‘-2’:“Thermocouple + MAX6675 (only for sensor 0)”,
  • ‘-1’:“Thermocouple + AD595”,
  • ‘998’:“Dummy 1”,
  • ‘999’:“Dummy 2”

此段内容来源于:http://www.log4cpp.com/diy/3dprinter/41.html有待验证,我的选择是11而不是60
其实只需要看看热敏电阻的beta值,一般常见的beta值都是3950,然后通过查找注释就可以知道beta=2950的热敏电阻配置为60就可以了。

搜索找到“TEMP_SENSOR_0”,然后根据自己的热敏电阻数量来修改下边的宏。我是在加热头和热床上各有一个热敏电阻,所以修改TEMP_SENSOR_0和TEMP_SENSOR_BED这两个宏。
我们常用的温度传感器是 NTC 单端玻封100K 1% 3950热敏电阻,在这里用 11 表示。0 表示未使用该温度传感器接口。 实际测试中我选择了1,11这个值有待测试
使用了一个加热喷头,一个热床,且都是用 NTC 单端玻封100K 1% 3950热敏电阻,其他的接口未使用。则修改为下面所示代码。
第 313 行

#define TEMP_SENSOR_0 1 
#define TEMP_SENSOR_1 0 
#define TEMP_SENSOR_2 0 
#define TEMP_SENSOR_3 0 
#define TEMP_SENSOR_4 0 
#define TEMP_SENSOR_BED 11 
#define TEMP_SENSOR_CHAMBER 0 

分别配置挤出机温度传感器和热床温度传感器的类型。配置为11说明两个都是NTC 单端玻封100K 1% 3950热敏电阻。如果是其他的,请参考旁边的注释进行设置。

  1. 设置最低工作温度
第 343 行 
#define HEATER_0_MINTEMP  -3
#define HEATER_1_MINTEMP 0 
#define HEATER_2_MINTEMP 0 
#define HEATER_3_MINTEMP 0 
#define HEATER_4_MINTEMP 0 
#define BED_MINTEMP  -3

热床最低温度: #define BED_MINTEMP -3
热床工作最低温度,低于此温度让热床工作会报警。比如冬天室温太低就很可能触发热床温度过低报警,要想正常使用,可以把这个温度再调低,可以为负值。

Marlin 固件默认工作最低室温是 5℃。也就是说,如果打印机开机之后任何一个温度传感器检测的初始温度,也就是当时的室温低于 5℃,打印机将不会工作,Marlin 将以“MINTEMP”错误关闭打印机。
Err: MINTEMP:此错误表示您的热敏电阻已断开或变为开路。(或机器很冷。)
对于北方的冬天来说,这是一件非常恶心的事情,大家能够想象,每次使用打印机之前要用吹风机对着打印机的吹热风,然后开机预热才能打印。
所以在这里,固件里面就直接设置为 0。

  1. 设置最高工作温度
第 353 行 
#define HEATER_0_MAXTEMP 265 
#define HEATER_1_MAXTEMP 275 
#define HEATER_2_MAXTEMP 275 
#define HEATER_3_MAXTEMP 275 
#define HEATER_4_MAXTEMP 275 
#define BED_MAXTEMP 80 

最高工作温度的设置是为了安全,如果 Marlin 读取的温度高于这些值,则会出于安全原因立即关闭。对于 E3D V6 喷头,许多人使用 285 作为最大值,在这里一般使用 275℃。已经能够满足几乎所有 3D 打印塑料耗材的打印需求了。热床一般最高保护温度设置为 80℃,有网友反映温度高会烧毁热床,我这里根据网友的提示设置为80,若打印tpu温度可以适度降低。
Err: MAXTEMP:此错误通常意味着温度传感器导线短路在一起。它还可能表示加热器MOSFET 或继电器导致其保持接通的问题。

第1255行
// Preheat Constants
#define PREHEAT_1_TEMP_HOTEND 210
#define PREHEAT_1_TEMP_BED     60
#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255

#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED    110
#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255

预加热喷头与热床温度设置,打印PLA材料设置

#define PREHEAT_1_TEMP_HOTEND 210
#define PREHEAT_1_TEMP_BED     60

打印tpu材料设置

#define PREHEAT_1_TEMP_HOTEND 230
#define PREHEAT_1_TEMP_BED     50
  1. 防止冷挤压
    第 456 行
    #define PREVENT_COLD_EXTRUSION
    #define EXTRUDE_MINTEMP 170
    所谓的“冷挤压”可能会以多种方式损坏机器,但通常只会产生气刨长丝和堵塞的挤出机。使用此选项,如果热端低于指定温度,挤出机电机将不会移动。这里的 170 指的是最低挤出温度,当喷头温度低于 170℃时,挤出机将不会移动。这里不需要修改

限位开关设置

  1. 限位开关使能设置

限位开关位置即 3D 打印机开始打印之前的各轴参考坐标,Marlin 固件中可以设置打印机 XYZ 三轴方向最大最小共计六个限位,通常我们只需要用到三个最小限位即可。

第 510 行 
#define USE_XMIN_PLUG 
#define USE_YMIN_PLUG 
#define USE_ZMIN_PLUG 
//#define USE_XMAX_PLUG 
//#define USE_YMAX_PLUG 
//#define USE_ZMAX_PLUG 

系统默认只使用三个最小限位。除了三角洲之外的机型都是使用的三个最小限位,这里无需更改。三角洲机型使用三个最大限位和一个 Z 轴最小限位,把相应代码注释掉或者启用。

  1. 限位开关的常开和常闭设置,
第 531 行 
#define X_MIN_ENDSTOP_INVERTING false     set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false 
#define Z_MIN_ENDSTOP_INVERTING false 
#define X_MAX_ENDSTOP_INVERTING false 
#define Y_MAX_ENDSTOP_INVERTING false 
#define Z_MAX_ENDSTOP_INVERTING false 
#define Z_MIN_PROBE_ENDSTOP_INVERTING false 

限位开关类型分为常开与常闭,限位开关如果为机械式并且为常开,则此处为“true”,若是光电开关(常闭)则此处为“false”。这里的设置和打印机限位开关的接线有关,我的限位开关是s接S,G接G,开关和主控板的V不接。
如果一点击复位,电机就以慢速运动或只运动一小段距离就停止,说明限位开关极性配置反了。
下面的代码有待考证

const bool X_ENDSTOPS_INVERTING = true;
const bool Y_ENDSTOPS_INVERTING = true;
const bool Z_ENDSTOPS_INVERTING = true;

配置3个轴限位开关类型,配置为true,限位开关默认状态输出为1,触发状态输出为0。
一般的限位开关都是上拉的,按下触发后输出0。

第872行
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

限位开关是限制最大距离还是最小距离(归零的那一边),1是最大距离,-1是最小距离,根据自己的安装方式来设置,一般都是最小距离。

  1. 电机驱动
/**
 * Stepper Drivers
 *
 * These settings allow Marlin to tune stepper driver timing and enable advanced options for
 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
 *
 * A4988 is assumed for unspecified drivers.
 *
 * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
 *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
 *          TMC5130, TMC5130_STANDALONE
 * :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
 */
//#define X_DRIVER_TYPE  A4988
//#define Y_DRIVER_TYPE  A4988
//#define Z_DRIVER_TYPE  A4988
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define E0_DRIVER_TYPE A4988
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
  1. 步进电机电机设置
第 829 行 
// :{ 0:'Low', 1:'High' } 
#define X_ENABLE_ON 0 
#define Y_ENABLE_ON 0 
#define Z_ENABLE_ON 0 
#define E_ENABLE_ON 0 // For all extruders

电机默认状态,使能端为 0(低),这里保持默认,如果更改为 1(高),虽然不影响整个打印机工作,但是该设置会使在主板供电之后,打印机各电机随时保持锁死状态,人力无法干预打印机移动,不利于使用。

第 837 行 
#define DISABLE_X false 
#define DISABLE_Y false 
#define DISABLE_Z false 

电机释放,该设置会使打印机在打印过程中,未发生移动时释放该电机,让电机有机会得到间歇性休息(冷却),虽然听起来不错,但是对于大部分 3D 打印机来说都是属于开环控制,这样设置会很容易造成丢步,所以这里保持默认。

第 858 行 
//电机运动方向控制。由于每种打印机的原点位置不同,导致电机回零方向的不确定性,
//如果电机的运动方向相反,则可以将下面参数值 true 或 false,
//也可以将步进电机的其中同一组换下线,例如 1A 和 1B 对换。
#define INVERT_X_DIR false 
#define INVERT_Y_DIR true 
#define INVERT_Z_DIR false 

#define INVERT_E0_DIR false 
#define INVERT_E1_DIR false 
#define INVERT_E2_DIR false 
#define INVERT_E3_DIR false 
#define INVERT_E4_DIR false 

这一步设置的是各轴的移动方向,首次设置极有可能设置错误,true 和 false分别代表正向和反向。 可以先保持默认设置,然后进行下面的设置,最后在打印机上测试之后再对该项进行设置。 在测试之前将各轴移动到中间位置,使用上位机或者 LCD 控制器,控制打印机移动,记录移动正确的轴和移动相反的轴,然后在固件中把移动方向反的轴进行更改。

  1. 各轴原点方向设置
第 875 行 
// Direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1 
#define Y_HOME_DIR -1 
#define Z_HOME_DIR -1 

注意:机械式限位开关一定不要同时接主控板的正极与负极,很容易烧毁主控板。
这里设置的是 XYZ 轴复位时的移动方向,-1 表示 min,1 表示 max,对于大部分机器都是使用的最小值作为复位原点,所以全部是-1,这里不需要更改。 三角洲全部使用最大值作为原点,全部改为 1

  1. 打印机打印尺寸设置
    各轴最大行程,也就是打印机最大的打印尺寸
第 878 行 
// The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200

这里设置的是打印机的打印尺寸,单位是 mm,也是打印机的软件限位边界,作为安全设置,当打印坐标超过该边界时打印机将不会运动。 该数值根据自己设计需求进行设置。

  1. 断料检测设置
第 930 行   //#define FILAMENT_RUNOUT_SENSOR 

需要使用到断料检测开关则启用该句。
17. 材料预热温度设置

第 1257 行 
// Preheat Constants 
#define PREHEAT_1_TEMP_HOTEND 200 
#define PREHEAT_1_TEMP_BED     50 
#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255 
 
#define PREHEAT_2_TEMP_HOTEND 240 
#define PREHEAT_2_TEMP_BED    110 
#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255 

以上两个温度设置一般是 PLA 和 ABS 的预热温度。默认设置温度有些偏差,依
照上面进行修改。

  1. LCD 语言设置
    Marlin 固件支持很多个国家的语言,默认设置是英文,我们需要将其修改为中文。
第 1396 行  #define LCD_LANGUAGE en 

将 en 更改为 cn 即可。

  1. LCD 控制器类型设置
    市面上常用的 LCD 控制器为 12864,2004 和 1602,还有 IIC 接口的 12864 显示器。
  • 2004 显示器
    第 1532 行 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
  • 1602 显示器设置
    第 1568 行 //#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
  • 12864 显示器设置
    第 1659 行 //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
    如使用该显示器则启用对应的代码。
  1. 默认步进值计算和设置
    参考网址:http://www.log4cpp.com/diy/3dprinter/46.html
    这里是整个打印机设置的重中之重,步进值设置错误会直接影响到打印机的打印尺寸和打印机精度。
    计算得到结果以后通过搜索“DEFAULT_AXIS_STEPS_PER_UNIT",把对应的值填进去。括号里的四个值一次对应于X,Y,Z,E四个轴的设置。如果想调整各个轴的移动速度可以修改DEFAULT_MAX_ACCELERATION这个宏
第 611 行  
/**
 * Default Axis Steps Per Unit (steps/mm)                                          //步进电机参数
 * Override with M92
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 400, 400, 400, 94.69 }

/**
 * Default Max Feed Rate (mm/s)
 * Override with M203
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_MAX_FEEDRATE          {100, 150, 20, 20}

/**
 * Default Max Acceleration (change/s) change = mm/s
 * (Maximum start speed for accelerated moves)
 * Override with M201
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_MAX_ACCELERATION      { 200, 200, 50, 10000 }

/**
 * Default Acceleration (change/s) change = mm/s
 * Override with M204
 *
 *   M204 P    Acceleration
 *   M204 R    Retract Acceleration
 *   M204 T    Travel Acceleration
 */ 
#define DEFAULT_ACCELERATION          2000    // X, Y, Z and E acceleration for printing moves     //各轴的回原点速度
#define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   2000    // X, Y, Z acceleration for travel (non printing) moves

/**
 * Default Jerk (mm/s)
 * Override with M205 X Y Z E
 *
 * "Jerk" specifies the minimum speed change that requires acceleration.
 * When changing speed and direction, if the difference is less than the
 * value set here, it may happen instantaneously.
 */
#define DEFAULT_XJERK                 1.0           //各轴电机转速  数值 太高可能会导致步进电机丢步
#define DEFAULT_YJERK                 1.0
#define DEFAULT_ZJERK                  0.4
#define DEFAULT_EJERK                  5.0

这行代码后面的括号中有四个数值,分别对应了 X、Y、Z、E(挤出机)的每毫米的步进值,也可以说是各轴的运动分辨率,各轴每移动 1 毫米,对应的电机所需要的脉冲数。
这四个参数可以通过 Repetier-Host 软件或者其他计算工具进行计算,
我的打印机3轴都是使用的8mm丝杆,因此电机转一圈移动8mm,电机步距角是1.8度,转一圈需要200个脉冲,电机驱动是16细分,因此转一圈需要3200个脉冲。因此移动1mm需要400个脉冲。

  • 计算 X 和 Y 轴的参数,计算原理为步进电机运转一周为 360°,与此同时 ,同步轮发生一周的转动,3D 打印机常用的 2GT 同步轮,有 16 齿和 20 齿,对应的同步带齿距为 2mm。
  • 拿 20 齿的为例,也就是电机每转动一周,就发生 40mm 的运动,常用的 42步进电机步距角是 1.8°,同时驱动细分是 1/16,那么步进电机运动一圈就发生360/1.8*16=3200 步,X Y 的分辨率就是 3200/40=80。
  • Z 轴,在同样 16 细分的情况下,和上面计算一样,步进电机每转动一周需要 3200 步,这时候就需要知道 Z 轴电机每转动一圈,Z 轴方向上移动多少距离。假设 Z 轴 1:1 直接连接一个导程为 4mm 的丝杆(即丝杆转动一周,丝杆螺母运动 4mm),那么 Z 轴的分辨率为 3200/4=800。
  • 挤出机的数值不容易直接计算,一般需要打印机测试之后根据实际矫正,对于挤出机来说,如果没有加减速器,那么步进电机转一周,带动挤出齿轮转一周,那么耗材就被挤出“挤出齿轮的周长”这个距离,假如挤出齿轮直径为 10 毫米,那么 E 轴分辨率就是 3200/( 10*3.14) = 101.86 。如果挤出机电机带有减速器,这个数值还要除以减速比。对于没有减速器的挤出机 16 细分下这里可以先设置为 100,方便我们后面进行矫正计算,实际值在后面矫正时再更改。
  • 我的打印机使用的是MK8挤出机,电机上的齿轮直径是11mm,周长是3.14*11=34.54mm,16细分,转一圈需要3200个脉冲,因此移动1mm,需要3200/34.54=92.64个脉冲。为了追求精确可以上料后,控制挤出机挤出10mm,用尺子量一下实际挤出的长度来矫正一下计算值。

(详细的可以看这儿http://www.log4cpp.com/diy/3dprinter/46.html

  1. 挤出机矫正
    该步骤一般在打印机其他部分基本调试完毕之后,再执行这一步,所以首次修改先跳过这一步往后面看。
    在进行挤出机矫正的时候需要把挤出机料管取下,进程基础需要暂时取下加热块并悬空(注意安全避免烫伤),以方便随时测量挤出长度。
    检查挤出机是否干净,然后装载上耗材,并控制打印机喷头预热到 200℃(挤出温度),之后在塑料丝的和固定参照物上做一个标记,然后控制挤出机挤出100mm 的塑料丝,当挤出机停止时,使用卡尺测量一下塑料丝标记和参照物之间的距离,得到实际挤出距离 L。
    如果实际挤出距离也是 100mm 那么恭喜你,你已经有了一个完美的校准挤出机。
    如果实际测量不是 100mm,则需要计算矫正数值。计算方法如下;
    在本固件中,我们矫正的挤出机初始值设置的是 100,挤出 100mm,则需要 E 电机执行(100*100=10000 步)。
    如果实际测量的值大于 100mm,假设为 115mm,则 10000/115≈86.96,保存小数点后两位数,在固件中把 100 更改为 86.96 就行了。
    如果实际测量值为 96mm,10000/96≈104.16667,保存小数点后两位数,把固件里面 100 更改为 104.17 即可。
    重新编译下载固件,可以再次挤出测量一下塑料丝,一般情况下就校准完毕了。如果不满意,依照上面步骤再来一次。

  2. 配置回原点的速率
    #define HOMING_FEEDRATE {50 * 60, 50 * 60, 4 * 60, 0}


// 第1149行 ,Homing speeds (mm/m)
#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z  (4*60)

单位为毫米每分钟,太快会导致机架晃动。

  1. 第1530行://#define REPRAP_DISCOUNT_SMART_CONTROLLER前面的“//”去掉来启用2004液晶。
    注:如果是12864液晶,则需要将第1657行://#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER前面的“//”去掉,同时因为12864可以显示汉字,所有还需要添加字库U8glib ,不然会编译报错。直接搜索U8glib 就可以知道安装方法了。

  2. 第1782行:#define SDSUPPORT前面的“//”去掉来启用SD卡。

configuration_adv.h

  1. Marlin固件支持两个步进电机控制X轴或者双Z轴
  • 并联方式
    在电机功率和负载比较小的情况,可采用并联的方式进行双Z的硬件改造,即从Z轴再直接并联一个电机。
  • 固件configuration_adv.h文件修改
#define Z_DUAL_STEPPER_DRIVERS
#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
  //#define Z_DUAL_ENDSTOPS
  #if ENABLED(Z_DUAL_ENDSTOPS)
    #define Z2_USE_ENDSTOP _XMAX_
    #define Z_DUAL_ENDSTOPS_ADJUSTMENT  0
  #endif
#endif

在固件的文件中找到 第325行://#define Z_DUAL_STEPPER_DRIVERS 将前边的“//” 删除即可将主板上的E1改为Z轴。
//#define Z_DUAL_ENDSTOPS前边的“//” 删除即可设置Z轴双限位开关

 类似资料: