跳到主要內容

雷射切割 雕刻機 二 架構

整個雷射切割機是一個完整個的系統,功能是[將電腦上的圖形,刻在目標物上]
 分成如下三個動作流程

1.圖形轉換成G Code
2.將G Code 傳送到Arduino上
3.Arduino 將G Code轉換成步進馬達訊號與雷射開關的訊號。

我們先著墨在2與3 Gcode到馬達過程

        你一定很好奇 1.什麼是G Code   2.為什麼是G Code。
     什麼是G Code,這裡簡單說明,詳細可以在GOOGLE上關鍵字G Code,G Code是玩機器人的入門必備知識可以不用完全懂內容,但最少要知道他的意涵。

       G-code是一行一行的文字簡單指令碼,虛擬指令碼用中文說類似如下
移動到座標X01 , Y03 ,Z05
啟動雷射
移動到座標X05 , Y03 ,Z05
關閉雷射

在GCode的文件中我們會看到類似如下碼,(單存範例非正確碼)
G00 X01,Y03,Z05
G99
G01 X05 , Y03 ,Z05
G98

以上我們看到四行,代表四個指令,過程中電腦需要傳送四次指令,Arduino也需要解譯四次指令:
例如動作流程如下
1.由電腦(手機平板)透過串列傳輸 傳送一行指令 傳送至Arduino,並等待Arduino 完成動作。
2.Arduino 接收到命令時,開始計算需要讓步進馬達如何轉動,開始打出訊號讓馬達轉動,或啟動\關閉雷射。
3.電腦判斷指令完成再度回到 第一步驟 直到所有指令都執行完成

電腦端這裡的動作還蠻單存,只要將G Code一行一行傳送即可,Arduino端解譯Gcdoe則需要比較多的學問

       步進馬達的轉動需要考慮到慣性的問題,例如急轉,急回,若超過步進馬達的扭力就會產生掉步的狀況。
       在圓弧動作上若兩個馬達配合的好真圓度會非常好,改善鋸齒,這些物理狀況都需要考慮實在不是一門簡單的學問。
       OPNE SOURCE的力量已由世界上的一些天才透過演算法解決這些問題,並且非常佛心的將他們的原始碼無償的提供於網路給予下載,GRBL就是其中之一,就是我們即將使用的主角, GRBL是一套專門解GCode的OPEN SOURCE專案,其內容已經幫我們優化了以上說的那些問題還有更多細膩的優化,更多資料可以看
人體自動化實驗室(HAL) 這裡解釋得很好,感恩


     為什麼是G Code想要自訂X Code ,YCode可以嗎?答案當然可以,這裡就需要扯以扯通訊協定與工程這回事,通常在工程界甚少由一個人完成一整個系統(除非系統很小),所以通常會將系統簡單劃分[模組](分工)。
      各模組之間要合作無間,之間的通訊協定(Potorocol),一開始就要定義好,且謹慎並且嚴格遵守,通訊協定就是彼此之間的通訊橋梁,所以定義通訊協定將會花上很長的時間,將未來遇到的狀況都一併考慮進去,可以擴充,可重用,Gcode就是一個歷史悠久經過時間考驗的標準協定,幾乎已經成為一種機器人標準語言,所以大家也就直接使用Gcode可以減少很多開發上的時間與困難。
    曾經我覺得這整個雕刻機專案都是我一個人開發,為什麼我還需要跟人家的通訊協定,我自己搞一個協定不是更簡單,確實是會更簡單,但是這樣就忽略了標準帶來的另外一個好處[共用],這世界上有很多Maker 大家都遵循Gcode的標準做了很多工具,例如3d印表機,CNC雕刻機,GPS地板繪圖機,因為有著相同的協定,我們可以任意的與相同通訊協定 間的軟體、硬體、韌體互相共用。


例如 將解GCode的方式改成多軸機器手臂,而不是XY軸步進馬達,電腦端這裡的軟體完全不用修改就可以延用,減少非常多的開發時間。


例如 自行開發手機板的Gcode傳輸器,就可以把我們的雕刻機變成手機版本,而不需要一台大電腦才可以執行,想想看拍張照就燒出圖案多酷。

且Arduino端都不用修改,只需要撰寫手機端並且遵循通訊協定即可。



      所以遵循通訊協定好處很多,非常值得了解一下Gcode,市面上大部分的切割機,CNC,3d印表機,機器手臂都是使用G CODE。



 

 













