Introduction: XYZ

利用抽屜滑軌,以精簡版本的CoreXY架構形成X-Y平台。以步進馬達與正時皮帶作為帶動,以簡單的木工組合。

我故意不做精確的設計,在大部的設計想法成形之後,只憑感覺去安裝每個細部部件。我試圖用最直覺的方法去設計與安裝這個系統,我把精確度建立在零件的信賴之上。我覺得目前技術的進步已經涵蓋大部分的系統需求,甚至是最一般的零組件,也都已經有某種程度的精確度。

因為這個系統的設計非常依賴手作的直覺,我在設計的時候採取皮帶方式的傳動。但即便是皮帶傳動,卻是【正時皮帶】,因此也保有一定的準確度。

傳動機構採用CoreXYhttp://corexy.com/theory.html。這是一種使用正時皮帶的傳動方式,在機構的組裝容許誤差範圍較大,適用在這個計劃上。

Step 1: 材料

如圖準備材料

補充:還要一部手電鑽與木材用鑽針

Step 2: XY軸安裝

在XY軸平台的設計理念上,原本是以A4紙面積為工作範圍,但受限於手邊有的木條長度,最後只能縮小到20cmX20cm的工作範圍。

木條框架的固定方面,另外加上了PVC板與木螺釘的固定,以求穩固。

抽屜滑軌的固定方面,就是一般抽屜滑軌的安裝。這組抽屜滑軌是去特力屋http://www.i-house.com.tw/product/detail/id/78769?kw=%E4%B8%89%E7%AF%80+%E6%BB%91%E8%BB%8C&pi=0買的,裡面原本就有附上安裝說明與螺絲釘,因此就依照指示安裝就可以了。

這裡要注意的是,兩個平行滑軌必須十分平行,因此在安裝上必須不斷試運行與調整,直到運行順暢為止。

Step 3: 安裝馬達、轉軸與皮帶

這個架構是根據CoreXY修改而來。兩個步進馬達分別不同的轉向與轉速,可以讓中心的雲台部分任意的移動位置。我根據設計圖在實體的木條位置上鑽孔,並且安裝馬達與牙條。

牙條的部分搭配雙重螺帽的固定方式,可以在牙條的高度上微調滑輪的位置。

皮帶是一整條的使用。頭尾都是固定在中央雲台的位置。

Step 4: Z軸安裝

Z軸的部分我是拆掉一台DVD光碟機。裡面負責讀寫頭的機構是步進馬達的設計。這個步進馬達也是四線式的設計,因此可以相容接受arduino EasyDriver的驅動。

將大部分零件拆除之後,尋找外框機構中平坦的位置,利用木材與螺釘固定,用以與系統的雲台相連接。

接著中間黑色原本光學讀寫頭的機構,也是同樣尋找平坦的位置,固定一個木板,用來與將來的酬載相連接。

Step 5: 線路安裝

線路圖展示了這個系統的線路安裝原理。原則上就是grbl的建議安裝方式,詳細的說明網路上很多。

在限制開關(Limit Switch)的安裝方面,需要尋找平台上當極限狀況發生時會有接觸的部位,將開關安裝在那些位置。測試的方式非常直覺,就是手動將雲台推至極限的位置時,開關會被按壓到就可以了。

開關線路要安裝在開關常閉的接點上。

Step 6: 軟體

grbl github grbl v0.9i + corexy + UNO

前往grbl網站下載https://github.com/grbl/grbl,這裡是使用v0.9i版本,並根據說明進行安裝。如果安裝成功,則再重新開啟Arduino 開發環境的時候可以在 檔案->範例->第三方程式庫的範例 中發現grbl項目,就表示安裝完成。

在第三方程式庫範例中,grbl只有一個範例叫做grblUpload,那是用來安裝在arduino中的韌體程式。在安裝這個韌體之前必須先修改程式酷的原始碼。在原始碼中,需修改config.h的內容,以便符合CoreXY機構。

在arduino預設存放使用者程式碼的地方,有一個library資料夾,grbl的原始碼在裡面。打開當中的config.h檔案並在其中尋找下列程式碼,將斜線//拿掉以便開啟CoreXY的支援。

// #define COREXY

接著打開前面提到的範例程式grblUpload,然後連接arduino板子進行上傳。

如果板子是MEGA這時候應該可以順利上傳。如果板子是UNO,則會發生不能上傳的問題,這時必須再修改config.h的內容,尋找下列程式碼,拿掉斜線//,然後重新編譯上傳,這時候應該就可以安裝在UNO上了。

// #define REPORT_GUI_MODE

Universal Gcode Sender

arduino安裝好韌體之後,這時候已經可以開始測試系統的運作。可以參考網路上關於gcode的定義,然後將arduino所連接的COM Port用通訊軟體打開,就可以對arduino直接傳送gcode,這時步進馬達就會開始動作。

如果要進一步傳送由其他軟體產生的gocde檔案,則必須使用grbl的GUI軟體,這裡我使用的是Universal Gcode Sender https://github.com/winder/Universal-G-Code-Sender

這個軟體裡面有傳送單步指令的功能,可以用來校正系統。這個系統是採用步進馬達作為移動的來源,步進馬達可以精確地傳達【步數】,但是步進馬達的【一步】代表實際狀況的多少距離,則必須由grbl內部變數去換算。這一部分可以先閱讀grbl相關說明https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9。在預設的情況下,grbl的單位是mm。所以從軟體送出的【一單位】就是1mm的意思。但是因為原始設定對於步進馬達一步代表多少mm只是一個預設值,與我們安裝的系統不盡相同,因此我的作法是在XY的雲台上固定一枝筆,然後用軟體叫系統畫一條線,例如100mm,接著用鐵尺去量測畫出來的線是否符合。如果不符合,再去計算相差的倍數,然後拿這個倍數去修正grbl裡面的步數比例變數。以我的系統來說,就是去修改grbl裡面的$100 $101這兩個變數。

inkscape + www.cnc-club-ru/gcodetools

為了要產生gcode的檔案,我使用了inkscape這個軟體https://inkscape.org/en/來設計向量圖樣,然後搭配inkscape外掛www.cnc-club-ru/gcodetools來產生gcode檔案。

Step 7: 測試

在inkscape裡面用線條描繪想要輸出的圖案。

點選外掛gcodetools -> path to gcode 點選 apply。檔案輸出位置必須先在Preference裡面指定好。

在gcode sender裡面先做好歸零。
步驟:
以手動方式將雲台推至零點位置。
在gcode sender裡面 Manual Control的地方,按下XYZ分別的reset,此時XYZ的座標值就會顯示在0的位置。

到File Mode裡面讀入剛剛inkscape外掛產生的gcode檔案。

按下send,此時系統就會開始根據檔案裏面的gcode移動雲台。

點選Visualize還會出現一個3D視窗顯示檔案內容的立體圖案以及目前三軸移動的情況。