3Dimension Printer

零部件介绍

X型材

这次打印机项目使用的框架是欧标2020铝合金型材,银色的市场价格是9.5-12每米,黑色的价格是12以上每米,制作需要切割指定长度的型材,具体情况如下表

x轴 250mm
y轴 390mm
z轴 320mm
横梁 400mm

在购买材料时,x,y,z都需要两个,横梁只需要采购一个。具体结构如下图:

图中所有尺寸都是标准欧标2020铝型材,他们之间需要使用到角码进行连接,我使用的角码是下图角码

在对应位置还需要有配套的固定螺丝,例如Y轴42步进电机固定需要T型螺母。螺母规格如下图:

L=10,H=5,S=6,D=M3,主要是L的型号必须对上,D可以根据螺丝选取,螺丝选取规格如下图:

S=2,t=1,dk=6,d=M3,L可以多种规格。

光轴

光轴的作用就是相当于导轨,选用的的导轨是8mm直径的,运动滑块需要在导轨上运动带动打印头移动,导轨还需要有滑动轴承配和。

光轴的价格大概是16元每米。这个只是大概价格,实际购买中都是有一定规格选取的。

x光轴 350mm
y光轴 390mm
z光轴 350mm

滑动轴承选用的是LM8LUU,市场价格在1.4一个,规格如下图:

高度=24,外径=15,内径=8。其中加长的高度是45mm

丝杆

丝杆是Z轴向的传动装置,在丝杆螺母的带动下,位于Z轴的模块会沿着丝杆滑动,带动打印头在Z轴向移动,同时他也控制升高的精度,而升高的精度会影响打印精度,丝杆会成为一小部分影响因素。丝杆和丝杆螺母的构造图如下:

该机器采用丝杆导成为8,长度为350。

联轴器

联轴器使用很简单就是将丝杆和42步进电机进行连接。购买的是5*8联轴器,市场价格2块左右。结构图如下。

42步进电机

之所以叫做42步进电机是因为他的长宽都是42mm,42步进电机有很多规格,主要区别是在高度上面,高度越高扭力越大,打印可调速度就越快。本打印机中Y轴使用48mm高步进电机,Z和X使用38高步进电机。挤出机使用泰坦步进电机。结构图如下:

同步轮&惰轮

同步轮是用来固定在步进电机上的,它是用来传动的一个齿轮,常见的有16齿和20齿,选用的是20齿。可以根据需求进行选择,个人认为18齿倾向于打印精度,20齿倾向于打印速度。价格大概1.5元一个,结构图如下:

惰轮是一个从动轮,价格在2元左右一个结构如下:

同步带是等于传动带,价格大概2元每米。

滚动轴承

滚动轴承型号很多,这里采购它的作用是在丝杆固定使用这个更好的转动。市场价格在0.5元左右,购买的是内径8直径22高7型号是608ZZ

散热管

散热管是套在喉管外面,对喉管进行散热的。市场价格在4元左右。我这里设计的是远程挤出,散热管是使用的CR8的具体如图:

铁氟龙管

因为远程挤出耗材,所以必须要使用铁氟龙管作为耗材引导,防止耗材在进出时弯曲变性。铁氟龙管价格在2~3元每米。要根据自己的耗材直径进行购买。

气动插头

用在散热管和铁氟龙管连接处接口是M6内径大于4mm,市场价格1元左右。具体形状如图:

远程挤出机

远程挤出机由挤出装置和步进电机组成,原设计采用泰坦挤出机专用步进电机。挤出机型号是CR10,价格为11元,构造如图所示:

铝加热块

加热块是连接电热管和喉管及喷头的,用来传热熔化耗材。选用型号E3D,价格随质量变化,我购买的是0.45元的我觉得没必要买太好的。规格如下图:

散热风扇

和CPU散热风扇同理,散热用的,大概2元一个,规格是40*10*10我准备安装两个,但是模型设计的只有一个,因为要等装好后自己打印自己的配件。

喉管

喉管是引导耗材熔化的,喉管种类很多,和散热配套的是E3D单价0.5元,规格图如下:

加热管

是热源产生热量的主要部件,加热的温度全部靠它产出,价格也随质量波动较大,购买的是2元左右的。

热敏电阻

监控温度,调节加热管发热量。价格在1元左右

