2016年1月10日 星期日

Inkscape : Extensions : Raster 2 Laser GCode generator

2016年1月10日 星期日
Raster 2 Laser GCode generator 是 305engineering 以 Python 寫的 Inkscape extesnions,可以幫我們先將在 Inkscpae 的圖先轉為 PNG 點陣圖圖檔,然後再輸出成 G-code。我覺得作者滿有趣的,底下是引用自版權聲明中的小一段:

As long as you retain this notice you can do whatever you want with this stuff (except sell). If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.

哈!如果真能有幸遇到作者,我一定請他喝啤酒。

這個小工具是用分析點陣圖的方式產出 G-code,只要是和設定中的鏤空顏色值(白色或黑色)一樣的點,都不會雷射。這個方式的好處是直接用顏色來控制要打雷射,而不是走圖形的外框而已,無論陰刻、陽雕都適合。當然囉!如果是要做的是雷切,就建議使用別的工具。

 Raster 2 Laser GCode generator 提供了多種圖形輸出的演算模式:

  • B/W fixed threshold
  • B/W random threshold
  • Halftone
  • Halftone row
  • Halftone column
  • Grayscale

前兩種是直接以黑/白來描點,接下來有三種較省時間的半色調描點方式,最後則是採用灰階的方式來描點。除此之外,我們還能自訂解析度......等,可自訂的選項還不少。



個人覺得 Raster 2 Laser GCode generator 很適合用來處理照片或是刻印章。

照片利用半色調處理,在不同材質的效果
雷雕泡棉印章


安裝方法


Raster 2 Laser GCode generator 是 Inkscape 的 extensions,就照 Inkscape extensions 的安裝程序來安裝即可。

先下載 Raster 2 Laser GCode generator ,可以下載原作者的版本,或是我改過的版本:


將 raster2laser_gcode.inx、raster2laser_gcode.py、png.py 三個檔案放到 Inkscape 安裝目錄下的「share」目錄裡的「extensions」中。這樣就完成安裝的程序,下次開啟 Inkscape 時,在「擴充功能」選單中就會多一個「305 Engineering」的次選單,而 Raster 2 Laser GCode generator  就在裡頭。


使用方法

首先當然是要先在 Inkscape 中畫好我們要雷射的圖:

  • 在 Inkscape 中按鍵盤的 Ctrl + Shift + D ,在「文件屬性」中設定單位為「mm」,並將尺寸中的「寬度」及「高度」調整為想要雷射的大小。
  • 利用 Inkscape 繪圖工具畫圖或是匯入圖片。以刻方形印章為例,可以先在最下層放一個填滿黑色的矩形,再將要凸出的線條(不打雷射的)用白色的疊在在黑色的矩形上層。

圖處理好了,接著就可以點 Inkscape 上方主選單中的「擴充功能」→「305 Engineering」→「Raster 2 Laser GCode generator」,進 Raster 2 Laser GCode generator 的設定畫面。

由於我們使用「Raster 2 Laser GCode generator」的最大目的是要產生給雷切/雕機用的 G-code,所以得先弄清楚幾個關於機器的設定:

  • 打雷射時的移動速度 (mm/sec)
  • 開啟雷射電源的 G-code 
  • 關閉雷射電源的 G-code

像我的機器是將安裝 Marlin 的 3D printer 改裝的,它開啟雷射電源需要用到底下三道 G-code :

  • G4 P0
  • M42 P06 S255
  • G4 P10
而關閉雷射電源需要用到底下兩道 G-code :
  • G4 P0
  • M42 P06 S0

我的機器需要搭配「G4」的 G-code 來延遲開關的動作,不然會因切換速度太快,而讓雷射無法正常的開關,雷射完只看到一片白或是一片黑。為了解決原作者 Laser ON command 和 Laser OFF command 無法放多道 G-code 的問題,我將程式修改了一下,新增了一個「Laser Power ON Delay」的參數,當設定值大於 0 (ms) 時,自動在雷射開關的 G-code 加上「G4」的 G-code。底下是我改過的設定畫面:


