参考资料
- RepRap_Prusa i3_3D打印机步进电机参数计算:http://www.log4cpp.com/diy/3dprinter/46.html
- i3型3D打印机制作详解——Marlin固件中文介绍
一、Marlin固件必要配置
configuraton.h
打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。
- 配置波特率
一般来说使用默认的波特率(250000)就可以了,但是现在很多Arduino2560板都是自己按照官 的原理图优化改进得到,很多Arduino2560的USB转串口都是CH340芯片,一些小伙伴说遇到3D打印机上位机无法连接成功,或者连接成功一会又断开了。一般我都是建议他们把波特率调低,毕竟这里也不是3D打印的瓶颈,3D的打印速度主要是因为机械部分的限制。这里我建议设置成115200.
配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。
- 配置主板类型
找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子类型相同,否则无法正常使用。如果板子是RAMPS1.4,对应的配置应该为43(单打印头配置),和44(双打印头配置)。我用的是 创客基地的MKS_GEN_L, MKS_GEN_L,在固件支持的主板列表中,
主板类型,创客基地的主板选择BOARD_RAMPS_14_EFB或者43
因此就替换为 BOARD_RAMPS_14_EFB或者43。 如果你使用的是其它板子,请参考旁边的注释并选择合适的配置。
- 耗材直径设置
市面上常见的耗材直径都是 1.75mm,固件默认是 3.0,这里我们把它修改为 1.75。
- 电源设置
此设置一般在打印机搭载断电续打和打完关机模块时设置。
一般设置为 1 ,如果安装有打完关机模块或者断电续打模块,则设置为 2。 - 温度传感器的设置
在这几行代码的上面可以看到有一大段的注释说明支持的温度传感器型 :
- ‘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”
搜索找到“TEMP_SENSOR_0”,然后根据自己的热敏电阻数量来修改下边的宏。我是在加热头和热床上各有一个热敏电阻,所以修改TEMP_SENSOR_0和TEMP_SENSOR_BED这两个宏。
我们常用的温度传感器是 NTC 单端玻封100K 1% 3950热敏电阻,在这里用 11 表示。0 表示未使用该温度传感器接口。 实际测试中我选择了1,11这个值有待测试
使用了一个加热喷头,一个热床,且都是用 NTC 单端玻封100K 1% 3950热敏电阻,其他的接口未使用。则修改为下面所示代码。
第 313 行
分别配置挤出机温度传感器和热床温度传感器的类型。配置为11说明两个都是NTC 单端玻封100K 1% 3950热敏电阻。如果是其他的,请参考旁边的注释进行设置。
- 设置最低工作温度
热床最低温度:
热床工作最低温度,低于此温度让热床工作会 警。比如冬天室温太低就很可能触发热床温度过低 警,要想正常使用,可以把这个温度再调低,可以为负值。
Marlin 固件默认工作最低室温是 5℃。也就是说,如果打印机开机之后任何一个温度传感器检测的初始温度,也就是当时的室温低于 5℃,打印机将不会工作,Marlin 将以“MINTEMP”错误关闭打印机。
:此错误表示您的热敏电阻已断开或变为开路。(或机器很冷。)
对于北方的冬天来说,这是一件非常恶心的事情,大家能够想象,每次使用打印机之前要用吹风机对着打印机的吹热风,然后开机预热才能打印。
所以在这里,固件里面就直接设置为 0。
- 设置最高工作温度
最高工作温度的设置是为了安全,如果 Marlin 读取的温度高于这些值,则会出于安全原因立即关闭。对于 E3D V6 喷头,许多人使用 285 作为最大值,在这里一般使用 275℃。已经能够满足几乎所有 3D 打印塑料耗材的打印需求了。热床一般最高保护温度设置为 80℃,有 友反映温度高会烧毁热床,我这里根据 友的提示设置为80,若打印tpu温度可以适度降低。
:此错误通常意味着温度传感器导线短路在一起。它还可能表示加热器MOSFET 或继电器导致其保持接通的问题。
预加热喷头与热床温度设置,打印PLA材料设置
打印tpu材料设置
- 防止冷挤压
第 456 行所谓的“冷挤压”可能会以多种方式损坏机器,但通常只会产生气刨长丝和堵塞的挤出机。使用此选项,如果热端低于指定温度,挤出机电机将不会移动。这里的 170 指的是最低挤出温度,当喷头温度低于 170℃时,挤出机将不会移动。这里不需要修改
限位开关设置
- 限位开关使能设置
限位开关位置即 3D 打印机开始打印之前的各轴参考坐标,Marlin 固件中可以设置打印机 XYZ 三轴方向最大最小共计六个限位,通常我们只需要用到三个最小限位即可。
系统默认只使用三个最小限位。除了三角洲之外的机型都是使用的三个最小限位,这里无需更改。三角洲机型使用三个最大限位和一个 Z 轴最小限位,把相应代码注释掉或者启用。
- 限位开关的常开和常闭设置,
限位开关类型分为常开与常闭,限位开关如果为机械式并且为常开,则此处为“true”,若是光电开关(常闭)则此处为“false”。这里的设置和打印机限位开关的接线有关,我的限位开关是s接S,G接G,开关和主控板的V不接。
如果一点击复位,电机就以慢速运动或只运动一小段距离就停止,说明限位开关极性配置反了。
下面的代码有待考证
配置3个轴限位开关类型,配置为true,限位开关默认状态输出为1,触发状态输出为0。
一般的限位开关都是上拉的,按下触发后输出0。
限位开关是限制最大距离还是最小距离(归零的那一边),1是最大距离,-1是最小距离,根据自己的安装方式来设置,一般都是最小距离。
- 电机驱动
- 步进电机电机设置
电机默认状态,使能端为 0(低),这里保持默认,如果更改为 1(高),虽然不影响整个打印机工作,但是该设置会使在主板供电之后,打印机各电机随时保持锁死状态,人力无法干预打印机移动,不利于使用。
电机释放,该设置会使打印机在打印过程中,未发生移动时释放该电机,让电机有机会得到间歇性休息(冷却),虽然听起来不错,但是对于大部分 3D 打印机来说都是属于开环控制,这样设置会很容易造成丢步,所以这里保持默认。
这一步设置的是各轴的移动方向,首次设置极有可能设置错误,true 和 false分别代表正向和反向。 可以先保持默认设置,然后进行下面的设置,最后在打印机上测试之后再对该项进行设置。 在测试之前将各轴移动到中间位置,使用上位机或者 LCD 控制器,控制打印机移动,记录移动正确的轴和移动相反的轴,然后在固件中把移动方向反的轴进行更改。
- 各轴原点方向设置
注意:机械式限位开关一定不要同时接主控板的正极与负极,很容易烧毁主控板。
这里设置的是 XYZ 轴复位时的移动方向,-1 表示 min,1 表示 max,对于大部分机器都是使用的最小值作为复位原点,所以全部是-1,这里不需要更改。 三角洲全部使用最大值作为原点,全部改为 1
- 打印机打印尺寸设置
各轴最大行程,也就是打印机最大的打印尺寸
这里设置的是打印机的打印尺寸,单位是 mm,也是打印机的软件限位边界,作为安全设置,当打印坐标超过该边界时打印机将不会运动。 该数值根据自己设计需求进行设置。
- 断料检测设置
需要使用到断料检测开关则启用该句。
17. 材料预热温度设置
以上两个温度设置一般是 PLA 和 ABS 的预热温度。默认设置温度有些偏差,依
照上面进行修改。
- LCD 语言设置
Marlin 固件支持很多个国家的语言,默认设置是英文,我们需要将其修改为中文。
将 en 更改为 cn 即可。
- LCD 控制器类型设置
市面上常用的 LCD 控制器为 12864,2004 和 1602,还有 IIC 接口的 12864 显示器。
- 2004 显示器
- 1602 显示器设置
- 12864 显示器设置
如使用该显示器则启用对应的代码。
- 默认步进值计算和设置
参考 址:http://www.log4cpp.com/diy/3dprinter/46.html)
这里是整个打印机设置的重中之重,步进值设置错误会直接影响到打印机的打印尺寸和打印机精度。
计算得到结果以后通过搜索“DEFAULT_AXIS_STEPS_PER_UNIT”,把对应的值填进去。括 里的四个值一次对应于X,Y,Z,E四个轴的设置。如果想调整各个轴的移动速度可以修改DEFAULT_MAX_ACCELERATION这个宏
这行代码后面的括 中有四个数值,分别对应了 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)
-
挤出机矫正
该步骤一般在打印机其他部分基本调试完毕之后,再执行这一步,所以首次修改先跳过这一步往后面看。
在进行挤出机矫正的时候需要把挤出机料管取下,进程基础需要暂时取下加热块并悬空(注意安全避免烫伤),以方便随时测量挤出长度。
检查挤出机是否干净,然后装载上耗材,并控制打印机喷头预热到 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}
单位为毫米每分钟,太快会导致机架晃动。
-
把前面的“//”去掉来启用2004液晶。
注:如果是12864液晶,则需要将前面的“//”去掉,同时因为12864可以显示汉字,所有还需要添加字库U8glib ,不然会编译 错。直接搜索U8glib 就可以知道安装方法了。 -
把前面的“//”去掉来启用SD卡。
configuration_adv.h
- Marlin固件支持两个步进电机控制X轴或者双Z轴
- 并联方式
在电机功率和负载比较小的情况,可采用并联的方式进行双Z的硬件改造,即从Z轴再直接并联一个电机。声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!