在下平時常看 電腦數值控制(Computer Numerical Control, CNC) 的資料,卻從來沒有操作過類似的機器。
主要是因為這類機器不是體積龐大,就是價格不菲,要是購買後卻賺不回本,覺得不化算,因此沒有買下來。
直到最近,在下在網上發現一款小型雷射雕刻機,外型小巧、價錢便宜,評價也還過得去,便買回來試試。
試著光靠觀看學來的知識,能否真正實踐在 CNC 操作上。
外觀
一個小型雷射雕刻機,尺寸是一個邊長大約 10厘米 的正立方體。
機身的正面與頂部均配置了 雷射濾光片 ,能有效降低雕刻時產生的強光;
但 雷射濾光片 無法完全阻隔強光,操作時仍應盡量避免觀察雷射。
機身左側配置了一個小型風扇,用於排出雕刻過程中產生的 煙霧 及 氣體。
儘管如此,使用時仍須確保環境空氣流通,以防止有害氣體累積。
內部
內部構造相當簡潔,在一塊 印刷電路板 上面佈置了 多組連接器 與 電子模組,並整合了 2個步進馬達 及 雷射二極體模組 。
小型雷射雕刻機使用 Arduino Nano 開發板 作為 微控制器。
2個 A4988步進馬達驅動器 ,分別控制 X軸 及 Y軸 的 2相4線步進馬達 。
5mW 650nm 雷射二極體模組 。
操作時必須注意,避免雷射直接照射眼睛。
即使不是直接照射,全功率輸出的雷射反射光仍會迅速導致眼睛不適。
若因研究需求必須近距離觀察,強烈建議配戴高防護等級的專用 雷射防護眼鏡 。
這類濾光鏡片能大幅衰減反射光強度。
濾光效果在肉眼觀察下尤為顯著,能更有效地弱化光點。
韌體燒錄
這款 小型雷射雕刻機 採用 Arduino Nano 作為控制核心,並搭載 grbl 開源韌體來驅動。
可以前往 https://github.com/grbl/grbl grbl 官方 GitHub 下載原始碼自行編譯並燒錄。
若只需要簡單操作,可以前往 https://github.com/gnea/grbl 獲取已編譯好的 .hex檔案 。
亦可以按此下載 grbl_v1.1h.20190825.hex
使用 avrdude 將 韌體 燒錄至 Arduino Nano ,在 終端機 輸入:
avrdude \ -v -V \ -C"avrdude.conf" \ -p"atmega328p" \ -c"arduino" \ -P"/dev/ttyUSB0" \ -b"57600" \ -D -U"flash:w:grbl_v1.1h.20190825.hex"
燒錄前請確認 Arduino Nano 的 連接埠(Port) 與 啟動器(Bootloader) 版本。
通常兼容版的 Arduino Nano 通常採用 舊版啟動器,燒錄時 鮑率(Buadrate) 需要設定為 57600 ;
而官方的 Arduino Nano 則採用 新版啟動器, 燒錄時 鮑率 則 需要設定為 115200 。
G-code指令
這款 小型雷射雕刻機 使用 G-code 指令集控制,經由 序列通訊(Serial Communication) 傳輸數據,
藉此定義 雷射二極體模組 的 移動路徑 、 定位坐標 及 輸出功率 等 參數。
每組 G-code 指令必須以 \r\n (Carriage Return 及 Line Feed) 作為 結束符號(End of Line, EOL) 。
遺漏 結束符號,控制端裝置將無法識別並執行指令。
參數
雖然 G-code 包含眾多 指令 及 參數,但為求精簡與實用,在下只列出這款 小型雷射雕刻機 支援的部分。
| 指令 | 功能 |
|---|---|
| G | 幾何指令(Geometry) ,控制 雷射二極體模組 的移動方式。 |
| M | 雜項指令(Miscellaneous) ,控制 雷射二極體模組 的功率。 |
| 參數 | 功能 |
|---|---|
| X | X軸偏移 ,X軸 坐標位置。 |
| Y | Y軸偏移 ,Y軸 坐標位置。 |
| I | 圓弧專用,圓心 X軸 增量。 |
| J | 圓弧專用,圓心 Y軸 增量。 |
| R | 圓弧專用,圓弧半徑。 |
| F | 移動速度 或 操作的完成時間: 當設定為 移動速度 時,例如 F100 表示 1分鐘移動100距離單位 的速度。 當設定為 操作的完成時間 時,例如 F2 表示操作 1/2分鐘 即是 30秒 完成操作。 |
| S | 能量強度,1000 為 100% 功能。 |
設定單位
英寸單位
G20
設定單位 為 英寸 。
毫米單位
G21
設定單位 為 毫米 。
位置模式
絕對位置
G90
根據 原點位置 移動。
相對位置
G91
根據 雷射二極體模組 當前位置 移動。
定位點
G92 X? Y?
設定 雷射二極體模組 為定位點。
原點復歸
G28
將 雷射二極體模組 以最快速度移動到原點。
測試 原點復歸 ,等價於 G00 X0 Y0 。
G28 X
將 雷射二極體模組 的 X軸 以最快速度移動到原點。
G28 Y
將 雷射二極體模組 的 Y軸 以最快速度移動到原點。
可能由於這款小型雷射雕刻機沒有實作 G28 X 及 G28 Y ,因此無法執行這兩個指令。
線性移動
基本移動指令,將 雷射二極體模組 以線性方式,由當前位置移動到目標位置。
高速移動
G00 X? Y?
以裝置最高速度移動。
測試 X軸 移動。
測試 Y軸 移動。
測試 XY軸 同時移動。
直線移動
G01 X? Y? F?
以 F? 的速度移動。
G00 與 G01 都能將 雷射二極體模組 移動至目標位置,但 G01 具備控速功能。
由於 雷射烤焦 媒介需要時間,加工時通常使用 G01,以免移動過快導致無法烤焦;
不需照射時,可利用 G00 快速定位。
圓弧平面
XY平面
G17
選擇 XY平面 。
XZ平面
G18
選擇 XZ平面 。
YZ平面
G19
選擇 YZ平面 。
圓弧移動
順時針
G02 X? Y? I? J? F?
測試 順時針 移動。
逆時針
G03 X? Y? I? J? F?
測試 逆時針 移動。
閣下或許會發現,在下測試出的順時針與逆時針效果正好相反。
在下也還沒查清原因,大概是韌體把 Y軸 位置翻轉了,才讓所有跟上下有關的動作都跟著顛倒過來。
設定速度
移動 雷射二極體模組 的速度或完成時間。
時域速度模式
G93
將需要使用 F參數 的操作 以 1/? 分鐘完成。
單位分鐘模式
G94
將需要使用 F參數 的操作 以 每分鐘?單位 速度移動 雷射二極體模組 到目標位置。
雷射照射
固定功率
M03 S?
動態功率
M04 S?
雷射功率以動態方式照射。
功率變化根據移動速度調節,但 GRBL 的 韌體 並不支援,因此 M03 及 M04 的效果在這款 小型雷射雕刻機 並沒有分別。
雷射二極體模組 以 S? 的功率照射,S值 以 ?/1000 的方式計算,
即是 S1 = 0.1% , S1000 = 100% 。
測試 雷射二極體模組 照射效果 ,功率為 10%。
停止照射
M05
停止 雷射二極體模組 照射,等價於 M03 S0 或 M04 S0 。
測試 停止 雷射二極體模組 照射。
警告:
使用任何雷射裝置時,避免讓雷射直撞照射眼睛,否則將造成嚴重的視力受損,甚至導致失明。
即使只是觀看雷射光點的反射,也可能傷害視力;高功率雷射更存在灼傷風險。
操作前請務必佩戴專用護目鏡,並禁止其他人靠近,以免發生意外。
連續指令
正式作業前,通常要先定好單位、位置坐標、速度規格與原點。
以在下的習慣為例,偏好使用毫米、絕對坐標與每分鐘移動速度。
在發送指令前,會先手動把 雷射二極體模組 移動到預定位置並設為原點,這才開始運作:
G21 (毫米單位) G90 (絕對位置) G94 (單位分鐘模式) G92 X0 Y0 (設定定位點)
定好基本資料後,才開始 雷射雕刻。
測試 連續指令 。
小型雷射雕刻機 雖然能能連續接收多個指令並順序執行,但指令並非接收後立即執行,
而是先存放在 靜態隨機存取記憶體(Static Random Access Memory, SRAM) 的 緩衝區(Buffer) 內。
由於 Arduino Nano 的 SRAM 只有 2048位元組,若一次發送的指令總字元數超過此上限,
超出部分的資料便無法傳送到控制器,這會導致雕刻途中突然停止,無法完成所有動作。
為了防範這種失誤,如果指令太過複雜,最好拆分成幾段來執行。
如果操作中途停止同時 雷射以最高功率不斷照射相同位置,持續加熱卡紙等材料極可能引燃,甚至釀成火災。
LaserGRBL
LaserGRBL 是一項 開源雷射雕刻專案 ,能將 向量圖 轉為 G-code 路徑,再設定 移動速度 與 照射功率 即可 雷射雕刻。
可惜 LaserGRBL 原生只支援 Windows 版本,雖然有人將其包裝成 AppImage 移植到 Linux ,
藉由 WINE兼容層 執行基本功能,卻無法透過 序列通訊 與 雷射雕刻機 連接。
問題在於軟件只辨認到 Windows 的 COM連接埠 的名稱,與 Linux 的 不符合命名格式 。
既然無法連接,就無法控制機器,因此在下只好先在 VirtualBox 建立 Windows虛擬機 來測試。
第一次執行 LaserGRBL 時會出現警告,提醒使用者被 雷射照射 可能帶來的危險。
從選單找尋對應的 COM連接埠 ,並將 鮑率(Baud) 設為 115200。
(通常軟件會自動偵測 COM連接埠 ,預設值通常也是 115200)
點擊 綠色插頭按鈕 連線後,就能使用 左下方的面板 來控制 雷射二極體模組 移動。
下方的面板 亦有各項測試動作,像是歸零原點、開啟或關閉雷射等。
正式雕刻前,先手動將雷射頭移至起始點,再按下 地球圖案 ,將 雷射二極體模組 設定為原點。
LaserGRBL 支援 SVG ,閣下可自行繪製圖案後載入測試。
需留意的是,雖然 LaserGRBL 也能辨識其他圖案元素,但改用 路徑元素(Path) 來呈現整個構圖最為穩妥。
由於 Inkscape 原生支援此功能,直接在其中繪圖最為方便。
完成後,選取目標圖案並點選選單中的 Path > Object to Path (或按 Ctrl + Shift + C),即可完成轉換。
此外,為了解決先前測試中 Y軸 上下顛倒的問題,在下預先將圖案做了翻轉處理。
最直接的方法是將所有元素群組化,並在群組屬性中加入
transform="scale(1,-1) translate(0,-$height)"
藉此抵銷翻轉誤差。
$height 數值與 SVG 的總高度一致。
從 LaserGRBL 主選單點選 File > Open file,即可選取並開啟 圖像檔案。
匯入向量圖
載入 SVG 前,還需要設定 移動速度 與 輸出功率:
- Border Speed 移動速度,太快會無法烤焦材料,太慢則耗時過長,建議設定值為 25 至 100
- Laser Mode 雷射模式,建議選用 M3
- S-MIN 最低功率,建議設為 0
- S-MAX 最高功率,建議設為 1000
確認無誤後,按下 Create! 即可將圖案匯入 LaserGRBL。
LaserGRBL 只會處理 邊線資訊 , 顏色、填滿、文字 等資訊都會忽略。
SVG 向量圖載入後,畫板會出現預覽圖。
粗線 代表 雷射照射的路徑, 幼線 則代表 雷射二極體模組 只移動而不照射的路徑。
按下 綠色播放按鈕 後,會提示使用者配戴 雷射濾光鏡片,然後倒數 5秒 或 按 Start 開始照射。
圖案雕刻
測試效果。
由於雕刻過程頗長,在下將影片中途的影片加速 10倍。
雷射雕刻 的結果。
部分路徑的烤焦不夠明顯,主因應是測試用的卡紙問題。
當材料彎曲或表面不平時,雷射便無法精準聚焦,導致能量分散、熱量流失;
在熱度不足且照射時間不夠的情況下,難以烤焦灼出理想的效果。
有需要可以重覆照射來增加烤焦程度。
匯出 G-code
從 LaserGRBL 主選單點選 File > Save (Advanced Options) ,來匯出 G-code 。
維持預設值並按下 Save,即可匯出 G-code。
匯出的 G-code 檔案能以純文字編輯器開啟,並透過 序列通訊 直接發送給 雷射雕刻機。
以這種方式,勉強能擺脫對 Windows 的依賴,順利在 Linux 上完成 雷射雕刻 的任務。
不過這種方法無法得知操作進度。
在下發現從 SVG 轉換而來的 G-code指令 都是 G1,並未使用 G2 或 G3。
這代表 LaserGRBL 將 圓弧路徑 分割成了多段微小的 直線路徑,藉此模擬曲線效果。
比起交給韌體去計算 圓弧路徑,由軟件先行計算並分割路徑,能獲得更精確的成果。
匯入點陣圖
除了 向量圖,LaserGRBL 也能處理 點陣圖 。
由於 雷射雕刻 無法區分色彩,軟體會將其簡化為黑白邏輯:100%黑色 對應全功率輸出,0%黑色(即是白色) 則不輸出。
建議啟動 B&W功能 ,並將設定值至最高數值,令圖案只剩下 黑色及白色。
除了轉換參數,點陣圖 也跟 向量圖 一樣,需要設定 移動速度 與 照射功率。
此外,還得定義 畫布尺寸,讓 LaserGRBL 按比例將圖案縮放至實際長度。
以這款 小型雷射雕刻機 為例,其作業範圍為 50mm x 50mm,因此設定時應將 闊度(W) 與 高度(H) 均定為 50
由於在下沒有定義 LaserGRBL 的作業範圍,因此 匯入點陣圖 時出現 Job Boundary Confirmation 警告 。
只要實際的作業範圍能夠接受轉換後的圖案尺寸即可,按 OK 匯入點陣圖。
將 點陣圖 匯入 LaserGRBL 後即可開始雕刻。
不同於 向量圖 有明確的 路徑引導,雷射雕刻 點陣圖 時,雷射雕刻機 必須逐列逐欄掃描整個圖案。
雖然 LaserGRBL 會自動跳過白色區域並盡可能使用最住化的移動路徑,
但相較於相同構圖的 向量圖,點陣模 需要耗費更多時間。
測試結論:卡紙並不適合進行點陣掃描。
由於 雷射照射 會走遍整個圖案,烤焦後的紙質會變得脆弱;
尤其在重覆或相近照射的位置, 纖維 會因過度碳化而變成粉末,導致成像破損。
補充資料
雷射雕刻 期間, LaserGRBL 會即時顯示進度,並以顏色區分指令狀態:
- 綠色:指令已發送至微控制器,正等待執行完畢
- 紫色:待發送的指令
- 白色:尚未處理的指令,防止因發送過快導致緩衝區溢位
此外,雕刻完成時會播放音效提醒。
(音量比較大,若專注於其他事務,可能會被突如其來的聲音嚇到)
由於外殼擋住了 Arduino Nano,導致難以 安裝 及 卸除 ,在下稍微削開走外殼的邊緣,讓 Arduino Nano 能容易更換。
由於附帶的 Arduino Nano 採用現在不常見的 Mini USB Type-B 插口,與現今主流的 Micro USB Type-B 或 USB Type-C 脫節。
考量到日後更換的便利性,在下才堅持必須有能輕易更換 Arduino Nano 的解決方案。
雖然 Arduino Nano 可直接透過 USB 5V 驅動,但 印刷電路板 上的其他元件仍須外接 12V 電源。
各元件的負載電流:
- 風扇:大約 0.1A
- 馬達:大約 0.1A ,2個大約 0.2A
- 雷射二極體模組:最大功率 大約 0.4A
以上總計需 0.7A,考量到電源誤差範圍,建議至少配備 12V 1A 電源供應器 。
12V 電源插口為常見的 外徑5.1mm 內徑2.1mm 電源插口。
總結
這款 小型雷射雕刻機 購買了一段時間,近日總算完成測試。
由於該專案源自 中國開源社群 ,網絡上不算是一個知名的專案,
但因核心基於知名的 LaserGRBL 開發,讓在下能簡單地從網上找到豐富的技術資源。
此外,LaserGRBL 採用標準 G-code 指令,亦大幅降低了學習門檻。
起初,在下曾擔心難以駕馭 G02 或 G03 圓弧指令,所幸 LaserGRBL 支援 SVG 格式,
能自動將圓弧轉換為多段短小的直線移動指令,以模擬曲線效果,解決了圓弧問題。
目前最耗時的步驟是手動對焦,由於這是 DIY專案,需要反覆調節雷射透鏡,
其實可以使用紙黏土等小型工具固定透鏡焦距,避免 雷射二極體模組 移動時的震動而變化,
確保焦點精準匯聚在材料表面,才能正式動工。
經實測對比,改用木板作為材料,成像穩定性顯著提升。
木板的優勢在於不容易因過度 雷射照射 而 粉末化,但亦由於耐燃性較卡紙高,需增加照射時間或重複多數雷射照射,才高品質的焦痕。
值得一提的是硬體結構問題,由於機身過輕,步進馬達 移動時的震動會導致照射時產生輕微位移,雷射照射時造成偏差。
於是在下在機頂增加重物以抑制震動,確實降低了路徑偏差,提升了雕刻精度。
整個 小型雷射雕刻機 專案中所使用的零件都可以自行購買,作者亦公開了 印刷電路板 及 3D打印 的 設計圖。
即使不購買製成品,都可以自行製作。
還有,雖然 LaserGRBL 需要安裝,但在下嘗試將整個安裝後的目錄複製到另一個 Windows 系統,都能夠直接執行,即是不需要安裝亦能運作。



































沒有留言 :
張貼留言