喷头

进出材料的头,精度有多种规格,常见的有0.2~0.8mm。黄铜的价格大概也就几毛钱一个。

电源

110/220v转12V电源,功率电流按照需求购买,我买的是20A250W带风扇

固定件介绍

所有的尺寸单位均为in,由于没有更改默认单位。

X固定

X固定右

Y固定上

Y光轴固定

Y同步轮固定

Y轴步进电机固定

Z轴固定

底座

电源支座

挤出机支架

建模部分不好记录,到这里基本结束,模型开源到github,点击下载

装配

装配部分比较有趣,如果模型设计的没有问题在装配过程也不会碰到太大的问题。我的模型有些孔径设计的太小,按照一般每个孔径都需要预留2-3mm不然安装直线轴承光轴这些东西的时候就会卡住。如果设计太小也是可以弥补的,安装直线轴承的地方太小可以使用加热螺丝刀的方法扩大孔径,不建议使用美工刀去切割,PLA材料非常的硬需要花费很久的时间,但是他不耐温。

安装x轴和y轴

由于没有六边螺丝刀,我用尖嘴钳代替的,上螺丝非常慢,打印固定件可以在后期框架搭建好再固定。

安装铝基板

安装z轴

安装光轴和丝杆

安装挤出机

我采用的是远程挤出,为了减少x轴的重量加快打印速度

电源部分

电源最好买这种带开关的,毕竟要接入220V电压。电源就是将220V高压转换成为12V的低压。

购买的开关都有配线,按照下图的接线方式进行接线,之后一定要用万用表检查是否接线正确。

接下来连接电源

连接部分有字母标识L代表火线一般是红色,N代表零线一般黑色,还有一根底线一般黄色

插入电源进行测试如果指示灯亮风扇运行则安装成功,测试一定注意不要触碰接线的金属部分

控制板

下面给出两个主板连接图,可以参考对照接线。

步进电机驱动板需要安装在指定的位置,安装这个板之前要先把跳线帽安装好,三个都要安装。

图中对应的ENABLE要和控制板上对应的EN接好,接错会烧板。

程序固件

在Arduino烧录程序需要准备编译器和ide下载Arduino IDE,下载地址

IDE准备好后需要准备开源的程序,marlin固件下载地址,我使用的1.1.9一个比较稳定的版本。

要想点亮显示板需要一个显示屏文件U8lib下载地址,文件解压到安装IDE的libraries目录,这个步骤要在编译前进行安装。

如果mega板无法识别的话需要一个驱动下载地址

configuration.h

作者信息&启动界面

在的第84行

1
2
3
4
#define STRING_CONFIG_H_AUTHOR "(Blosslom's 3Dprinter)" // Who made the changes.
#define SHOW_BOOTSCREEN //注释则直接进入界面
#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
#define STRING_SPLASH_LINE2 "https://blosslom1.github.io/" // will be shown during bootup in line 2

在139行打印机的名字

1
#define CUSTOM_MACHINE_NAME "Blosslom's 3D Printer"

在第143行打印机ID多个打印机连接电脑可以用来识别

1
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"

串口波特率

在第126行,主要和电脑系统有关,电脑是win系统设置成250000,Mac或Linux系统设置成112500,烧录的时候因为系统原因波特率上不到250000。对应的切片或联机打印软件也需要给波特率改为设置的值,否则无法连接。

1
#define BAUDRATE 250000

主板设置

133行

1
2
3
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif

MOTHERBOARD BOARD_RAMPS_14_EFB是表示主板型号,大部分的主板型号都在boards.h这个文件中,可以根据自己购买的主板选择对应的名称,大致有以下型号。

查看型号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#define BOARD_RAMPS_OLD         3     // MEGA/RAMPS up to 1.2

#define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
#define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
#define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
#define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
#define BOARD_RAMPS_13_SF 38 // RAMPS 1.3 (Power outputs: Spindle, Controller Fan)

#define BOARD_RAMPS_14_EFB 43 // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
#define BOARD_RAMPS_14_EEB 44 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
#define BOARD_RAMPS_14_EFF 45 // RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
#define BOARD_RAMPS_14_EEF 46 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
#define BOARD_RAMPS_14_SF 48 // RAMPS 1.4 (Power outputs: Spindle, Controller Fan)

