網頁

基於GRBL設計之CNC控制器

在拜讀了網路上許多有關於DIY CNC的文章之後,發現到最後在電路部分都需要做整合的動作,或許機器大同小異,但是在控制器的部分大家的設計就截然不同了。



我計畫將電源、控制器、機構三組做分離,而其中控制器的整合是最不容易的一點。
在我想製作的Cyclone PCB雕刻機中,其組裝說明書並沒有對控制器做太多的介紹,而且它是一塊整合好的電路板(如果買它們的套件的話),它套件的控制板只有幾種接頭,分別是XYZ三軸與限位開關。
可以點這裡看看官方的電路配置


然而像我們自己組的,一般都是用Arduino UNO或是自己製作的電路板,而自從GRBL v0.9之後 似乎新增了PWM主軸轉速控制的功能,這是我相當喜歡的一個功能,所以在看到的當下就決定到時候DIY時也要裝上這個主軸控制的功能。而我決定用以下的零件來建構我的控制器,主要的零件如下圖:




發現SSR不能用於控制馬達轉速後,我又買了一顆調速器

我下面就來解釋一下我的主要配置
首先我本來打算將電源供應器也放進我的機殼裡的,但後面因為體積實在是太大了(其實是大的機殼太貴了.....),所以我只好將電源供應器放在外面另外接線,同時還有一個考量是之後如果要改成24 or 36v 也可以單純換Power就好,而每個零件的用途我在下面做解釋。
  1. Arduino UNO *1
    控制用的心臟不解釋。
  2. GRBL CNC shield v3 *1
    GRBL的轉板,可以自己做但是用買的超便宜又好看,所以用買得比較快。
  3. A4988 *3
    用來將訊號轉成電流控制步進馬達的晶片。
  4. 208鋁盒(200*154*77mm) *1
    就是外殼,上面黑色的是鐵蓋,而本體則是0.8mm的鋁板,應該不難切。
  5. 40A SSR
    用來將訊號轉成主軸控制的固態繼電器。(因為有PWM可以用所以我才選用固態繼電器)
    我後面才發現PWM不能用於控制SSR,得用調速器才可以....
  6. USB2.0 B公 轉 B母(帶耳) *1
    用來將埋在裡面的UNO連接USB到機殼上。短短一條好貴阿T_T (結果最後沒用到)
  7. 無段按鈕 *3
    用來接GRBL CNC shield上面的Abort、Hold及Resume
  8. 有段按鈕 *1
    用來接GRBL CNC shield上面的E-stop,我本來想買那種工業用的緊急停止按紐,但一樣就是成本問題....所以就用一般的有段開關取代。
  9. 4P航空接頭 *3
    用來接XYZ三顆步進馬達
  10. 2P航空接頭 *2
    用來接主軸馬達的電,另外一顆是冷卻液訊號的預留接頭
  11. RCA端子板(3插座) *1
    用來接XYZ三組的限位開關,因為一組限位有兩條線,而RCA端子座又有好多種(有12346孔的讓我選),為了方便我就選用RCA端子板來做限位開關的接頭了。
  12. 香蕉插頭母座(紅) *1
    用來接電源供應器的正極
  13. 香蕉插頭母座(黑) *1
    用來接電源供應器的負極
  14. 電壓表(DC2.5~30V) *1
    用來監控電壓,同時也可以充當電源燈!?
  15. 散熱風扇4cm *1 (上圖沒出現)
    用於散熱
  16. 散熱風扇外蓋4cm *1(上圖沒出現)
    保護風扇用
  17. Probe探針接頭*1
    用於接探針的訊號線。
而我是打算直接用繪圖軟體畫完孔位之後貼上去直接加工,圓孔的部分用鑽的應該可以,比較擔心的是方孔(但幸好卡上去的外殼有預留間隙),而風扇的32mm孔我就要等到時候買較大的鑽頭才能挖孔了,因此目前還沒有開風扇孔。

這是我繪製的面板圖,當然跟最後的結果不太一樣拉....