以圖片中修改過的程式來說明:

  • Export directory : PNG 檔案、預覽的圖片檔案和 G-code 檔案匯出儲存的目錄。
  • File Name : 輸出儲存的檔名主要部份,如果設為「test」,應該會自動輸出「test_xxx.png」、「test_xxx_xxx_gcode.txt」和「test_xxx_xxx_preview.png」。
    如果用的是作者原始的版本,File Name 不用加附檔名,G-code 會使用 .txt 的檔名。
    因為我習慣用 Repetier-Host 來操作雷射,它預設會顯示 *.gcode ,而不是 *.txt,所以個人修改過的版本可以在這個欄位中的檔名加上附檔名,例如:test.gcode,程式會自動解析主檔名和附檔名,最後輸出:「test_xxx.png」、「test_xxx_xxx.gcode」和「test_xxx_xxx_preview.png」三個檔案。
  • 檔名加入號碼字根 : 啟用這個選項,發現檔名已存在的話,會自動加上編號,可以避免舊的檔案被覆蓋。
  • Replace transparency with : 用來指定不打雷射的顏色是什麼。只有白色或黑色可以選擇。
  • Resolution : 設定解析度,最大是 10,也就是在 1mm 中放十條線。
  • Color to Grayscale conversion、B/W conversion algorithm、B/W threshold 和 Grayscale resolution 都是有關如何將彩色的圖轉為只有黑、白兩色的設定。
    以「B/W conversion algorithm」來說,如果要刻泡棉印章,可能要設「B/W fixed threshold」,才不會有一些點沒打到雷射,變成花花的。
  • Laser Mini Power : 當用使用灰階的演算法來輸出圖片時,最小的雷射強度。這個參數是改過的程式才有的功能,主要是我的用的雷射只有 500mW,避免因為雷射太弱,訂一個最小的 PWM 值,再依比例去換算適合的雷射強度。如果設為 128,表示在灰階的圖中,打出的雷射強度使用 128~255。所以,依作者的原始設計的話,這個參數就設為「0」,也就是使用 0~255。。
  • Engraving speed : 雷射電源打開時移動的速度。這 extentions 裡,雷射電源打開時用「G1」的 G-code 在控制馬達移動;而關閉雷射時用「G0」的 G-code 在移動馬達,移動時用的是機器預設的速度,我新增了一個名為「Travel Speed」的參數,可以自訂不打雷射時的移動速度。
  • Homing ? : 用來設定是否加入回到歸零點的指令。因為這個 extension 並無法讓我們設定 Z 軸的起啟高度,所以我都選「No Homing」,在開始送 G-code 雷射物品前,自己手動操作機器,將 Z 軸高度調到會適的位置。
  • Laser ON command : 打開雷射電源的 G-code。我的機器搭配 RAMPS 1.4 的 D6 腳位來控制 MOSFET,所以設為「M42 P06 S255」。
    要注意的是:如果使用「B/W conversion algorithm」選項中使用灰階「Grayscale」的功能,這邊應該設為「M42 P06」,不要加入控制雷射 PWM 大小的「S」,程式會自動幫忙加上去。
  • Laser OFF command : 關閉雷射電源的 G-code。我的是用「M42 P06 S0」。
  • Laser Power ON Delay : 打開雷射電源後要暫停久(單為用 ms)。這個參數是改過的程式才有的,我的機器設為 10 ms 就可以正常的控制雷射電源。

相關的參數設完以後,我們就可以按「套用」來輸出 G-code。

輸出完的 G-code 就可以交由雷雕/切機的控制軟體開啟並執行了。執行 G-code 前可別忘了要先將雷射所在的 Z 軸擡高至最合適的位置。


FAQ

  • Q : 設定用灰階,卻變一片黑?
    A : 試著降低解析度看看,例如:設為 5 pixel/mm。


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※別忘了護目鏡及其它防護作業※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

相關文章




8 則留言:

  1. 您好
    請教一個問題
    我用您的方法但轉出路徑有問題
    例如:大寫的O專出路徑會變成整個圓形,中間的圓也雷雕了,要如何設定呢?
    謝謝

    回覆刪除
  2. 您好!依照本文,下載您修改後的版本,發現,Travel Speed沒有作用,打開py檔才發現,程式碼被用#Mark掉了,不知是何原因?

    回覆刪除
    回覆
    1. 您好:
      原作者的語法是將速度的語法加在每一個 G0 or G1 後面,因為覺得這樣好繁複,既然不會變速,我索性它放在最前面執行一次就好,這樣子檔案可以小很多(龜毛的個性使然)。照說,設了速度應該還是有作用的。

      刪除
  3. 謝謝你的回覆,那有可能是機器的關係,我把程式碼改回來後,也就是把速度的語法加在每一個 G0 後面,就可以在不雷雕時提昇速度了。而您原本的設法,也就是在一開始就執行 G00 F1200,在後面的程式碼中沒有F1200,我的機器卻是依照有雷射時的慢速度在前進。

    回覆刪除
  4. 老師您好 想請教一下把圖片轉換成G code的是運用哪些原理呢?

    回覆刪除
    回覆
    1. 您好:
      程式並不是我寫的, 如果您對程式語言(Python)有興趣, 原理可以參考 下載回去的檔案, 裡面的 source code 是一般文字格式。

      刪除
  5. 非常謝謝老師的文章和程式 讓我在雷雕機的操作上更加方便省事了~
    順帶一提 目前這個擴充工具 在inkscape 1.0版 是失效的喔~

    回覆刪除
    回覆
    1. 您好, Inkscape 1.0 中的 Python 改用 3.x 版, 應該不少 extensions 要改寫了, 當然也包括 Raster2Laser, 不過原作者似乎很久沒更新了。

      刪除

 
雄::gsyan © 2009. Design by Pocket