Marlin 的歷史
Marlin 是一種用于 3D 打印機的開源固件,最初由 Erik van der Zalm 等人于 2011 年開發(fā)。等人。該固件最初是為 RepRap 項目設計的,該項目旨在創(chuàng)建任何人都可以構(gòu)建和使用的開源 3D 打印機。Marlin 憑借其用戶友好的界面、易于使用的配置選項和活躍的開發(fā)社區(qū),迅速在 3D 打印社區(qū)中廣受歡迎。該固件以其可靠性、穩(wěn)定性以及與多種 3D 打印機型號的兼容性而聞名。多年來,Marlin固件經(jīng)歷了多次更新,最新版本為2.1.x。這些更新為固件帶來了新功能、改進的性能和更準確的打印功能。Marlin 背后的開發(fā)人員繼續(xù)積極支持和改進該固件,使其成為 3D 打印機使用最廣泛、最可靠的開源固件選項之一。Marlin 擁有一個由用戶、開發(fā)人員和貢獻者組成的大型活躍社區(qū)。許多3D打印機制造商也采用Marlin作為他們的默認固件,并且許多流行的3D打印機控制板都支持它,例如RAMPS、SKR等。
編譯和配置 Marlin
準備材料
- 安裝 Vscode
- 在 Vscode 中安裝 PlatformIO 插件
- 準備Jlink 或 Stlink 下載工具
- 準備一個開源的 3D 打印主板及原理圖
- 一個結(jié)構(gòu)完好的 3D 打印機,推薦 經(jīng)典的Ender3,其他 CoreXY等也可。
- 普通的4~8G SD 卡
編譯固件
- 獲取 Marlin 官方源碼
git clone https://github.com/hysonglet/probe-rs.git
2.使用 VSCode 打開 Marlin 工程
code Marlin&
- 修改主板類型,編輯工程配置文件
platformio.ini
,修改default_envs
字段為你的主板名,主板名可以在文件Marlin/ini/XX.ini
中查找,如Marlin/ini/stm32f1.ini
中可選擇env:STM32F103RE_creality
,則指定default_envs=STM32F103RE_creality
即可。 - 編譯:
pio run
(需要提前將 pio 命令添加到環(huán)境變量),也可在 PIO 的工具欄直接點擊。 - 下載:
pio run -t upload
配置 Marlin
Marlin 提供了豐富的配置來使得固件能輕松適應不同的機械結(jié)構(gòu),無論是龍門架、CoreXY、Polargraph、DELTA、SCARA、Polar等,都能輕松支持,多噴頭、不同的限位開關(guān)、測距傳感器、加熱方式等都能簡單的在配置文件中使能或自定義。所有配置在文件Marlin/Marlin/Configuration.h
和Marlin/Marlin/Configuration_adv.h
常用配置如下:
- 修改主板類型,編輯工程配置文件
platformio.ini
,修改default_envs
字段為你的主板名,主板名可以在文件Marlin/ini/XX.ini
中查找,如Marlin/ini/stm32f1.ini
中可選擇env:STM32F103RE_creality
,則指定default_envs=STM32F103RE_creality
即可。 - 編譯:
pio run
(需要提前將 pio 命令添加到環(huán)境變量),也可在 PIO 的工具欄直接點擊。 - 下載:
pio run -t upload
配置 Marlin
Marlin 提供了豐富的配置來使得固件能輕松適應不同的機械結(jié)構(gòu),無論是龍門架、CoreXY、Polargraph、DELTA、SCARA、Polar等,都能輕松支持,多噴頭、不同的限位開關(guān)、測距傳感器、加熱方式等都能簡單的在配置文件中使能或自定義。所有配置在文件Marlin/Marlin/Configuration.h
和Marlin/Marlin/Configuration_adv.h
常用配置如下:
指定主板類型.
你可以打開文件./Marlin/src/core/boards.h
選擇一款最接近你主板即可。當然也可添加你自己的主板名稱和主板號。
- 指定串口個數(shù)和波特率
- 指定步進電機驅(qū)動器類型,所有支持的類型可在注釋中選擇。
- 指定擠出機個數(shù)和擠出比,通常保持默認即可。
- 指定熱床溫度傳感器類型和加熱控制的極性,比較重要,需要準確設置,否則可能導致無法加熱或熱失控。
- 設置噴頭和熱床的極限溫度,防止危險。設置加熱的 PID 參數(shù),通常保持默認即可。
- 設置 3D 打印機的結(jié)構(gòu),如果是龍門架結(jié)構(gòu)則保持默認即可,否則根據(jù)注釋開啟你所在機型的宏定義即可。
- 設置限位開關(guān)引腳的上下拉,通常與限位開關(guān)的觸發(fā)狀態(tài)有關(guān)系,設置錯誤則會導致噴頭撞擊。如觸發(fā)狀態(tài)為 1,則保持下拉使能即可,如果主板已經(jīng)添加下拉,則無需再開啟該宏定義。
- 設置步進電機的傳動比,該值與驅(qū)動器的細分數(shù)、齒輪的傳動比有關(guān)。可利用網(wǎng)頁工具和實驗測試來設置該值:https://blog.prusa3d.com/calculator_3416/
- 配置運動的性能,如最大速度、加速度、擠出速度、Jerk 值等。這些值會影響你打印機的性能、默認的值比較保守,可根據(jù)打印效果適當提高。通常龍門架架構(gòu)加速度可設置 8000 左右。
- 配置步進電機驅(qū)動信號的極性
- 配置 Home 的方向
- 配置熱床的大小和原點的位置
- 設置風扇控制引腳和速度
參考視頻
結(jié)語
作為一個嵌入式開發(fā)者,也許你并不會用到 3D 打印機或者需要自己去定制一個3D 打印機主板,但是學習 Marlin 的編程思路是非常有效提高我們的開發(fā)技能。Marlin 實現(xiàn)了高效的運動控制算法、路徑規(guī)劃算法、優(yōu)雅的代碼接口,使得一套代管理非常多的不同型號、不同CPU架構(gòu)的MCU、完美適配不同的機械結(jié)構(gòu)、對于我們提高嵌入式 C/C++開發(fā)技能是個非常不錯的練手項目。