#define BOARD_RAMPS_PLUS_EFB 143 // RAMPS Plus 3DYMY (Power outputs: Hotend, Fan, Bed)
#define BOARD_RAMPS_PLUS_EEB 144 // RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Bed)
#define BOARD_RAMPS_PLUS_EFF 145 // RAMPS Plus 3DYMY (Power outputs: Hotend, Fan0, Fan1)
#define BOARD_RAMPS_PLUS_EEF 146 // RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Fan)
#define BOARD_RAMPS_PLUS_SF 148 // RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan)

//
// RAMPS Derivatives - ATmega1280, ATmega2560
//

#define BOARD_3DRAG 77 // 3Drag Controller
#define BOARD_K8200 78 // Velleman K8200 Controller (derived from 3Drag Controller)
#define BOARD_K8400 79 // Velleman K8400 Controller (derived from 3Drag Controller)
#define BOARD_BAM_DICE 401 // 2PrintBeta BAM&DICE with STK drivers
#define BOARD_BAM_DICE_DUE 402 // 2PrintBeta BAM&DICE Due with STK drivers
#define BOARD_MKS_BASE 40 // MKS BASE v1.0
#define BOARD_MKS_BASE_15 405 // MKS v1.5 with Allegro A4982 stepper drivers
#define BOARD_MKS_BASE_HEROIC 41 // MKS BASE 1.0 with Heroic HR4982 stepper drivers
#define BOARD_MKS_GEN_13 47 // MKS GEN v1.3 or 1.4
#define BOARD_MKS_GEN_L 53 // MKS GEN L
#define BOARD_ZRIB_V20 504 // zrib V2.0 control board (Chinese knock off RAMPS replica)
#define BOARD_FELIX2 37 // Felix 2.0+ Electronics Board (RAMPS like)
#define BOARD_RIGIDBOARD 42 // Invent-A-Part RigidBoard
#define BOARD_RIGIDBOARD_V2 52 // Invent-A-Part RigidBoard V2
#define BOARD_SAINSMART_2IN1 49 // Sainsmart 2-in-1 board
#define BOARD_ULTIMAKER 7 // Ultimaker
#define BOARD_ULTIMAKER_OLD 71 // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
#define BOARD_AZTEEG_X3 67 // Azteeg X3
#define BOARD_AZTEEG_X3_PRO 68 // Azteeg X3 Pro
#define BOARD_ULTIMAIN_2 72 // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
#define BOARD_RUMBA 80 // Rumba
#define BOARD_BQ_ZUM_MEGA_3D 503 // bq ZUM Mega 3D
#define BOARD_MAKEBOARD_MINI 431 // MakeBoard Mini v2.1.2 is a control board sold by MicroMake
#define BOARD_TRIGORILLA_13 343 // TriGorilla Anycubic version 1.3 based on RAMPS EFB
#define BOARD_TRIGORILLA_14 443 // TriGorilla Anycubic version 1.4 based on RAMPS EFB
#define BOARD_RAMPS_ENDER_4 243 // Creality: Ender-4, CR-8

//
// Other ATmega1280, ATmega2560
//

#define BOARD_CNCONTROLS_11 111 // Cartesio CN Controls V11
#define BOARD_CNCONTROLS_12 112 // Cartesio CN Controls V12
#define BOARD_CHEAPTRONIC 2 // Cheaptronic v1.0
#define BOARD_CHEAPTRONIC_V2 21 // Cheaptronic v2.0
#define BOARD_MIGHTYBOARD_REVE 200 // Makerbot Mightyboard Revision E
#define BOARD_MEGATRONICS 70 // Megatronics
#define BOARD_MEGATRONICS_2 701 // Megatronics v2.0
#define BOARD_MEGATRONICS_3 703 // Megatronics v3.0
#define BOARD_MEGATRONICS_31 704 // Megatronics v3.1
#define BOARD_RAMBO 301 // Rambo
#define BOARD_MINIRAMBO 302 // Mini-Rambo
#define BOARD_MINIRAMBO_10A 303 // Mini-Rambo 1.0a
#define BOARD_EINSY_RAMBO 304 // Einsy Rambo
#define BOARD_EINSY_RETRO 305 // Einsy Retro
#define BOARD_ELEFU_3 21 // Elefu Ra Board (v3)
#define BOARD_LEAPFROG 999 // Leapfrog
#define BOARD_MEGACONTROLLER 310 // Mega controller
#define BOARD_SCOOVO_X9H 321 // abee Scoovo X9H
#define BOARD_GT2560_REV_A 74 // Geeetech GT2560 Rev. A
#define BOARD_GT2560_REV_A_PLUS 75 // Geeetech GT2560 Rev. A+ (with auto level probe)

