《Marlin固件基本配置》由会员分享,可在线阅读,更多相关《Marlin固件基本配置(11页珍藏版)》请在金锄头文库上搜索。
1、Marlin件基本配置来源:未知 更新时间:2015-02-05 11:25 点击次数:1196概述众所周知, Sprinter 固件是之前用的比较多的 3D 打印机固件,而 Marlin 固件和 Repetier-firmware 固件都是由其派生而来。而且这两款固件的用户群非常活跃,而 Sprinter 固件已经没有人维护了。在这二者中,Marlin固件的使用更加广泛,很多打印机控制软件都 兼容Marlin固件。一般用户在使用Marlin固件的时候只需要改变一下Configuration*文件 中的一些参数即可,非常方便。这对一般3D大打印玩家来说可是非常好的福利哟。今天阿巴 赛就跟大家一
2、起分享一下这份指南,它是一份简单的用户指南,告诉用户设置的基本信息、 怎么运用这些设置、根据不同的需求制定特色功能。Marlin 固件 Git Hub 地址:htt ps:/g it 预加速功能(Look-ahead):Sprinter在每个角处必须使打印机先停下然后再加速继续运行,而预加速只会减速或加 速到某一个速度值,从而速度的矢量变化不会超过xy_jerk_velocity。要达到这样的效果, 必须预先处理下一步的运动。这样一来加快了打印速度,而且在拐角处减少耗材的堆积, 曲线打印更加平滑。2. 支持圆弧(Arc Support)Marlin固件可以自动调整分辨率去以接近恒定速度打印一
3、段圆弧,得到最平滑的弧线。 这样做的另一个优点是减少串口通信量。因为通过1条G2/G3指令即可打印圆弧,而不 用通过多条G1指令。3. 温度多重采样(Temperature Oversampling)为了降低噪声的干扰,使PID温度控制更加有效,Marlin采样16次取平均值去计算温 度。4. 自动调节温度(AutoTemp)当打印任务要求挤出速度有较大的变化时,或者实时改变打印速度,那么打印速度也需 要随之改变。通常情况下,较高的打印速度要求较高的温度,Marlin可以使用M109 S B FB令去自动控制温度。使用不带F参数的M109指令不会自动调节温度。否则,Marlin会计算缓存中所有
4、移动 指令中最大的挤出速度(单位是steps/sec),即所谓的“maxerate”。然后目标温度值 通过公式T = tempmin + factor*maxerate,同时限制在最小温度(tempmin)和最大 温度(tempmax)之间。如果目标温度小于最小温度,那么自动调节将不起作用。最理 想的情况下,用户可以不用去控制温度,只需要在开始使用M109 S B F,并在结束时使 用 M109 S0。5. 非易失存储器(EEPROM)Marlin固件将一些常用的参数,比如加速度、最大速度、各轴运动单位等存储在EEPROM 中,用户可以在校准打印机的时候调整这些参数,然后存储到EEPROM中,
5、这些改变在 打印机重启之后生效而且永久保存。6. 液晶显示器菜单(LCD Menu)如果硬件支持,用户可以构建一个脱机智能控制器(LCD屏+SD卡槽+编码器+按键)。 用户可以通过液晶显示器菜单实时调整温度、加速度、速度、流量倍率,选择并打印SD 卡中的G-Code文件,预加热,禁用步进电机和其他操作。比较常用的有LCD2004只能 控制器和LCD12864只能控制器。7. SD卡内支持文件夹(SD card folders)Marlin固件可以读取SD卡中子文件夹内的G-Code文件,不必是根目录下的文件。8. SD 卡自动打印(SD card auto print)若SD卡根目录中有文件名
6、为auto0-9.g的文件时,打印机会在开机后自动开始打印该 文件。9. 限位开关触发记录(Endstop trigger reporting)如果打印机运行过程中碰到了限位开关,那么Marlin会将限位开关触发的位置发送到串 口,并给出一个警告。这对于用户分析打印过程中遇到的问题是很有用的。10. 编码规范(Coding paradigm)Marlin固件采用模块化编程方式,让用户可以清晰地理解整个程序。这为以后将固件升 级到 ARM 系统提供很大的方便11. 基于中断的温度测量(Interrupt based temperature measurements)一路中断去处理ADC转换和检查
7、温度变化,这样就减少了单片机资源的使用。12. 支持多种机械结构普通的XYZ正交机械,CoreXY机械,Delta机械以及SCARA 机械。基本配置使用Arduino IDE打开marlin.ino,切换到Configuration.h即可查看并修改该文件。或者使用 任何一款文本编辑器(notepad,notpad+等)直接打开Configuration.h也可以。Marlin固件 的配置主要包含一下几个方面:1. 通讯波特率2. 主板类型,所使用的主板类型3. 温度传感器类型,包括挤出头温度传感器和加热床的温度传感器4. 温度配置,包括喷头温度和加热床温度5. PID 温控参数,包括喷头温度
8、控制和加热床温度控制6. 限位开关7. 4 个轴步进电机方向8. X/Y/Z 三个坐标轴的初始位置9. 打印机运动范围10. 自动调平11. 运动速度12. 各轴运动分辨率13. 脱机控制器根据笔者的经验来说,Marlin固件中的Configuration将各个配置模块化,非常便于阅 读及修改,而且注释非常详细,英文好的朋友可以很容易地理解各参数的意义。注意到 Marlin 固件使用 C 语言编写, “/”后面的是注释语句,不会影响代码的作用。另外 Marlin 固件中大量使用#define,简单来讲,就是定义的意思,包括定义某个参数的数值,定义某 个参数是否存在。最开始的两行非注释语句是定义
9、固件的版本和作者。缺省的版本号就是编译时间,这个 可以不用修改,只需要把作者改为自己的名字即可,注意不能包含中文,不然会乱码。#define STRING_VERSION_CONFIG_H _DATE_ _TIME_ / build date and time #define STRING_CONFIG_H_AUTHOR / who made the changes.电脑和打印机通过串口进行通讯,要定义好端口和波特率,在此定义的是3D打印主板 的端口和波特率,端口号使用默认的0就可以了。Marlin固件默认的波特率是250000,也 可以修改为其他值,比如115200,这是标准的ANSI波特
10、率值。#define SERIAL_PORT 0#define BAUDRATE 250000下面定义主板类型, Marlin 固件支持非常多种类的 3D 打印机主板,比如常见的 RAMPS1.3/1.4、Melzi、Printrboard、Ultimainboard、Sanguinololu 等控制板。需要注意的是 不同主板使用不同的脚口和数量,如果该定义和Arduino IDE中使用的主板不一致,肯定会 导致编译不通过。笔者使用的是RAMPS1.4并且D8、D9、D10控制的是一个喷头加热、一 个加热床加热和一个风扇输出,因此定义为33。#ifndef MOTHERBOARD#define
11、 MOTHERBOARD 33#endif接下来是定义挤出头的个数及电源类型,笔者使用的是单喷头打印机,因此定义为1。 电源有两种类型可以选择,1表示开关电源,2表示X-Box 360 203伏电源,一般都使用的是 开关电源,因此定义为1。#define EXTRUDERS 1#define POWER_SUPPLY 1接下来定义温度传感器类型,包括每个喷头使用的温度传感器(如果是多喷头)和加热床的 温度传感器类型,常用的温度传感器有电热偶和热敏电阻两大类,热敏电阻又分为很多种。 目前的3D打印机主要用的是热敏电阻,具体是哪种热敏电阻需要自己判断或询问卖家,不 出意外的话,都是100k ntc
12、热敏电阻,即1。根据注释,1要求4.7k的上拉电阻,而根据 RepRap wiki,几乎所有的3D打印机都使用了 4.7K的热敏电阻上拉电阻。笔者观察了几种 电路板的电路图,发现都使用了 4.7K的上拉电阻,如图1所示。/ 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)笔者的打印机为单喷头,因此第一个喷头的温度传感器配置为1,其他配置为0(0表示没 有使用),加热床的温度传感器也配置为1。#define TEMP_SENSOR_0 1#define TEMP_SENSOR_1 0#define TEMP SENSO
13、R 2 0#define TEMP_SENSOR_BEDThermistors9SST her mi 雪 mF 驚r-Tl-FRJ6! .L工 rPrinlbDjrd-图 1 4.7K 上拉电阻接下来是温度检测的一些配置,包括双喷头温度差,M109检测配置,安全温度配置。 下面笔者一一解释。首先下面这一句配置双喷头温差最大值,如果温度超过这个数值,那么打印机会终止工 作,因此对于双喷头打印机玩家来说,这个参数需要注意。#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10下面这一段配置M109指令完成的指标,我们知道,M109指令设定喷头温度并等待, 那么等待到什么
14、时候呢?下面这三个参数控制这个时间。第一个参数表示温度“接近”目标温 度必须持续 10 秒才算加热完成,第二个参数表示和目标温度相差不超过 3为“接近”,第 三个参数表示从温度与目标温度相差不超过 1 度开始计时,从此刻开始,温度和目标温度持 续接近10秒钟,则完成加热。#define TEMP RESIDENCY TIME 10#define TEMP HYSTERESIS 3#define TEMP WINDOW1下面配置安全温度范围的下限和上限,包括各个喷头和加热床。如果温度超过下限,那 么打印机会抛出 MINTEMP 的错误并终止工作,如果超过上限,那么打印机抛出 MAXTEMP 的错
15、误并终止工作。Marlin用这种方式保护3D打印机。下面的配置最小温度都是5,喷 头的最大温度为 275,热床的最大温度为 150。#define HEATER 0 MINTEMP 5#define HEATER_1_MINTEMP 5#define HEATER 2 MINTEMP 5#define BED MINTEMP 5#define HEATER 0 MAXTEMP 275#define HEATER_1_MAXTEMP 275#define HEATER_2_MAXTEMP 275#define BED_MAXTEMP 150如果希望M105指令在报告温度的时候,也报告喷头和加热床的功率,则可以将下面两句的 前面的/去掉。具体的功率数值需要用户自己计算得到。#define EXTRUDER_WATTS (12.0*12.0/6.7)#define BED_WATTS (12.0*12.0/1.1)接下来配置温度控制方法,Marlin提供两种温