了解如何將GRBL與Arduino CNC盾牌一起使用。
在這篇文章中,我們將介紹Arduino CNC盾牌,每個引腳,如何與之互動,將GRBL安裝到您的Arduino,從電腦傳送到指令並從電腦運行GCODE。
內容目錄
什麼是Grbl?
GRBL(發音為“ Gerbil”)是一種免費的開源軟體,用於使用Atmega328的Arduino板進行運動控制。這使我們能夠使用Arduino Uno操作CNC機器(雷射切割器,3D印表機等)。基本上,我們可以使用GRBL和Arduino Uno來操作任何具有3軸的機器。
Arduino CNC Shield基礎知識
Arduino CNC盾牌基本上使您可以輕鬆連線4個步進電動機磁碟機和電動機,並將其連線到Arduino Uno中的非常具體的銷釘。您必須將其部署到Arduino中的GRBL軟體知道哪些引腳用於控制每個步進電機,因此Arduino CNC Shield和GRBL可以很好地一起工作。
如果您不想使用GRBL怎麼辦?
從技術上講,您可以使用Arduino CNC盾牌而無需使用GRBL。假設您只有一個需要多個步進電動機的項目,並希望輕鬆將它們連線到您的Arduino,然後您可以使用CNC盾牌並引用適當的引腳來相應地控制每個步進電動機。
如您所見,Arduino CNC屏蔽層在CNC機器的每個軸上都有非常具體的位置。還有一個A軸可以通過使用適當的引腳(以下內容詳細介紹),可以通過PIN D12和D13使用非GRBL軟體來複製X,Y或Z。
Arduino CNC盾牌別針
如果您檢視本節中的圖像,您會發現每個軸(X,Y,Z和A)都有自己的位置來連線其步進運動磁碟機(即A4988)和步進電動機線。在每個斑點上,您還會看到銷釘來定義步進電動機微型步進設定。有關A4988步進電動機磁碟機微台化設定的詳細訊息,請參閱我的 之前的文章 。
在左側,您還可以看到銷釘在X,Y,Z上控制步進電動機的步驟和方向。這些連線到Arduino引腳,如果需要,但是如果需要,但是如果您不需要使用這些銷釘引腳是由來自Arduino的輸出驅動的。 Near the middle left you also see pins that can be used to enable the A-axis to mirror the X, Y, or Z axis.
請注意,使用GRBL時,您只能將A軸用作鏡像,並且不能獨立控制4個軸。沒有GRBL,您可以簡單地通過其Arduino引腳控制所有軸(圖片顯示)。在右邊,我們有用於限制開關的引腳(在需要時容許在 +End和-end上都有銷釘),並且還具有用於控制外部驅動紡錘體的引腳。請注意,如果使用GRBL 0.9,則Z-LIMIT在引腳D12上,並在D11上進行主軸PWM控制。
如何使用Arduino CNC盾牌 – 基本訊息
有兩種使用Arduino CNC盾牌的基本方法:在Arduino上運行GRBL或在Arduino上運行非GRBL軟體(內含一般的Arduino代碼)。如果運行一般的Arduino代碼,您只是使用Arduino Shield從一個非常簡單的設定中受益,該設定使最多可容納一個由一個Arduino控制的最多4個步進電動機以非常凝結的格式控制。為此,代碼將遵循類似的示例,如我 前面的文章 所示。只需知道您必須確保在Arduino CNC Shield Pinout上使用PIN號。
如果在Arduino Uno上運行GRBL軟體,則必須從另一個裝置將指令從另一個裝置傳送到到Arduino Uno,該指令告訴Arduino Uno該怎麼做。這樣做的最簡單,最常見的方法是將USB電纜連線到Arduino Uno,並從運行Controlter軟體(例如UNIVERAL G-CODE SENSTER)的電腦中傳送到指令。


如何在Arduino上安裝grbl
要下載GRBL,請轉到以下 連結到GITHUB,然後以.zip檔案下載 。

下載後,提取ZIP檔案的內容,然後轉到Arduino IDE,然後通過繪製素描,內含庫,加入ZIP庫來加入.zip庫,然後加入ZIP庫(請參見下圖)。然後轉到提取的資料夾,然後在GRBL-Master資料夾中,選取“ GRBL”資料夾,然後點選“開啟”。


