ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Marlin固件配置全攻略:从主板到PID,避坑指南

Marlin固件配置全攻略:从主板到PID,避坑指南 写固件配置这种事最怕的就是一上来就闷头改参数。我见过太多人把主板换了、驱动换了结果刷完固件屏幕不亮、温度乱跳、Z轴反向、限位失效最后跑来问怎么回事。一问才知道Configuration.h里十几个关键宏压根没动或者抄了一份不知道哪来的配置就往自己机器上套。Marlin固件这东西看着是改配置实际上是在告诉主板你的机器长什么样、有哪些硬件、各自什么特性。配置不匹配固件编译得再干净也是废的。这篇内容不讲废话就把我从 RAMPS 一路玩到 SKR、帮朋友调过各种“僵尸机”之后整理下来的一套 Marlin 固件配置思路摊开讲。从刷写前的准备、Configuration.h里的核心宏、温度与传感器、电机与行程参数到编译烧录流程和上电后的验证顺序一次性说清楚。适合正准备刷固件的新手也适合那些改完硬件不知道怎么改固件的玩家。1. 刷写前必须搞清楚的硬件清单与固件版本选择很多人第一步就栽了。不是不会改配置而是压根没搞清楚自己机器上是什么硬件。Marlin 的引脚定义跟主板型号强绑定填错一个宏编译可能照样通过但上电后就是一片死寂或者行为诡异。所以在打开配置文件之前先把自己机器的硬件底细摸清楚。1.1 主板与驱动芯片的确认这决定后面几乎所有引脚定义先确认三件事主板的型号和版本、步进驱动芯片的型号、主控芯片是 8 位还是 32 位。主板型号直接决定了#define MOTHERBOARD后面的板号。Marlin 在Marlin/src/core/boards.h里维护了一长串板号列表像BOARD_RAMPS_14_EFB、BOARD_BTT_SKR_MINI_E3_V2_0、BOARD_BTT_SKR_V1_4_TURBO这种。每个板号对应Marlin/src/pins/目录下的一个引脚文件比如pins_BTT_SKR_MINI_E3_V2_0.h。也就是说只要板号选对主板上的加热棒引脚、风扇引脚、限位开关引脚、LCD 接口就全都映射好了后面要改的东西少一大半。我曾经见过有人用 SKR Mini E3 V3.0 的主板结果MOTHERBOARD填的是 V2.0 的板号。编译能过但风扇一转就报错热敏电阻读数直接漂到 300 多度。原因就是两个板子虽然外形一样但几个引脚的复用关系变了。所以买主板的时候型号尾缀一定要记清楚V2.0 就是 V2.0V3.0 就是 V3.0别想当然。驱动芯片型号同样关键。A4988、DRV8825、TMC2208、TMC2209 这些驱动芯片的工作方式不一样寄存器配置也不一样。Marlin 2.x 里通过X_DRIVER_TYPE、Y_DRIVER_TYPE、Z_DRIVER_TYPE、E0_DRIVER_TYPE这些宏来告诉固件你用的什么驱动。如果用的是 TMC2209 却配置成 A4988静音模式根本不生效驱动芯片还会在运行一段时间后过热甚至烧毁。反过来如果明明用 A4988 却声明成 TMC2209固件会尝试走 UART 通信驱动芯片没有对应的协议引脚电机就会抖动或者干脆不动。确认硬件之后还有个容易被忽略的点主控芯片架构。Marlin 2.0 之后同时支持 8 位的 AVR比如 ATmega2560和 32 位的 ARM Cortex-M 系列比如 STM32F103、STM32F407。在 PlatformIO 的platformio.ini里每个主板对应一个编译环境比如 RAMPS 1.4 对应mega2560环境SKR Mini E3 V2.0 对应STM32F103RC_btt环境。这个环境选错就算Configuration.h里板号写对了也编不出来。选环境这种事在第一轮编译的时候最容易被卡住后面第 5 节我会专门说。1.2 固件版本选择bugfix-2.1.x 与 stable 2.1.x 的差异Marlin 官方仓库有两个主要分支stable-2.1.x和bugfix-2.1.x。稳定版推送频率低适合追求省心、不想频繁更新的人修补版几乎每天都有提交会提前引入一些新功能和硬件支持但偶尔也会冒出新的 bug。我的建议是如果你只是给现成机器刷固件用稳定版就够了少很多折腾。你要是打算经常折腾新硬件、追新功能或者手上的主板太新、稳定版里还没有对应的引脚文件那就用bugfix-2.1.x。还有一个很多新手不知道的地方Marlin 官网的自动下载页会自动打包最新的bugfix-2.1.x源码。你点下载的时候拿到的不一定是稳定版。如果你心里想要稳定版最好去 GitHub 仓库直接切分支下载 zip 包别用自动下载页。另外下载完源码之后Marlin/目录下只有Configuration.h和Configuration_adv.h两个示例配置不要直接拿来编译得先改成和你机器匹配的配置。1.3 编译环境PlatformIO 为主Arduino IDE 作为备选Marlin 2.x 官方主推的编译方式是 VSCode 加 PlatformIO 插件。原因很简单Marlin 2.x 的 32 位主板支持依赖 PlatformIO 的框架PlatformIO 会自动处理编译器、库依赖、上传工具链省掉很多手工配置的麻烦。第一次用 PlatformIO 编译会经历一个比较长的依赖下载过程可能持续几分钟到几十分钟取决于网络状况。这里提前说一下免得你以为电脑卡死了。下载完成后会生成.pio目录里面是编译环境和中间文件后续编译就快了。Arduino IDE 不是不能编 Marl in 2.x但对于 32 位主板需要额外装 STM32 的板卡支持包流程比较繁琐而且容易遇到库冲突。所以除非你的机器特别老、只能用 Arduino IDE 编 AVR 版本否则我建议直接上 PlatformIO。说句实话我在帮别人远程排查固件问题的时候十个里有八个是 Arduino IDE 环境下没装对支持包导致的。2. Configuration.h 里那些决定能不能开机的主板与驱动配置Configuration.h是 Marl in 的主配置文件新手打开后容易懵因为里面全是#define和注释。但其实它的排版非常有条理从上到下依次是主板、驱动、温度、电机、行程、速度、加速度、LCD 等。先把影响“开机能不能跑”的这部分讲透。2.1 MOTHERBOARD 宏填错一个字符主板就不干活主板宏写在Configuration.h靠前的位置//#define MOTHERBOARD BOARD_RAMPS_14_EFB #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0注意MOTHERBOARD前面有个注释掉的旧板号。改的时候一定要把不用的那行注释掉不要留两个#define MOTHERBOARD否则编译的时候会报重复定义错误。这个宏的作用是告诉 Marl in 去加载哪个引脚文件。它不像普通业务代码那样有复杂的逻辑就是一个“查表”的过程。板号填对了后面几乎不用碰引脚映射填错了轻则温度传感器读数异常重则 Mosfet 直接全开、加热棒失控。提一个我踩过的坑BOARD_RAMPS_14_EFB结尾的EFB代表的是“Extruder, Fan, Bed”的接口分配方式。部分 RAMPS 1.4 的套件会把风扇接口定义成EFF两个风扇板号就得换成BOARD_RAMPS_14_EFF。如果你发现刷完固件后风扇不受控制、或者第二个风扇没反应大概率是这里没对上。选板号的时候顺便瞄一眼你的 RAMPS 板上丝印是 EFB 还是 EFF能省掉后面很多排查时间。2.2 步进驱动配置A4988、TMC2208/2209 的不同玩法Marlin 2.x 配置驱动的位置比 1.x 清晰了很多直接在Configuration.h里搜DRIVER_TYPE#define X_DRIVER_TYPE TMC2209 #define Y_DRIVER_TYPE TMC2209 #define Z_DRIVER_TYPE TMC2209 #define E0_DRIVER_TYPE TMC2209这个配置决定了固件用什么样的 API 去控制驱动。很多人以为换 TMC2209 就是为了静音接上就完事。实际上 TMC2209 的静音靠的是不同模式Marlin 里用#define STEALTHCHOP相关配置来控制。A4988 和 DRV8825 走的是最简单的 STEP/DIR 模式固件只要给出脉冲和方向信号就行。TMC2208、TMC2209、TMC5160 则多了一个 UART 配置的选项。开了 UART 模式之后固件可以实时读取驱动芯片的温度、电流、堵转状态甚至可以通过 M122 命令查看驱动信息。这些功能对排查电机丢步、过热问题非常有帮助。再说一个很多人忽略的点驱动电流。A4988 的电流靠板子上的电位器调TMC2209 在 UART 模式下可以通过固件里的#define X_CURRENT这类宏设置。电流设低了电机没力打印速度快了会丢步设高了驱动芯片发热严重甚至触发过热保护直接停工。我用 TMC2209 的经验值一般是 X/Y 轴 580mA 到 650mAZ 轴 650mA 到 750mA挤出机 600mA 到 700mA。不同电机参数不一样这个值不是绝对的但可以作为一个起步参考。2.3 LCD 与串口连不上电脑时的排查顺序很多人刷完固件发现电脑连不上打印机第一反应是数据线坏了。其实那时候应该先检查 Mbps 相关的配置。Marlin 2.x 里#define BAUDRATE 115200是默认串口波特率。如果你用 Cura 或者 Pronterface 连接时软件里选的波特率和固件不一致连不上是必然的。还有一个点是某些主板的 USB 接口走的是板载 USB比如 SKR Mini E3 用的就是 STM32 的 USB CDC。这种板子在 Windows 里会识别成一个串口设备管理器里能看到COMx。第一次插上去可能需要装驱动装好后再连接。如果你在设备管理器里根本看不到端口那大概率是 USB 线的问题——不是所有 USB 线都带数据线芯有些只能充电。这个问题我一年能帮人远程排查十几次真不是段子。LCD 方面如果你是官方或者兼容的 12864 液晶屏一般需要在Configuration.h里打开对应的显示器宏。比如#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER这个宏决定 Marlin 用哪个 LCD 驱动库和菜单布局。如果忘了开屏幕可能亮也不亮或者一直白屏。如果是触摸屏比如 TFT35通常还需要设置串口屏相关的选项这就更复杂一些新手不建议一开始就上触摸屏先把基础文本屏调通再说。3. 热床热端与传感器配置温度失控往往从这里开始温度部分是我最不敢马虎的。3D 打印机一旦温度失控轻则打印失败重则起火。Marlin 的温控逻辑其实很成熟但前提是你得把传感器类型和保护参数配对。3.1 热敏电阻类型选择和温度表匹配先看热敏电阻配置#define TEMP_SENSOR_0 1 #define TEMP_SENSOR_BED 1后面的数字代表热敏电阻的类型。Marlin 内置了几种常见热敏电阻的阻值-温度对照表比如 1 代表 100K NTC 39505 代表 100K NTC 100K 3988 之类的。这个值不能靠猜。如果你用的是原装热头先查一下是用什么热敏电阻。常见的 Ender 3 原厂热敏电阻大致对应 1 号表。如果你换过热敏电嘴那就要看买的时候商品页写的传感器类型。实在查不到还有一个土办法刷完固件之后看常温下的温度读数。正常情况下室温 25 度左右时热敏电阻读数应该在室温附近。如果读出来是 -14 或者 300 多那很可能就是温度表类型不对。这个判断方法我在后边的校准部分还会提。有的热敏电阻需要上拉电阻配置。Marlin 默认已经加上了正常不用动。但是如果你自己换过主板的模拟电路部分就要留意THERMISTORHEATER_0相关的PULLUP配置了。3.2 THERMAL_PROTECTION 参数与误报警的处理Marlin 的温控保护主要集中在Configuration_adv.h里#define THERMAL_PROTECTION_HOTENDS #define THERMAL_PROTECTION_BED这两个宏默认是打开的含义是当温度变化速率异常、实测温度和目标温度偏差过大时固件会强制切断加热输出并报错。这是一道安全底线我不建议关掉。但有时候保护机制太灵敏也会造成困扰。比如打印高导热材料的时候喷嘴温度可能在 200 度到 220 度之间快速波动触发了保护阈值机器直接暂停。这时候不要一上来就关保护正确做法是调整保护参数本身。比如#define THERMAL_PROTECTION_HOTEND_PERIOD 40 #define THERMAL_PROTECTION_HOTEND_HYSTERESIS 4PERIOD代表检测周期HYSTERESIS代表允许的偏差范围。把周期适当拉长、偏差范围稍微放大可以减少误报。但是放大范围也意味着温度失控时更晚才会被感知到所以我不建议把HYSTERESIS调到 10 以上。还有一个常见的问检是加热慢导致超时报警。WATCH_HOTEND_TEMP、WATCH_HOTEND_PERIOD这些参数定义了“升温没有达到预期就报警”。如果电压偏低、加热棒功率不够实际升温速度达不到固件的预期它就会在加热过程中掉链子。这时候可以适当加大WATCH_HOTEND_PERIOD。3.3 PID 参数与自整定别照抄默认值PID 是温度控制的核心。Marlin 自带一组 PID 参数但那是针对官方测试平台的你自己的机器结构不同PID 参数必然不同。直接照抄默认值打印时温度波动大层间粘合差严重时出层纹、拉丝甚至过热。获取自己机器 PID 参数的命令是M303 E0 S200 C8意思是让挤出机在 200 度目标下进行 8 个周期的 PID 自整定。整定完成后固件会在串口打印出类似这样的结果P: 21.73 I: 1.14 D: 103.03把这三个值填进Configuration.h里#define DEFAULT_Kp 21.73 #define DEFAULT_Ki 1.14 #define DEFAULT_Kd 103.03热床也可以做 PID 自整定。用M303 E-1 S60 C8这样的命令目标温度设成你平时打印常用的床温。整定完之后填到对应的DEFAULT_bedKp、DEFAULT_bedKi、DEFAULT_bedKd里。这里有个细节做热床 PID 自整定的时候不要让风扇吹到热床表面否则测出来的参数反复横跳。整定过程通常要几分钟别急着拔线。4. 行程、速度与加速度改完这三组参数打印质量立竿见影温度搞定了打印机能动了下一步就是让 XYZ 轴和挤出机按照正确的轨迹运动。这一节里的参数直接决定打印尺寸是否正确、有没有层纹振纹、电机有没有异响。4.1 打印尺寸与限位开关方向Configuration.h里有两个关键区域一个是机器尺寸一个是限位开关逻辑。#define X_BED_SIZE 220 #define Y_BED_SIZE 220 #define Z_MAX_POS 250X_BED_SIZE和Y_BED_SIZE是打印平台的有效尺寸Z_MAX_POS是 Z 轴最大行程。要是不够长切片软件里选的模型尺寸即使小于机器标称值实际打印也可能撞到边框。限位开关的配置包括#define X_MIN_ENDSTOP_INVERTING false #define X_MAX_ENDSTOP_INVERTING false这个true/false取决于限位开关在触发状态下输出的是高电平还是低电平。机械开关一般是常开碰触后导通接地所以触发时是低电平对应的INVERTING值通常是false。如果刷完固件后发现限位指示灯的状态完全相反也就是常亮、碰触后熄灭那就要把对应的INVERTING值反过来。更值得注意的一点你的限位开关到底是装在最小端还是最大端。大多数 Cartesian 结构的机器X 和 Y 限位装在最小端Z 限位也装在最小端。但有些机型比如部分 CoreXY可能 X 限位在最大端。这时候除了要配置对应的X_MAX_ENDSTOP_INVERTING还要改X_MIN_POS和X_MAX_POS这两个行程边界的含义。很多人忽略这一点结果点“回原点”的时候机器往反方向撞。4.2 加速度与急停速度对打印质量的实际影响速度参数集中在DEFAULT_MAX_FEEDRATE、DEFAULT_MAX_ACCELERATION、DEFAULT_ACCELERATION这几个宏。一个常见误区是盲目把速度和加速度往上提觉得全速跑就是好事。实际上 Marlin 的运动规划是实时计算加减速曲线的加速度设太高步进电机会失步电机“咔咔”响严重影响打印质量。加速度太低打印速度又起不来一个 20 小时的模型变成 30 小时。我常用的参考值针对常见 220×220 机型打印速度DEFAULT_MAX_FEEDRATEX/Y 轴 400 到 500Z 轴 10 到 20挤出机 80 到 100打印加速度DEFAULT_MAX_ACCELERATIONX/Y 轴 1000 到 1500Z 轴 100挤出机 1000 左右回程急停DEFAULT_RETRACT_ACCELERATION1000 到 2000这些不是固定的要根据你的机器结构、皮带松紧、电机扭矩来微调。我之前调过一台改装机同样 1500 的加速度求打印出来的件表面就是有一圈一圈的纹路后来把 X 轴加速度降到 800纹路就消失了。这种问题在切片软件里很难看出来因为切片设置的加速度如果比固件设的高固件会按照自己的限制值执行但如果你打印的模型有大量小半径圆弧ACC 不够也会造成“挤出停顿感”。4.3 挤出机每毫米步数计算与回抽配置挤出机每毫米步数DEFAULT_AXIS_STEPS_PER_UNIT中的 E 值是新手最容易算错的地方。这个值的计算公式不复杂steps_per_mm (电机步距角步数 × 驱动细分数) / (挤出机齿轮有效周长)举个例子。一个 1.8 度的步进电机360 度除以 1.8 等于 200 步。驱动如果设 16 细分那 200 × 16 3200 步。如果挤出机齿轮的有效周长为 20mm相当于直径约 6.37mm 的齿轮那么每毫米的步数就是 3200 ÷ 20 160 步/mm。但很多挤出机的齿轮直径不是那么好量比如 BMG 双驱动挤出机用的齿轮组有固定速比。BMG 的有效周长大约 50mm 左右配合 16 细分/200 步电机就是 3200 ÷ 50 64然后因为双驱动有减速比实际值通常在 400 到 415 步/mm 之间。这个我没法给你一个统一的数字因为不同挤出机速比不同。最好的办法是先设一个估算值然后实际挤 100mm 耗材再测量真实挤出长度反推步数。回抽参数也直接影响打印质量。回抽距离太短拉丝严重太长热端堵塞甚至把耗材磨断。不同挤出机回抽距离差异很大直驱挤出机通常只有 1mm 到 2mm远程挤出机可能要 5mm 到 8mm。回抽速度一般设在 30mm/s 到 60mm/s 之间。这些在切片软件里设置就够了固件里的DEFAULT_RETRACT只是提供一个兜底默认值。5. 编译烧录的完整流程与常见报错配置改完接下来就是编译和烧录。这一步会比想象的曲折一些因为 Marlin 的编译依赖好几层工具链一个环境变量不对都能卡半天。5.1 PlatformIO 编译流程与首次依赖下载如果你用的是 VSCode PlatformIO打开 Marlin 源码根目录PlatformIO 会自动识别platformio.ini文件。先找到自己主板对应的环境。以 SKR Mini E3 V2.0 为例环境名一般是STM32F103RC_btt。在 PlatformIO 的项目列表里选中这个环境作为默认环境。然后点击底部的 ✔Build按钮开始编译。首次编译会下载 STM32 的框架库体积比较大。这里我要提醒一下编译报错不等于你的配置有问题很多报错其实是环境问题。比如最常见的Error: Unknown board STM32F103RC_btt这个错误通常意味着 PlatformIO 的板卡包没装全或者platformio.ini里的board参数写错了。先更新 PlatformIO 的核心再检查platformio.ini里[env:STM32F103RC_btt]下方的board btt_skr_mini_e3_v2_0是否匹配。实在不行直接把.pio目录删掉重新编译强制重新下载。另一种常见报错是error: struct ... has no member named ...这类报错大多是配置文件里宏的组合冲突比如同时启用了两个显示器驱动或者Configuration_adv.h里的某个高级选项和Configuration.h的基础选项互相打架。这种情况要是不确定是哪一个可以先从默认配置开始一项一项勾选每次编译成功后再加上一个选项。5.2 不同主板的烧录路径USB、SD 卡、ISP编译成功后会生成.bin或者.hex文件。生成的文件在哪取决于主板平台。RAMPS 这类 AVR 主板生成的是.hex可以通过 Arduino IDE 直接上传或者用 USBASP 等烧录器。SKR 这类 STM32 主板生成的是.bin文件。对于 STM32 主板来说最常见的烧录方式就是 SD 卡烧录。具体操作如下用读卡器把 TF 卡格式化为 FAT32最好用默认扇区大小。把编译好的firmware.bin文件拷到 TF 卡根目录。拔掉打印机的 USB 线断电。插上 TF 卡重新上电。上电瞬间主板会进入 Bootloader自动把 TF 卡里的firmware.bin写进主控芯片 Flash。烧录完成后部分主板会有指示灯闪烁然后 TF 卡里的文件会被改名成firmware.cur。如果你重新上电后发现文件没有改名说明烧录没有发生先检查文件名是不是firmware.bin。有些主板对文件名大小写敏感甚至要求文件位于 TF 卡根目录。还有一种方式是 USB 烧录。部分主板支持在 DFU 模式或者 MSC 模式下通过 USB 直接写入固件。比如 SKR 系列可以用 STM32CubeProgrammer 连接 DFU 接口烧录。这个方法对新手不太友好建议优先 SD 卡。另外要提醒烧录过程中不要断电不要拔卡。STM32 的 Flash 写入一旦中断Bootloader 被覆盖就要用更底层的工具来救了。这不算特别难但是很折腾。5.3 一个典型编译报错的完整排查过程这里分享一个我实际经历过的排查过程给你一个思路参考。有一次我把一台 Ender 3 的主板换成 SKR Mini E3 V3.0然后尝试配置 Marlin 2.1.2。第一次编译过得很顺利但烧录完成之后发现 LCD 不亮而且机器一上电热床风扇就全速转。我没有急着改代码而是先看配置发现一件事我在Configuration.h里启用了SPEAKER的蜂鸣器配置但Configuration_adv.h里某个测试选项导致引脚冲突。这种风扇不受控的现象通常是 PWM 引脚被复用造成的。我走了一遍排查流程先把Configuration_adv.h里所有和硬件外设相关的选项审视一遍看有没有刚开启的。确认MOTHERBOARD是不是 V3.0 的专用板号而不是 V2.0。最后发现问题出在#define FAN_SOFT_PWM和风扇硬件的组合上。这个问题的根源在于SKR Mini E3 V3.0 的板载风扇接口和某些 PWM 引脚是复用关系。Marlin 的默认配置已经把常见的复用关系处理好了但如果你在Configuration_adv.h里又额外改了端口映射就会出现这种“啥都编译通过但硬件行为诡异”的情况。正确的处理方式是尽量不改pins文件里的内容。如果确实要改引脚映射也要先查主板原理图确认你改的那个引脚不是和别的重要功能冲突。很多人一遇到风扇问题就去改fan.h的引脚宏改来改去最后发现是 LCD 占用了 PWM 引脚白白浪费一下午。6. 配置完成后的校准顺序与实测验证固件刷进去了机器也能动了不代表万事大吉。直接开始打印大概率会翻车因为固件里的参数只是“你配置的世界观”真实物理机器还是有误差。上电后的校准顺序我建议按照从安全到复杂、从单轴到整体的顺序来做。6.1 上电后第一件事温度读数与屏幕验证先别急着回原点。上电后第一步是用手摸一下喷嘴同时观察 LCD 屏幕上的温度读数。如果室温下屏幕上显示 -14 度说明热敏电阻没接好或者类型配错了如果显示 300 多度那可能是短路也可能是温度表类型不对。确认读数正常后再用M303命令做一次 PID 自整定。这一步我放在最前面因为后续所有的打印测试都依赖温度稳定。温度没稳之前后面调得再好也没用。这一步我建议连上电脑用串口终端操作。输入M105可以查看当前温度输入M303 E0 S200 C8开始整定。整定结束之后用M301把参数写入 EEPROM。Marlin 默认开启了EEPROM_SETTINGS这个命令对调试非常有用。6.2 轴运动方向与限位开关逻辑的手动验证温度确认没问题之后才开始动轴。先用不支持热床加热的方式手动把喷嘴抬高一点然后用控制台逐个测试 X、Y、Z 轴的运动方向。我常用的命令是G91相对运动模式加G1 X20 F3000意思是 X 轴正方向移动 20mm速度为 3000mm/min。如果发现方向反了就直接改INVERT_X_DIR、INVERT_Y_DIR、INVERT_Z_DIR这几个宏。注意这里的反了不是“坐标反了”而是“电机转动的方向反了”。我当时第一次用 Ender 3 改装机时Z 轴就是朝下的一按上升竟然往下顶热床幸好反应快及时断电。方向确认后做一次“回原点”测试。在回程过程中观察限位开关指示灯的变化。如果机器没有停下反而一直往限位方向顶马上断电然后去改ENDSTOP_INVERTING或者检查限位开关接线。这种情况比较简单但有人没有做这个测试就直接开始打印结果回原点时把热床皮带轮顶坏了。6.3 挤出机校准和首层打印验证轴都正常了接下来校准挤出机的每毫米步数。操作方法用M83切换到挤出机相对模式。在喷嘴不接触热床、温度合适的情况下用G1 E100 F60挤出 100mm 耗材。实际测量挤出的耗材长度。如果实际是 80mm那当前步数需要乘以 100/80 1.25。比如当前 E 轴步数是 93实际挤出 80mm那新的 E 值就是 93 × 1.25 116.25。更新到配置里或者用M92 E116.25临时测试确认没问题再写进固件。完成这些之后最后打印一个小的校准方块边长 20mm 的空心立方体。量一下实际尺寸如果 x 轴方向是 19.6mm但 y 轴方向是 20.1mm那么说明 XY 方向步数还是有偏差回头重新算。一个容易被忽略的问题是 Z 轴补偿。如果你用了 BLTouch 之类的自动调平传感器却忘了配置Z_PROBE_OFFSET_FROM_EXTRUDER那么自动调平测量出来的“0”并不是喷嘴刚好接触热床的那个平面而是探针触发时的高度差。这个值会导致喷嘴离床要么太远、要么太近。用户可以通过打印单层方块反复调也可以在终端里用M851 Z-1.2这样的命令微调调好之后M500存进 EEPROM。最后我想说一个习惯问题。我现在每次改完Configuration.h或者Configuration_adv.h都会把原始文件备份一份并且用版本管理工具记录改动。刷机翻车或者改了一堆不知道哪步改坏了的时候直接对比很清晰地知道是什么在变动。固件配置这东西最怕的就是“改了哪儿都记不清、坏了就重来”。如果你已经在这个坑边徘徊了好几天不妨从今天起给每次修改留一份记录后面你会感谢这个习惯的。
返回列表