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