網頁

2013年8月2日 星期五

Sanguino 控制板 安裝 Marlin 韌體

Note: Sanguinololu 1.3a 在USB 晶片跟1284P的通訊設計上,有些問題,倒致非常多網友買板子買來,卻無法使用。建議請避免再購買Sanguinololu。


Sanguinololu簡介

(譯自http://reprap.org/wiki/Sanguinololu  翻得不好,請多多指教。)

Sanguinololu 是一個相對便宜的 RepRap 綜合控制電路板,使用ATMEGA-1284做主控制器,使用四組 Pololu 模組做步進馬達控制控制,分別控制XYZ三軸和擠出機。提供了I2C, SPI, UART等介面供軟體開發者延伸控制功能。ADC 腳位提供量測功能(測溫度用)。額外的14個GPIO可以增加周邊電路的控制功能,例如SD卡、LCD液晶銀幕等等。

 Marlin 韌體特色:

(譯自 https://github.com/ErikZalm/Marlin  翻得不好,請多多指教。)

Look-ahead (加減速預測):

透過預先分析下一個位置移動指令,Marlin知道下一個指令需要的馬達速度。靠著這樣的資訊,在結束當下指令的馬達轉動之前,不必減速到完全停止,而是直接改變馬達速度去執行下一個指令。這樣可以大幅加快列印的速度。

Arc Support (支援弧線): 

Marlin可以自己決定最佳的弧線分段解析度,得到最平滑的弧線。

Temperature Oversampling  (溫度多重採樣):

為了減少雜訊對溫度測量的干擾,Marlin採樣16次後取平均值來當作加熱時溫度控制的參考依據。

AutoTemp(自動溫度控制):

當環境溫度改變,或是列印速度改變時,擠出頭加熱需要輸出的功率,都需要跟著改變。Marlin利用PID自動控制技術,讓擠出頭能夠穩定得維持工作溫度。

EEPROM(參數記憶功能):

系統運作時需要一些參數來調整工作表現。例如控制溫度的PID參數、步進馬達的"距離 / 步數 對應值",仍然需要依照整個印表機的實際狀況進行調整。這些調整後校準的結果,可以透過EEPROM的記憶功能,保留在控制晶片中。下次開機會自動載入,不需重新校正。

LCD Menu (液晶顯示器選單):

透過外加的液晶顯示器、按鍵模組,Marlin可以提供即時的離機操作。可以控制的功能包括: 改變工作溫度、改變馬達加速度、改變工作速度、改變擠出頭擠出率、選擇SD卡中的檔案進行列印、預熱還有關閉馬達。相關硬體可以參考 http://www.thingiverse.com/thing:12663

SD card folders:

可以讀取SD卡內的資料夾,檔案不必放在卡片內最上層目錄。

SD card auto print:

當SD卡最上層資料夾中,有檔名為 auto[0-9].g 的檔案時,機器會在開機後自動開始列印該檔案。

Endstop trigger reporting:

在列印過程中,當邊界偵測意外被觸發,會留下記錄。這有助於釐清列印失敗的原因。

在Sanguinololu上安裝Marlinl


設定馬達控制的"微步進" (Microstepping)

Microstepping Jumper Settings
微步進的設定,是透過Sanguinololu板子上的跳線來操作。跳線的位置在馬達驅動板的下方,要把馬達驅動板拆下來才能看到跳線。一般會選用 1/8 或是 1/16 步進。要設定成八分之一步進的話,MS1 跟 MS2 要接上短路端子, MS3 維持開路。要設定成十六分之一步進的話,MS1 、 MS2 跟 MS3 都要接上短路端子。四個馬達控制板都要做個自的設定。



下載 Arduino 1.0.1 

(在這個版本上測試沒有出現問題)
Download the Arduino Software
下載後解壓縮到C:\arduino\arduino-1.0.1

下載 Marlin

https://github.com/ErikZalm/Marlin (找 "Download Zip"按鈕進行下載)
載點
解壓縮到C:\arduino\Marlin-Marlin_v1

新增sanguino硬體資訊到Arduino中

將資料夾C:\arduino\Marlin-Marlin_v1\ArduinoAddons\Arduino_1.x.x\sanguino
整個複製到C:\arduino\arduino-1.0.1\hardware

啟動 Arduino

執行C:\arduino\arduino-1.0.1\arduino.exe

在 Arduino 中指定硬體為 Sanguino


將Sanguino與電腦用USB連接

todo: 貼上照片

安裝Sanguino驅動程式

驅動程式請指定在C:\arduino\ 中進行自動搜尋
todo: 貼上照片

設定COM port

選擇正確的COM port

開啟Marlin程式碼

File -> Open
開啟 C\arduino\Marlin-Marlin_v1\Marlin\Marlin.pde

修改設定檔 Configuration.h


#define MOTHERBOARD
主控板種類
修改為 62 ,設定成"使用Sanguinololu 1.2 and above"

#define TEMP_SENSOR_0
擠出頭溫度感應器設定
如果使用100K的熱敏電阻,請修改為1。
如果還沒安裝溫度感應器,可以先改為0。


#define TEMP_SENSOR_1
熱床溫度感應器設定
如果使用100K的熱敏電阻,請修改為1。
如果還沒安裝溫度感應器,可以先改為0。

#define PID_MAX
加熱頭PID控制校正電流百分比,255對應到100%。
建議設定成100或更小,在校正擠出頭PID控制參數時,不要讓擠出頭加熱速度過快。

#define  DEFAULT_Kp
#define  DEFAULT_Ki
#define  DEFAULT_Kd
加熱頭PID控制參數。
要修改成多少,請參考 "擠出頭溫度控制校正"一文。
校正前,請不要啟動電熱頭加熱功能。

#define MAX_BED_POWER
熱床PID控制校正電流百分比,255對應到100%。

#define  DEFAULT_bedKp 10.00
#define  DEFAULT_bedKi .023
#define  DEFAULT_bedKd 305.4
熱床PID控制參數。


#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
如果馬達轉動方向顛倒,可以靠這些參數做修正。

// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
邊界偵測開關的位置,一般都安裝在位置原點的那一側,故設定成-1即可。

// Travel limits after homing
#define X_MAX_POS 205
#define X_MIN_POS 0
#define Y_MAX_POS 205
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0
機器工作區域的設定,單位是 mm。
請依照機器結構做設定。

#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
尋找原點時機構運行的速度。如果馬達有失步的問題,可以考慮減小這邊的速度。
Z軸兩顆馬達串聯,如果運轉不順,馬達亂轉的話,可把Z數值從"4*60"改小成"2*60"再試看看。

// default steps per unit for Ultimaker
#define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}
擠出頭移動1mm,主控板需要發出幾個步進訊號。
數值如何決定,請參考"計算移動1mm,步進馬達需要走幾步?"一文。

#define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 25}    // (mm/sec)
擠出頭最高移動速度。如果馬達有失步的問題,可以考慮減小這邊的速度。

#define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}
擠出頭移動時最大的加速度
機器運作時如果震動得很嚴重,可能是擠出頭加速減速過猛造成。可以減小這邊的數值來改善。

// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK                20.0    // (mm/sec)
#define DEFAULT_ZJERK                 0.4     // (mm/sec)
#define DEFAULT_EJERK                 5.0    // (mm/sec)
速度改變在這個值之內,控制板會不透過加速、減速的過程,直接把速度改到新指定的工作速度。如果起步就會卡住,或是列印過程中有失步,可以考慮減小這幾個設定的值。

上載 Marlin 到 Sanguino

修改完 Configuration.h 後,請存檔。然後直行 File->Upload,將 Marlin 上載到 Sanguino。
上載完成的話,在Arduino的狀態列會出先 Done Upload 字樣。


參考資訊

https://github.com/ErikZalm/Marlin
http://reprap.org/wiki/Sanguinololu
marlin 簡介.pdf (請先加入 FabLab Taipei 的 FB社團)
Ginge's Marlin Builder http://marlinbuilder.robotfuzz.com/



6 則留言:

  1. 感謝版主,小弟獲益甚多,但報告大大,我仍遇到下列問題,

    1. x y 軸馬達只有正向移動,負向不會動,
    2. z軸 步進馬達發出聲音,卻不會動。

    因此,可否向版主大提出一個不請之請,我想帶著組裝好的機器,拜訪版主大,當然,是有費用的,因此:

    1. 若單純請版主大調教韌體至機器可用,需多少費用?
    2. 若考慮直接換板子,仍請版主大調教,費用是多少?

    誠懇請教您的幫助,謝謝。

    看了您的文章,毅然跳下去玩的讀者敬上
    matthew0633@gmail.com

    回覆刪除
  2. 請問樓上的大大有找到問題的解決方法嗎,我也碰到類似的問題...

    回覆刪除
  3. 請問最近 LCD液晶控制板 會嘰嘰叫
    只要開機就會開始

    請問這是怎麼呢?怎麼解決呢?

    謝謝

    回覆刪除
    回覆
    1. 看看LCD上面有沒有顯是什麼錯誤訊息
      也可以試著用Repetier-Host 連接機器,然後查 Log 有沒有秀出什麼錯誤訊息。

      刪除