第一次發(fā)帖...之前上論壇都是查資料的,發(fā)現(xiàn)gcode這一塊資料比較少
先說一下Gcode:
Gcode在工業(yè)控制上用的很多,是一種通用的控制指令,數(shù)控機(jī)床上經(jīng)常用
在我diy雕刻機(jī)(打印機(jī)之類的)的時候要用到,遇到不少問題,研究了好幾天把問題基本都解決了。
發(fā)個帖子,為以后需要用到的人提供點幫助。
arduino上,我找到的有兩種Gcode編譯器,GRBL和gcode_interpreter。
GRBL限制比較大,用的是arv的C語言寫的,有目前較新的版本是0.8c,能用在328P的芯片上(UNO),其 他的芯片能用的不多,MEGA2560就不行了。缺點是安裝麻煩,需要用到winavr生成hex文件,再用XLoader上傳到UNO上。優(yōu)點是效率 高,功能強(qiáng)大,可設(shè)置加速度等。
gcode_interpreter,優(yōu)點是大多arduino都能用,用的是arduino語言寫的,只要下載好代碼,用arduino的IDE編譯下載到板上就能用了。
先說簡單的gcode_interpreter,
http://sourceforge.net/projects/cncarduino/ 這是下載地址。
一共有5個文件,我們主要看的是_init.ino文件,這個文件保存的是我們要用的PIN的定義
#define X_STEP_PIN 2
#define X_DIR_PIN 3
#define X_ENABLE_PIN 4
這段代碼設(shè)置了2,3,4管腳控制一個步進(jìn)電機(jī),2用來輸出一次脈沖,讓步進(jìn)電機(jī)走一步,3用來控制方向,4用來開關(guān)步進(jìn)電機(jī)(這個腳可以懸空不接,實際 上控制步進(jìn)電機(jī)的就是2根線step和dir,最后還有一根地線GND)。這個地方涉及到步進(jìn)電機(jī)的驅(qū)動問題,這個需要用到驅(qū)動板,不能用傳統(tǒng)的 arduino控制步進(jìn)電機(jī)的方法(除非改程序),這里推薦使用easydriver(X寶有,比較貴,但是比工業(yè)用的便宜吧)。Y_*,Z_*幾個管腳 也是一樣的,看你用幾個軸了。我們完全可以按照上面的默認(rèn)管腳接線,不用改代碼....
接下來需要設(shè)置的就是
#define X_STEPS_PER_INCH 400
#define X_STEPS_PER_MM 16.0
#define X_MOTOR_STEPS 200
這個是設(shè)置步進(jìn)電機(jī)屬性的代碼,#define X_STEPS_PER_INCH 400 是X軸轉(zhuǎn)動400步,行程1英尺,
#define X_STEPS_PER_MM 16.0是16步1毫米的意思
#define X_MOTOR_STEPS 200 是步進(jìn)電機(jī)200步走完一圈的意思(這個跟步進(jìn)電機(jī)的型號有關(guān),一般都是200)
設(shè)置完,下載到arduino里面就能用了。X,Z軸的設(shè)置和X的一樣。
可以在arduino的串口監(jiān)視器里面輸入 “X10” 不包括引號,點擊發(fā)送,要是安裝成功 你會發(fā)現(xiàn)X軸的電機(jī)走了10英尺(默認(rèn)是以英尺為單位)!癤-10”X軸的電機(jī)反方向走10英尺。
附一個我自己做的gcode控制畫圖的視頻鏈接.視頻中我用的是mega2560,gcode_interpreter。
http://pan.baidu.com/share/link?shareid=441374&uk=755352556
GRBL
注意:這個grbl官方說只能在 168 和 328P 的芯片上使用,168由于芯片空間較小,只用用0.51版的grbl。推薦用UNO r3
1、到
https://github.com/grbl/grbl下載grbl的源代碼,解壓到一個文件夾中。
2、下載安裝winavr,用grbl 的0.7版以上的,注意winavr一定要是20100110版的(比較難下2007版的居多,我把它上傳到網(wǎng)盤里了供大家方便下 載:
http://pan.baidu.com/share/link?shareid=445050&uk=755352556,),不然編譯 會出錯,在arduino運行的時候會顯示EEPROM讀取錯誤,不能在arduino斷電以后保存設(shè)置(程序利用EEPROM保存相關(guān)設(shè) 置,gcode_interpreter沒有這個設(shè)置,要改設(shè)置只能改代碼)
3、打開winavr的notepad,新建空工程,將grbl的源代碼全部添加到工程里。
4、進(jìn)行相關(guān)管腳的設(shè)置,在config.h文件里面,在添加的文件里面找到config.h,雙擊打開修改
5、設(shè)置方法
#define X_STEP_BIT 2 // pin2
#define Y_STEP_BIT 3
#define Z_STEP_BIT 4
#define X_DIRECTION_BIT 5
#define Y_DIRECTION_BIT 6
#define Z_DIRECTION_BIT 7
看到這幾句宏定義很熟悉吧,和前面的相似,不說了,其實完全可以不用改,按官方的設(shè)置接線就行,省了不少麻煩
6、在winavr的 programmers notepad 菜單欄點擊tools->make all,將代碼編譯,生成hex文件(就在代碼所在的文件夾)。
名字叫g(shù)rbl.hex
7、用XLoader->下載地址: xloader.russemotto點com 把hex文件下載到arduino上
8、安裝完成,在arduino的IDE界面打開串口監(jiān)視器,就會返回信息“ Grbl 0.8c '$' *****”(**里面的字我忘了)說明安裝成功了。
輸入“$”,發(fā)送,就會顯示菜單,輸入“$$”發(fā)送,就會顯示設(shè)置頁面,比如"$0=500"發(fā)送,就會將X軸電機(jī)設(shè)置為500步每毫米。更多的設(shè)置大家可以自己在軟件里看,每條指令后面還是會有解釋的,相信大家都能看懂。
希望對需要的人能有所幫助吧,原來在弄這兩個的時候沒什么頭緒,國內(nèi)網(wǎng)站幾乎查不到資料,辛苦好幾天總結(jié)出來的經(jīng)驗,其中可能會有我理解不對的地方,但是兩個gcode編譯器我都是親自測試能用的。