//
// ATmega1281, ATmega2561
//

#define BOARD_MINITRONICS 702 // Minitronics v1.0/1.1
#define BOARD_SILVER_GATE 25 // Silvergate v1.0

//
// Sanguinololu and Derivatives - ATmega644P, ATmega1284P
//

#define BOARD_SANGUINOLOLU_11 6 // Sanguinololu < 1.2
#define BOARD_SANGUINOLOLU_12 62 // Sanguinololu 1.2 and above
#define BOARD_MELZI 63 // Melzi
#define BOARD_MELZI_MAKR3D 66 // Melzi with ATmega1284 (MaKr3d version)
#define BOARD_MELZI_CREALITY 89 // Melzi Creality3D board (for CR-10 etc)
#define BOARD_MELZI_MALYAN 92 // Melzi Malyan M150 board
#define BOARD_MELZI_TRONXY 505 // Tronxy X5S
#define BOARD_STB_11 64 // STB V1.1
#define BOARD_AZTEEG_X1 65 // Azteeg X1
#define BOARD_ANET_10 69 // Anet 1.0 (Melzi clone)

//
// Other ATmega644P, ATmega644, ATmega1284P
//

#define BOARD_GEN3_MONOLITHIC 22 // Gen3 Monolithic Electronics
#define BOARD_GEN3_PLUS 9 // Gen3+
#define BOARD_GEN6 5 // Gen6
#define BOARD_GEN6_DELUXE 51 // Gen6 deluxe
#define BOARD_GEN7_CUSTOM 10 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
#define BOARD_GEN7_12 11 // Gen7 v1.1, v1.2
#define BOARD_GEN7_13 12 // Gen7 v1.3
#define BOARD_GEN7_14 13 // Gen7 v1.4
#define BOARD_OMCA_A 90 // Alpha OMCA board
#define BOARD_OMCA 91 // Final OMCA board
#define BOARD_SETHI 20 // Sethi 3D_1

//
// Teensyduino - AT90USB1286, AT90USB1286P
//

#define BOARD_TEENSYLU 8 // Teensylu
#define BOARD_PRINTRBOARD 81 // Printrboard (AT90USB1286)
#define BOARD_PRINTRBOARD_REVF 811 // Printrboard Revision F (AT90USB1286)
#define BOARD_BRAINWAVE 82 // Brainwave (AT90USB646)
#define BOARD_BRAINWAVE_PRO 85 // Brainwave Pro (AT90USB1286)
#define BOARD_SAV_MKI 83 // SAV Mk-I (AT90USB1286)
#define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: HARDWARE_MOTHERBOARD=84 make
#define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board

挤出头

在第149行,设置挤出机数量,Makeboard Pro主板最多支持2挤出机,Makeboard Mini仅支持1挤出机。

1
#define EXTRUDERS 1

在第313行,设置哪个挤出机传感热敏电阻类型,TEMP_SENSOR_0 表示一号打印头的感温类型,TEMP_SENSOR_1 以此类推,设置为0表示不启用

1
2
3
4
5
#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

默认一个挤出头设置为1

在第155行,设置混色打印

1
//#define SINGLENOZZLE

在第353行,HEATER_0_MAXTEMP 表示一号打印头的最大温度,HEATER_1_MAXTEMP 以此类推。#define BED_MAXTEMP 100表示热床100度

1
2
3
4
5
6
#define HEATER_0_MAXTEMP 230
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define BED_MAXTEMP 100

热床

在第318行

1
#define TEMP_SENSOR_BED 0

默认是0,启动热床需要调到1

挤出机保护

在第457行,挤出机工作的最小温度防止挤出轮磨损。

1
#define EXTRUDE_MINTEMP 190

在第464行,挤出机挤出最大长度

1
#define EXTRUDE_MAXLENGTH 200

