使用4988的朋友請掠過此篇。
[尚未驗證]
步進馬達控制晶片tb6560需要比較寬的步進控制訊號,所以需要修改Marlin韌體,拉長控制訊號進入高電位的時間。
修改 stepper.cpp -> babystep
找
"float x=1./float(axis+1)/float(axis+2); //wait a tiny bit" (兩個)
"float x=1./float(axis+1); //absolutely useless" (兩個)
這行利用除法運算來拖延程式執行的時間,用來產生控制腳位拉高電會後維持高電位的延遲。複製這行,執行兩次,就可以拖延兩倍的時間。依此類推。
2013年11月28日 星期四
3D印表機 零件採購資訊
採購資訊僅供參考,零件的品質由店家擔保!
另外可以參考網友蔡富名整理的採購資訊~
特別聲明:i3 壓克力零件的切割,屬於"重製"別人設計好的作品,非"自行創新設計",並不符合 FabLab Taipei 鼓勵大家自己創作的原則。而且切割數量太多。即日起,若非自行創作設計的作品,FabLab Taipei 不再提供雷射切割的服務。敬請見諒。
電話: 02-25537717
地址: 台北市大同區承德路二段132號
電話:02-2557-5281
住址:總公司 103 台北市承德路2段138號
掏寶-廣發軸承
電話: 02-2281-1666
住址:新北市蘆洲區和平路114巷2號1樓
掏寶-廣發軸承
電話:02-2557-3852
住址:台北市大同區興城街9號1樓
宇輝 - 掏寶
露天拍賣
同步齒輪 - 掏寶
控制板套件 - 創客基地 - 掏寶
LCD控制板 - 捷泰 - 掏寶
如果之後想改裝成遠端送料,再購買Bowden型態的 J-Head。
J-Head - 熔普三維
J-Head - 捷泰 - 掏寶
一套 i3 列印件的代印費用2500元,才質為PLA,顏色有半透明紅/藍。
交期約一周。
細節請來信詳談:kcee.tw@gmail.com
如果可以整套從頭到尾一次列印出來,需要的時間估計是 28小時37分(實際上會增加約10%)。需要的PLA材料估計約300公克(239.7立方公分*1.25比重=299.625公克)。
另外可以參考網友蔡富名整理的採購資訊~
壓克力
阿宏壓克力 - 露天特別聲明:i3 壓克力零件的切割,屬於"重製"別人設計好的作品,非"自行創新設計",並不符合 FabLab Taipei 鼓勵大家自己創作的原則。而且切割數量太多。即日起,若非自行創作設計的作品,FabLab Taipei 不再提供雷射切割的服務。敬請見諒。
螺絲螺帽牙條
高來螺絲電話: 02-25537717
地址: 台北市大同區承德路二段132號
滑套、軸承
五連軸承電話:02-2557-5281
住址:總公司 103 台北市承德路2段138號
掏寶-廣發軸承
光軸
勁亨軸承有限公司電話: 02-2281-1666
住址:新北市蘆洲區和平路114巷2號1樓
掏寶-廣發軸承
彈簧
雅銅彈簧電話:02-2557-3852
住址:台北市大同區興城街9號1樓
鐵氟龍製品
資峰塑膠馬達
萬泰電器 - 掏寶宇輝 - 掏寶
電源供應器
金華電子露天拍賣
同步齒輪、皮帶
皮帶 - 掏寶同步齒輪 - 掏寶
控制板
控制板套件 - 捷泰 - 掏寶控制板套件 - 創客基地 - 掏寶
LCD控制板 - 捷泰 - 掏寶
擠出頭
購買前請記得只定要Wade型態的。別買錯囉~如果之後想改裝成遠端送料,再購買Bowden型態的 J-Head。
J-Head - 熔普三維
J-Head - 捷泰 - 掏寶
擠出軸
擠出軸 - 露天Prusa i3列印件
(2014/01/28) 現在已經有很多列印件供應商,可以在拍賣上面找到他們。所以我就不再接受代印的請求了~
如果可以整套從頭到尾一次列印出來,需要的時間估計是 28小時37分(實際上會增加約10%)。需要的PLA材料估計約300公克(239.7立方公分*1.25比重=299.625公克)。
2013年11月25日 星期一
RepRap Prusa i3 平台自動補正
平台校正不但費時,而且經常失敗,時在是很令人洩氣!期盼了好一陣子,Marlin終於將平台自動補正的功能加進來了!!這個功能將原本Z軸的Endstop,改裝到擠出頭的旁邊,讓Endstop直接接觸列印平台,讓Marlin值接測量到平台的實際位置。不但如此,Marlin會測量平台上三個不同位置,然後計算出整個平台傾斜的狀況,並依此補正列印空間的水平方向,讓列印做品跟著平台一起傾斜,作品本身的三維維持垂直。如此一來,就不必每次列印前,都要耗費時間跟精神,手動做平台校正工作。
伺服馬達我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當機。
i3用的伺服馬達支架,以及探針腳,我放在這邊:
http://www.thingiverse.com/thing:182889
探針的微動開關,直接使用用Z軸的EndStop。不過走線比較長,要重新佈線。
探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。
伺服馬達接線如下圖所示:
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31.4
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
#define XY_TRAVEL_SPEED 6000
#define Z_RAISE_BEFORE_PROBING 10
#define Z_RAISE_BETWEEN_PROBINGS 10
機器只會照著Gcode的指令工作,一般切片軟體產生出來的G code,並不會通知機器要做平台自動補正。如果沒有加上自動補正的命令稿在 G code Prefix裡面,那就沒辦法享受到自動補正的功能,甚至還會造成機器的傷害。千萬要小心、耐心做好以下的步驟。
G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S<TEMP>; 等待溫度到達工作溫度
M82; E軸使用絕對座標
G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S[first_layer_temperature]; 等待溫度到達工作溫度
M82; E軸使用絕對座標
修改好之後重新做切片,就可以開始測試平台自動補正的功能了。
實際使用時Z軸高度可能還是會有些誤差,需要回頭微調 Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 參數。
硬體
伺服馬達我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當機。
i3用的伺服馬達支架,以及探針腳,我放在這邊:
http://www.thingiverse.com/thing:182889
探針的微動開關,直接使用用Z軸的EndStop。不過走線比較長,要重新佈線。
探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。
伺服馬達接線如下圖所示:
韌體設定步驟
預先燒錄
- 將configuration.h中以下這幾行的註解符號刪去(行首的 "//" 刪掉)
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles
- 將 NUM_SERVOS 改為1
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
- 將 Marlin 燒入 RAMPS
- 燒錄完畢後,伺服馬達會移動到60的位置。
- 使用M code "M280 P0 S{angle}"可以控制伺服馬達轉動到指定的位置(例如M280 P0 S60),找出探測時應該要在幾度,收起探針應該要幾度。假設找出來的度數分別是165度跟60度。
- 將找出來的度數填回"SERVO_ENDSTOP_ANGLES"。然後重新燒錄Marlin。
測量探針與擠出頭的相對位置
- 在列印台中央做個小記號,然後移動擠出頭的位置,讓擠出頭正好碰觸記號。
- 用G code "G92 X0 Y0 Z0"讓 Marlin 把現在位置當作原點。
- 用G code "G1 Z30" 把Z軸抬高。
- 用M code "M401",讓伺服馬達移動到探測的位置。
- 用控制軟體移動XY軸,讓探針接觸點在記號的正上方(這個步驟不必非常精確,位置大概對就好)。
- 用控制軟體,讓Z軸每次下降0.1mm,並檢查探針是否被觸發。可以用M code "M119"來確認是否觸發。這個步驟必須非常精確,要測量到探針剛好被觸發時Z軸的高度。
- 觸發後,使用M code "M114"讀回目前XYZ座標。(如果有LCD,可以直接參考LCD上的數據。控制軟體上的XYZ座標會有錯誤,請不要參考。)
- 讀出來的座標,乘以負一之後填入設定檔。假設M114讀回來的座標是 X:24.3 Y:-31.4 Z:5.1,則在設定檔中,找到以下這三行,並且把數值如下填好。
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31.4
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
設定測量位置
- 這四個參數用來設定測量面的邊界,請依照機器XY工作範圍的邊界做縮減後,填入設定檔。如果手邊的機器是 Prusa i3,可以直接使用以下的數據。
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
- 測量過程中XY軸移動的速度,單位是mm/min,建議用預設值就好。
#define XY_TRAVEL_SPEED 6000
- 探測前抬高Z軸,避免探測腳與平台相撞。可以先設到50mm。如果有把握不會撞到,再回來改。
#define Z_RAISE_BEFORE_PROBING 10
- 探測過程中抬高Z軸。如果平台沒有傾斜得很厲害,探測過程中應該是不會撞到平台的。用預設值就很安全了。
#define Z_RAISE_BETWEEN_PROBINGS 10
最後燒錄
- 相關設定都完成了,再燒錄一次Marlin,機器就具備平台自動補正的功能了!
G-code Prefix修改
機器只會照著Gcode的指令工作,一般切片軟體產生出來的G code,並不會通知機器要做平台自動補正。如果沒有加上自動補正的命令稿在 G code Prefix裡面,那就沒辦法享受到自動補正的功能,甚至還會造成機器的傷害。千萬要小心、耐心做好以下的步驟。
KISSlicer
M104 S<TEMP>; 開始加熱擠出頭G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S<TEMP>; 等待溫度到達工作溫度
M82; E軸使用絕對座標
Slic3r
M104 S[first_layer_temperature]; 開始加熱擠出頭G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S[first_layer_temperature]; 等待溫度到達工作溫度
M82; E軸使用絕對座標
修改好之後重新做切片,就可以開始測試平台自動補正的功能了。
實際使用時Z軸高度可能還是會有些誤差,需要回頭微調 Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 參數。
參考資料
2013年11月11日 星期一
調整4988步進馬達驅動板電流上限
特別注意:測量電壓的時候千萬要小心,不要短路到不該碰到的接點,很可能會造成4988燒毀!!!
特別注意:4988的輸出電流,超過1安培的話,必須加裝散熱片。超過1.5安培,需要再加風扇。就算有安裝散熱片、風扇,輸出電流也不應超過2安培。否則有燒毀的危險。
[Update 2014/03/21] ATOM 的 Mark 錄了一段影片介紹如何調整4988輸出電流,大家可以參考一下!
根據Pololu產品網頁上的說明,一般步進馬達使用4988驅動時,步進馬達實際測量到的電流,大約是4988輸出電流上限的0.7倍。所以需要設定的電流輸出上限,會是馬達標定的額定電流除以0.7。
4988輸出電流上限的計算公式:
Vref是參考電壓,利用可變電阻設計出可以調整Vref的電路,讓使用者能夠自行調整輸出電流上限。
Rs是參考電阻。目前市面上買的到的4988模組,參考電組有三種,要自己看一下。Pololu廠商設計的電路,Rs是0.05歐姆;StepStick(Open Source Project)所公布的電路,有0.2及0.1歐姆兩種規格。 使用的是SMD 電阻,"R050"代表0.05歐姆;"R200",代表0.2歐姆;"R10",代表0.1歐姆。(SMD 晶片電阻阻值標示方法)
位置如圖:
然後再查看4988模組上的Rs,如果是0.2歐姆,那你需要把Vref調整成 (1.5/0.7)*8*0.2 = 3.43 伏特。
Rs = 0.2 Ω
Rs = 0.1 Ω
Rs = 0.05 Ω
參考資料
http://www.eng.utah.edu/~cs5789/handouts/a4988_DMOS_microstepping_driver_with_translator.pdf
http://reprap.org/wiki/StepStick
http://reprap.org/wiki/Sanguinololu
http://www.pololu.com/product/1182
SMD 晶片電阻阻值標示方法
特別注意:4988的輸出電流,超過1安培的話,必須加裝散熱片。超過1.5安培,需要再加風扇。就算有安裝散熱片、風扇,輸出電流也不應超過2安培。否則有燒毀的危險。
[Update 2014/03/21] ATOM 的 Mark 錄了一段影片介紹如何調整4988輸出電流,大家可以參考一下!
根據Pololu產品網頁上的說明,一般步進馬達使用4988驅動時,步進馬達實際測量到的電流,大約是4988輸出電流上限的0.7倍。所以需要設定的電流輸出上限,會是馬達標定的額定電流除以0.7。
4988輸出電流上限的計算公式:
I=VREF8×RS
Vref是參考電壓,利用可變電阻設計出可以調整Vref的電路,讓使用者能夠自行調整輸出電流上限。
Rs是參考電阻。目前市面上買的到的4988模組,參考電組有三種,要自己看一下。Pololu廠商設計的電路,Rs是0.05歐姆;StepStick(Open Source Project)所公布的電路,有0.2及0.1歐姆兩種規格。 使用的是SMD 電阻,"R050"代表0.05歐姆;"R200",代表0.2歐姆;"R10",代表0.1歐姆。(SMD 晶片電阻阻值標示方法)
位置如圖:
參考電壓測量方式
可變電阻的金屬螺絲頭,就是Vref的測量點,用三用點表的正極做測量。接地點在圖中最右下角的pin針,旁邊的絲印記號有標註"GND"。舉例說明
如果你買到的步進馬達,額訂電流是1.5安培,那4988輸出電流上限會是 1.5/0.7 = 2.14 安培。然後再查看4988模組上的Rs,如果是0.2歐姆,那你需要把Vref調整成 (1.5/0.7)*8*0.2 = 3.43 伏特。
參考電壓速查表
編按:Vref 受到控制板上分壓電路的限制,不一定能調整出表列的電壓。Rs = 0.2 Ω
馬達額訂電流(A) | 4988輸出電流上限(A) | Rs(Ω) | 4988參考電壓Vref應設定成(V) |
2 | 2.86 | 0.2 | 4.57 |
1.9 | 2.71 | 0.2 | 4.34 |
1.8 | 2.57 | 0.2 | 4.11 |
1.7 | 2.43 | 0.2 | 3.89 |
1.6 | 2.29 | 0.2 | 3.66 |
1.5 | 2.14 | 0.2 | 3.43 |
1.4 | 2.00 | 0.2 | 3.20 |
1.3 | 1.86 | 0.2 | 2.97 |
1.2 | 1.71 | 0.2 | 2.74 |
1.1 | 1.57 | 0.2 | 2.51 |
1 | 1.43 | 0.2 | 2.29 |
0.9 | 1.29 | 0.2 | 2.06 |
0.8 | 1.14 | 0.2 | 1.83 |
0.7 | 1.00 | 0.2 | 1.60 |
0.6 | 0.86 | 0.2 | 1.37 |
0.5 | 0.71 | 0.2 | 1.14 |
0.4 | 0.57 | 0.2 | 0.91 |
0.3 | 0.43 | 0.2 | 0.69 |
0.2 | 0.29 | 0.2 | 0.46 |
0.1 | 0.14 | 0.2 | 0.23 |
Rs = 0.1 Ω
馬達額訂電流(A) | 4988輸出電流上限(A) | Rs(Ω) | 4988參考電壓Vref應設定成(V) |
2 | 2.86 | 0.1 | 2.29 |
1.9 | 2.71 | 0.1 | 2.17 |
1.8 | 2.57 | 0.1 | 2.06 |
1.7 | 2.43 | 0.1 | 1.94 |
1.6 | 2.29 | 0.1 | 1.83 |
1.5 | 2.14 | 0.1 | 1.71 |
1.4 | 2.00 | 0.1 | 1.60 |
1.3 | 1.86 | 0.1 | 1.49 |
1.2 | 1.71 | 0.1 | 1.37 |
1.1 | 1.57 | 0.1 | 1.26 |
1 | 1.43 | 0.1 | 1.14 |
0.9 | 1.29 | 0.1 | 1.03 |
0.8 | 1.14 | 0.1 | 0.91 |
0.7 | 1.00 | 0.1 | 0.80 |
0.6 | 0.86 | 0.1 | 0.69 |
0.5 | 0.71 | 0.1 | 0.57 |
0.4 | 0.57 | 0.1 | 0.46 |
0.3 | 0.43 | 0.1 | 0.34 |
0.2 | 0.29 | 0.1 | 0.23 |
0.1 | 0.14 | 0.1 | 0.11 |
Rs = 0.05 Ω
馬達額訂電流(A) | 4988輸出電流上限(A) | Rs(Ω) | 4988參考電壓Vref應設定成(V) |
2 | 2.86 | 0.05 | 1.14 |
1.9 | 2.71 | 0.05 | 1.09 |
1.8 | 2.57 | 0.05 | 1.03 |
1.7 | 2.43 | 0.05 | 0.97 |
1.6 | 2.29 | 0.05 | 0.91 |
1.5 | 2.14 | 0.05 | 0.86 |
1.4 | 2.00 | 0.05 | 0.80 |
1.3 | 1.86 | 0.05 | 0.74 |
1.2 | 1.71 | 0.05 | 0.69 |
1.1 | 1.57 | 0.05 | 0.63 |
1 | 1.43 | 0.05 | 0.57 |
0.9 | 1.29 | 0.05 | 0.51 |
0.8 | 1.14 | 0.05 | 0.46 |
0.7 | 1.00 | 0.05 | 0.40 |
0.6 | 0.86 | 0.05 | 0.34 |
0.5 | 0.71 | 0.05 | 0.29 |
0.4 | 0.57 | 0.05 | 0.23 |
0.3 | 0.43 | 0.05 | 0.17 |
0.2 | 0.29 | 0.05 | 0.11 |
0.1 | 0.14 | 0.05 | 0.06 |
參考資料
http://www.eng.utah.edu/~cs5789/handouts/a4988_DMOS_microstepping_driver_with_translator.pdf
http://reprap.org/wiki/StepStick
http://reprap.org/wiki/Sanguinololu
http://www.pololu.com/product/1182
SMD 晶片電阻阻值標示方法
額外的註記
筆者在"掏寶捷泰"買到的步進馬達驅動板,是StepStic的1A版本,Rs是0.2歐姆,Vref被限制在1.6伏特左右。這樣的驅動板,設定在1.6福特,配上額訂電流1.5安培的步進馬達,在 i3上仍然能夠順利運作。有安裝散熱片。以上經驗提供大家參考。(2013/11/12)2013年11月5日 星期二
Marlin 溫度 sensor 校正
使用 Type-K 溫度計
將探針綑綁在加熱頭側面
開啟Marlin-Marlin_v1\Marlin\thermistortables.h
要修改的溫度對應表在第10行
const short temptable_1[][2] PROGMEM = {
這行之後
將機器溫度設定到40度,待溫度穩定後,用Type-K溫度計測量到的溫度,取代表中的40度。
再依序測量45度~300度的實際溫度。
全部測量完後,利用40、45度兩組資料的斜率,回推0度到35度之間的實際溫度。
將thermistortables.h存檔。
確認Configuration.h中,#define TEMP_SENSOR_0 設為 1,再重新安裝Marlin到控制板中。
重新驗證溫度是否有與溫度計測量到的相符。
將探針綑綁在加熱頭側面
開啟Marlin-Marlin_v1\Marlin\thermistortables.h
要修改的溫度對應表在第10行
const short temptable_1[][2] PROGMEM = {
這行之後
將機器溫度設定到40度,待溫度穩定後,用Type-K溫度計測量到的溫度,取代表中的40度。
再依序測量45度~300度的實際溫度。
全部測量完後,利用40、45度兩組資料的斜率,回推0度到35度之間的實際溫度。
將thermistortables.h存檔。
確認Configuration.h中,#define TEMP_SENSOR_0 設為 1,再重新安裝Marlin到控制板中。
重新驗證溫度是否有與溫度計測量到的相符。
訂閱:
文章 (Atom)