11.2 燒錄marlin

1.設定外接 LCD裝置 

如果是LCD型號為 smart controller RAMPS1.4 LCD 12864 

修改Marlin 目錄下的 Configuration.h 

點進去檔案後,解除下面內容註解 (表示採用圖形式LCD)


#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

2.修改版子型號


PID設定





此處為設定噴嘴PID,預設是開啟

PID可以視為一種現代的溫度控制演算法

影響此PID有三個參數kP , kI , kD 預設是Ultimaker所使用的參數


一般列印機在組裝完成後,應進行PID的校調

確保加熱可以達到最佳效能,未校調可能在維持溫度過程會比較不穩定


有關PID校調可以參考以下影片

https://www.youtube.com/watch?v=APzJfYAgFkQ&t=188s


此處簡單說明

GCode校準PID指令如下

以E3D V6為例 建議指令如下(有鐵氟龍內襯的請先把內襯拿掉再進行校正)


M303S230C10


M303:GCode指令

S230:以230度為基準進行效調

C10:進行10輪測試

可以視自己需要進行調整

接下來Marlin會進行一段時間的加熱校正


校正完成後會將完成參數輸出

將輸出參數複製到程式碼下面


#define DEFAULT_Kp 22.2

#define DEFAULT_Ki 1.08

#define DEFAULT_Kd 114


覆蓋掉即可

另外熱床部分也有PID可以設定




但預設是關閉的

要啟用請將這一行

#define PIDTEMPBED給反註解掉


如果沒有啟用PID,溫度控制就只是單純的開關溫控(最簡單的例子:你家的大同電鍋)

有PID才會使用PWM控制

這邊要注意,如果你的熱床因為大電流使用了繼電器Relay進行控制

此處不要啟用PID,不然你會聽到你的繼電器出現北斗神拳的音效

假如你的熱床電流大又想使用PWM,請使用外接大電流MOS模組,或者固態繼電器



6.限位開關設定





以XYZ型為例

每個軸都有MAX和MIN的限位開關可以設定,使用哪些限位開關視機械結構而定

常見的烈印機一個軸通常都只有一個限位開關

限位開關的用途是限制噴頭移動範圍,以及給機器移動一個基準點(歸零點)

第一個部是設定你這台機器用了哪些限位開關


預設的範例是三軸皆始用MIN

#define USE_XMIN_PLUG

#define USE_YMIN_PLUG

#define USE_ZMIN_PLUG

使用那組開關需將該組開關反註解

例如要用Y_MAX需將

// #define USE_YMAX_PLUG

前面的//拿掉改為

#define USE_YMAX_PLUG


接下來是設定限位開關是否全部使用內部PULL UP電阻

Mega 2560內建上拉電阻 啟用的話可以不用外加

#define ENDSTOPPULLUPS

為所有限位開關通通使用上拉電阻

也可以各別設定


所謂Pull Up電阻的線路如下






那根4.7k就是Pull Up電阻

這個線路表示沒觸發前是高電位(5V) 開關接通後是低電位(GND)



如果不是全部使用可以在下面項目各別啟用

最後需設定的是是否反轉開關邏輯

#define X_MIN_ENDSTOP_INVERTING false

#define Y_MIN_ENDSTOP_INVERTING false

#define Z_MIN_ENDSTOP_INVERTING false

#define X_MAX_ENDSTOP_INVERTING false

#define Y_MAX_ENDSTOP_INVERTING false

#define Z_MAX_ENDSTOP_INVERTING false

#define Z_MIN_PROBE_ENDSTOP_INVERTING false


預設的邏輯是開關沒按下前是低電位,按下後是高電位=(5v or 3.3v)

反轉後則表是沒按下前是高電位,按下後是低電位(=0v)


此處設定須視機器開關設定去做設定



7.動作設定






DEFAULT_AXIS_STEPS_PER_UNIT

設定動作所需要的微步數,需根據機器去修改 計算前請先確定自己所使用的零件參數

此數字定義為:移動1mm所需要的步數


以XYZ機種為例

皮帶驅動XY軸範例:


GT2皮帶

20齒同步輪

GT2皮帶齒距2mm 一圈20齒表示轉一圈移動40mm

步進馬達步進角 1.8度

步進驅動16微步

表示轉一圈需要(360/1.8) * 16 = 3200步

此軸移動1mm需要3200 / 40 = 80步

此軸數字需設為80


螺桿驅動Z軸範例:


螺桿導程8mm 表示轉一圈會移動8mm

