Marlin:3D 打印机固件

June 24, 2026 · View on GitHub

简介

Marlin 是使用最广泛的开源 3D 打印机固件。它运行在基于 AVR 和 ARM 的微控制器上,支持大量打印机配置。

属性详情
仓库MarlinFirmware/Marlin
许可证GPL-3.0
语言C++
平台AVR (ATmega), ARM (STM32, SAM, LPC, ESP32)
IDEPlatformIO, Arduino IDE

主要功能

功能描述
Cartesian Support标准 XYZ 运动
Delta SupportDelta 打印机运动学
CoreXY SupportCoreXY 运动系统
Auto Bed Leveling基于探针的热床补偿
Linear Advance压力补偿
S-Curve Acceleration更平滑的运动曲线
Trinamic SupportTMC 步进驱动集成
Dual Extrusion多挤出头支持
LCD Support各种显示器类型
SD Card从 SD 卡打印

支持的硬件

微控制器板

MCU备注
RAMPS 1.4ATmega2560经典 Arduino 板
SKR 1.4LPC1768流行的 32 位板
SKR 2.0STM32现代 32 位板
SKR Mini E3STM32Ender 3 直接替换升级
MKS Robin NanoSTM32彩色触摸屏板
Duet 2SAM4E8E高端板
Einsy RamboATmega2560原装 Prusa 板

步进驱动

驱动特性
A4988基础,1/16 微步
DRV88251/32 微步
TMC2208静音,UART 模式
TMC2209静音,无传感器归位
TMC2226TMC2209 变体
TMC5160大电流,SPI 模式

安装

前提条件

工具描述
PlatformIO构建系统(推荐)
Arduino IDE替代构建环境
VS Code带 PlatformIO 扩展的代码编辑器
Git版本控制

使用 PlatformIO 构建

# 克隆仓库
git clone https://github.com/MarlinFirmware/Marlin.git
cd Marlin

# 编辑配置文件
# Configuration.h
# Configuration_adv.h

# 为您的板构建
pio run -e mega2560

# 上传到打印机
pio run -e mega2560 --target upload

使用 Arduino IDE 构建

  1. 安装 Arduino IDE。
  2. 添加您的 MCU 的板定义。
  3. 打开 Marlin.ino。
  4. 选择正确的板和端口。
  5. 编辑 Configuration.h 和 Configuration_adv.h。
  6. 点击上传。

配置

Configuration.h

主配置文件定义打印机硬件。

部分设置
Serial(串口)串口配置
Motherboard(主板)板类型定义
Temperature(温度)热敏电阻类型和 PID 设置
Extruder(挤出头)挤出头数量和配置
Bed Size(热床尺寸)打印区域尺寸
Kinematics(运动学)运动系统类型
Auto Leveling(自动调平)热床探针配置
LCD显示器类型选择

基本配置

// 主板
#define MOTHERBOARD BOARD_BTT_SKR_V1_4

// 串口
#define SERIAL_PORT 0
#define BAUDRATE 115200

// 挤出头
#define EXTRUDERS 1
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

// 热床尺寸
#define X_BED_SIZE 220
#define Y_BED_SIZE 220
#define Z_MAX_POS 250

// 温度
#define TEMP_SENSOR_0 1    // 热端热敏电阻类型
#define TEMP_SENSOR_BED 1  // 热床热敏电阻类型

// PID 设置
#define PIDTEMP
#define DEFAULT_Kp 22.2
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114

Configuration_adv.h

用于微调的高级设置。

部分设置
Thermal(热保护)热失控保护
Stepper(步进)驱动特定设置
LCD显示器自定义
SD CardSD 卡支持
WiFi网络连接
TrinamicTMC 驱动配置

自动热床调平

探针类型

探针描述
BLTouch机械可伸缩探针
Inductive(电感)电磁接近传感器
Capacitive(电容)电容接近传感器
Piezo(压电)压力敏感传感器
Strain Gauge(应变片)力敏感传感器

调平方法

方法描述
Linear(线性)3 点调平
Bilinear(双线性)基于网格的调平
Unified Bed Mesh(统一床网)高级网格调平
3-Point(3 点)三角调平