加热器保护

在第483行,如果热敏电阻坏了主板无法感受到温度就停止加热防止自然

1
2
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed

限位开关

第531行

1
2
3
4
5
6
7
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.

使用微动开关,将C和NO使用线焊接,对应主板的S接口和中间的接口(MKS主板)。将对应的限位设置成true。

步进电机**

在第611行下列是我计算好的脉冲数据

1
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 1600, 100.323 }

在第618行,表示的是步进电机的最大移动速度

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

在第626行,表示步进电机的最大加速度

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

在第636行,点击默认最大加速度

1
2
3
#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration for printing moves设置X,Y,Z和E轴电机的默认移动加速度。
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts设置E轴电机回抽时候的默认加速度。
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves设置E轴电机挤出时候的默认加速度
X轴向和Y轴向

这个两个轴向我都是使用的20齿的同步轮可以用同样的方法计算脉冲,同步轮齿外径是12mm乘以π大概等于37.699111,一圈360°步进电机步进角1.8°意思是就是转一圈需要200个脉冲,步进电机驱动是16细分的还要×16也就是3200个脉冲转一圈,一圈同步带移动37.699111mm,那么移动1mm需要的脉冲就是3200除以周长大概等于84.882个脉冲。(据说根据同步带2mm一个齿来计算是80个脉冲)

Z轴向

同理3200个脉冲一圈,我买的螺杆的导距是8,4螺旋,所以导程是8mm,400个脉冲移动1mm

挤出机

同理,只需要知道挤出机的齿轮一周多长就可以计算脉冲。我买的挤出机齿轮是8mm,周长是25.1327408,需要脉冲127.323个脉冲

如果不想计算可以参考这个网站

计算公式( 360 / 电机步距角 * 细分数 ) / (同步带齿距 * 齿数)

禁用电机

在第835行,可以禁用一个轴向的电机改为ture

1
2
3
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
电机运动方向

在第848行,如果电机运动方向相反可以改一下ture/false,#define INVERT_E0_DIR false是一号挤出机。

1
2
3
4
5
6
7
8
9
#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
// @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false

探针

在第719行,用于自动调平

1
#define FIX_MOUNTED_PROBE

探针偏移

在第776行,自动调平装置距离打印头的距离

1
2
3
#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]左侧用负
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]探针在前用负
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]

Z归零上升距离

在第867行归零时z轴自己会上升一段距离

1
//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...

热床尺寸c

在第879行,设置热床尺寸

1
2
#define X_BED_SIZE 220
#define Y_BED_SIZE 220

运动尺寸

在第883行

1
2
3
4
5
6
7
#define Z_MAX_POS 220
#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 220

限位尺寸

在第902行

1
2
3
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
#define MIN_SOFTWARE_ENDSTOP_Z

缺料检查

在第927行,去掉注释即可开启,FIL_RUNOUT_INVERTING 设置为 true 可反转限位开关信号。
ENDSTOPPULLUP_FIL_RUNOUT 去掉注释,表示缺料检测引脚默认上拉,一般默认开启。
FILAMENT_RUNOUT_SCRIPT 设置缺料检测激活时运行的脚本,一般为 M600,使打印机暂时打印,换好耗材后,可继续打印。

1
2
3
4
5
6
7
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
#define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
#define FILAMENT_RUNOUT_SCRIPT "M600"
#endif

自动调平

在第974行,根据自己的调平方式进行选择。#define AUTO_BED_LEVELING_BILINEAR是3DTouch调平。

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

设置调平点数

在第1020行,3就代表3×3=9个点进行取样调平

1
2
#define GRID_MAX_POINTS_X 3
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

LCD添加菜单

在第1099行,给调平添加的

1
#define LCD_BED_LEVELING

设置回零中心

在第1142行,开启后机器回移动到热床中间,然后Z轴回零。

1
#define Z_SAFE_HOMING

归零速度

在第1150行,一般来说默认就可以了

1
2
#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (4*60)

设置调平(参数)保存

在第1224行,每次调平后需要保存数据,进行Z轴补偿,可开启EEPROM功能,打印机部分配置参数将保存在打印机中,可通过液晶屏实时调节,无需重刷固件。配置固件阶段推荐关闭,调试好机器后再开启,要不很可能有参数给代码中调节后不会生效,造成误判断。

