2018年8月8日 星期三

D-force V2 升級 Marlin Bugfix 1.1.x 步驟



這一台D-force V2 300己升級雙噴,但試過後平常是拆掉第二噴,免得刮料;可是因為它是我最大台的3D列印機,偶而會拿它來印比較大的工件,其時就會遇到一個問題:斷料,快印完時斷料而沒人顧很慘的,所以就想加個斷料偵測器,可是它不是open source,而且我想它的codebase應該也不夠新,就自己動手改了。我fork了Marlin, 研究後決定branch bugfix 1.1.x來用,這一版對delta機型支援比較好,source code在此:https://github.com/PhilXing/Marlin/tree/D-force-V2-300,有興趣者可以fork一版到你自己的github裏或下載回去玩玩看,以下就是試用時的幾個比較關鍵的環節。由於在我快完工時Marlin正式release了1.1.9版, 所以我也跟進一版, 喜歡正式版本的人可以在這裏取得: https://github.com/PhilXing/Marlin/tree/D-force-V2-1.1.9。使用方法目前看到並沒有什麼不同。

我是使用Arduino 1.8.5來編譯上傳,我假設你己經會用它了。當然要使用USB線和對應的驅動程式,一旦更新後,USB COM port X(看你的電腦指定到COM幾),baud rate就要改成250000,之前沒有原始碼的baud rate並不是250000(是115200?),如果你發現連不上了,或是D-force一直重開機,那大概就是這個問題。
再來就是探針的servo馬達設定,因為我不知原始的設定,所以就依社團前輩提示的50度待命,15度佈署的設定來改, 如果你發現探針動作有異,請依以下步驟調整:1.拆除旋臂, 2.重開機, 3.將旋臂鎖至待命位置, 4.使用 "M280 P0 S50" , "M280 P0 S15"來確認探針是否依指令到位。
我預設是雙噴頭,單噴也是可以用,如果要改成只支援單噴,就要到configuration.h裏把這裏改成1。

還有configuration_adv.h裏把E1_AUTO_FAN_PIN 改為 -1。

如果你是400/500?, 那麼桿長要改一下, 請自己拿尺量一下桿子兩端螺絲的距離後, 用它來代替這個值。不用非常準,因為執行自動校正後會調好,但也不能差太多,自動校正會失敗的。
再來就是安裝切片程式或是pronterface, 此處我假設己安裝好, 然後:
 . Contro==Restore failsafe: 或是下"M502"指令
 . Prepare==Delta Calibration==Auto Calibrate: 或是下"G33"指令
 . Prepare==Level Bed: 或是下"G29"指令
 . Prepare==Delta Calibration==Probe Z-offset: 用影印紙調整噴頭高度,不用太緊。
 . PID hotend: 把噴頭移到印床高度附近("G1 Z1 F6000"), 風扇打開("M106 S255")後, 下"M303 C8 S200"調測噴頭PID。
 . PID bed: 下"M303 E-1C8 S70"指令調測印床PID
 . Control==Store Settings: 或是下"M500"指令
在校正過程中我發現推桿會和風扇干涉,所以畫了一個風扇座和一個導風罩來處理這問題:https://www.thingiverse.com/thing:3039057
如果不改風扇座,那就要把邊界加大來避免推桿和風扇磨擦的狀況,我試了一下,30就夠了。偵測範圍越大床會越平。

以下是安裝斷料偵測器的記錄
這是買現成的斷料偵測器,它有LED指示燈比較炫。

這3pin設計就是適合來接endstop的,你也可以自己買一個微動開關,主要是要接藍色(SIGNAL)和黑色(GND)這兩根,微動開關是接左右兩側接腳(C & NC),中間不接,這樣可以達到相同效果。

我把它接到唯一還空著的endstop Y-MIN, 請注意方向。這個設定己包含在我的github中。

這是我畫的3軸可動固定座,2顆M4固定在鋁擠柱上。圖檔在此:https://www.thingiverse.com/thing:3039078
這是斷料偵測的測試記錄。

黑色印完接橘色就變這。

1 則留言:

鱼大吃 提到...

这是一条来自好几年后的评论。我在近期入手了一台同款打印机,但是它的固件出现了问题。近期的新固件都无法正常在这台机器上工作。有幸翻找到您这篇文章。本人在刷写文中附带的固件时出现了本人无法解决的问题。希望能够得到您的帮助。主板上的版本号为 MKS BASE v1.3 。以下是附带的错误信息:
---
Arduino:1.8.19 (Windows 10), 开发板:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Users\17727\Desktop\Marlin-D-force-V2-1.1.9\Marlin\endstops.cpp:35:0:

C:\Users\17727\Desktop\Marlin-D-force-V2-1.1.9\Marlin\endstop_interrupts.h: In function 'void setup_endstop_interrupts()':

endstop_interrupts.h:131:7: error: non-constant condition for static assertion

static_assert(digitalPinToPCICR(Y_MAX_PIN) != NULL, "Y_MAX_PIN is not interrupt-capable");

^~~~~~~~~~~~~

In file included from C:\Users\17727\Desktop\Marlin-D-force-V2-1.1.9\Marlin\endstops.cpp:35:0:

endstop_interrupts.h:57:57: error: reinterpret_cast from integer to pointer

WITHIN(p, 62, 69) ? &PCICR : (uint8_t*)0 )

^

C:\Users\17727\Desktop\Marlin-D-force-V2-1.1.9\Marlin\endstop_interrupts.h:131:21: note: in expansion of macro 'digitalPinToPCICR'

static_assert(digitalPinToPCICR(Y_MAX_PIN) != NULL, "Y_MAX_PIN is not interrupt-capable");

^~~~~~~~~~~~~~~~~

exit status 1

non-constant condition for static assertion
---
期待您的答复!