--- 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 ![正方形](https://hackmd.io/_uploads/SyE4gE11T.png) ``` //程式頭 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,模擬路徑是否正確 ![](https://hackmd.io/_uploads/H1aQfNykT.png) --- ## 機台規格 ![桌上型CNC雕刻機](https://i.imgur.com/kgPJ4R9.jpg) ![控制器](https://i.imgur.com/G0xygN7.png) - 控制器: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. 開始加工 - 加工過程需要使用者在機台附近,避免突發狀況發生無人處理 ---