打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。
#define BAUDRATE 115200
配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。
第 134 行 #define MOTHERBOARD BOARD_RAMPS_14_EFB
主板类型,创客基地的主板选择BOARD_RAMPS_14_EFB或者43
因此就替换为 BOARD_RAMPS_14_EFB或者43。 如果你使用的是其它板子,请参考旁边的注释并选择合适的配置。
第 152 行 #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
第 241 行 #define POWER_SUPPLY 1
此段内容来源于: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热敏电阻。如果是其他的,请参考旁边的注释进行设置。
第 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。
第 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
#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170
限位开关设置
限位开关位置即 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 轴最小限位,把相应代码注释掉或者启用。
第 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是最小距离,根据自己的安装方式来设置,一般都是最小距离。
/**
* 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
第 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 控制器,控制打印机移动,记录移动正确的轴和移动相反的轴,然后在固件中把移动方向反的轴进行更改。
第 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
第 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,也是打印机的软件限位边界,作为安全设置,当打印坐标超过该边界时打印机将不会运动。 该数值根据自己设计需求进行设置。
第 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 的预热温度。默认设置温度有些偏差,依
照上面进行修改。
第 1396 行 #define LCD_LANGUAGE en
将 en 更改为 cn 即可。
第 1532 行 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
第 1568 行 //#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
第 1659 行 //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
第 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个脉冲。
(详细的可以看这儿http://www.log4cpp.com/diy/3dprinter/46.html)
挤出机矫正
该步骤一般在打印机其他部分基本调试完毕之后,再执行这一步,所以首次修改先跳过这一步往后面看。
在进行挤出机矫正的时候需要把挤出机料管取下,进程基础需要暂时取下加热块并悬空(注意安全避免烫伤),以方便随时测量挤出长度。
检查挤出机是否干净,然后装载上耗材,并控制打印机喷头预热到 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 即可。
重新编译下载固件,可以再次挤出测量一下塑料丝,一般情况下就校准完毕了。如果不满意,依照上面步骤再来一次。
配置回原点的速率
#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)
单位为毫米每分钟,太快会导致机架晃动。
把第1530行://#define REPRAP_DISCOUNT_SMART_CONTROLLER
前面的“//”去掉来启用2004液晶。
注:如果是12864液晶,则需要将第1657行://#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
前面的“//”去掉,同时因为12864可以显示汉字,所有还需要添加字库U8glib ,不然会编译报错。直接搜索U8glib 就可以知道安装方法了。
把第1782行:#define SDSUPPORT
前面的“//”去掉来启用SD卡。
#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轴双限位开关