我將面板的設計圖列印下來之後,貼在面板上直接加工(這樣比較快)。


同時買了一顆階級鑽頭來加工比較大的孔,這是鋁板所以挖起來還蠻輕鬆的。
只可惜的是我應該買大一點的,這樣才可以連風扇的32cm孔一起挖。


方孔的部分我先在周圍鑽孔,然後用斜口鉗將它剪開。


然後慢慢挫....慢慢挫...


當我孔位都挖好之後再來焊接步進馬達用的航空接頭。


接著就組裝完成了!!
不要說我太快阿! 因為就真的孔挖一挖線焊一焊而已。


組裝好之後我為了學習GRBL的控制,把好久以前為了練習3D印表機結構而組裝的光碟機給搬了出來。

就在我練習完也組裝完Cyclone PCB之後,上機才發現SSR不能用在主軸的PWM控制.....
為甚麼呢? 看這裡吧
http://electronics.stackexchange.com/questions/233741/activating-ssr-for-an-ac-motor-via-pwm-input

因此就只能將原本的配置拆拆拆拆光光! 並買了一顆調速器給裝上去。
至於為甚麼要將Arduino UNO裝到最旁邊,並且直出USB呢?
那是因為在測試Cyclone的時候,一直出現End limit的錯誤訊息(沒觸發喔)。
因此有人建議我將USB設計直出並且把馬達電線加上磁環,盡可能地降低干擾,不要讓延伸的USB線在裡面繞一大圈。
同時買了一個端子座來轉接電源,盡量讓馬達的電與控制器遠一點,避免干擾。





改來改去的結果就是底下一堆洞.....
不過沒辦法,這是DIY的必要之惡,有些事情總是等安裝結束才會發生,我想這就是經驗。



之後很快的將線重新配置一下並試機,的確是可以正常的控速了,同時不會有End limit的錯誤訊息。雖然馬達全速運轉的時候還是有時候還是會出現錯誤訊息,但那應該是因為共振過大造成的(我在猜搞不好是震動造成限位開關觸發),反正平常也不會全速開了(這個後面再來改善)。

只是我目前是直接使用VR進行控速,並沒有將GRBL的控速腳給接上(因為還要接切換開關),我想這部分我要等對CNC熟悉一點再來改裝,目前還是用手轉的就好了。



這裡建議可以在主軸的電線加一個磁環,或多或少能抑制雜訊的產生。



來曬一下控制器的正面照,分別有電壓表、UNO USB連接燈號、ABORT、HOLD及RESUME控制鍵,右邊還有主軸轉速控制、Probe探針接頭與緊急停止開關(這很重要)。在Cyclone PCB官方的組裝說明書中並沒有這些配置,連緊急停止開關都沒有,全部都拉到GRBL的電腦軟體端控制,因此當然省下了控制盒的空間(只剩一塊控制板在工作底板底下)。



背後的配置有USB連接阜、冷卻液接頭(還沒接線)、XYZ步進馬達接頭、主軸電源接頭(直接電壓控速)、XYZ限位開關(在官方的配置沒有Z軸的限位開關)還有電源接口(能12V~36V)。
而風扇的孔因為我還沒有32cm的階級鑽頭....所以就先沒開了QQ



最後試跑一個10cm的bowl成功! 使用2mm的球铣刀。

至於GRBL的腳位介紹,我會另外寫一篇文章。
GRBL真的是把UNO的腳位給壓榨到極限.....

(20180525補充:)
最近把GRBL的周邊做了一系列的整理,並且打算把Cyclone的一些問題給筆記一下。有興趣的可以看看我的系列文章:
基於GRBL的CNC之A4988步進馬達驅動器篇
基於GRBL的CNC之步進馬達篇
基於GRBL的CNC之冷卻液開關篇
基於GRBL的CNC之擴充板篇
基於GRBL的CNC之Arduino控制器篇
基於GRBL的CNC之限位開關篇CNC
基於GRBL的CNC之按鈕篇