1
#define EEPROM_SETTINGS

耗材预加热

在第1256行,加热PLA和ABS的打印头,热床温度,及冷却风扇转速。

1
2
3
4
5
6
7
#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 70
#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

LCD语言

在第1394行,en是英文,cn是中文

1
#define LCD_LANGUAGE en

SD卡

在第1427行

1
#define SDSUPPORT

旋转编码器反向

在1487行

1
#define REVERSE_ENCODER_DIRECTION

独立轴复位菜单

在第1499行,可在液晶屏上增加单独的复位X,Y,Z轴的菜单,方便调试。

1
//#define INDIVIDUAL_AXIS_HOMING_MENU

蜂鸣器

在1507行,旋转编码旋转或者按下时蜂鸣器会发声。

1
#define SPEAKER

LCD显示屏类型

在第1657左右,根据自己型号选择

1
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
1
#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command

Marlin_main.cpp

自动调平数据

在第12876行,必须添加不然无法保存数据

1
case 28: gcode_G28(false);set_bed—_leveling_enabled(true); break;

configuration_adv.h

Z电机使用挤出2,因为我没有所以就没设置。

1
//#define Z_DUAL_ENDSTOPS

花屏问题

ultralcd_st7920_u8glib_rrd.h

44-46行复制到Configuration.h,去掉注释,更改中间参数到200或250

1
2
3
#define ST7920_DELAY_1 DELAY_NS(0)
#define ST7920_DELAY_2 DELAY_NS(0)
#define ST7920_DELAY_3 DELAY_NS(0)

marlin详细网址

