Install Marlin 2.0.x to A 3DYMY RAMPS 1.4 Plus Controller

I bought a 3D printer, Dreamaker, from a Chinese company in Taobao some year ago. It came with a DIY kit with a 3DYMY RAMPS 1.4 Plus controller board. It surprised me with its printing quality and performance, as well as the US$290 price (~NT$8700). After years goes, it still works pretty good without problems, except the getting worse finishing quality due to the nozzle wear. After replaced it with a new cheap $0.5 nozzle from a Taiwanese supplier, it looks better, and I've just cease my desire of buying a new printer. But I did expected to upgrade it with some new fancy functions, and actually I can take this risk now even I screwing it up finally, because I can have good reason to buy a new one then :)

My Dreamaker with Acrylic Housing and LCD2004 (RepRapDiscount Smart Controller)
來自大陸泓海科技的 Dreamaker

Unfortunately, when I was trying to search some related document about 3DYMY boards, I found it is not easy. Moreover, this company had disappeared form the market. Luckily, there are still some seller's post on Taobau, where I found the pin out list of 3DYMY RAMPS 1.4 Plus controller board, in which listed the pinout of 2004 and 12864 LCD screen. I attached it in the end of this article for records.

Modification of Pin Definition

The way of making a compatible Marlin firmware for this board, I created an individual pin definition header file pins_3DYMY.h in the folder of /Marlin/src/pins/ramps in order to isolate this its settings from others and minimum the influences to other settings. The board definition of BOARD_RAMPS_14_EFB in Configuration.h can keep unmodified. After all, this 3DYMY's board is also based on the design of RAMPS 1.4. It is better to keep other related RAMPS 1.4 related settings. So, I included "pins_RAMPS.h" in the file, pins_3DYMY.h, and I can simply modify the original RAMPS_14_EFB pin inclusion line with pins_3DYMY.h as below.

#elif MB(RAMPS_14_EFB)
//  #include "ramps/pins_RAMPS.h"                 // ATmega1280, ATmega2560                 env:megaatmega1280 env:megaatmega2560
  #include "ramps/pins_3DYMY.h"                 // ATmega1280, ATmega2560                 env:megaatmega1280 env:megaatmega2560

Other Settings