下一步是上傳GRBL代碼,假設您的計劃是操作使用所有軸(X,Y,Z)的標準CNC電腦。但是,例如,如果您只想使用X和Y軸,那麼您必須在將grbl安裝在arduino上之前禁用z軸,否則歸巢序列將始終失敗(將嘗試嘗試z軸z軸沒有成功)。在這樣的示例中,在安裝Arduino Uno代碼之前,請轉到您的Arduino資料夾,然後在庫資料夾中找到“ GRBL”資料夾,然後將其開啟並找到“ config”檔案。將其作為文字檔案開啟。
將歸巢週期從3軸機器變更為2軸(禁用Z軸)
僅當您的電腦根本沒有Z軸時才這樣做。如果這是您的情況,您將需要在“配置”檔案中找到此部分:


繼續在Arduino上安裝GRBL
返回在Arduino Uno上安裝GRBL。現在,如果Arduino IDE開啟,請轉到“檔案” – >“示例” – >“ grbl” – >“ grblupload”。請參閱下面的螢幕快照。請注意,在我完成上面提到的變更時,我繼續變更了資料夾名稱。
您可能會注意到代碼很短。不用擔心它可以標準工作!您現在要做的就是按“上傳”按鈕(將Arduino連線到電腦),然後讓GRBL軟體加載到您的Arduino板上。

CNC機器設定
在我們開始運行CNC機器並配置GRBL之前,讓我們首先看一下我的設定,以便您可以與我要通過的內容聯繫起來。我的機器(如下所示)沒有z軸。它具有X軸,Y軸,然後是用於擠出/配置的電動機。我還沿X軸和Y軸具有限制開關,以使機器歸納。該機器由沿不銹鋼桿和線性軸承/滑塊沿步進電動機和正時皮帶/齒輪/等驅動。


