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/