Prepare{Move axis{MoveX{Move 10mmMove 1mmMove 0.1mmMoveY{Move 10mmMove 1mmMove 0.1mmMoveZ{Move 10mmMove 1mmMove 0.1mmExtruder{Move 10mmMove 1mmMove 0.1mmAuto homeBed Leveing{Auto homeLevel bedProbe Z Offset:Load settingsStore settingsSet home offsetsDisable steppersPreheat PLA{Preheat PLAPreheat PLA EndPreheat PLA BedPreheat ABS{Preheat ABSPreheat ABS EndPreheat ABS BedPrepare \begin{cases} Move \ axis \begin{cases} Move X \begin{cases} Move \ 10mm\\ Move \ 1mm\\ Move \ 0.1mm\\ \end{cases}\\ Move Y \begin{cases} Move \ 10mm\\ Move \ 1mm\\ Move \ 0.1mm\\ \end{cases}\\ Move Z \begin{cases} Move \ 10mm\\ Move \ 1mm\\ Move \ 0.1mm\\ \end{cases}\\ Extruder \begin{cases} Move \ 10mm\\ Move \ 1mm\\ Move \ 0.1mm\\ \end{cases} \end{cases}\\ Auto \ home\\ Bed \ Leveing\begin{cases} Auto \ home\\ Level\ bed\\ Probe\ Z\ Offset:\\ Load\ settings\\ Store\ settings \end{cases}\\ Set\ home\ offsets\\ Disable\ steppers\\ Preheat\ PLA\begin{cases} Preheat\ PLA\\ Preheat\ PLA\ End\\ Preheat\ PLA\ Bed \end{cases}\\ Preheat\ ABS\begin{cases} Preheat\ ABS\\ Preheat\ ABS\ End\\ Preheat\ ABS\ Bed \end{cases}\\ \end{cases}

Control{Tempreture{Nozzle:Bed:Ffan speed:Autotem:Min:max:Fact:PIDP:PIDI:PIDD:Preheat PLA conf{Fan speed:Nozzle:Bed:Store settingsPreheat ABS conf{Fan speed:Nozzle:Bed:Store settingsMotion{Probe Z Offest:Velocity{Vmax X:Vmax Y:Vmax Z:Vmax E:Vmin:VTrav min:Filament{E in mm3Store settingsLoad settingsRestore failsafeInitializeEEPROM{InitializeEEPROMSD cardControl\begin{cases} Tempreture\begin{cases} Nozzle:\\ Bed:\\ Ffan\ speed:\\ Autotem:\\ Min:\\ max:\\ Fact:\\ PID-P:\\ PID-I:\\ PID-D:\\ Preheat\ PLA\ conf\begin{cases} Fan\ speed:\\ Nozzle:\\ Bed:\\ Store\ settings \end{cases}\\ Preheat\ ABS\ conf\begin{cases} Fan\ speed:\\ Nozzle:\\ Bed:\\ Store\ settings \end{cases} \end{cases}\\ Motion \begin{cases} Probe\ Z\ Offest:\\ Velocity\begin{cases} Vmax\ X:\\ Vmax\ Y:\\ Vmax\ Z:\\ Vmax\ E:\\ Vmin:\\ VTrav\ min: \end{cases}\\ Filament\begin{cases} E\ in\ mm3 \end{cases}\\ Store\ settings\\ Load\ settings\\ Restore\ failsafe\\ Initialize EEPROM\begin{cases} Initialize EEPROM \end{cases}\\ \end{cases} \end{cases}\\ SD\ card

必看内容(避坑)

第一个问题:固定件的设计问题,所有的孔最好是设计大2-3mm,因为定制的时候有一定误差会导致装配不上。而且PLA材料很硬又不好处理,装配好的框架就会倾斜不整齐。

第二个问题:步进电机接线问题,接线接反的话步进电机会震动不转,只需将中间两条线调换即可。

第三个问题:配置电源火线零线要分清,接入控制主板也不要接错

第四个问题:热床接线有正负极之分,接线要注意不要有触碰,会导致电源短路。

第五个问题:电机驱动不要安装错,主板会烧。

第六个问题:设置挤出机脉冲要计算好,数值偏大挤出机会滑动无法挤出,数值偏小造成打印填充不准确。

第七个问题:挤出机滑动,可能是数值问题可能是挤出设备太紧了,也有可能是挤出点击扭矩不够。

第八个问题:显示屏显示有问题,调节显示板后面的电阻调整一个合适的对比度

第九个问题:打印加热中出现Bed heating failed这个是因为热床加热出问题,查看热敏电阻,或者关闭热床。

第十个问题:打印加热中出现E1 heating failed,显示的意思加热头加热失败,检查热敏电阻是否有问题,需要耐高温热敏电阻最好是耐350度高温。

第十一个问题:打印加热过程没事,一开散热风扇就显示E1 heating failed,这是因为加热头功率过低,最好选用50W以上的。

第十二个问题:打印过程中突然挤出机卡住,耗材阻力太大,因为没有散热风扇导致耗材在喉管内熔融有凝固堵住喉管。

第十三个问题:打印机无法知道自己的位置,参看G代码部分。

常见问题及解决方案

喉管堆料

打印过程中,由于熔料段喉管堆料产生过大的阻力,导致挤出机将线材的部分材料刮去留下一个凹坑,这种情况会造成后续的挤出无法进行没有物料向熔料段补充,如果不即使停止加热会造成喉管和喷头的材料碳化,碳化在喷头会造成喷头报废。

现象分析:

  • 第一堆料问题可以考虑到喉管部分的散热是否出现故障。
  • 第二物料不是最佳塑化温度,往往温度过低容易造成堆料。
  • 第三喉管没有内嵌四氟管。
  • 第四挤出速度不匹配。
  • 第五首层打印喷头被底板阻挡,物料一直停留同一处。

解决方案

散热故障:如果没有散热风扇仅仅靠着CR8或其他散热铝块进行分散热量是远远不够的,需要设计散热风扇对铝块进行散热(可采用4010/5010尺寸风扇不宜过小)在此基础上采用CR10或更多的散热片散热效果更佳,在物质极端缺乏的情况下可以使用驱动的散热片贴到铝加热块的下方将热量往下面引导。

塑化温度:可以在控制面板中在大致的温度范围内累加温度,分别进行挤出测试,如果感觉挤出机负荷达到适当则可采用此时的温度作为打印头加热温度。

内嵌四氟管:在材料采购时有自带四氟管的喉管,如果购买的没有内嵌可以从挤出导管的四氟管上切下和喉管同长度的四氟管放入喉管。

挤出速度问题:这种问题很少见,大部分是因为切片设置的不合理,挤出倍率在打印大物件时可以设置大一点,在打印小物件设置在0.9左右,如果设置的过低则挤出的速度过慢,材料在喉管同一处停留时间过长会造成堆料。

底板堵头:如果Z轴高度不合适喷头会贴合着底板部分运动,塑化的材料不能被挤出,解决方法也很简单将Z限位开关稍微抬高一点点。

路径混乱

路径混乱表现的情况为运动路径不是需要打印的单层路径,通常表现为xy乱运动。

现象分析

  • 驱动可能损坏,导致脉冲处理不到位。
  • 电流不足,电机丢步严重
  • 切片时脚本没有G28回原点代码
  • 电流过大

解决方案

可以先对驱动进行测试,将怀疑损坏的驱动放入其他槽中测试这个轴是否路径混乱,如果同样则表面该驱动已经损坏需要更换新驱动。

电流不足会在阻力较大的地方使电机转轴滑动,导致丢步。这种问题比较好解决,只需调节驱动电流即可。

如果脚本没有G28设置原点代码,机器就无法定位原点,这种路径混乱表现为有规则的混乱,一般会撞杆。

电流过大导致的路径路径混乱可以很明显的看出来,表现为抖动过大。这种问题和驱动本身质量也有关系。适当往低处调节电流。

丢步

丢步是普通打印机最常遇到的一个问题,不过A4988驱动还是高级的TMC 2209驱动,都会出现丢步现象。丢步会随机出现在模型打印的过程中,成品可以很明显的看到一条线,更严重的会导致打印失败。

现象分析

  • 同个模型多次同位置丢步
  • 单模型随机丢步

解决方案

多次出现同位置丢步是因为切片出现问题,需要重新使用切片软件进行切片。

随机丢步比较难处理,需要观察模型,先看看是在那个方向上的丢步,i3结构的打印机一般是Y方向丢步。可以更换较好的驱动,但是这样并不能根除问题,如想要一劳永逸可以更换闭环步进电机,或者伺服电机。

控制代码

模型进行切片后会生成G代码,也就是.gcode文件,这种代码就是控制电机运动的一种代码。G代码有延时G代码即时G代码,延时M代码即时M代码,即时是指代码放入缓存就会被响应,延时指执行代码后才会响应

延时G代码

G1&G0:直线运动代码如下

1
G0 X10 Y10 Z10 E10 F10 S1 ;X/Y/Z/轴挤出机运动10mm,F是移动速度10mm/min S1是检测是否触碰限位默认不检测

G28:复位

三个轴向依次向限位开关移动,是一直朝着限位开关(end stops)的方向移动,直到触发限位开关,才会停止移动,需要注意的是移动方向不要弄反了。

1
G28 X50 Y50

上面指令意思大概就是处理器知道x y位置,要把它变成0,这个指令不会恢复z,可以使用固件中定义的auto z归零z。

G29:三点测试z轴

G32:热床自动调平

G32命令执行完成时,不仅Z轴高度参数发生了改变,而且还会根据3D打印机的硬件配置,对热床进行相应的调平处理。

对应固件设置

1
#define FEATURE_AUTOLEVEL 1

即时G代码

以下命令也可以被缓存, 但是直到所有之前缓存的命令被执行完,并且该命令执行后,才会给出应答。而且这些命令导致的短暂停顿不会影响机器的正常性能。

G4:暂停移动

xyz全部停顿一段时间。一般为2秒,这个停顿不会影响挤出加热等

G20:使用英寸作为单位 G21:使用毫米作为单位

执行这条命令后,后面的命令都以英寸作为单位。

即时M命令

M0:机器停止

打印机会终止任何动作,然后关机。所有的电机和加热器都会被关掉,这个时候只能通过reset按钮来重启控制器。

M1:打印机休眠

终止动作,但是可以通过命令唤醒,在断电续打中有所应用。

M17:启动所有步进电机

M18:关闭所有步进电机

M20:读取SD卡根目录文件

读取SD卡根目录的文件,并通过串口输出文件名。

M21:初始化SD卡

初始化SD卡。如果在机器通电时插入SD卡,会默认初始化SD卡。开始其他SD卡功能时,SD卡一定要先初始化。本命令相当于文件系统中执行Mount动作。

M22:卸载SD卡

M23:选择一个SD卡上的文件

可以执行打印删除等操作

M24:打印文件

打印M23选中的文件

M25:暂停SD卡打印

暂停打印通过M23命令选定的文件。