配置

// 启用自动热床调平
#define AUTO_BED_LEVELING_BILINEAR

// 探针设置
#define BLTOUCH
#define Z_PROBE_OFFSET_FROM_EXTRUDER { 0, 0, -1.5 }

// 热床调平网格
#define GRID_MAX_POINTS_X 5
#define GRID_MAX_POINTS_Y 5

// 探针边距
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 190
#define FRONT_PROBE_BED_POSITION 30
#define BACK_PROBE_BED_POSITION 190

Linear Advance(线性推进)

线性推进在加速和减速期间补偿喷嘴中的压力变化。

#define LIN_ADVANCE
#define LIN_ADVANCE_K 0.0

校准

  1. 打印线性推进校准图案。
  2. 根据结果调整 K 值。
  3. 直驱挤出头使用较低的 K 值。
  4. Bowden 挤出头使用较高的 K 值。
挤出头类型典型 K 值
Direct Drive(直驱)0.0 - 0.2
Bowden (short)(短)0.2 - 0.7
Bowden (long)(长)0.7 - 2.0

S-Curve Acceleration(S 曲线加速度)

S 曲线加速度提供比梯形加速度更平滑的运动。

#define S_CURVE_ACCELERATION

Trinamic 驱动配置

TMC2209 UART 配置

#define X_DRIVER_TYPE  TMC2209
#define Y_DRIVER_TYPE  TMC2209
#define Z_DRIVER_TYPE  TMC2209
#define E0_DRIVER_TYPE TMC2209

// UART 连接
#define X_SLAVE_ADDRESS  0
#define Y_SLAVE_ADDRESS  0
#define Z_SLAVE_ADDRESS  0
#define E0_SLAVE_ADDRESS 0

// StealthChop(静音模式)
#define STEALTHCHOP_XY
#define STEALTHCHOP_Z

// 无传感器归位
#define SENSORLESS_HOMING
#define X_STALL_SENSITIVITY  80
#define Y_STALL_SENSITIVITY  80

电流设置

典型电流 (mA)
X800
Y800
Z800
E0600

LCD 和显示器

支持的显示器

显示器类型
RepRapDiscount 12864字符 LCD
RepRapDiscount Full Graphic单色图形
TFT Color彩色触摸屏
DWIN T5DGUS 触摸屏
Fysetc Mini 12864RGB 背光

G-Code 命令

运动命令

命令描述
G28归位所有轴
G29自动热床调平
G1线性移动
G0快速移动
G92设置位置

温度命令

命令描述
M104设置热端温度
M109等待热端温度
M140设置热床温度
M190等待热床温度
M106设置风扇速度

配置命令

命令描述
M500保存设置到 EEPROM
M501从 EEPROM 加载设置
M502恢复出厂默认
M503报告当前设置
M851设置 Z 探针偏移

PID 调参

# 调整热端 PID
M303 E0 C8 S210

# 调整热床 PID
M303 E-1 C8 S60

# 保存 PID 值
M301 P22.2 I1.08 D114
M500

故障排除

问题解决方案
热失控检查热敏电阻接线
层偏移检查皮带张力和驱动电流
附着力差校准 Z 偏移和热床水平
拉丝调整回抽和温度
欠挤出校准 e-steps 和流量率
过挤出降低流量率

技巧和最佳实践

技巧说明
备份配置保存配置文件的副本
启用热保护安全功能,始终保持启用
使用 S 曲线更平滑的运动减少伪影
调参 PID稳定的温度提高打印质量
逐步测试一次只更改一个设置
使用版本控制用 Git 跟踪配置更改

与 Klipper 的比较

方面MarlinKlipper
处理仅 MCU主机 + MCU
配置重新编译固件编辑文本文件,重启
步进速率受 MCU 限制非常高(主机 CPU)
Web 界面需要 OctoPrint内置支持
Input Shaper手动校准自动校准
社区最大的用户群增长中的社区

结论

Marlin 是最成熟、支持最广泛的 3D 打印机固件。其广泛的配置选项和广泛的硬件支持使其适用于几乎任何 3D 打印机设计,从入门级机器到高级自定义构建。