留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

        Raspberry PI 3 終於內建藍牙與網路晶片 這個晶片有點強大,可以 同時 讓Wifi 與 BLE 和 SPP (RF Com) 同時繁忙通訊都沒有問題。        Raspberry PI 如果是當成藍牙Client 連結身邊的BLE裝置,例如ibeancon、智慧手環、智慧手錶,那只要使用簡單hcitool搭配hciconfig 指令就可以達到將資料要回來,在網路關鍵字一下就可以找到如何使用hcitool 連線並要得資料。      手機要與 Raspberry PI連線的方法可以透過,wifi 或是藍牙,但是操作上使用藍牙比較直覺與簡易。但是要讓手機連線 Raspberry PI, Raspberry PI上就需要將藍牙裝置當成Server,這件事情就需要一些程式碼上的撰寫。     現在的文件說到關於如何將 Raspberry PI藍牙裝置當成Server的文章並不太多,開發上總感覺困難重重,我也是在這裡停滯了好多天,不斷的搜尋解決方法,因為通起來了,資料來自網路所以也回饋給網路,讓下一個使用者減少這類問題的負擔。 不過目前這個方法未來開發資源越來越齊備可能不敷使用,但至少現在是可用的備案。     網路上搜尋之後,整體套件如下 藍牙硬體<== BlueZ <== Nodejs(Bleno) <== Node Ble <==  Node  Socket  <==你的程式 我們發現藍牙要動起來通常會倚賴BlueZ的套件,好在的是最新的版作業系統已經將BlueZ提升到5.23,支援BLE了。 所以安裝BlueZ套件這件事情就可以省略。        接著安裝 Node 環境 , http://blog.itist.tw/2016/04/using-raspberry-pi-3-to-build-eddystone-beacons-with-raspbian-jessie.html 於這篇網址提到安裝Node的快速方法,如果隨著時間推移太舊或是失效,在搜尋一下如何安裝Node即可解決。 題外話:Linux上開發要有所體悟,所有的架構都是在變動的,隨著版本的變動舊的API可能就會改變或是失效,期待不變與或是統一開發方式都是不太切合

nvidia jetson nano 開啟VNC步驟

sudo apt-get update sudo apt-get install nano sudo nano /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml Add this key:     <key name='enabled' type='b'>       <summary>Enable remote access to the desktop</summary>       <description>         If true, allows remote access to the desktop via the RFB         protocol. Users on remote machines may then connect to the         desktop using a VNC viewer.       </description>       <default>false</default>     </key> sudo glib-compile-schemas /usr/share/glib-2.0/schemas gsettings set org.gnome.Vino enabled true gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false # Reboot the system so that the settings take effect sudo reboot /usr/lib/vino/vino-server

小四軸飛行器:驅動馬達

等待陀螺儀 的這段時間馬達先來了,所以我們開始測試馬達驅動系統飛行器的馬達是透過 Arduino 發出 PWM 訊號,傳送給驅動器 ( 小型為 MOS FET ,大型為電調 ) 控制馬達的轉速,達到控制飛行器。為了測試我們的驅動電路,我們先寫一個簡單的 PWM 控制,讓 PWM 輸出值越來越大,到大極限的時候,又慢慢地變小,如果我們的驅動電路可以正常運作時我們應該可以聽到馬達的聲音漸漸地變大,然後漸漸地變小。 測試馬達之前我們先學習 Arduino 的 PWM ,學習的過程當中我參考了下面的網站 http://coopermaa2nd.blogspot.tw/2011/07/6-pwm.html http://coopermaa2nd.blogspot.tw/2011/07/61-pwm-modes-part1.html 感謝 Cooper Maa 。       一開始我們先使用一個 LED 正腳接再 PWM Nano 的 D3 ,然後負腳接到 GND ,接著寫讓 PWM 變大變小的程式 然後又找到如下網站 葉難 :Arduino 練習 : 呼吸燈 http://yehnan.blogspot.tw/2012/02/arduino_16.html 使用網站上的程式碼,我們可以看到燈慢慢亮起來,又慢慢的暗下去, 如果看到這樣的結果代表我們的 PWM 範例程是可以動作。 當呼吸燈完成了,代表我們的程式碼是沒有問題的 ( 如果有問題就是電路的問題 ) ,接下來只要把 LED 腳換成馬達控制腳,就可以測試我們的驅動。 查詢了一下 SI2302 ,由下表可以知道為什麼選用這個 IC ,這張表是在某個賣場抓到的 http://taiwan.tmall.com/item/20689248199.htm? 型號 電流 電壓 標示 極性 封裝 2SK3018 100MA 30V KN N 通道 SOT23 2N70