從電氣角度來看,我的設定如圖所示。我將X軸和Y軸步進電動機駛過Arduino運行的GRBL。此類Arduino還從X軸和Y軸的極限開關接收信號。主軸啟用和主軸方向信號是從運行GRBL的Arduino傳送到到運行自訂代碼的Arduino。然後,運行自訂代碼的Arduino將此信號控制配置器電機。請注意,我安裝了GRBL 0.9,因此我的接線與此一致。 如您所見,我對主軸控件的PWM信號來自D11。如果使用GRBL 1.1,請進行調整。
GRBL控制器 / G代碼發件人
現在,我們的Arduino已安裝了GRBL(我安裝了GRBL 0.9)並了解了機器的運行模式,我們可以繼續安裝GRBL控制器。如前所述,我使用USG(通用G代碼發件人)。要在電腦中安裝USG,請訪問 https://winder.github.io/ugs_website/ ,然後在頂部選單上點選“下載”。然後繼續下載。
在UGS上設定CNC機器
將UGS連線到您的機器
安裝並開啟USG(通用G代碼發件人)後,將CNC機器連線到電源並通過USB將其連線到電腦。然後繼續進行頂部選單,然後點選“機器” – >“設定精靈…”。出現跳出視窗後,您需要通過輸入韌體“ GRBL”,“ 115200”和您的連接埠來完成步驟1,這對於我的情況是COM3。然後點選“連線”。
連線後,您將看到有關是否建立連線的訊息,它將告訴您它已連線到的韌體。我的說“連線到GRBL 0.9J”。如果您在完成此步驟時遇到問題,請確保選取了正確的韌體,連接埠速率,連接埠,並成功將GRBL安裝在Arduino板上。
接下來,您可以在電腦帶有配置檔案的情況下匯入設定。假設您構建了DIY自訂機器(因為我的情況是),我們略過此步驟,然後點選“下一步”。
為您的電機布線設定的UGS
在此步驟中,您必須按按鈕“ x-”,“ x+”,“ y-”,“ y+”等,並在電腦上確認,當您按“ x+”時,機器會沿“ x+”方向搬移。如果按“ X+”,並且看到機器沿“ X-”方向搬移,則需要按“反向方向”復選框。請注意,正和負方向將定義機器相對於您傳送到的GCODE的未來運動。 “ X+”應為正確,“ Y+”應垂直向上,從您看的角度來看。只需確保保持一致即可。
步驟校準
在此步驟中,您應該簡單地制定步進電動機並測量實際搬移,以獲得每公厘價值的實際系統步驟。然後,這將使系統能夠準確地將MM搬移指令轉換為步驟指令,以使您的步進電動機搬移必要的步驟數,以取得所需的位移。您必須在機器中的每個軸上對此進行此操作。在我的X軸和Y軸上。一旦踩踏,測量價值並在“實際搬移”下輸入。然後,這將計算“校準”列下的值。繼續在計算值下的文字方塊下輸入該值,然後點選“更新”。確保您使用的每個軸線執行此操作。無需用於未使用的軸。
限制開關設定
設定歸宿
在我們開始之前,請記住,如果您正在運行2軸電腦,則需要在“ config”檔案中編輯“ config”序列來調整歸宿序列,然後再在arduino上安裝grbl。一旦這樣做,就可以繼續。有關此訊息的更多訊息,請在此頁面上卷動,然後檢查將GRBL安裝到Arduino的部分。
如果要啟用歸宿,請點選“啟用歸巢”復選框,並確保正確撥打機器必須搬移以達到家庭限制開關的方向。完成此操作後,點選“嘗試歸宿”,如果機器朝錯誤的方向搬移,請點選“流產”。完成這些步驟後,點選“下一步”。
CNC機器軟限制
如果需要,在最後一步中,您可以在CNC電腦上使用軟限制。這些使您可以防止機器在CNC機器的工作區域內搬移。通常,我不會在啟用歸巢的情況下開啟此設定,並且我運行的GCODE僅在工作區域內驅動運動。
UGS之外的CNC機器的其他設定
在我的機器中,限制開關將保持在標準提取下,因此我將其增加到4.5mm。為此,我只是在指令行上寫下以下內容:“ $ 27 = 4.5”。您還可以看到,其他設定看起來與您在遵循配置步驟中輸入的內容相似。例如,使用$ 100,101美元和$ 102來分別定義X,Y和Z軸上的每公厘步驟。網路,您的CNC控制器(Arduino)主要讀取傳送到給它的指令。
如何使您的GRBL CNC機器搬移
啟動新的Gcode時,我們將首先運行以下指令:
- G21 – 將單位設定為公厘
- G90 – 將模式設定為絕對定位(所有坐標均相對於原點)
- 如果願意,可以使用 G91 定義所有坐標相對於最後一個位置。
- G17 將現用的平面設定為XY(預設)。
- 您也可以使用 G18 或 G19 將現用的平面設定為ZX或YZ。
- G40 和 G49 取消半徑和長度補償。
進行快速行動 接下來,我們將對G0 ,這實質上將使我們迅速發展到我們要開始工作的點的開始。 開啟主軸 此後,我們將使用M3 定義速度 ,並用S ,然後速度(從0到1000),因此示例是 M3 S1000 。就我而言,主軸將是我計劃設定的配置器/擠出機。
然後,我們定義要用 F 進行XY平面運動的速率,然後是速度(即 F400 )。這將使隨後的所有XY平面使用 G1 指令以400 mm/min的速度執行。請注意,進料速率為mm/分鐘,因為我們稱之為 G21 指令,該指令將單位設定為公厘。如果我們打電話給 G20 指令,則單位將以英吋為單位,而進料率將以英吋/分鐘為單位。
CNC的GRBL G代碼的簡單示例
我們將從原點處的CNC開始(x = 0,y = 0),並設定適當的起始參數。然後,我們將快速搬移到(x = -50,y = -50)。然後,在400 mm/min的情況下,我們將沿Y方向搬移50mm,然後在X-方向上搬移50mm,然後在Y+方向上搬移50mm,最後在X+方向上搬移50mm。然後,我們將通過快速搬移返回原點,然後結束程式。這樣的代碼將看起來像這樣:
G21 (Units in millimeters)
G90 (Absolute programming)
G17 (XY plane) G40 (Cancel radius comp.) G49 (Cancel length comp.)
G0 X –50.000 Y –50.000
F400
G1 X –50.000 Y –100.000
G1 X –100.000 Y –100.000
G1 X –100.000 Y –50.000
G1 X –50.000 Y –50.000
G0 X 0.000 Y 0.000
M2 (Program end)
|
UGS可視化上述代碼
以下可視化是從UGS出現的(除了我加入的紅色箭頭和數字與代碼聯繫在一起,以便您可以看到每個指令如何導致每個動作)。請注意,我的電腦從原點開始,然後其可用空間在負x和y方向上,因此,我的坐標為負,相應地調整您的代碼。

在UGS上執行G代碼指令的模式
直接在控制台中輸入G代碼指令
通過完整程式從檔案中執行G代碼
您可以將G代碼輸入文字檔案並從那裡運行。只需在電腦中啟動新的文字檔案,輸入G代碼,將其儲存。然後在UGS中,轉到“檔案” – >“開啟”,然後選取檔案。您也可以通過點選資料夾圖示開啟。


開啟後,G代碼將在新標籤中跳出。隨意選取標籤並將其拖到一側。我喜歡將其拖到右側的右側,並在右邊的代碼和中間的可視化。

