---
tags: 設備教學, 技術, CNC
---
# Fablab Tainan 桌上型CNC操作
---
## CNC簡介
- CNC是[電腦數值控制(numerical control, computer numerical control](https://zh.wikipedia.org/zh-hant/%E6%95%B0%E5%80%BC%E6%8E%A7%E5%88%B6)的縮寫,主要由己編寫好的程式,再交由電腦控制的加工機器進行加工,如:CNC[車床](https://zh.wikipedia.org/zh-tw/%E8%BB%8A%E5%BA%8A)、CNC[銑床](https://zh.wikipedia.org/zh-tw/%E9%93%A3%E5%BA%8A)、雷射切割機、3D列印等。
- CNC的控制器主要用來控制加工機的馬達、雷射、加熱器及各種感測器等元件,主要由日系的發那科(FANUC)及德系的西門子占比最大,也有開源的版本。
``` mermaid
graph TB
id0[Gcode]-->id1[電腦]-->id2[控制器]
id2-->id3[馬達]
id2-->id4[雷射]
id2-->id5[加熱器]
id2-->id6[筆]
id2-->id7[其他元件]
id3-->id10[[CNC車床,CNC銑床]]
id4-->id11
id3-->id11(雷射切割機)
id3-->id12((3D列印))
id5-->id12
id3-->id13[寫字機]
id6-->id13
id3-->id14[????]
id7-->id14
subgraph 需要控制的元件
id3
id4
id5
id6
id7
end
subgraph 機器類型
id10
id11
id12
id13
id14
end
```
- 透過電腦輔助設計 [CAD](https://zh.wikipedia.org/zh-tw/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%BE%85%E5%8A%A9%E8%AE%BE%E8%AE%A1),來設計要加工的外形
- 由電腦輔助製造 [CAM](https://zh.wikipedia.org/zh-tw/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%BE%85%E5%8A%A9%E5%88%B6%E9%80%A0),來產生加工路徑或加工機的控制介面來輔助加工。
``` mermaid
graph LR;
id20[CAD]-->id21[CAM]-->id22[Gcode];
subgraph CNC
id22
end
```
---
## G-code是什麼
G-code用來控制加工路徑的程式碼,分為控制加工機執行的G代碼、輔助加工的M代碼及各項參數組成,控制器的G代碼及M代碼可能會因為不同的廠牌而有不同功能。
---
| G-code | 說明 | 格式 |
| ------ | ------- | -------- |
| G00 | 快速移動,以預設的最快速度,移動到需要的位置 | G00 X100 ; |
| G01 |直線切削 | G01 X100 F1500 ; |
| G04 |暫停移動 | G04 P1; |
| G20 |設定為英制單位,單位:in| G20; |
| G21 |設定為公制單位,單位:mm| G21; |
| G28 |原點復歸 | G28; |
| G90 |絕對座標系 | G90; |
| G91 |增量座標系 | G91; |
| G94 |每分鍾進給率 | G94; |
| G95 |每轉進給率 | G95; |
---
| M-code | 說明 | 格式 |
| ------ | ------- | -------- |
|M02 | 程式結束 | M02; |
|M03 | 主軸正轉 | M03 S1000; |
|M05 | 主軸停止 | M05; |
---
| 其他參數 | 說明 | 格式 |
| ------ | ------- | -------- |
|X | 設定X軸座標位置,+-為方向 | X100.0; |
|Y | 設定Y軸座標位置,+-為方向 | Y100.0; |
|Z | 設定Z軸座標位置,+-為方向 | Z1.0; |
|F | 設定進給率mm/min | F100; |
|P | 暫停時間,單位:秒 | P1; |
|S | 轉速設定,單位:RPM | S2000; |
---
## 參數計算
- S = N = 1000 * V/(3.14 * D)
- D:指銑刀的直徑(mm)(有刀刃的部份)
- V:刀片的切削速率(m/min)
- 不同材質或機台都會不同的值,可參考刀具製造商的建議或自行測試
- 基本原則是下刀量越大,V值越小,銑刀的直徑D越小,S值越大
- F = Fc *n *N
- n指銑刀的刀刃數目
- N是指主軸轉速(RPM)
- Fc是每刀刃每轉的進給(mm/rev)(由刀具製造商來提供)
---
## 範例程式
```
//程式頭
G21 //設定單位:mm
G90 //絕對座標系
G94 //每分鍾進給率
F3.00 //設定進給率3 mm/min
G00 Z1.0000 //Z軸快速移動1.0mm
M03 //主軸正轉
G04 P1 //暫停1秒
//路徑程式
G00 X24.1485 Y28.7541 //快速移動到X24.1485 Y28.7541
G01 Z-0.1000 //Z軸下刀0.1mm
G01 Z0 //移動到工件平面
G00 Z1.0000 //提刀到工件上方1.0mm
G00 X24.1485 Y31.2539 //開始加工路徑
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X24.1485 Y33.7541
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X66.3387 Y33.7541
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X66.3387 Y31.2539
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X66.3387 Y28.7541
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X35.3388 Y24.2540
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X55.3387 Y24.2540
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X55.3387 Y38.2539
G01 Z-0.1000
G01 Z0
G00 Z1.0000
G00 X35.3388 Y38.2539
G01 Z-0.1000
G01 Z0 //結束加工路徑
//程式尾
G00 Z5.0000 //提刀到工件上方5.0mm
G00 X0.0000 Y0.0000 //回到X0.0 Y0.0
M05 //主軸停止
M02 //程式結束
```
---
- 試著用方格紙畫一個正方形(或其他路徑),自己編寫路徑的Gcode

```
//程式頭
G21 //設定單位:mm
G90 //絕對座標系
G94 //每分鍾進給率
F300.00 //設定進給率300 mm/min
G00 Z5.0 //Z軸快速移動5.0mm
M03 //主軸正轉
G04 P1 //暫停1秒
//路徑程式
G00 X1.0 Y1.0 //快速移動到A點(X1.0 Y1.0)
G00 Z1.0 //提刀到工件上方1.0mm
G01 Z0.0 //移動到工件平面
G01 Z-0.50 //Z軸下刀0.5mm
G01 X21.0 //開始加工路徑 A->B
G01 Y21.0 //B->C
G01 X1.0 //C->D
G01 Y1.0 //回到A
G01 Z0 //結束加工路徑
G00 Z1.0
G00 X0.0 Y0.0
//程式尾
G00 Z5.0 //提刀到工件上方5.0mm
G00 X0.0 Y0.0 //回到X0.0 Y0.0
M05 //主軸停止
M02 //程式結束
```
- 將*.nc檔載入到Candle,模擬路徑是否正確

---
## 機台規格


- 控制器:ARDUINO cnc shield
- 刀具筒夾ER11(刀把直徑3.175mm)
- X行程:270 mm
- Y行程:120 mm
- Z行程(不含刀長及夾具高):25 mm
---
## 如何開始
1. 安裝控制CNC的CAM軟體
- 以實驗室的桌上型CNC為例,需要找以[GBRL](https://github.com/grbl/grbl)架構的控制軟體,如:[Candle](https://www.bachinmaker.com/wikicn/doku.php?id=candle)、[GrblController](https://por.tw/3Dprint/%E3%80%90%E9%96%8B%E6%BA%903d-%E4%B8%89%E7%B6%AD-%E9%9B%95%E5%88%BB%E8%BB%9F%E9%AB%94%E3%80%91-grbl-controller-3-6-1-%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87%E5%8C%96%E6%AD%A3%E5%BC%8F%E7%89%88/)等控制軟體.
---
2. 將要加工的圖檔轉為G-code
- 可參考Maker資源庫的[數位加工技術資料、各種相關技術資料](https://hackmd.io/@fablab-tainan/tainanContents/https%3A%2F%2Fhackmd.io%2F%40fablab-tainan%2FryIu7mtaL#%E5%8A%A0%E5%B7%A5%E7%9F%A5%E8%AD%98)內的CNC相關軟體.
- 使用其他方式
---
3. 檢查G-code並模擬加工路徑
- 檢查G-code是否有遺漏的部份,是否需要增減G-code內容.
- 小數點的位置是否正確.
---
4. 固定要加工的材料
- 使用各式夾治具固定要加工材料,需注意刀具的路徑會不會撞到夾治具.
- 固定工件時不要鎖太緊,能固定工件不動就好,床台材質是鋁的,鎖太緊會變形
- 有要切穿時,可在要加工的材料下墊個薄木片,避免傷到機台基座.
---
5. 安裝刀具
- 種類
- 平底尖刀
- 端銑刀
- 鑽頭
- 其他特殊型式,如:球型刀、T型刀、鳩尾刀等
- 安裝步驟
- 先確認夾頭與刀具的規格尺寸是否相符,如夾頭規格ER11-3.175,刀具的刀把直徑只能在2.7~3.2之間,才能使用
- 刀具被夾住的部份,最少要有總刀長的1/3左右,或是10~20mm左右以上
- 鎖緊螺母時,將13號開口鈑手放入夾具上方,17號開口鈑手放入夾具螺母,固定13號開口鈑手不動,將17號開口鈑手逆時針轉是鎖緊,順時針轉是放鬆
- 鎖夾頭時不要鎖太緊(螺母會壞掉),刀具能固定不鬆脫就好,最好能用扭力鈑手拆裝最好
- 1.2mm以下的刀具很容易斷,使用時最好只作鑽孔就好,不要銑切
- 實驗室的桌上型CNC雕刻機無[自動換刀系統](https://zh.wikipedia.org/zh-tw/%E8%87%AA%E5%8B%95%E6%8F%9B%E5%88%80%E8%A3%9D%E7%BD%AE),每換1把刀需要另一個G-code來執行
---
6. 對刀
- 設定由高解析度到低解析度進行移動,離工件越近移動時解析度越低(每下一行指令,機器會執行完才停,中途無法取消,只能按警急停止全部重來,所以按錯會造成刀具或機台損壞)
- 使用紙片
- 使用對刀塊
- 其他各式方式
---
7. 對XYZ軸歸零
- 先對XY軸歸零
- 再對Z軸歸零
- 歸零後,先將Z軸向上移動5mm以上避免撞刀
8. 開始加工
- 加工過程需要使用者在機台附近,避免突發狀況發生無人處理
---