After made the above modifications, Marlin firmware 2.0.x can be compiled without any error messages by Arduino (the version I'm using is 1.8.10). And the rest of the works are modifying those settings related to the printer in Configurations.h and remember to enable the definition of RepRapDiscount Smart Controller by uncomment the line:
#define REPRAP_DISCOUNT_SMART_CONTROLLER
It will enable the LCD2004 display, as well as the rotary encoder and buzzer. When I don't have a LCD12864 display for testing, I don't know if it will be in the same settings.

The other settings, you can define by yourself according to your printer's hardware. Remember to record the current settings from the printer by M503 G-Code command. And check the settings in Configurations.h and Configurations_adv.h in details based on the current settings will avoid any accidents or even damaging the machine. Be careful in the first operation after new firmware uploaded. Keep alert on all the small movements while operating. Shot off the power switch immediately in case of wrong movement.

Here you can download the file, pins_3DYMY.h 按這裡下載設定。

在 3DYMY RAMPS 1.4 Plus 主控板上,安裝最新版的 Marlin 2.0.x 韌體

除了把 3DYMY.h 這個檔案放進 /Marlin/src/pins/ramps 目錄中,另外還得更改  /Marlin/src/pins/pins.h 這個檔案,把原來的定義檔 pins_RAMPS.h 改成 pins_3DYMY.h。這樣就能在Arduino 編譯了。記得要把 Arduion 的主機板,改成 Arduion Mega 2560 / ATmega2560。按打勾按鈕來執行編譯,先看看編譯能不能成功,確定沒問題之後,就可以上傳到主機。把主機的 USB 插頭連接到 PC,然後看看有沒有因此多一個 COM port,然後 Arduino 軟體中的COM Port 設定也要一致, 就可以按右箭頭符號,上傳 Firmware 到3D列印機

上傳前需要注意的事項

上傳操作前,要特別注意 Configurations.h 裡面的設定,運動方向若搞錯了,會發生機構件撞機意外,操作的時候要特別小心。另外,安裝新的韌體前,最好先安裝Repetiter-Host 軟體 https://www.repetier.com/download-now/ 先習慣連線操作,並用這個軟體,把目前主機的參數預設值,全部紀錄起來。在 Repetiter-Host 軟體中,執行 M503 這個 G-Code 指令,就可以得到目前所有的參數設定。

開機前,可以先把噴頭拉到各個軸向的中心位置,然後,用比較小的位移操作實驗,先確定方向是對的,限位開關的位置 (是 min 還是 max) 是對的之後,在試試看 Homing 歸零。運動沒問題之後,再去試驗噴頭加熱器跟熱床的溫度。可以直接在 Configuration 中,按照之前紀錄下來的參數預設值,去改動 PIDTEMP 跟 PIDTEMPBED段落中的PID設定。也可以啟用#define PID_AUTOTUNE_MENU 設定,這樣在列印機的螢幕選單中,就會出現自動調整 PID 參數的功能,記得還要選對溫度感測器 TEMP_SENSOR。在冷機的情況下,執行 Autotune的功能,Marlin就會幫您找到正確的 PID,並且把新的PID直接寫入 Flash 中。

關於這部3D列印機的介紹

這台3D打印機是四、五年前,在淘寶的泓海科技,花八千多塊買來的,在當時也算很便宜。機器的名字叫做 Dreamaker,主架構抄襲 Ultimaker 2。記得到貨的時候是端午節前,打開包裝一看都是零件,有點後悔做這件蠢事。除了從沒接觸過3D列印之外,這部機器在那時,是我這輩子組過最複雜的機構(之前是 PC)。記得連假全部耗在這部機器的組裝上,不過這幾年從123Design到FreeCAD,這台機器幫我修好數十件的日常用品。

對於 Dreamaker 印出來的品質,那時感到很驚豔,因為看網路跟Youtube其他機器的列印結果,很多都沒有這台好,「Made in Chine」有時候不像一般人印象中那麼糟,也是有不少物美價廉的東西。努力勤奮抄襲+創新+開放共享,少一些意識形態、少一些故步自封,文明進步的速度就快了。現在掏寶上,大陸出現更多3D列印機的公司,一萬塊上下的價格,就能印出更好的品質,讓我很想再買一台來用。要不是家裡實在沒地方擺了,也不會有更新Firmware,升級這台機器的念頭。

對於 Ultimaker 機械架構的感想

我想這部機器成功的原因,在於它的壓克力板挖洞精準。所以組起來之後,六根XY光軸 (四根在四周,兩根在中間穿過噴頭交叉)、垂直的兩根Z軸光軸,以及步進馬達,都精準固定在壓克力的孔位上,除非光軸是歪的,還是原來的尺寸設計、挖洞就有錯,不然不對準、不垂直也難。因為 Ultimaker 這種機構設計安排,每一根光軸,都有三個點來定位直線,只要噴頭那兩個 X軸、Y軸的孔洞,也有很好的垂直度,板子上的光軸洞有模具或比較好的CNC挖洞,整個列印機的三軸對正,其實在這些零件出廠前就已經決定 99%了,不管你是怎麼組裝,影響應該都有限。

我認為,這種用壓克力板的設計,可能比鋁擠材來得更準,畢竟鋁擠材是一根根接起來,需要對準、對正的地方,比這台機器多太多,垂直切割面也多。要是沒有精密的長度、垂直度量設備確保外框12根鋁擠的精度,一個菜鳥新手,應該不容易組得很好。加上泓海科技採用封閉式的環狀同步皮帶,皮帶的尺數、長度都是出廠就固定的。基本上,只要在安裝好皮帶之後,才鎖緊同步輪上的內六角螺絲固定,皮帶自然會把所有軸向的同步輪,轉到平衡的張力。這樣就不會有像CoreXY架構,張力不平均、太鬆太緊,或兩軸齒數沒有平衡一致的問題。

後續

目前還沒辦法解決的問題,是 Manual Move 手動位移,會 Delay ,有Lag 的問題,就是轉動旋轉編碼器之後,馬達不會馬上跟著動,得把手停住一下,馬達才會執行,試改了很多地方,還是不行。看一些FAQ,有網友說,是 Feedrate 的問題,但顯然不是,因為用 G-Code 列印時正常,而且也只有一個地方,在 Configuration_adv.h 裡面的 #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 60 } 。覺得是負責排程 Planning 的部份,跟幾年前舊版的 Marlin Firmware 不一樣的緣故。但這個問題,對列印影響不大,頂多就是開機調平時,操作起來比較彆扭。

接下來,要在這部機器上,安裝斷線偵測 Filament Runout Sensors 跟自動關機 Enable and connect the power supply to the PS_ON_PIN,這樣長時間列印的時候,就不必常常去注意它了。相信這台機器還能延長壽命好幾年。

Pin out of 3DYMY RAMPS 1.4 Plus with LCD2004

Pin out of 3DYMY RAMPS 1.4 Plus with LCD12864

沒有留言:

張貼留言