例如上面的G代碼
G21 (Units in millimeters)
G90 (Absolute programming)
G17 (XY plane) G40 (Cancel radius comp.) G49 (Cancel length comp.)
G0 X –50.000 Y –50.000
F400
G1 X –50.000 Y –100.000
G1 X –100.000 Y –100.000
G1 X –100.000 Y –50.000
G1 X –50.000 Y –50.000
G0 X 0.000 Y 0.000
M2 (Program end)
|
重要的G代碼指令
g指令
G0 – 快速搬移:
以最大速度將CNC移至直線上的定義坐標。通常用於從起點(原點)搬移到作業的起點(在上一個示例中,是運動#1)。在此運動過程中,CNC不執行其主要功能(沒有3D印表機擠出,沒有雷射切割,沒有用車床切割等)。
示例: G0 x 50.000 y 50.000
G1 – 線性搬移:
以特殊的速度(進料速度)搬移CNC。我們定義位移或末端位置(取決於我們先前特殊的G90還是G91)。 G1通常用於執行運動,而CNC執行其主函數(3D印表機擠出,雷射切割等)。
示例: G1 x 50.000 y 100.000
G2 – 順時針運動 :
G1執行直線運動,但是如果我們需要沿弧線搬移怎麼辦?然後我們使用G2(或G3)。 G2容許我們沿順時針方向沿彎曲線搬移。與G0和G2類似,我們需要定義終點的坐標,我們還需要定義旋轉中心的位置(我們沿著所在的弧線半徑)。
示例: G2 x 100.000 y 100.000 i 75.000 J 75.000
我75.000定義了 X偏移 ARC中心的 ,而J 75.000則在Y坐標中使用相同。現在,如果我們編輯上一個示例的運動#3,會發生什麼:
G2 X -100.000 Y -100.000 I -25 J25?

G3 – 圓形逆時針運動 :
G3的工作模式與G2相同,但沿逆時針方向沿曲線運動的例外。
G17 / G18 / G19 – 飛機選取
這些用於定義發生工作的平面。 XY平面的G17 (預設), ZX平面的G18 或 Yz平面的G19 。
G20 / G21 – 定義長度單位(公厘或英吋)
使用G20將長度單元設定為英吋,或將G21設定為將長度單元設定為公厘。請注意,這將影響進料率單位,因為它將以公厘/分鐘或/分鐘為單位。
G90 / G91 – 定義定位樣式(絕對或親戚)
G90是絕對樣式,運動指令(G0,G1,G2,G3)將將機器移至定義的坐標。雖然G91是相對樣式,而搬移指令將將機器移至提供的相對坐標(即它將現用的位置視為零/原點而不是實際位置)。上面的示例使用了絕對。
m指令
M0 – 無條件停止
這停止了GCODE的執行。
M2 – 程式結束
這表示Gcode的末端。
M3 – 主軸(順時針)
運行M3啟動主軸銷。請注意,輸出將是一個可以設定為從0V到5V的任何地方的PWM信號。特定的輸出電壓通過定義速度(從S0到S1000)來控制。此類輸出將從PIN上的主軸中出現,無論您正在運行哪種GRBL版本,D11或D12。
示例:
M3 S0 導致輸出電壓為0V。
M3 S500 導致2.5V的輸出電壓
M3 S1000 導致5V的輸出電壓

另一個重要的輸出是從D13引腳出現的。當運行M3(是順時針輸出)時,您將獲得D13(相當於0V)的低輸出。
M4 – 主軸(逆時針)
除了引腳D13(方向引腳)將輸出高(相當於5V)的模式,但它的工作模式與M3相同。
請注意,對於主軸而言,關鍵是您在設計機器上使用該方向信號(D13)的操作。當D13低時,您要它做什麼?當D13高時,您想做什麼?考慮一下。
M5 – 主軸停止
使用此指令停止主軸。
其他的
$ H – 家用CNC機器
使用此指令執行歸鄉序列。
$ x – 解鎖
使用此指令從硬度限制開關啟動中軟復位後解鎖CNC。
此示例中使用的元件
*作為亞馬遜和eBay助理,我從合格的購買中賺取。
GRBL CNC盾牌和Arduino
成分 | 關聯 |
CNC Shield for Arduino Uno | https://www.amazon.com/gp/product/B01D2HL9T8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1 |
Arduino One | https://amzn.to/3uYVAMC |
CNC電腦元件
成分 | 關聯 |
擠壓鋁 | https://amzn.to/3zWdZBL |
沒有17個步進電動機 | https://amzn.to/4depfaN |
擠出電動機元件 | https://amzn.to/4dfxqne |
配電條 | https://amzn.to/3WvY71v |
電源 | https://amzn.to/3WDdXHW |
線性軸承系統 | https://amzn.to/4bQAc1e |