3D Print
DIY 打印机
Marlin 2.X固件_Configuration
Marlin_MKS-TinyBee(ESP32)
Marlin-独立配置文件(快速配置)
Marlin-LCD增加机器调试
常见问题
ESP3D_2.1X
OctoPrint for Android
Klipper 3D打印机
Klipper 摄像头
Klipper-中文Gcode
Klipper-打印预览
Kiauh_部署加速
配置文件_功能注释
Klipper-添加Shell支持
Klipper-常用命令
Klipper-机器校准
Klipper-打完自动关机
Klipper-Android版
Klipper-层暂停
Mainsail-交互宏
TMC2209/2208
步数计算
最大速度/最大加速度
常见问题
3D打印机打印时风扇不转
SD卡更新固件失败
支撑平面塌陷
其他黑科技
切片软件
耗材变脆
Fusion360
参数化设计__Fusion 360
Fusion 360-齿轮齿条绘制
不含设计历史导出
STL模型可编辑
申请教育账户
本文档使用 MrDoc 发布
-
+
首页
Marlin 2.X固件_Configuration
Marlin是3D打印的一种开源固件,只需要简单配置就可以驱动你的打印机 - [Marlin下载链接](https://marlinfw.org/meta/download/) - [Marlin官方说明](https://marlinfw.org/docs/basics/introduction.html) - [Marlin_GitHub](https://github.com/MarlinFirmware/Marlin) - [大佬详细说明](https://www.guaishow.cn/archives/79/) - 百众云 [在线配置](https://baizhongyun.cn/home/mkstoolview),[在线编译](https://baizhongyun.cn/home/mkscompileview) ## Configuration文件 Configuration 为基础配置文件,大多数配置都在其中 ### 版本控制 ```CSS #define CONFIGURATION_H_VERSION 02000900 ``` ### 固件基本信息 ```CSS #define STRING_CONFIG_H_AUTHOR "(none, default config)" #define SHOW_BOOTSCREEN #define SHOW_CUSTOM_BOOTSCREEN #define CUSTOM_STATUS_SCREEN_IMAGE ``` * 作者和固件的信息,这些信息会在 Marlin 启动时、连接终端、重启和执行`M115`时显示 * 定义它可以在打印机启动时,Marlin引导屏幕会显示在LCD上 * 定义它可以使用自定义的启动画面,编译时会自动寻找Marlin/_Bootscreen.h位图文件 * 定义它可以使用自定义的状态画面,编译时会自动寻找Marlin/_Statusscreen.h位图文件 ### 硬件基本信息 #### *串行端口 用于连接串口屏(大多数触摸屏都是),ESP3D,或是和主机通讯等 ```CSS #define SERIAL_PORT 0 #define SERIAL_PORT_2 -1 #define BAUDRATE 250000 ``` * 设置主串口,-1为USB仿真串口,如果串口连接不上检查是否配置串口 * 辅助串口,连接多个串口设备用 * 波特率设置,使用电脑或其他终端连接时需要用到,双方波特率一致,一般使用250000/115200 #### 蓝牙 ```CSS #define BLUETOOTH ``` * 启动蓝牙功能,比如说基于 AT90USB(一般不需要) #### *控制板 ```CSS #define MOTHERBOARD BOARD_RAMPS_14_EFB ``` * 这个特别重要,告诉Marlin运行在什么主板上,不同主板引脚定义不同设置错了会导致不可预测的后果 在`Marlin\src\core\boards.h`找到你控制板的型号,用它的 ID 替换实例代码里的BOARD_RAMPS_14_EFB(define 的名字也行) > 如果开发板型号有好几个ID,可以查看具体注释 > ```CSS > #define BOARD_RAMPS_14_EFB 1020 // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed) > #define BOARD_RAMPS_14_EEB 1021 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed) > #define BOARD_RAMPS_14_EFF 1022 // RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1) > #define BOARD_RAMPS_14_EEF 1023 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan) > #define BOARD_RAMPS_14_SF 1024 // RAMPS 1.4 (Power outputs: Spindle, Controller Fan) > ``` > 可以看到后面注释把不同的功能分配到 Power out 上,比如说 1020 的功能有一个挤出头,一个风扇,一个热床,而 1021 是有两个挤出头,一个热床,没有风扇 #### 打印机命名 ```CSS #define CUSTOM_MACHINE_NAME "WJ's Kossel Plus" ``` * 打印机的名称,名称将会出现在LCD屏幕上和`M115` #### 打印机 UUID ```CSS #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" ``` * 设置 UUID,有些软件可以用 UUID 区分不同的打印机,你可以通过 [UUID Generator](https://www.uuidgenerator.net/version4) / [UUID Tools](https://www.uuidtools.com/generate/v4) 获取随机生成的 UUID ### 挤出基本信息 #### *挤出机数量 ```CSS #define EXTRUDERS 1 ``` * 这里可以定义0-6个挤出机,如果不是单喷头单挤出机的情况,后面可以设置更加详细设置,但是这里也需要设置挤出机的数量 #### *耗材直径 ```CSS #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 ``` * 这里定义的直径是耗材上`标注`的直径,如果实际测量是1.70,也填1.75 ### 电源设定 如果你使用双电源,例如加热器独立一个电源,为了省电有时候会关闭电源,你需要配置这块代码 ```C# //#define PSU_CONTROL //#define PSU_NAME "Power Supply" #if ENABLED(PSU_CONTROL) #define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box //#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80 //#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power //#define PSU_POWERUP_GCODE "M355 S1" // G-code to run after power-on (e.g., case light on) //#define PSU_POWEROFF_GCODE "M355 S0" // G-code to run before power-off (e.g., case light off) //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin #if ENABLED(AUTO_POWER_CONTROL) #define AUTO_POWER_FANS // Turn on PSU if fans need power #define AUTO_POWER_E_FANS #define AUTO_POWER_CONTROLLERFAN #define AUTO_POWER_CHAMBER_FAN //#define AUTO_POWER_E_TEMP 50 // (°C) Turn on PSU if any extruder is over this temperature //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) Turn on PSU if the chamber is over this temperature #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time. #endif #endif ``` * PS_DEFAULT_OFF允许控制板使用M80和M81打开和关闭电源 12v。需要配置PS_ON_PI ### 温度控制设定 #### *温度传感器类型 温度传感器是 3D 打印机的重要部分 ``` #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_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 #define TEMP_SENSOR_BED 0 #define TEMP_SENSOR_CHAMBER 0 ``` * 挤出机0~7 温度传感器型号 * 热床 温度传感器型号 * 保温箱 温度传感器型号 > 在Configuration.h中,这部分选项的上方有型号对照表,这里需要根据你的温度传感器的型号选择正确的参数并填入,如果你找不到匹配的参数,你就选择同品牌相近的 > 0代表未启用,淘宝购买的 NTC/3950/100K 大部分都可以选择1 ``` #define DUMMY_THERMISTOR_998_VALUE 25 #define DUMMY_THERMISTOR_999_VALUE 100 ``` * 虚拟热敏电阻恒温读数,用于998和999 > 固件本身提供两个指令用于测试温度虚拟传感器,在这里设置恒定温度 #### 温度传感器冗余 ``` #define TEMP_SENSOR_1_AS_REDUNDANT #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 ``` * 将温度传感器1用作带有传感器0的冗余传感器,这样可以防止传感器出现故障 * 如果两个传感器的温差超过设定,打印将被中止 #### 温度稳定设定 ``` #define TEMP_RESIDENCY_TIME 5 #define TEMP_WINDOW 1 #define TEMP_HYSTERESIS 3 #define TEMP_BED_RESIDENCY_TIME 5 #define TEMP_BED_WINDOW 1 #define TEMP_BED_HYSTERESIS 3 ``` `TEMP_` 喷头,`TEMP_BED_` 热床 * 温度到达后等待稳定的时间 * 等待稳定时间中允许浮动的温度 * 温度接近值,开始进入等待稳定的触发值 #### 温度范围 ``` #define HEATER_0_MINTEMP 5 #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 #define HEATER_4_MINTEMP 5 #define HEATER_5_MINTEMP 5 #define HEATER_6_MINTEMP 5 #define HEATER_7_MINTEMP 5 #define BED_MINTEMP 5 ``` * 最低温度,低于设定温度认为温度传感器损坏,有效避免温度传感器故障导致火灾 ``` #define HEATER_0_MAXTEMP 275 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 #define HEATER_4_MAXTEMP 275 #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 #define BED_MAXTEMP 120 ``` * 最高温度,高于设定温度认为温度传感器损坏,有效避免组件过热,温度传感器故障导致火灾 `HEATER_?`对应喷头,`BED_`热床 ### PID 温度控制使用 PID (Proportional, Integral, Derivative) 方式 ,正确精准的 PID 值能稳定的控制温度,减少浮动,而且能防止加热阶段温度上升过快而损坏热端 使用`M303`指令会自动测试,并返回正确的PID参数。每次更新/更换电路相关的元件时都推荐调整PID值。热端的PID可以使用`M301`或`LDC`设置,热床的PID可以使用`M304`设置 #### 喷头 ``` #define PIDTEMP #define BANG_MAX 255 #define PID_MAX BANG_MAX #define PID_K1 0.95 ``` * 启用`PIDTEMP`使热端使用PID进行温度控制,而禁用会使热端进入 开关模式 (只有开或关),在大多数情况下推荐启用 PID,有着保持稳定温度更好的效果 ``` #if ENABLED(PIDTEMP) #define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM) #define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM) //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) // Set/get with gcode: M301 E[extruder number, 0-2] // Anycubic Kossel - run 'M106 S255' & 'M303 E0 C10 S200' #if ENABLED(PID_PARAMS_PER_HOTEND) // Specify between 1 and HOTENDS values per array. // If fewer than EXTRUDER values are provided, the last element will be repeated. #define DEFAULT_Kp_LIST { 22.36, 22.36 } #define DEFAULT_Ki_LIST { 1.63, 1.63 } #define DEFAULT_Kd_LIST { 76.48, 76.48 } #else #define DEFAULT_Kp 22.36 #define DEFAULT_Ki 1.63 #define DEFAULT_Kd 76.48 #endif #endif // PIDTEMP ``` * 启用`PID_AUTOTUNE_MENU`可以在LCD上添加一个选项,能运行自动计算PID。如果您有多个挤出机,并且它们是不同的型号,则启用 `PID_PARAMS_PER_HOTEND` * 默认的参数,M303指令的结果比这些更加精准,如果批量生产的话可以测试完后使用这个默认参数,免得所有的需要单独测试 #### 热床 ``` #define PIDTEMPBED ``` * 如果你的热床支持PWM,启用`PIDTEMPBED`使热床使用PID进行温度控制(与驱动挤出机的PWM频率相同) > 如果配置与此配置不同,在确认硬件可以正常工作之前,不应该使用床位PID。使用`M303 E-1`调节该选项的床PID ``` #define MAX_BED_POWER 255 ``` * 热床的最大功率。各种模式的温度控制都应遵守此要求。如果使用255以外的任何值会启用PWM模式。与`PIDTEMPBED`一样,除非您的热床可以使用PWM,否则不要启用此功能 ``` #if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Sends debug data to the serial port. // Anycubic Kossel // this is for the aluminium bed with a BuildTak-like sticker on it // from pid autotune. "M303 E-1 C8 S60" to run autotune on the bed at 60 degreesC for 8 cycles #if ANYCUBIC_KOSSEL_ENABLE_BED == 1 #define DEFAULT_bedKp 374.03 #define DEFAULT_bedKi 72.47 #define DEFAULT_bedKd 482.59 #elif ANYCUBIC_KOSSEL_ENABLE_BED == 2 // TODO get real PID values for Ultrabase Bed #define DEFAULT_bedKp 374.03 #define DEFAULT_bedKi 72.47 #define DEFAULT_bedKd 482.59 #endif //#define PID_BED_DEBUG // Sends debug data to the serial port. // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED ``` * 与热端的配置方式一样,而指令使用`M303 E-1` ### 安全相关 #### 禁止冷挤出 ``` #define PREVENT_COLD_EXTRUSION #define EXTRUDE_MINTEMP 170 ``` * 温度没有达到让耗材软化,这种阶段开始挤出会损坏机器。启用`PREVENT_COLD_EXTRUSION` * 热端的温度设定的值,将禁止挤出。M302可以修改这个值 #### 禁止长挤出 ``` #define PREVENT_LENGTHY_EXTRUDE #define EXTRUDE_MAXLENGTH 750 ``` * 长时间挤出可能不会损坏机器,但可能会浪费大量的耗材,主要防止 G1 命令中手滑打错字设定的值过大 * 设定的最大长度应设置为大于或等于常用挤出长度 #### 温度保护 温度保护避免温度过高时损坏机器或者发生无法挽救的事故 ``` #define THERMAL_PROTECTION_HOTENDS #define THERMAL_PROTECTION_BED #define THERMAL_PROTECTION_CHAMBER ``` * 为所有 挤出机/热床/保温箱 启用温度保护 > Marlin 提供两段的热保护 > 1. 打开加热器时,检查温度实际上是否在升高。如果温度在特定时间段内(默认情况下为20秒内升高2度)未能充分升高,则打印机将关闭并显示 “Heating failed” (加热失败) 错误。这需要排查热敏电阻是否有断开、松动或配置错误,或者加热棒是否断开。 > 2. 监视热稳定性。如果测得的温度偏离目标温度的时间过长,则打印机将关闭并显示“Thermal runaway”(热失控) 错误。这种情况需要检查热敏电阻和热端之间是否接触不良,PID参数不正确或环境温度不利于打印机工作。更多热保护选项在`Configuration_adv.h`中。大多数情况,这些值可以保留不变,但应根据实际情况进行调整,防止误报。 ### *运动系统 Marlin 支持四种运动系统:Cartesian(笛卡尔),Core (H-Bot),Delta(三角洲),SCARA(机械臂) * artesian 是最简单的运动系统,每个步进器应用到轴上 * CoreXY 使用特殊的皮带布局来进行 XY 运动,需要一些额外的数学运算 * Delta 使用三个垂直的滑块运动转换为 XYZ 运动,该运动通过并联臂固定在滑架上的 “效应器” 中 * SCARA 使用两个角关节在 XY 平面中移动手臂 ``` //#define COREXY //#define COREXZ //#define COREYZ //#define COREYX //#define COREZX //#define COREZY //#define MARKFORGED_XY ``` * Core 平面设定,根据对应平面设定 ### Delta(三角洲)特殊设置 这项设置是针对 Delta(三角洲) 运动系统的特殊设置,需要做大量的坐标转换的运算,这部分对 Delta 的精度影响是最大的,一些尺寸的数值需要完美的精确。 ``` #define DELTA ``` * 启动 Delta 设置的选项 ``` #define DELTA_SEGMENTS_PER_SECOND 80 ``` * 由于 Delta 运算量大,有时候 MPU 忙于计算坐标,没有其他算力去运算 LCD 的显示,比如12864 的 LCD,使用起来会有卡顿现象,你需要调低这个值的参数 ``` //#define DELTA_HOME_TO_SAFE_ZONE ``` * 启用这个功能,归零后将会下降到 XY 移动限制的范围内。打印机打印完成后一般都会自动归零,打印比较高的模型归零的下降将有可能会撞上模型,轻则损坏模型,重则损坏打印机。如果你存在这些问题,请不要启用这个功能 ``` #define DELTA_CALIBRATION_MENU ``` * 启用这项可以在菜单添加三点调平的功能 ``` #if ANYCUBIC_PROBE_VERSION > 0 #define DELTA_AUTO_CALIBRATION #endif //注意注意DELTA_ *值的所有值都必须为浮点数,因此始终在其中保留小数点 #if ENABLED(DELTA_AUTO_CALIBRATION) //设置探测点的默认数量:n * n(1-> 7) #define DELTA_CALIBRATION_DEFAULT_POINTS 4 #endif #if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) //设置纸张测试探测的步幅 #define PROBE_MANUALLY_STEP 0.05 // (mm) #endif ``` * `DELTA_AUTO_CALIBRATION`添加 G33 自动调平,这个调平的结果将存储在 EEPROM 中,刷新固件不会影响这个值 * `DELTA_CALIBRATION_DEFAULT_POINTS`则是探测点的数量 * `PROBE_MANUALLY_STEP`是下探过程的速度,单位是mm #### Delta(三角洲)安全区域 **参数都是浮点数,需要保留小数点,即使小数点后是 0** ``` #define DELTA_PRINTABLE_RADIUS 120.0 ``` * Delta 的打印面一般是圆形,这里设置的是安全区域,参数是安全区域的半径,一般因为用料或者其他原因,打印机会有一些喷头没办法移动到的死角位,需要从打印面的半径减去这些死角的位置。如果设置不好,迎来的是严重的后果,比如并联臂断裂。单位是mm ``` #define DELTA_DIAGONAL_ROD 267 ``` * 并联臂两边中孔的中心距 ``` #define DELTA_HEIGHT 300.00 ``` * 这个是归零后喷嘴和热床之间的距离,这个值可以被`G33`自动调平修改 ``` #define DELTA_RADIUS 97.0 ``` * 这个是效应器居中时,并联臂连接效应器的中心,到并联臂连接滑车的中心的水平距离,具体测量位置看上图同名的位置,这个值可以被`G33`自动调平修改 ``` #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } ``` * 这个应该是限位器的偏移量,一开始可以都设,这个值可以被`G33`自动调平修改 ``` #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } ``` * 有些情况 X Y Z 塔所面向的方向并不会交汇与一点,即使淘宝买的注塑/金属的角件,安装有一定的虚位,这些虚位是为了更容易装上,但安装后会出现偏移的情况。这里可以从软件层面调整三个塔的角度,这个值可以被 G33 自动调平修改 ``` #define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } #define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } ``` * Delta 的半径和并联臂的调整 > 手动调平和自动调平的利弊 > > 国内的一些 3d 打印机的固件都停留在 Marlin 1 的时代,而现在已经更新换代很久了。Marlin 1.x 的时候,Delta 的调平问题一直都是非常困难,上图中需要测量的项目都是 1.x 版本需要填入的参数,看图好像挺容易测,实际太多干扰因素,要拿到绝对精准的数值,很难丝毫不差。 > > 而现在的 2.x,Marlin 尽可能想到各种可能影响精度的因素,其他可以运算的都自己运算,可以说进步非常大,而且上面的参数很多都可以通过 G33 修改,可以逆向运算出差值,门槛已经非常的低。 > > 但是,软件处理机械上的偏差有限,有些情况还是不能处理,比如说热床相对三个塔不垂直,这种情况怎么调,打印出来的成品都是歪的,所以,机械上能精准的尽可能精准,剩下的交给软件吧 ### *限位器 ``` #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG ``` * 指定每个轴的限位器是这个轴的最大值还是最小值。大多数打印机三个都是最小值,但 Delta 都使用最大值 探头可以共享 Z min 插头,也可以使用一个或多个额外的连接器 `M119` 查看当前限位触发情况 ``` #define ENDSTOPPULLUPS #if DISABLED(ENDSTOPPULLUPS) // Disable ENDSTOPPULLUPS to set pullups individually //#define ENDSTOPPULLUP_XMAX //#define ENDSTOPPULLUP_YMAX //#define ENDSTOPPULLUP_ZMAX //#define ENDSTOPPULLUP_XMIN //#define ENDSTOPPULLUP_YMIN //#define ENDSTOPPULLUP_ZMIN //#define ENDSTOPPULLUP_ZMIN_PROBE #endif ``` * 默认所有限位器都上拉电阻,以防止浮动,如果要单独对每个限位器配置,可以禁用`ENDSTOPPULLUPS`,然后单独配置 ``` //#define ENDSTOPPULLDOWNS #if DISABLED(ENDSTOPPULLDOWNS) // Disable ENDSTOPPULLDOWNS to set pulldowns individually //#define ENDSTOPPULLDOWN_XMAX //#define ENDSTOPPULLDOWN_YMAX //#define ENDSTOPPULLDOWN_ZMAX //#define ENDSTOPPULLDOWN_XMIN //#define ENDSTOPPULLDOWN_YMIN //#define ENDSTOPPULLDOWN_ZMIN //#define ENDSTOPPULLDOWN_ZMIN_PROBE #endif ``` * 配置方式上,默认所有限位器都`不下拉电阻`,一般两者选其一 ``` // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). #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 true // V1 is NO, V2 is NC #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 Z_MIN_ENDSTOP_INVERTING ``` * 不同的限位器型号,会产生不同的型号,有些闭合时会发出高电平,有些会发出低电平,如果你使用`M119`测试时发现检测与现实相反了,你激活其中某个限位器以相反信号 ``` //#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 Z3_DRIVER_TYPE A4988 //#define Z4_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 //#define E5_DRIVER_TYPE A4988 //#define E6_DRIVER_TYPE A4988 //#define E7_DRIVER_TYPE A4988 ``` * 这里选择步进电机驱动器的型号,并开启某些步进电机驱动器的高级选项。您也可以在`Configuration_adv.h`中覆盖计时选项。默认情况下使用 A4988 ``` #define ENDSTOP_INTERRUPTS_FEATURE ``` * 如果你的限位器有中断功能,你可以在这里开启,这样不需要 CPU 去轮询,节省周期 ### 步进电机驱动 #### *自定义挤出机参数 ##### 方式一 ``` #define DEFAULT_AXIS_STEPS_PER_UNIT {100, 100, 400, 95} ``` * 这个是打印机精度的关键参数,这里设置的是每毫米,步进电机需要走多少步,可以使用 M92 覆盖这些值。分别对应X、Y、Z、E、[E1..]移动1mm所需的脉冲数,计算时需要包含细分一起算 ##### 方式二 ``` // 计算步骤的变量 #define XYZ_FULL_STEPS_PER_ROTATION 200 //运行一圈脉冲数,一般1.8°的200脉冲,0.9°的400脉冲 #define XYZ_MICROSTEPS 16 //细分 #define XYZ_BELT_PITCH 2 //皮带节距 #define XYZ_PULLEY_TEETH 20 //皮带轮齿数 // xyz上的增量速度必须相同 #define DEFAULT_XYZ_STEPS_PER_UNIT ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) // 80 #define DEFAULT_AXIS_STEPS_PER_UNIT { DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, DEFAULT_XYZ_STEPS_PER_UNIT, 96 } // Kossel(GT2,20齿)的每单位默认步长 ``` > 这种设置方式不需要使用计算器,只需要输入`XYZ_FULL_STEPS_PER_ROTATION`、`XYZ_MICROSTEPS`、`XYZ_BELT_PITCH`、`XYZ_PULLEY_TEETH`即可 > 不过还是要注意挤出机 E 的参数总是与 XYZ 不一样 > $$E_{step}=\frac{360°}{angle \times microstep \times C}$$ > C 为送丝轮周长,angle 为步进电机的步进角度,microstep 为微步 #### 步进电机最高速度 ``` #define DEFAULT_MAX_FEEDRATE { 200, 200, 200, 200} ``` * 步进电机的最高速度,单位是 mm/s,可以使用`M203`修改 #### 最大加速度 ``` #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 3000, 3000 } ``` * 默认最大加速度,单位是 mm/s,可以使用`M201`修改 #### 默认加速度 ``` #define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts #define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves ``` * 进一步限制加速度,并可以细分打印,缩进,空运的加速度,可以通过`M204`修改 #### 加速抖动 ``` #define DEFAULT_XJERK 5.0 #define DEFAULT_YJERK DEFAULT_XJERK #define DEFAULT_ZJERK DEFAULT_XJERK // 增量必须与XY相同 #define DEFAULT_EJERK 5.0 ``` * 这个是步进电机从静止瞬间加速能达到最大的值。有时候打印路径曲折,不断的弯曲,如果快速达到最高速度,所产生的力非常大,对电机负载大,有时候还会“飘”过头,丝会产生偏移。这里一般参考默认即可。可以使用`M205`修改 > 如果拐角处过快无法粘连可以通过修改这个数值来降低速度 #### 结点偏差 ``` #if ENABLED(LIMITED_JERK_EDITING) #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits #endif ``` * 使用 “结点偏差” 而不是传统的 “抖动限制”。急动设置会被 “交界偏差” 所覆盖 #### S 曲线加速 ``` #define S_CURVE_ACCELERATION ``` * 使用S函数平滑加速曲线 ### 步进电机基本设置 #### 电机使能电平 ``` #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 #define Z_ENABLE_ON 0 #define E_ENABLE_ON 0 // For all extruders ``` * 这些选项设置用于步进电机使能的引脚状态。对于低电平有效,最常见的设置是0(LOW) 。对于高电平有效,请使用 1 或HIGH #### 非运动状态关电机 ``` #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false ``` * 不运动时,使用这些选项可暂时关闭步进电机。 > 这是为了以比正常电流更高的速度运行步进电机,以产生更大的扭矩为代价,以增加驱动器和步进电机的热量为代价。禁用步进之间的步进使电动机和驱动器有机会冷却。 > 从理论上讲听起来不错,但在实践中却有缺点。禁用的步进器无法稳定热端。这导致精度差并且带有很大的轴向漂移可能性 (失步) 。大多数3D打印机使用 “开环” 控制系统,这意味着该软件无法确定指令执行后是否按照预定计划运动。它只是发送命令并假定已遵守命令。 > 实际上,对于校准良好的机器而言没有影响,使用开环系统可以节省大量成本,并具有出色的质量。这里不建议使用这里的方式。有很多更好的方法来解决步进器/驱动器过热的问题。例如:步进/驱动器散热器,主动冷却,轴上的双电机,减少微步进,检查皮带是否过张,检查组件的运动是否平稳等。 ``` //#define DISABLE_REDUCED_ACCURACY_WARNING ``` * 启用此选项可禁止在可能会降低精度的情况下发出警告 ``` #define DISABLE_E false // Disable the extruder when not stepping #define DISABLE_INACTIVE_EXTRUDER // Keep only the active extruder enabled ``` * 不运动关闭步进电机,不过控制的是挤出机 > 默认设置中,活动的挤出机保持启用状态,同时禁用所有非活动挤出机。对于使用“擦拭塔”或其他方式来确保喷嘴已注满且在两次使用之间高温耗材不下渗的情况下,这是合理的 #### *电机方向 ``` #define INVERT_X_DIR true #define INVERT_Y_DIR true #define INVERT_Z_DIR true #define INVERT_E0_DIR true #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false #define INVERT_E4_DIR false #define INVERT_E5_DIR false #define INVERT_E6_DIR false #define INVERT_E7_DIR false ``` * 这些里可以设置每个轴的电动机反向运动 > 第一次设置这些时要小心。轴移动方向错误会导致损坏 > 测试之前,将喷头和床移动到中间再测试移动。如果轴反转,则将插头翻转一下或更改其反转设置 ### 归零和安全区 #### Z 轴归零后的高度 ``` //#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed. Also enable HOME_AFTER_DEACTIVATE for extra safety. #define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated. Also enable NO_MOTION_BEFORE_HOMING for extra safety. //#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off. ``` * 在 X 轴与 Y 轴归零前,将 Z 轴提升到指定高度,这对于防止头部撞到框体,这也适用于自动床平整 #### *归零方向 ``` #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 ``` * 每个轴的归零方向,-1 为最小值,1为最大值。一般 Cartesian 和 CoreXY 用最小值归零,而 Delta 用最大值归零 #### *安全区大小 ``` #define X_BED_SIZE ((DELTA_PRINTABLE_RADIUS) * 2) #define Y_BED_SIZE ((DELTA_PRINTABLE_RADIUS) * 2) ``` * 您可以直接指定床的尺寸。如果 X/Y 滑架能够移动到床外,则可以在下面指定更大的范围。默认直接使用`DELTA_PRINTABLE_RADIUS` ``` #define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) #define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) #define Z_MIN_POS 0 #define X_MAX_POS DELTA_PRINTABLE_RADIUS #define Y_MAX_POS DELTA_PRINTABLE_RADIUS #define Z_MAX_POS MANUAL_Z_HOME_POS ``` - 这里一般设置打印机的物理极限。通常将[XYZ] _MIN _POS值设置为 0,因为限位器一般放在打印极限位置 - [XYZ] _MAX_POS应该设置为最远的可到达点。默认情况下,这些位置用作您的归零位特殊情况可以使用MANUAL _[XYZ] _HOME_POS选项覆盖这些选项 - 可以手动运行确认最大位移极限,使用 `G0 X100 Y100 Z100` 移动到指定位置,使用 `M114` 查看当前位置 - 可以使用 [M206 [P\<offset\>] [T\<offset\>] [X\<offset\>] [Y\<offset\>] [Z\<offset\>]](https://marlinfw.org/docs/gcode/M206.html) 进行偏移 注意,如果是负方向可能需要使用 [M211 [S<1=启用 0=禁用>]](https://marlinfw.org/docs/gcode/M211.html) 来`禁用软限位` - 也可移动后通过 [M428](https://marlinfw.org/docs/gcode/M428.html) 设置当前位置为偏移后原点 #### 虚拟限位器(软件限位器) ``` #define MIN_SOFTWARE_ENDSTOPS #if ENABLED(MIN_SOFTWARE_ENDSTOPS) #define MIN_SOFTWARE_ENDSTOP_X #define MIN_SOFTWARE_ENDSTOP_Y #define MIN_SOFTWARE_ENDSTOP_Z #endif #define MAX_SOFTWARE_ENDSTOPS #if ENABLED(MAX_SOFTWARE_ENDSTOPS) #define MAX_SOFTWARE_ENDSTOP_X #define MAX_SOFTWARE_ENDSTOP_Y #define MAX_SOFTWARE_ENDSTOP_Z #endif ``` * 启用这些选项可从软件上将移动限制在机器的物理边界上 * 建议启用这些选项作为安全功能。[M211 [S<1=启用 0=禁用>]](https://marlinfw.org/docs/gcode/M211.html) ``` #if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) //#define SOFT_ENDSTOPS_MENU_ITEM #endif ``` * 启用这个选项,在 LCD 去启用/禁止虚拟限位器 #### 材料检测 ``` #if ENABLED(FILAMENT_RUNOUT_SENSOR) #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins. //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins. // Override individually if the runout sensors vary //#define FIL_RUNOUT1_STATE LOW //#define FIL_RUNOUT1_PULLUP //#define FIL_RUNOUT1_PULLDOWN //#define FIL_RUNOUT2_STATE LOW //#define FIL_RUNOUT2_PULLUP //#define FIL_RUNOUT2_PULLDOWN //#define FIL_RUNOUT3_STATE LOW //#define FIL_RUNOUT3_PULLUP //#define FIL_RUNOUT3_PULLDOWN //#define FIL_RUNOUT4_STATE LOW //#define FIL_RUNOUT4_PULLUP //#define FIL_RUNOUT4_PULLDOWN //#define FIL_RUNOUT5_STATE LOW //#define FIL_RUNOUT5_PULLUP //#define FIL_RUNOUT5_PULLDOWN //#define FIL_RUNOUT6_STATE LOW //#define FIL_RUNOUT6_PULLUP //#define FIL_RUNOUT6_PULLDOWN //#define FIL_RUNOUT7_STATE LOW //#define FIL_RUNOUT7_PULLUP //#define FIL_RUNOUT7_PULLDOWN //#define FIL_RUNOUT8_STATE LOW //#define FIL_RUNOUT8_PULLUP //#define FIL_RUNOUT8_PULLDOWN // Set one or more commands to execute on filament runout. // (After 'M412 H' Marlin will ask the host to handle the process.) #define FILAMENT_RUNOUT_SCRIPT "M600" // After a runout is detected, continue printing this length of filament // before executing the runout script. Useful for a sensor at the end of // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead. //#define FILAMENT_RUNOUT_DISTANCE_MM 25 #ifdef FILAMENT_RUNOUT_DISTANCE_MM // Enable this option to use an encoder disc that toggles the runout pin // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM // large enough to avoid false positives.) //#define FILAMENT_MOTION_SENSOR #endif #endif ``` * 借助此功能,可以使用机械或光端挡开关来检查材料检测器中是否存在耗材 (通常在耗材的情况下,该开关是关闭的)。如果耗材用完,打印机将自动运行指定的 GCode 脚本 (默认为`M600`)。基于 RAMPS 的板使用 `SERVO3_PIN`。对于其他板,您可能需要定义 `FIL_RUNOUT_PIN` ### 归零设置 #### 床中心设为 (0.0) ``` //#define BED_CENTER_AT_0_0 ``` * 如果床的中心位于X0 Y0,则启用此选项,Delta 需要 #### 自定义归零坐标 ``` //#define MANUAL_X_HOME_POS 0 //#define MANUAL_Y_HOME_POS 0 //#define MANUAL_Z_HOME_POS DELTA_HEIGHT //归位后喷嘴与打印台之间的距离 ``` * 这些设置用于覆盖原始位置。保留它们未定义的自动设置。`Delta 的 Z 轴,必须将 home 设置在最高位置` #### Z安全归零 ``` //#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing #define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing #endif ``` - 当使用`G28`对所有轴进行时,Z 安全归零可以通过在 Z 归零之前移动到定义的 XY 坐标 (默认为床的中部) 来防止探针 (或喷嘴) 位于床身区域之外时 Z 归零。如果将探针 (不是限位器) 用于 Z 归零([M851](https://marlinfw.org/docs/gcode/M851.html) 可调整探针偏移),则启用此选项 > 副作用在 Z 归零之前需要 X 和 Y 归零。如果步进驱动程序超时,将再次需要 X 和 Y 归零 > 如果使用 Z 限位器进行原点复归,则不需要 Z 安全原点复归,但是也可以启用 Z 安全原点,以使 XY 在原点复归后始终移动到某个自定义位置 #### 归零速度 ``` //归位速度(mm / min) #define HOMING_FEEDRATE_XY (50*60) #define HOMING_FEEDRATE_Z (50*60) ``` * 用于归零和自动调平的归零速度 > 设置太高可能会导致精度降低 ``` #define VALIDATE_HOMING_ENDSTOPS ``` * 验证归位移动是否触发了限位器 #### 床偏补偿 ``` //#define SKEW_CORRECTION #if ENABLED(SKEW_CORRECTION) // Input all length measurements here: #define XY_DIAG_AC 282.8427124746 #define XY_DIAG_BD 282.8427124746 #define XY_SIDE_AD 200 // Or, set the default skew factors directly here // to override the above measurements: #define XY_SKEW_FACTOR 0.0 //#define SKEW_CORRECTION_FOR_Z #if ENABLED(SKEW_CORRECTION_FOR_Z) #define XZ_DIAG_AC 282.8427124746 #define XZ_DIAG_BD 282.8427124746 #define YZ_DIAG_AC 282.8427124746 #define YZ_DIAG_BD 282.8427124746 #define YZ_SIDE_AD 200 #define XZ_SKEW_FACTOR 0.0 #define YZ_SKEW_FACTOR 0.0 #endif // Enable this option for M852 to set skew at runtime //#define SKEW_CORRECTION_GCODE #endif ``` * 纠正XYZ轴上的未对准情况 > 详细设置查看Marlin代码上方的注释 #### 单独归位 ``` #define INDIVIDUAL_AXIS_HOMING_MENU ``` * 在LCD上添加单轴归位选项(Home X,Home Y,Home Z) ### 附加功能 #### *EEPROM ``` #define EEPROM_SETTINGS // 允许保存配置 #define EEPROM_AUTO_INIT // 出现任何错误时自动初始化EEPROM(更换版本EEPROM错误时自动修复) // #define EEPROM_INIT_NOW // 新构建后首次启动时初始化EEPROM ``` * 允许保存配置 > 启用此选项后,设置会保存至内置的 EEPROM,在重新启动后自动加载 EEPROM 的数据,覆盖原有固件内的设置 (只是覆盖到易失性存储器,并不是真的覆盖固件) > 强烈建议使用此选项,配置更易于管理。不过要注意的是更新固件后 EEPROM 的信息仍然保留 ``` //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. ``` * 这些 EEPROM 选项应保留不变 > 但对于 128K 和更小的板,它们可用于恢复某些程序存储器。强烈建议供应商不要使用`DISABLE_M503`。要将新的默认设置保存到 EEPROM 中,请先使用`M502`,再使用`M500` > 可以更改并保存到 EEPROM 的设置用标记。标有的选项可以从 LCD 控制器更改。 ##### EEPROM 相关命令: * `M500`:将所有当前设置保存到 EEPROM。 * `M501`:将最后保存的所有设置加载到 EEPROM。 * `M502`:将所有设置重置为其默认值(由`Configuration.h`设置,也就是烧写后的默认配置) * `M503`:打印当前设置(在 RAM 中,而不在 EEPROM 中) #### 终端保持活动 ``` #define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. #define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating ``` * 启用后,打印机在无法接受命令时每隔几秒钟向终端发送一个忙碌状态消息。如果终端不喜欢保持活动消息,请禁用。 > 使用`DEFAULT_KEEPALIVE_INTERVAL`作为忙碌状态消息之间的默认秒数。用`M113`覆盖 #### 查看可用内存 ``` //#define M100_FREE_MEMORY_WATCHER ``` * 启用将添加`M100`指令用于查看内存占用信息 #### G-code 单位转换 ``` //#define INCH_MODE_SUPPORT ``` * 添加`G20`和`G21,用于修改解析`G-code`的单位 #### 温度单位转换 ``` //#define TEMPERATURE_UNITS_SUPPORT ``` * 添加`M149 C`、`M149 K`和`M149 F`,用于修改温度单位。不启用则所有温度必须以摄氏度为单位 #### LCD 材质预设 ``` #define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 190 #define PREHEAT_1_TEMP_BED 45 #define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 #define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 110 #define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 ``` * LCD默认预热的温度,可以使用`M145`或LCD中设置覆盖这些值 #### 喷头清理 ``` //#define NOZZLE_CLEAN_FEATURE #if ENABLED(NOZZLE_CLEAN_FEATURE) // Default number of pattern repetitions #define NOZZLE_CLEAN_STROKES 12 // Default number of triangles #define NOZZLE_CLEAN_TRIANGLES 3 // Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } } // Dual hotend system may use { { -20, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }, { 420, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }} #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1) } #define NOZZLE_CLEAN_END_POINT { 100, 60, (Z_MIN_POS + 1) } // Circular pattern radius #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 // Circular pattern circle fragments number #define NOZZLE_CLEAN_CIRCLE_FN 10 // Middle point of circle #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT // Move the nozzle to the initial position after cleaning #define NOZZLE_CLEAN_GOBACK // For a purge/clean station that's always at the gantry height (thus no Z move) //#define NOZZLE_CLEAN_NO_Z // For a purge/clean station mounted on the X axis //#define NOZZLE_CLEAN_NO_Y // Require a minimum hotend temperature for cleaning #define NOZZLE_CLEAN_MIN_TEMP 170 //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe // Explicit wipe G-code script applies to a G12 with no arguments. //#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0" #endif ``` * 添加了`G12`命令以执行喷嘴清洁过程 > 详细配置见Marlin代码处上方注释 #### 打印时间计时器 ``` #define PRINTJOB_TIMER_AUTOSTART ``` * 使用`M104`,`M109`和`M190`命令时,自动启动和停止打印作业计时器 > 添加以下命令来控制计时器: > * `M75` 启动打印作业计时器。 > * `M76` 暂停打印作业计时器。 > * `M77` 停止打印作业计时器。 #### 打印统计 ``` #define PRINTCOUNTER #if ENABLED(PRINTCOUNTER) #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print #endif ``` * 统计打印总数、成功/失败数、总打印时间,可以使用`M78`查看这些信息 ### LCD配置 #### 界面语言 ``` #define LCD_LANGUAGE zh_CN ``` * 选择界面语言 > Marlin代码上方会有说明支持哪些语言 > 最新支持的语言可以在 src/core/language.h 找到 #### HD44780字符集 ``` #define DISPLAY_CHARSET_HD44780 JAPANESE ``` * 此选项不适用于图形显示,仅适用于基于字符的显示 #### SD 卡 ``` #define SDSUPPORT ``` * 如果你要使用 SD 卡离线打印,必须启用这项 #### CRC 启用 ``` //#define SD_CHECK_AND_RETRY ``` * SD 卡通信过程使用 CRC 检查 #### 旋钮 ##### 分辨率 ``` #define ENCODER_PULSES_PER_STEP 2 ``` * 识别一个步骤所需要旋钮发出的脉冲数 ``` //#define ENCODER_STEPS_PER_MENU_ITEM 5 ``` * 使用此选项可覆盖在下一个/上一个菜单项之间移动所需的步进信号数 ##### 方向 ``` //#define REVERSE_ENCODER_DIRECTION //#define REVERSE_MENU_DIRECTION //#define REVERSE_SELECT_DIRECTION ``` * 反转任何地方的编码器方向 * 反向导航栏的方向 * 反向菜单的方向 #### LCD屏幕类型 Marlin内置很多支持的屏幕,LCD,OLED等都有,这里距离我常用的三种 `常见的触摸屏无需设置,使用串口连接` ``` //#define REPRAP_DISCOUNT_SMART_CONTROLLER //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER //#define MKS_12864OLED_SSD1306 ``` * 常规的2004 LCD屏幕 * 常规的128*64 LCD屏幕 * 自制的128*64 OLED屏幕 `屏幕有且只能设置一个` #### 蜂鸣器 ``` //#define SPEAKER ``` * 默认使用的蜂鸣器是固定音阶,如果你的蜂鸣器可以发出不同的音阶,则启用这项 > ``` > //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 > //#define LCD_FEEDBACK_FREQUENCY_HZ 1000 > ``` > 声音的持续时间和频率。将它们设置为 0 可禁用 LCD 菜单中的音频反馈。使用 M300 测试音频输出 S <频率Hz> P <持续时间ms> #### 风扇 ##### 设置风扇数 ``` //#define NUM_M106_FANS 1 ``` * 设置用户控制的风扇数,禁用则启用所有 ##### 快速 PWM 风扇 ``` #define FAST_PWM_FAN ``` * 增加风扇 PWM 频率,消除PWM噪声但增加FET / Arduino的发热 > 可以在`configuration_adv.h`文件中调整频率和缩放比例 ##### 使用软件 PWM 驱动风扇 ``` //#define FAN_SOFT_PWM #define SOFT_PWM_SCALE 0 //#define SOFT_PWM_DITHER ``` * 使用软件 PWM 驱动风扇。这使用了非常低的频率 * 如果频率太低,请增加SOFT_PWM_SCALE * 如果在SOFT_PWM_SCALE设置为大于 0 的值时遇到分辨率损失,则可以使用SOFT_PWM_DITHER减轻它 #### 舵机 ``` //#define NUM_SERVOS 3 ``` * 可使用舵机的数量 > 一般出现在 Z 床探头,它由安装在旋转臂上的限位器组成。要将伺服连接器之一用于此类探头,请在上述探头选项中设置 `Z_ENDSTOP_SERVO_NR` ``` #define SERVO_DELAY { 300 } ``` * 下一个动作开始之前的延迟(mm为单位),以使伺服时间达到其目标角度 > 指定足够大的延迟,以便伺服器有足够的时间在停用之前完成完整的运动 ``` //#define DEACTIVATE_SERVOS_AFTER_MOVE ``` * 启用这项舵机仅在运动期间供电,防止抖动 > 我们建议启用此选项,以防止有源舵机产生的电子噪声干扰其他组件 ``` //#define EDITABLE_SERVO_ANGLES ``` * 可编辑舵机角度,使用`M281 P0 L0 U90`编辑伺服角度(L展开/U收起),并使用`M500`保存到`EEPROM` * 使用 `M280 P0 S0` 可以控制舵机角度 `P?` 控制的舵机,`S?` 指定角度 ## 其他配置点 ```bash # 床调平(任选其一),搜索关键字查找其更加详细参数配置 // #define AUTO_BED_LEVELING_3POINT // #define AUTO_BED_LEVELING_LINEAR // #define AUTO_BED_LEVELING_BILINEAR // #define AUTO_BED_LEVELING_UBL // #define MESH_BED_LEVELING # G28后默认会禁用调平(可下列二选一) // #define RESTORE_LEVELING_AFTER_G28 # 随着调平恢复到之前的任何状态 // #define ENABLE_LEVELING_AFTER_G28 # 在之后将始终启用调平 ``` ## 其他常用命令 ```bash M851 X0.00 Y0.00 Z-0.20 # Z探针偏移(Z负近正远) M211 S0 R<true/false> # 临时 启用(true)/禁用(false) 软限位 M420 S<1/0> # 启用(1)/禁用(0) 床调平 ```
造物者W
2024年9月1日 10:04
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码