2013年11月28日 星期四

[進階] 調整 Marlin 的 Stepper step pulse width (步進馬達控制訊號寬度)

使用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" (兩個)
這行利用除法運算來拖延程式執行的時間,用來產生控制腳位拉高電會後維持高電位的延遲。複製這行,執行兩次,就可以拖延兩倍的時間。依此類推。



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控制板 - 捷泰 - 掏寶

擠出頭

購買前請記得只定要Wade型態的。別買錯囉~
如果之後想改裝成遠端送料,再購買Bowden型態的 J-Head。
J-Head - 熔普三維
J-Head - 捷泰 - 掏寶

擠出軸

擠出軸 - 露天

Prusa i3列印件

(2014/01/28) 現在已經有很多列印件供應商,可以在拍賣上面找到他們。所以我就不再接受代印的請求了~
一套 i3 列印件的代印費用2500元,才質為PLA,顏色有半透明紅/藍。
交期約一周。
細節請來信詳談:kcee.tw@gmail.com

如果可以整套從頭到尾一次列印出來,需要的時間估計是 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。不過走線比較長,要重新佈線。
探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。

伺服馬達接線如下圖所示:

韌體設定步驟

預先燒錄


  • 將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輸出電流上限的計算公式:

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)
22.860.24.57
1.92.710.24.34
1.82.570.24.11
1.72.430.23.89
1.62.290.23.66
1.52.140.23.43
1.42.000.23.20
1.31.860.22.97
1.21.710.22.74
1.11.570.22.51
11.430.22.29
0.91.290.22.06
0.81.140.21.83
0.71.000.21.60
0.60.860.21.37
0.50.710.21.14
0.40.570.20.91
0.30.430.20.69
0.20.290.20.46
0.10.140.20.23

Rs = 0.1 Ω
馬達額訂電流(A)4988輸出電流上限(A)Rs(Ω)4988參考電壓Vref應設定成(V)
22.860.12.29
1.92.710.12.17
1.82.570.12.06
1.72.430.11.94
1.62.290.11.83
1.52.140.11.71
1.42.000.11.60
1.31.860.11.49
1.21.710.11.37
1.11.570.11.26
11.430.11.14
0.91.290.11.03
0.81.140.10.91
0.71.000.10.80
0.60.860.10.69
0.50.710.10.57
0.40.570.10.46
0.30.430.10.34
0.20.290.10.23
0.10.140.10.11

Rs = 0.05 Ω
馬達額訂電流(A)4988輸出電流上限(A)Rs(Ω)4988參考電壓Vref應設定成(V)
22.860.051.14
1.92.710.051.09
1.82.570.051.03
1.72.430.050.97
1.62.290.050.91
1.52.140.050.86
1.42.000.050.80
1.31.860.050.74
1.21.710.050.69
1.11.570.050.63
11.430.050.57
0.91.290.050.51
0.81.140.050.46
0.71.000.050.40
0.60.860.050.34
0.50.710.050.29
0.40.570.050.23
0.30.430.050.17
0.20.290.050.11
0.10.140.050.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到控制板中。

重新驗證溫度是否有與溫度計測量到的相符。