步進馬達步進角 1.8度

步進驅動16微步

表示轉一圈需要(360/1.8) * 16 = 3200步

此軸移動1mm需要3200 / 8 = 400步

此軸數字需設為400


擠出機設定範例:


MK8擠出齒輪 齒輪部直徑7.43mm

圓周為7.43 * PI = 23.34mm

步進馬達步進角 1.8度

步進驅動16微步

表示轉一圈需要(360/1.8) * 16 = 3200步

此軸移動1mm需要3200 / 23.34 = 137.1步

此軸數字需設為137.1


DEFAULT_MAX_FEEDRATE

移動最大速度,限制機器的最大移動速度,可以避面因為切片軟體設定速度過快而失步


計算方法:

硬體+軔體所能提供的最大速度 / 動作微步數


mega 2560 + marlin來說所能提供的最大脈衝數為40k/s

如果是Due可以到303k/s

例如你的X軸移動1mm需要80步

那你的X軸理論移動極速為40000/80 = 500 mm/s

但需注意這是理論值,實際上因為Marlin會有一些額外的控制,例如圖形12864 LCD


所以這裡計算出來的數字最好打個七八成


Marlin所做的工作越少,越可以接近理論數字

上面例子來說X軸MAX FEEDRATE最好設為350~400為適當


DEFAULT_MAX_ACCELERATION

加速度設定


一般來說不用動


如果你的特定軸速度過快,印轉角有衝過頭的現象可以減少這個軸的加速度來改善


另外加速度比較低,電機動作會比較安靜





X_ENABLE_ON

Y_ENABLE_ON

Z_ENABLE_ON

E_ENABLE_ON


這是設定馬達驅動的Enable是高電位還是低電位

常見的A4988或DRV8825是0 LV8728是1


INVERT_X_DIR

INVERT_Y_DIR

INVERT_Z_DIR

INVERT_E0_DIR

...


這是設定移動的方向,需視機器設計而定

true / false是不同的方向

如果發現機器移動方向不對 例如控制X +10移動卻是反方向

就修改這邊的設定





#define X_HOME_DIR -1

#define Y_HOME_DIR -1

#define Z_HOME_DIR -1


設定G28歸零的方向

1是MAX -1是MIN

看機器的限位開關設計決定這邊的設定



#define X_MIN_POS 0 

#define Y_MIN_POS 0 

#define Z_MIN_POS 0 

#define X_MAX_POS 200 

#define Y_MAX_POS 200 

#define Z_MAX_POS 200


設定機器的列印範圍

以上兩個項目要一起看,這兩項設定會決定列印空間的位置

列印空間一般來說 左下角為(0,0) 左上為(0,Y_MAX) 右下為(X_MAX , 0) 右上為(X_MAX , Y_MAX)

噴頭接觸到底板為Z=0 , 最高列印高度為Z_MAX

歸零位置是看機器設定上噴嘴是停在什麼位置

以Ultimaker為例,噴嘴歸靈位置是在左上 平台停在機器底部(離噴嘴最遠)

所以這邊就要設定


#define X_HOME_DIR -1 // X_MIN

#define Y_HOME_DIR 1 // Y_MAX

#define Z_HOME_DIR 1 // Z_MAX


歸零後,會根據MIN_POS和MAX_POS決定列印的最大與最小移動範圍


X最大移動範圍就是以歸零後的位置為基準點 

設定此點為X_MIN_POS,最大可以移動到X_MAX_POS


Y最大移動範圍就是以歸零後的位置為基準點 

設定此點為Y_MAX_POS,最小可以移動到Y_MIN_POS



8.EEPROM設定





啟用EEPROM可以將一些設定儲存下來,另外也可以直接在面板上調整機器的一些組態(啟動後面板會多出一些可以設定的選項)

如果沒有啟用,則只能透過重新燒錄軔體來修改機器參數

Mega2560有內建EEPROM

但Due沒有,如果使用Due記得先確定使用的板子有額外加上EEPROM

使用方法只需將#define EEPROM_SETTINGS反註解即可



這邊要注意,一但啟用EEPROM,如果你修改了機器參數(例如馬達微部,列印尺寸等等)

重新燒錄軔體後,須對機器下gcode

M502(重置所有設定) + M500(儲存設定至EEPROM)

不然你會發現你的機器參數還是保持在上傳韌體之前的狀態



修改選單控制方向

#define REVERSE_ENCODER_DIRECTION 

取消註解

測試限位開關和馬達方向