开始的开始
基于对应机型的配置文件,结合官方文档食用。如果出现翻译错误,官方文档为主,我才不负责人:),然而官方文档也是写得挺乱的
文件配置的内容非常多,新手可能会遇到不知道哪些功能需要启用,不建议全部看完。而文中的一些参考视频都需要科学上网
开始前你需要知道的一些事情,这些事情在配置过程中并不会都排上用场,但知道有助于你配置并优化打印机
- 框架结构类
- 各个机械配件的详细信息,比如同步轮的直径、丝杆的螺距、并联臂两孔中心距
- 机器的架构,在
config/examples
选择对应机器架构的配置文件,这样会节省大量时间,如果目录没有就下载 - 挤出机数量和挤出方式
- End Stop 的位置 (XYZ轴电机的起点或终点)
- 电子电路类
- 驱动打印机的控制板型号,比如 RAMPS
- 步进电机驱动器详细信息,比如驱动电流,最小微步
- 步进电机的详细参数,比如步距角、最大电流
- 热敏电阻型号 (探测热端/热床的温度)
- 液晶显示屏的型号
- 探针信息
配置文件有两个
Configuration.h
包含硬件核心、语言和控制器的设置,以及最常见的功能和组件的设置,主要配置的地方。
Configuration_adv.h
提供更详细的自定义选项,附加组件,实验功能和其他功能。
以下配置以 kossel(delta) + Arduino Mega2560 + Ramps 1.4 作为示例
目录
[TOC]
Configuration 文件
版本控制
1 | #define CONFIGURATION_H_VERSION 020004 |
固件基本信息
1 | #define STRING_CONFIG_H_AUTHOR "(none, default config)" |
- 作者和固件的信息,这些信息会在 Marlin 启动时、连接终端、重启和执行 M115 时显示,可以用于区分不同配置文件的版本
- 定义它可以在打印机启动时,开机画面会显示在 LCD 上
- 定义它可以使用自定义的启动画面,编译时会自动寻找
Marlin/_Bootscreen.h
位图文件 - 定义它可以使用自定义的状态画面,编译时会自动寻找
Marlin/_Statusscreen.h
位图文件
硬件基本信息
串行端口
串行端口的配置选项,暂时不知道怎样使用
1 | #define SERIAL_PORT 0 |
波特率与蓝牙
1 | #define BAUDRATE 115200 |
- 波特率设置,使用电脑或其他终端连接时需要用到
- 启动蓝牙功能,比如说基于 AT90USB
控制板
1 | #define MOTHERBOARD BOARD_RAMPS_14_EFB |
这是最重要的设置,Marlin 需要知道它运行在什么控制板上,这个设置会影响功能分配到那个引脚上,错误配置将导致不可预测的后果。
在Marlin\src\core\boards.h
找到你控制板的型号,用它的 ID 替换实例代码里的BOARD_RAMPS_14_EFB
(define 的名字也行)。你可能发现你的开发板型号有好几个 ID,你可以参考
代码后面跟着的注释去选择正确的 ID。 例如:
1 | #define BOARD_RAMPS_14_EFB 1020 // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed) |
这个是 RAMPS 1.4 相关的 ID 号,可以看到后面注释把不同的功能分配到 Power out 上,比如说 1020 的功能有一个挤出头,一把吹件风扇,一个热床,而 1021 是有两个挤出头,一个热床,没有吹件风扇。
打印机命名
定义打印机的名称,名称将会出现在 LCD 屏幕上和 M115
1 | #define CUSTOM_MACHINE_NAME "3D Printer" |
打印机 UUID
设置 UUID,有些软件可以用 UUID 区分不同的打印机,你可以通过 UUIDTools 获取随机生成的 UUID
1 | #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" |
挤出基本信息
挤出机数量
1 | #define EXTRUDERS 1 |
这里可以定义 0 - 6 个挤出机 (官方网站是 0 - 6 个,配置文件的注释是 1 - 8 个,哪个新用哪个,并且这里算的不是喷头数量),如果不是单喷头单挤出机的情况,将在下面详细定义,但这里也需要设置挤出机的数量
细丝直径
1 | #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 |
这里定义的直径是耗材上标注的直径,如果它标注 1.75,但实际测量是 1.70,这里也填 1.75
This value is used by Marlin to compensate for Filament Width when printing in volumetric mode (See M200), and by the Unified Bed Leveling command G26 when printing a test grid.
(参考机翻) 当打印机在容积模式 (详见 M200
) 和使用统一床平整命令 (G26) 打印测试网格时,Marlin 会使用这个值补偿细丝宽度,你可以使用M404 W
修改此值
你可以使用 M404 W
修改此值
多路材料挤出
如果你的机器是支持多路耗材挤出的,这里有相关的配置,如果你只有单喷头单挤出,你可以直接跳过这段配置
单喷头多挤出
1 | #define SINGLENOZZLE |
如果你是使用 E3D Cyclops 或其他类似的多路材料喷头复用套件 (科普连接),你需要启用这个选项
1 | #define MK2_MULTIPLEXER |
有些控制板支持一个步进电机驱动器驱动 2 - 8 个步进电机,支持多路挤出,你可以启用MK2_MULTIPLEXER
,并配置E_MUX0_PIN
、E_MUX1_PIN
、E_MUX2_PIN
,这些配置会覆盖默认的 DIO 选择器的引脚设置。有些机型的配置文件可能已经配置好相关的引脚
Prusa MMU2 挤出装置
1 | #define PRUSA_MMU2 |
Prusa MMU2 的挤出套件 (科普连接),前提你的控制板有一个空闲的串口,你还需要设置一些东西:
- 启用 NOZZLE_PARK_FEATURE
- 设置 EXTRUDERS = 5
详细设置可以在Configuration_adv.h
找到
单喷头单挤出机
1 | #define SWITCHING_EXTRUDER |
如果你使用的是单喷头单挤出机套件 (参考装置),你需要配置在这里配置套件相关的参数
双喷头双挤出电机切换装置
1 | #define SWITCHING_NOZZLE |
如果你使用两套独立挤出套件并可以使用电机切换 (参考装置 0:05-0:12),你需要在这里依照实际情况配置相关参数
X轴独立支架喷头选择装置
如果你的喷头都不是直接被 X 轴电机所驱动,而是通过独立支架连接喷头间接驱动 (参考装置),你需要启用这个功能,下面是三个不同的连接方式,根据实际情况选择一个即可
1 | #define PARKING_EXTRUDER |
- 使用电磁的启用
PARKING_EXTRUDER
- 使用磁铁的启用
MAGNETIC_PARKING_EXTRUDER
,而独立支架使用电磁连接不同喷头 ,你需要启用这个功能,并且需要配置SOL1_PIN
和SOL2_PIN
喷头对接交换装置
如果你是 E3D Tool Changer 或者类似的喷头切换方案 (科普视频),你需要启用这个功能,下面是三个不同的对接方式,根据实际情况选择一个即可
1 | #define SWITCHING_TOOLHEAD |
- 使用伺服器 (科普视频就是使用伺服器的连接方式) 的启用
SWITCHING_TOOLHEAD
- 使用磁铁的启用
MAGNETIC_SWITCHING_TOOLHEAD
- 使用电磁的启用 (科普视频)
Electromagnetic
详细配置如下,根据实际情况配置
1 | #if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD) |
单喷头混合挤出
使用两个或以上的挤出机将耗材同时驱动到混合仓,然后从单个喷头挤出混合丝,你需要配置这块代码
1 | #define MIXING_EXTRUDER |
这个选项会增加使用 T 指令设置 (M163)、保存 (M164) 和读取 (M165) 混合物的功能
The extruder still uses a single E axis, while the current mixture is used to determine the proportion of each filament to use. An “experimental”
G1
direct mixing option is included.
(机翻参考) 挤出机仍使用单个 E 轴,而当前混合物用于确定要使用的每根长丝的比例。包含“实验性” G1直接混合选项。
喷头偏移
1 | //#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle |
如果你有两个或以上的喷头,你需要配置这部分代码,值表示第 N - 1 个喷头与第一个喷头 (0, 0, 0) 的偏移值,有多少个就写多少个
电源设定
如果你使用双电源,例如加热器独立一个电源,为了省电有时候会关闭电源,你需要配置这块代码
1 | #define PSU_CONTROL |
温度控制设定
温度传感器类型
1 | #define TEMP_SENSOR_0 1 |
温度传感器是 3D 打印机的重要部分,选择正确的温度传感器型号能让机器更加精准的控制温度
在Configuration.h
中,这部分选项的上方有型号对照表,这里需要根据你的温度传感器的型号选择正确的参数并填入,如果你找不到匹配的参数,你就选择同品牌相近的,或者使用100k thermistor - best choice for EPCOS 100k (4.7k pullup)
,也就是 1
,但是准度就不确定了。0
表示未使用
淘宝购买的 NTC/3950/100K 大部分都可以选择1
1 | // Dummy thermistor constant temperature readings, for use with 998 and 999 |
Marlin provides two dummy sensors for testing purposes. Set their constant temperature readings here.
(机翻参考) 固件本身提供两个指令用于测试温度虚拟传感器,在这里设置恒定温度、
1 | #define TEMP_SENSOR_1_AS_REDUNDANT |
启用这个选项可以把 传感器1 用作 传感器2 的冗余传感器,这样可以防止传感器出现故障,如果两个传感器的温差超过MAX_REDUNDANT_TEMP_SENSOR_DIFF
所设定的数值,机器将会中断打印并停止加热
温度稳定设定
1 | #define TEMP_RESIDENCY_TIME 10 // (seconds) |
这是配置热端稳定温度的条件
- 在未加热完成的情况下,挤出机开始工作将有可能损坏装置,等待温度稳定
TEMP_RESIDENCY_TIME
所设定的时间 (秒),加热成功指令 (M109) 后,挤出机才能开始工作 TEMP_HYSTERESIS
指稳定期间能接受温度的浮动幅度,单位是摄氏度TEMP_WINDOW
貌似是设定进入窗口开始计时的条件,具体看注释
1 | #define TEMP_BED_RESIDENCY_TIME 10 // (seconds) |
这是热床配置,同上
1 | #define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target |
设置温度可以距目标多少,仍然可以认为通过
温度范围
1 | #define HEATER_0_MINTEMP 5 |
这里设置温度传感器的最低温度。这些参数有助于防止温度传感器出现故障而导致打印机过热和着火。
如果任何一个温度传感器的温度低于设定的最低温度或者出现断路,打印机将会被关闭并显示MINTEMP
错误
1 | #define HEATER_0_MAXTEMP 285 |
这里设置温度传感器的最高温度。如果实际温度高于这些值,出于安全原因,打印机将立即关闭。对于E3D V6
热端,可以使用285
作为最大值。
如果任何一个温度传感器的温度高于设定的最高温度或者出现短路,打印机将会被关闭并显示MAXTEMP
错误
PID
温度控制使用 PID (Proportional, Integral, Derivative) 方式 (Wikipedia),正确精准的 PID 值能稳定的控制温度,减少浮动,而且能防止加热阶段温度上升过快而损坏热端。
使用 M303
指令会自动测试,并返回正确的PID参数,具体参考RepRap。每次更新/更换电路相关的元件时都推荐调整 PID 值。热端的 PID 可以使用M301
或LDC
设置,热床的 PID 可以使用M304
设置
热端
1 | #define PIDTEMP |
启用PIDTEMP
使热端使用 PID 进行温度控制,而禁用会使热端进入 bang-bang 模式 (加热只有开与关),在大多数情况下推荐启用 PID,有着保持稳定温度更好的效果
1 | #if ENABLED(PIDTEMP) |
启用PID_AUTOTUNE_MENU
可以在 LCD 上添加一个选项,能运行自动调谐周期 (运算 PID ) 并自动应用结果。如果您有多个挤出机,并且它们是不同的型号,则启用 PID_PARAMS_PER_HOTEND
1 | // Ultimaker |
这些是只是示例参数,纯粹占个位,M303
指令的结果比这些更加精准,如果是新的机器,推荐先写入这些默认参数,测试获得精准的参数后,修改并再次烧写
热床
1 | //#define PIDTEMPBED |
如果你的热床支持 PWM,启用PIDTEMPBED
使热床使用 PID 进行温度控制 (与驱动挤出机的 PWM 频率相同)。使用默认的 PID_dT 时,PWM 频率为 7.689Hz,非常适合将方波驱动到阻性负载中,而不会对 FET 发热产生重大影响。
如果您的配置与此配置有很大不同,并且您不了解所涉及的问题,则在确认您的硬件可以正常工作之前,您可能不应该使用床位 PID。使用M303 E-1
调节该选项的床 PID。
1 | //#define BED_LIMIT_SWITCHING |
启用BED_LIMIT_SWITCHING
1 | //#define MAX_BED_POWER 255 |
热床的最大功率。各种模式的温度控制 (PID, bang-bang, bang-bang with hysteresis) 都应遵守此要求。如果使用 255 以外的任何值会启用 PWM 模式。与PIDTEMPBED
一样,除非您的热床可以使用 PWM,否则不要启用此功能。
1 | #if ENABLED(PIDTEMPBED) |
与热端的配置方式一样,而指令使用M303 E-1
安全相关
禁止冷挤出
1 | #define PREVENT_COLD_EXTRUSION |
温度没有达到让耗材软化,这种阶段开始挤出会损坏机器。启用PREVENT_COLD_EXTRUSION
,热端的温度低于EXTRUDE_MINTEMP
所设定的值,将禁止挤出。M302
可以修改这个值
禁止长挤出
1 | #define PREVENT_LENGTHY_EXTRUDE |
长时间挤出可能不会损坏机器,但可能会浪费大量的耗材。PREVENT_LENGTHY_EXTRUDE
主要防止 G1
命令中手滑打错字设定的值过大。对于 Bowden 设置,最大长度应设置为大于或等于 load/eject 长度
温度保护
1 | #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders |
温度保护避免温度过高时损坏机器或者发生无法挽救的事故。比如热敏电阻在打印过程中有可能会松动,Marlin 读取的温度很低,因此可以继续加热,只要温度读数较低,热端就会不停地加热,从而导致冒烟,渗水,打印件损坏甚至起火。
Marlin 提供两段的热保护
- 打开加热器时,检查温度实际上是否在升高。如果温度在特定时间段内 (默认情况下为20秒内升高2度) 未能充分升高,则打印机将关闭并显示 “Heating failed” (加热失败) 错误。这需要排查热敏电阻是否有断开、松动或配置错误,或者加热棒是否断开。
- 监视热稳定性。如果测得的温度偏离目标温度的时间过长,则打印机将关闭并显示 “Thermal runaway” (热失控) 错误。这种情况需要检查热敏电阻和热端之间是否接触不良,PID 参数不正确或环境温度不利于打印机工作。更多热保护选项在
Configuration_adv.h
中。大多数情况,这些值可以保留不变,但应根据实际情况进行调整,防止误报。
运动系统
Marlin 支持四种运动系统 (科普视频):Cartesian,Core (H-Bot),Delta 和 SCARA。
Cartesian 是最简单的运动系统,每个步进器应用到轴上。
CoreXY 使用特殊的皮带布局来进行 XY 运动,需要一些额外的数学运算 (科普视频)。
Delta 使用三个垂直的滑块运动转换为 XYZ 运动,该运动通过并联臂固定在滑架上的 “效应器” 中。
SCARA 使用两个角关节在 XY 平面中移动手臂。
1 | //#define COREXY |
镜像翻转
Delta特殊设置
这项设置是针对 Delta 运动系统的特殊设置,需要做大量的坐标转换的运算,这部分对 Delta 的精度影响是最大的,一些尺寸的数值需要完美的精确。官方文档貌似没有提及?下面将会参考配置文件的注释进行配置
1 | #define DELTA |
最基本的启动 Delta 设置的选项
1 | #define DELTA_SEGMENTS_PER_SECOND 200 |
由于 Delta 运算量大,有时候 MPU 忙于计算坐标,没有其他算力去运算 LCD 的显示,比如12864 的 LCD,使用起来会有卡顿现象,你需要调低这个值的参数
1 | //#define DELTA_HOME_TO_SAFE_ZONE |
启用这个功能,Delta 归零触碰限位器后,效应器将会下降到 XY 移动限制的范围内。但有些情况不能启用这个功能,打印机打印完成后一般都会自动归零,但如果打印比较高的模型,归零的下降将有可能会撞上模型,轻则损坏模型,重则损坏打印机。如果你存在这些问题,请不要启用这个功能
1 | #define DELTA_CALIBRATION_MENU |
启用这项可以在菜单添加三点调平的功能,具体看参考
1 | #define DELTA_AUTO_CALIBRATION |
DELTA_AUTO_CALIBRATION
添加 G33 自动调平,这个调平的结果将存储在 EEPROM 中,刷新固件不会影响这个值DELTA_CALIBRATION_DEFAULT_POINTS
则是探测点的数量PROBE_MANUALLY_STEP
是下探过程的速度,单位是mm
接下来的几个选项是重中之重,避免翻译或解释出错,会保留原文
参数都是浮点数,需要保留小数点,即使小数点后是 0
先放一张图上来
1 | #define DELTA_PRINTABLE_RADIUS 90.0 |
Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
Delta 的打印面一般是圆形,这里设置的是安全区域,参数是安全区域的半径,一般因为用料或者其他原因,打印机会有一些喷头没办法移动到的死角位,需要从打印面的半径减去这些死角的位置。如果设置不好,迎来的是严重的后果,比如并联臂断裂。单位是mm
1 | #define DELTA_DIAGONAL_ROD 215.0 |
Center-to-center distance of the holes in the diagonal push rods.
这个是并联臂两边中孔的中心距,具体测量位置看上图同名的位置
1 | #define DELTA_HEIGHT 250.00 |
Distance between bed and nozzle Z home position
这个是归零后喷嘴和热床之间的距离,这个值可以被 G33 自动调平修改
1 | define DELTA_ENDSTOP_ADJ {0.0,0.0,0.0} |
这个应该是限位器的偏移量,一开始可以都设,这个值可以被 G33 自动调平修改
1 | #define DELTA_RADIUS 105.2 |
Horizontal distance bridged by diagonal push rods when effector is centered.
这个是效应器居中时,并联臂连接效应器的中心,到并联臂连接滑车的中心的水平距离,具体测量位置看上图同名的位置,这个值可以被 G33 自动调平修改
1 | #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } |
Trim adjustments for individual towers
tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
measured in degrees anticlockwise looking from above the printer
有些情况 X Y Z 塔所面向的方向并不会交汇与一点,也就是三个塔所组成的三角形并不是等边三角形,即使淘宝买的注塑/金属的角件,安装有一定的虚位,这些虚位是为了更容易装上,但安装后会出现偏移的情况。
这里可以从软件层面调整三个塔的角度,这个值可以被 G33 自动调平修改
1 | #define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } |
Delta radius and diagonal rod adjustments
Delta 的半径和并联臂的调整,官方默认配置文件这两行是注释的,具体作用也没有太多说明
我想说说手动调平和自动调平的利弊
国内的一些 3d 打印机的固件都停留在 Marlin 1 的时代,而现在已经更新换代很久了。Marlin 1.x 的时候,Delta 的调平问题一直都是非常困难,上图中需要测量的项目都是 1.x 版本需要填入的参数,看图好像挺容易测,实际太多干扰因素,要拿到绝对精准的数值,很难丝毫不差。
而现在的 2.x,Marlin 尽可能想到各种可能影响精度的因素,其他可以运算的都自己运算,可以说进步非常大,而且上面的参数很多都可以通过 G33 修改,可以逆向运算出差值,门槛已经非常的低。
但是,软件处理机械上的偏差有限,有些情况还是不能处理,比如说热床相对三个塔不垂直,这种情况怎么调,打印出来的成品都是歪的,所以,机械上能精准的尽可能精准,剩下的交给软件吧
限位器
1 | #define USE_XMIN_PLUG |
指定每个轴的限位器是这个轴的最大值还是最小值。大多数打印机三个都是最小值,但 Delta 都使用最大值。探头可以共享 Z min 插头,也可以使用一个或多个额外的连接器
1 | #define ENDSTOPPULLUPS |
默认所有限位器都上拉电阻,以防止浮动,如果要单独对每个限位器配置,可以禁用ENDSTOPPULLUPS
,然后单独配置
1 | //#define ENDSTOPPULLDOWNS |
默认所有限位器都不下拉电阻,配置方式上
1 | // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). |
不同的限位器型号,会产生不同的型号,有些闭合时会发出高电平,有些会发出低电平,如果你使用M119
测试时发现检测与现实相反了,你激活其中某个限位器以相反信号
1 | //#define X_DRIVER_TYPE A4988 |
这里选择步进电机驱动器的型号,并开启某些步进电机驱动器的高级选项。您也可以在Configuration_adv.h
中覆盖计时选项。默认情况下使用 A4988
1 | #define ENDSTOP_INTERRUPTS_FEATURE |
如果你的限位器有中断功能,你可以在这里开启,这样不需要 CPU 去轮询,节省周期
1 | #define ENDSTOP_NOISE_FEATURE |
如果你的限位器被某些不应该出现的因素干扰而触发,你可以启用这项功能
步进电机驱动
自定义挤出机参数
1 | //#define DISTINCT_E_FACTORS |
如果你有多个挤出机,而每个挤出机的步进数都不一样,你可以启用这一项,在接下来指定设置,如果挤出机数量大于设置的数量,最后一个数值将会应用于剩下的挤出机
步进电机每毫米步数
1 | #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 } |
这个是打印机精度的关键参数,这里设置的是每毫米,步进电机需要走多少步,可以使用 M92
覆盖这些值。你可以使用Prusa Calculator来获得数值
也有这样设置的
1 | // variables to calculate steps |
这种设置方式不需要使用计算器,只需要输入XYZ_FULL_STEPS_PER_ROTATION
、XYZ_MICROSTEPS
、XYZ_BELT_PITCH
、XYZ_PULLEY_TEETH
即可
不过还是要注意挤出机 E 的参数总是与 XYZ 不一样,这里提供两种测量方式
$$
E_{step} = \frac{360°}{angle×microstep×C}
$$C 为送丝轮周长,angle 为步进电机的步进角度,microstep 为微步
不急还没写
步进电机最高速度
1 | #define DEFAULT_MAX_FEEDRATE { 500, 500, 2.25, 45 } |
步进电机的最高速度,单位是 mm/s,可以使用 M203
修改
最大加速度
1 | #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } |
默认最大加速度,单位是 mm/s,可以使用 M201
修改
默认加速度
1 | define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves |
进一步限制加速度,并可以细分打印,缩进,空运的加速度,可以通过 M204 修改
结点偏差
1 | //#define JUNCTION_DEVIATION |
Use Junction Deviation instead of traditional Jerk Limiting. Jerk settings is overriden with Junction Deviation.
(机翻参考) 使用 “结点偏差” 而不是传统的 “抖动限制”。急动设置会被 “交界偏差” 所覆盖。
加速抖动
1 | #define DEFAULT_XJERK 20.0 |
这个是步进电机从静止瞬间加速能达到最大的值。有时候打印路径曲折,不断的弯曲,如果快速达到最高速度,所产生的力非常大,对电机负载大,有时候还会“飘”过头,丝会产生偏移。这里一般参考默认即可。可以使用 M205
修改
S 曲线加速
1 | #define S_CURVE_ACCELERATION |
使用 S 函数平滑加速曲线
Z 探针
1 | #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN |
如果你的探针是连接到 Z MIN 所在的引脚,请在所有情况下使用此选项。Delta 的限位器终点始终是 MAX 的位置,所以 Delta 也需要启用这项。
您可以使用此选项配置没有 Z 终点的打印机。在这种情况下,探针将用于 Z 轴归零,并且您将需要启用 Z_SAFE_HOMING
以确保在 Z 轴归零时将探针放置在床上方 (在 X 和 Y 之后执行) 。
1 | //#define Z_MIN_PROBE_PIN 32 |
如果您已将探针连接到除 Z MIN 之外的其他引脚,请使用此选项。启用此选项后,默认情况下,Marlin 将引脚文件中指定的 Z_MIN_PROBE_PIN
(通常是 X 或 Z MAX,因为最有可能不使用它们) 。如果需要使用其他引脚,请在Configuration.h
中为 Z_MIN_PROBE_PIN
自定义引脚号。
探头类型
探头一般指自动调平传感器,Marlin 支持大量使用探头的方式
无使用
1 | //#define PROBE_MANUALLY |
如果你没有探头,你还是可以通过启用此选项
使用床平整 AUTO_BED_LEVELING_ *
,通过 PROBE_MANUALLY,G29 命令仅将喷嘴移动到下一个暂停的探针点。用一张纸调节Z高度,,让纸刚好通过喷嘴而不被喷嘴压死,然后再次发送G29以继续下一个点。
通过 PROBE_MANUALLY
,G29
命令仅将喷嘴移动到下一个暂停的探针点。用一张纸调节Z高度,,让纸刚好通过喷嘴而不被喷嘴压死,然后再次发送G29
以继续下一个点。
您还可以启用LCD_BED_LEVELING
来向 LCD 添加 “Level Bed” 菜单项,以进行完全交互式的水平调节。MANUAL_PROBE_START_Z
设置手动探测期间打印机最初移动到每个点后开始的高度。禁用此功能后,打印机将移动到第一个探测点的 Z0,然后每个连续的探测点将使用其前面的探测点的高度。
固定式
1 | #define FIX_MOUNTED_PROBE |
此选项适用于任何已固定就位的探头,无需部署或存放。
舵机驱动式
1 | //#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector. |
如果你的探头可以使用舵机部署和回收, 你要指定一个舵机和设置部署和回收的角度。使用M280
查找最佳的Z_SERVO_ANGLES
值。
BLTouch
1 | //#define BLTOUCH |
ANTCLABS BLTouch 探头使用定制电路和一块磁铁来升高和降低充当测头的金属引脚。BLTouch 使用舵机驱动,并使用特定的角度进行控制。启用此选项后,其他所需的设置会自动进行配置 (例如,无需设置角度) 。
TOUCH MI
1 | //#define TOUCH_MI_PROBE |
hotends.fr 的 Touch-MI Probe 是个巧妙的装置,通过将 X 轴移动到床边缘的磁铁上来部署并激活。默认情况下,假定磁铁位于左侧并由房屋激活。如果磁铁在右侧,则启用并将 TOUCH_MI_DEPLOY_XPOS
设置为展开位置。另外,还需要以下选项:BABYSTEPPING
,BABYSTEP_ZPROBE_OFFSET
,Z_SAFE_HOMING
,以及至少 Z_HOMING_HEIGHT
10的高度。
电磁式
1 | //#define SOLENOID_PROBE |
使用电磁 (定义为 SOL1_PIN) 的探针。
分离式
1 | //#define Z_PROBE_SLED |
此类探针安装在 X 轴远端的可拆卸 “底座” 上。探测之前,X 滑架移至远端并拿起探针。探测完成后,它将放下探针。SLED_DOCKING_OFFSET
指定 X 轴必须移动的额外距离才能拾取探针。0 是非常完美,实际情况可能需要进一步推进。
机械式
1 | //#define RACK_AND_PINION_PROBE |
使用类似 Marty Rice 设计的 Wilson II 机械式探针可以使用此项
内六角扳手式
1 | //#define Z_PROBE_ALLEN_KEY |
可伸缩的 Z 型探针,使用六角扳手作为探针。具体查看 RepRap。它通过紧靠 z 轴皮带展开,并通过向下推动探针使其缩回。更多信息将包含在即将发布的 Delta 配置页面中。 (都 2.0 了还没写官方文档
探头偏移
1 | #define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] |
探头探测点与喷嘴尖端的相对坐标,具体怎样配置可以参考注释。可以用 M851 Z 或 LCD 覆盖 Z 轴上的偏移,这些偏移量可以通过 M500
保存到 EEPROM
距边缘的距离
1 | #define MIN_PROBE_EDGE 10 |
某些探针需要防止撞到边缘
探测速度
1 | // X and Y axis travel speed (mm/m) between probes |
探测越快越好,但应调整 Z 轴速度以获得最准确的数据。取决于探头,可能需要较低的 Z 探测速度才能获得准确的结果
多个探针
1 | //#define MULTIPLE_PROBING 2 |
Probing mutiple times yields better results. Set to 2 for a fast/slow probe - the second probe result will be used. Set to 3 or more for slow probes - the average result will be used.
(机翻参考) 多个探针会产生更好的结果。将快速 / 慢速探针设置为 2 - 将使用第二个探针结果。对于慢速探针,设置为 3 或更大 - 将使用平均结果。
探针安全区
1 | #define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow |
Z探针在部署,回收和移动时需要间隙,以避免撞到底座和其他硬件。舵机安装的探头需要额外的空间来使臂旋转。电感式探头需要一定的空间以防止过早触发。
使用这些设置来指定抬起 (放下) 探针的距离 (mm)。设置的值适用于通过Z_PROBE_OFFSET_FROM_EXTRUDER
,M851
或 LCD 设置的任何探针的 Z 偏移。对于这些设置,只有大于等于1的整数值有效。
1 | #define Z_PROBE_OFFSET_RANGE_MIN -20 |
使用 M851
和 LCD 菜单调整Z探针偏移的范围。
测试探针
1 | #define Z_MIN_PROBE_REPEATABILITY_TEST |
这使您能够使用 M48
测试探针的可靠性。它会为您提供探针的标准偏差。提示:工作中,通常可以接受0.02 mm的床水平偏差。
1 | // Before deploy/stow pause for user confirmation |
部署 / 回收之前需要用户确认
关闭加热器才探测
1 | //#define PROBING_HEATERS_OFF // Turn heaters off when probing |
如果通常在加热的情况下进行打印,则加热的床和挤出机时进行探测,将产生更加精准的结果。如果由于加热,探针遇到电气噪音,请启用PROBING_HEATERS_OFF
。也可以添加延迟以使噪声和振动稳定下来。
步进电机基本设置
电机使能电平
1 | #define X_ENABLE_ON 0 |
这些选项设置用于步进电机使能的引脚状态。对于低电平有效,最常见的设置是0(LOW) 。对于高电平有效,请使用 1 或HIGH。
非运动状态关电机
1 | #define DISABLE_X false |
不发出运动时,使用这些选项可暂时关闭步进电机。这是为了以比正常电流更高的速度运行步进电机,以产生更大的扭矩为代价,以增加驱动器和步进电机的热量为代价。禁用步进之间的步进使电动机和驱动器有机会冷却。
从理论上讲听起来不错,但在实践中却有缺点。禁用的步进器无法稳定热端。这导致精度差并且带有很大的轴向漂移可能性 (失步) 。大多数3D打印机使用 “开环” 控制系统,这意味着该软件无法确定指令执行后是否按照预定计划运动。它只是发送命令并假定已遵守命令。
实际上,对于校准良好的机器而言没有影响,使用开环系统可以节省大量成本,并具有出色的质量。这里不建议使用这里的方式。有很多更好的方法来解决步进器/驱动器过热的问题。例如:步进/驱动器散热器,主动冷却,轴上的双电机,减少微步进,检查皮带是否过张,检查组件的运动是否平稳等。
1 | //#define DISABLE_REDUCED_ACCURACY_WARNING |
启用此选项可禁止在可能会降低精度的情况下发出警告。
1 | #define DISABLE_E false // For all extruders |
这个选项的作用类似于DISABLE_ [XYZ]
,控制的是挤出机,但与一台或多台挤出机有关。
默认设置中,活动的挤出机保持启用状态,同时禁用所有非活动挤出机。对于使用“擦拭塔”或其他方式来确保喷嘴已注满且在两次使用之间高温耗材不下渗的情况下,这是合理的。
电机方向
1 | #define INVERT_X_DIR false |
这些里可以设置每个轴的电动机反向运动。第一次设置这些时要小心。轴移动方向错误会导致损坏。如果可能的话,不带皮带的情况下正确安装它们。测试之前,将笔架和床移动到中间。使用终端或 LCD “Move Axis” 菜单测试每个轴是否正确移动。如果轴反转,则将插头翻转一下或更改其反转设置。
归零和安全区
Z 轴归零后的高度
1 | //#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed |
此值在 X 轴与 Y 轴归零前,将 Z 轴提升到指定高度,这对于防止头部撞到床架 (例如螺钉) 上很有用。这也适用于自动床平整,仅在触发时当 Z 轴高度小于定义的值时,否则 Z 轴将不会移动。
归零方向
1 | #define X_HOME_DIR -1 |
每个轴的归零方向,-1 为最小值,1为最大值。一般 Cartesian 和 CoreXY 用最小值归零,而 Delta 用最大值归零
安全区大小
1 | #define X_BED_SIZE 200 |
您可以直接指定床的尺寸。如果 X/Y 滑架能够移动到床外,则可以在下面指定更大的范围。Detail 配置文件直接使用DELTA_PRINTABLE_RADIUS
1 | #define X_MIN_POS 0 |
这里一般设置打印机的物理极限。通常将[XYZ] _MIN _POS
值设置为 0,因为限位器放在床的极限位置。[XYZ] _MAX_POS
应该设置为最远的可到达点。默认情况下,这些位置用作您的归零位特殊情况可以使用MANUAL _[XYZ] _HOME_POS
选项覆盖这些选项。
可以使用 M206
进行偏移
虚拟限位器 (软件限位器)
1 | #define MIN_SOFTWARE_ENDSTOPS |
启用这些选项可从软件上将移动限制在机器的物理边界上 (由[XYZ]_(MIN | MAX)_POS
设置)。例如,可以将G1 Z-100
最小约束为G1 Z0
。
建议启用这些选项作为安全功能。你可以使用M211 S0
禁止这些虚拟限位器
1 | #if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) |
也可以启用这个选项,在 LCD 去启用/禁止虚拟限位器
材料检测
1 | //#define FILAMENT_RUNOUT_SENSOR |
借助此功能,可以使用机械或光端挡开关来检查材料检测器中是否存在耗材 (通常在耗材的情况下,该开关是关闭的)。如果耗材用完,打印机将自动运行指定的 GCode 脚本 (默认为M600
)。基于 RAMPS 的板使用 SERVO3_PIN
。对于其他板,您可能需要定义 FIL_RUNOUT_PIN
。
床调平
在许多情况下,测量床高的变化非常有用。即使3D打印机上的底座完全平整且水平,在机械上仍可能存在缺陷。例如,一台机器可能有一个非常平坦的床,但是 XY 龙门架的一小块是半毫米高。Z 轴的末端可能不完全水平。床在 X 和/或 Y 平面中移动时,床在Z平面中可能会稍微移动。而在 Delta 上,其 XY 轨迹可能呈缠绵碗状。
床补偿或 “ — Bed Leveling” 使用探头或用户协助方法,可以使机器准确测量 XY 平面上各个点的 “床高度”。然后,借助这些数据,机器可以调整运动以更好地对准床的倾斜或“高度”变化。
有关这些功能的更多详细信息,请参阅 MBL 的 G29 和 ABL 的 G29。我们建议您在使用床架之前,尝试使打印机尽可能达到最佳状态,因为所有床架只能补偿有缺陷的硬件,但不会对它进行修复。
床调平类型
床调平是许多 3D 打印机的标准功能。很简单的操作可以获得良好的第一层和良好的床层附着力。所有形式的床平整都使用了G29
床探测,M420
启用/禁用,并且可以将其结果通过M500
保存到 EEPROM。太棒了!
启用床调平:
G28
禁用床调平,但保持先前的平整数据不变。G29
自动或手动探测床的各个点,测量床的高度,计算校正网格或矩阵,然后打开水准补偿。具体行为取决于床整平的配置和类型。M500
将床调平数据保存到 EEPROM。使用M501
加载它,用M502
清除它,并使用M503
报告它。M420 S <bool>
可用于启用/禁用床调平。例如,必须在M501
之后使用M420 S1
以启用加载的网格或矩阵,并在G28
之后重新启用水平,这将禁用水平补偿。- 可以使用
LCD_BED_LEVELING
选项将 “Level Bed” 菜单项添加到 LCD。
1 | //#define AUTO_BED_LEVELING_3POINT |
只需要选择一种调平方式
AUTO_BED_LEVELING_3POINT
,三点调平,探测三角形中的三个点。平面给出适合于补偿平坦但倾斜的床的变换矩阵。AUTO_BED_LEVELING_LINEAR
,网格调平,探测网格中的床。通过最小二乘法生成变换矩阵,以补偿平坦但倾斜的床。AUTO_BED_LEVELING_BILINEAR
,通过可选的 Catmull-Rom 曲面细分在网格中探测床。网格数据用于使用双线性插值来调整整个床层的Z高度。适用于三角床,大床或不平坦的床。AUTO_BED_LEVELING_UBL
(推荐),结合了3点,线性,双线性和网格水准测量的功能。与双线性调平一样,UBL生成的网格数据用于使用双线性插值来调整整个床层的 Z 高度。当前需要 LCD 控制器。MESH_BED_LEVELING
提供了一个自定义G29
命令,可使用一张纸或塞尺在几个网格点上测量床高。有关完整过程,请参阅G29
。这种类型的调平仅与PROBE_MANUALLY
兼容。
只有AUTO_BED_LEVELING_BILINEAR
和AUTO_BED_LEVELING_UBL
支持 Delta。当前仅AUTO_BED_LEVELING_BILINEAR
支持 SCARA。MESH_BED_LEVELING
与 Delta 和 SCARA 不兼容。
G28 恢复调平数据
1 | //#define RESTORE_LEVELING_AFTER_G28 |
正常来说 G28 执行完毕后会取消调平数据的使用,你可以启用这项来让他继续使用调平数据
调试调平
1 | //#define DEBUG_LEVELING_FEATURE |
使用此选项可以启用额外的归零和调平调试。然后,您可以在 G28
和 G29 V4
之前使用M111 S32
获得详细的诊断过程日志。此选项对于找出意外行为的原因或向项目报告问题时很有用。
淡出调平
1 | #define ENABLE_LEVELING_FADE_HEIGHT |
随着高度的怎加,减少床的高度补偿。
此选项将 Z 参数添加到M420
,该参数设置淡入距离,在该淡入距离中将逐渐减小调平。超过给定的 Z 高度,将不再应用调平补偿。适用于MESH_BED_LEVELING
,AUTO_BED_LEVELING_BILINEAR
和AUTO_BED_LEVELING_UBL
。
存在此功能是为了防止床中的不规则物体影响模型的整个高度。淡出调平还可以降低计算运算量,并降低 Z 轴在淡出高度以上的共振。对于对齐良好的机器,此功能可以改善打印效果。示例:要使调平补偿在层印刷的前10毫米处逐渐消失,请使用M420 Z10
。如果每层的高度为 0.2mm,则每层之后的流平补偿将减少 1/50(2%) 。超过10毫米,机器将无调平补偿。
G26 网格验证模式
1 | /** |
使用任何基于网格的水平测量系统 (1.1.7) 时,可以激活G26_MESH_VALIDATION
以打印测试图案并微调网格。有关完整详细信息,请参见 G26 网格验证。G26 命令接受用于喷嘴尺寸,层高等的参数。上面的子选项指定将应用于省略参数的默认值。
线性/双线性选项
1 | #define GRID_MAX_POINTS_X 3 |
这些选项指定在 G29
期间在每个尺寸中探测的默认点数。
1 | //#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE |
这些设置指定了使用 G29
进行探测的边界。这很可能是床的一个子部分,因为探头通常无法到达喷嘴可以到达的每个点。设置这些边界时,请考虑探针的 XY 偏移。
1 | //#define PROBE_Y_FIRST |
如果应该先在 Y 维度而不是 X 维度进行探测,则启用此选项。
双线性选项
1 | //#define EXTRAPOLATE_BEYOND_GRID |
通常,被探测的网格不会一直延伸到床的边缘。因此,在探测网格的边界之外,Z 调整可以采用以下两种方法之一。Z 高度可以通过最近的网格框的确定的倾斜度继续升高/降低 (最好是在探测了大部分床时) ,或者它可以遵循最近的边缘的轮廓 (默认值) 。启用此选项进行推断。
1 | //#define ABL_BILINEAR_SUBDIVISION |
如果您要保留SRAM,则此选项将使用 Catmull-Rom 曲面细分方法将双线性网格的分辨率相乘。此选项仅适用于双线性调平。如果默认值 3 太昂贵,请尝试 2 或 1。在Marlin 1.1.1中,默认网格将存储在PROGMEM中,就像UBL现在所做的那样。
统一床平整选项
1 | #define UBL_MESH_INSET 1 // Mesh inset margin on print area |
这些选项指定用于 UBL 的插图,网格和 3 点三角形。请注意,探头的 XY 偏移和移动限制可能会限制床的可探测区域。
网床调平选项
1 | #define MESH_INSET 10 // Mesh inset margin on print area |
这些选项指定在G29
期间将始终在每个尺寸中探测的点数。网格插入用于自动计算探针边界。这些可以在Configuration_adv.h
中显式设置。网格探测完成后,MESH_G28_REST_ORIGIN
将喷嘴移至Z_MIN_POS
处。如果 Z 偏移 (例如,由于home_offset或其他原因) ,则这是为了将 Z 移动到一个好的起点,通常Z = 0。
3 点调平
1 | #if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL) |
这些选项指定将在G29
期间探测三个点的坐标。
LCD 交互式调平
1 | //#define LCD_BED_LEVELING |
LCD_BED_LEVELING
在 LCD 上添加了 “Level Bed” 菜单,该菜单开始了逐步指导的水平测量程序,不需要探头。对于网状床找平,对于MBL参见G29
,对于 PROBE_MANUALLY 对于 ABL 参见G29
。可与 MESH_BED_LEVELING 和 PROBE_MANUALLY(所有形式的自动床平整) 一起使用。请参阅Configuration
.h文件以获取子选项。
角调平
1 | //#define LEVEL_BED_CORNERS |
添加菜单项在床角之间移动以手动调整床。
Z探针结束脚本
1 | //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" |
在G29
末尾执行的自定义脚本。如果需要多个命令,请用\n
(换行符) 将它们分开。
归零设置
床中心设为 (0.0)
1 | //#define BED_CENTER_AT_0_0 |
如果床的中心位于X0 Y0,则启用此选项。此设置会影响自动原点位置 (未使用MANUAL_ [XYZ] _POS设置的位置) 的计算方式。Delta 始终启用它。
自定义归零坐标
1 | //#define MANUAL_X_HOME_POS 0 |
这些设置用于覆盖原始位置。保留它们未定义的自动设置。对于 Delta 的 Z 轴,必须将 home 设置在最高位置。
Z安全归零
1 | #define Z_SAFE_HOMING |
当使用G28
对所有轴进行时,Z 安全归零可以通过在 Z 归零之前移动到定义的 XY 坐标 (默认为床的中部) 来防止探针 (或喷嘴) 位于床身区域之外时 Z 归零。副作用在 Z 归零之前需要 X 和 Y 归零。如果步进驱动程序超时,将再次需要 X 和 Y 归零。
如果将探针 (不是限位器) 用于 Z 归零,则启用此选项。如果使用 Z 限位器进行原点复归,则不需要 Z 安全原点复归,但是也可以启用 Z 安全原点,以使 XY 在原点复归后始终移动到某个自定义位置。
归零速度
1 | // Homing speeds (mm/m) |
用于归零和自动调平的归零速度。这些值可能设置为机器可以达到的最快速度。归零和探测速度受当前最大进给速度和最大加速度设置的限制。
将这些值设置得太高可能会导致精度降低 和/或 跳过步骤。降低加速度可能有助于实现更高的最高速度。
1 | #define VALIDATE_HOMING_ENDSTOPS |
验证归零是否触发了限位器。
床偏补偿
1 | //#define SKEW_CORRECTION |
纠正XYZ轴上的未对准情况。请参阅configuration.h
中的注释。
单独归位
1 | //#define INDIVIDUAL_AXIS_HOMING_MENU |
添加单个轴单独归位选项 (Home X,Home Y 和 Home Z) 到 LCD 菜单。
附带功能
EEPROM
1 | //#define EEPROM_SETTINGS |
诸如M92
之类的命令仅会更改易失性存储器中的设置,并且在关闭计算机电源后这些设置会丢失。启用此选项后,设置会保存至内置的 EEPROM,在重新启动后自动加载 EEPROM 的数据,覆盖原有固件内的设置 (只是覆盖到易失性存储器,并不是真的覆盖固件)。
强烈建议使用此选项,因为它使配置更易于管理。不过要注意的是更新固件后 EEPROM 的信息仍然保留。
EEPROM 相关命令:
M500
:将所有当前设置保存到 EEPROM。M501
:将最后保存的所有设置加载到 EEPROM。M502
:将所有设置重置为其默认值(由Configuration.h
设置,也就是烧写后的默认配置)M503
:打印当前设置(在 RAM 中,而不在 EEPROM 中)
1 | //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! |
这些 EEPROM 选项应保留不变,但对于 128K 和更小的板,它们可用于恢复某些程序存储器。强烈建议供应商不要使用 DISABLE_M503
。要将新的默认设置保存到 EEPROM 中,请先使用M502
,再使用M500
。
可以更改并保存到 EEPROM 的设置用标记。标有的选项可以从 LCD 控制器更改。
终端保持活动
1 | #define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages |
启用后,打印机在无法接受命令时每隔几秒钟向终端发送一个忙碌状态消息。如果终端不喜欢保持活动消息,请禁用。
使用 DEFAULT_KEEPALIVE_INTERVAL
作为忙碌状态消息之间的默认秒数。用M113
覆盖。Marlin 1.1.5及更高版本包括BUSY_WHILE_HEATING
选项,用于对协议有要求的终端
查看可用内存
1 | //#define M100_FREE_MEMORY_WATCHER |
启用将添加 M100
指令用于查看内存占用信息
G-code 单位转换
1 | //#define INCH_MODE_SUPPORT |
添加 G20 和 G21,用于修改解析 G-code 的单位
温度单位转换
1 | //#define TEMPERATURE_UNITS_SUPPORT |
添加 M149 C
、M149 K
和M149 F
,用于修改温度单位为摄氏度,开氏度或华氏度。如果没有此选项,则所有温度必须以摄氏度为单位。
LCD 材质预设
1 | #define PREHEAT_1_TEMP_HOTEND 180 |
这些是 Prepare > Preheat 菜单选项的默认值。可以使用M145
或 Control > Temperature > Preheat Material X conf 子菜单覆盖这些值。
空转喷头位置
1 | //#define NOZZLE_PARK_FEATURE |
设置空转时喷头所在的位置,并启用 G27
喷头清理
1 | //#define NOZZLE_CLEAN_FEATURE |
添加了 G12 命令以执行喷嘴清洁过程。有关其他配置选项,请参见Configuration.h
里的注释。
打印时间计时器
1 | #define PRINTJOB_TIMER_AUTOSTART |
使用 M104
,M109
和 M190
命令时,自动启动和停止打印作业计时器。还添加以下命令来控制计时器:
M75
启动打印作业计时器。M76
暂停打印作业计时器。M77
停止打印作业计时器。
打印统计
1 | //#define PRINTCOUNTER |
统计打印总数、成功/失败数、总打印时间,可以使用 M78
查看这些信息
LCD 语言
界面语言
1 | #define LCD_LANGUAGE en |
选择界面语言,最新支持的语言可以在 src/core/language.h 找到
HD44780字符集
1 | #define DISPLAY_CHARSET_HD44780 JAPANESE |
此选项仅适用于基于字符的显示。有需要细看Configuration.h
中的注释
LCD 类型
1 | //#define ULTRA_LCD // Character based |
基本的LCD类型是基于字符的或图形的。一般 Marlin 会自动选择支持的 LCD 类型。如果你的 LCD 支持,需要选择性启用这些选项。
SD 卡
1 | #define SDSUPPORT // Enable SD Card Support in Hardware Console |
如果你要使用 SD 卡离线打印,必须启用这项
1 | //#define SPI_SPEED SPI_HALF_SPEED |
取消注释这些选项之一可使用较慢的 SPI 传输速度。这样做一般能解决卷初始化错误问题。
CRC 启用
1 | //#define SD_CHECK_AND_RETRY |
SD 卡通信过程使用 CRC 检查
旋钮
分辨率
1 | //#define ENCODER_PULSES_PER_STEP 1 |
识别一个步骤所需要旋钮发出的脉冲数。对于高分辨率旋钮应增加。
1 | //#define ENCODER_STEPS_PER_MENU_ITEM 5 |
使用此选项可覆盖在下一个/上一个菜单项之间移动所需的步进信号数。
方向
1 | //#define REVERSE_ENCODER_DIRECTION |
测试旋钮方向,你可以先把两个都注释掉,烧写后出现问题的解决方式:
- 菜单和数值修改都反了,启用
REVERSE_ENCODER_DIRECTION
- 只有菜单反了,启用
REVERSE_MENU_DIRECTION
- 只有数值修改反了,两个都启用
蜂鸣器
1 | //#define SPEAKER |
默认使用的蜂鸣器是固定音阶,如果你的蜂鸣器可以发出不同的音阶,则启用这项
1 | //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 |
声音的持续时间和频率。将它们设置为 0 可禁用 LCD 菜单中的音频反馈。使用 M300
测试音频输出 S <频率Hz> P <持续时间ms>
LCD 控制面板
Marlin支持对多种控制界面。有两个最受欢迎的 LCD 界面:
REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
带点击轮的单色基于128 x 64像素的LCD控制器。能够显示简单的位图图形和最多5行文本 (上半图)。
REPRAP_DISCOUNT_SMART_CONTROLLER
一个20 x 4字符的LCD控制器,带有拨轮 (下半图)。
其他 LCD 控制器大多数都是这些的改进版本。其他类型可以参考官方:
额外功能
快速 PWM 风扇
1 | //#define FAST_PWM_FAN |
增加风扇 PWM 频率。可以在configuration_adv.h
文件中调整频率和缩放比例。
使用软件 PWM 驱动风扇
1 | //#define FAN_SOFT_PWM |
使用软件 PWM 驱动风扇。这使用了非常低的频率。如果频率太低,请增加SOFT_PWM_SCALE
。如果在SOFT_PWM_SCALE
设置为大于 0 的值时遇到分辨率损失,则可以使用SOFT_PWM_DITHER
减轻它。
温度状态指示灯
1 | //#define TEMP_STAT_LEDS |
使用 LED 添加温度状态指示器。
快门引脚
1 | //#define PHOTOGRAPH_PIN 23 |
使用M240
来拍照,而这个引脚用来触发相机的快门
SkeinForge 圆弧错误修复
1 | //#define SF_ARC_FIX |
当使用 Arc Point 作为圆角过程时,用 SkeinForge 切片的文件包含错误的弧 G-Code。此选项可解决该错误,但应保留该选项。
糊状挤出
1 | // Support for the BariCUDA Paste Extruder. |
Marlin包括对 Baricuda Extruder 的支持,该 Baricuda Extruder 也托管在GitHub上,用于3D打印糖和巧克力。该功能添加了代码M126
,M127
,M128
和M129
,用于控制 Baricuda 的泵和阀门。
RGB 颜色 LED 加成[滑稽]
RGB 可寻址颜色指示器有两种方法在,这两种方法都使用M150 Rr Ug Bb
设置颜色以指定 0 到 255 之间的 RGB 分量。
1 | //define BlinkM/CyzRgb Support |
BLINKM 为某些 LCD 控制器提供背光。使用 I2C 消息设置其颜色。
1 | //define PCA9632 PWM LED driver Support |
飞利浦 PCA9632 是通用 PWM LED 驱动器,使用 I2C 控制(BlinkM)。
1 | //#define RGB_LED |
连接到 5V 数字引脚的 RGB(W)LED ,或连接到由数字引脚控制的 MOSFETs RGB(W) 灯条,需要启用这项。
通过为每个组件分配数字引脚,可以简单地使用 RGB LED。如果这些引脚能够执行硬件 PWM,则可以使用多种颜色。如果使用简单的数字引脚,则只能使用 7 种颜色。添加了M150
命令以设置LED(或LED灯带)颜色。如果引脚具有 PWM 功能(例如4、5、6、11),则可以将亮度值的范围设置为 0 至 255。
Adafruit Neopixel LED 驱动器
1 | //#define NEOPIXEL_LED |
NEOPIXELS (官方就是这么懒)
根据打印机状态控制 LED
1 | #if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) |
此选项使打印机对安装的彩色LED,BLINKM 或 PCA9632 提供状态反馈:
随着加热床达到目标温度,逐渐从蓝色变为紫色。
随着温度升高,紫罗兰色逐渐变为红色。
更改为白色以照亮工作表面。
打印完成后变为绿色。
打印完成并且用户按下按钮后关闭。
舵机
1 | //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command |
可使用舵机的数量。一般出现在 Z 床探头,它由安装在旋转臂上的限位器组成。要将伺服连接器之一用于此类探头,请在上述探头选项中设置 Z_ENDSTOP_SERVO_NR。
1 | #define SERVO_DELAY 300 |
下一个动作开始之前的延迟(mm为单位),以使伺服时间达到其目标角度。300ms是一个不错的选择,但是您可以尝试减少延迟。指定足够大的延迟,以便伺服器有足够的时间在停用之前完成完整的运动。
1 | //#define DEACTIVATE_SERVOS_AFTER_MOVE |
启用这项舵机仅在运动期间供电,防止抖动。我们建议启用此选项,以防止有源舵机产生的电子噪声干扰其他组件。运动过程中,挤出机电机接线产生的高安培数也会在主动伺服系统中引起波动。将此选项保持启用状态可以避免与伺服相关的麻烦。
Configuration_adv.h
突然咸鱼