• COSPLAY 3D 建模
  • #maker+t=market
  • 3D列印服務
  • 1
  • 2
  • 3

DIY CNC Machine.Taipei 造訪社團 » Z軸

原文網址 石小川
2019-08-14 13:40:17

淺談 G-Code 產生器

窮忙一陣子後今天終於可偷閒寫一下文章跟大家分享一下上回談的G-Code產生器了. 我用最簡單的CNC圓形切割來圖文解釋一下, 相信應該可以很快了解其中運作原理.

先解釋一下Entity名詞, Entity在CAD工程上是實體的意思, AutoCAD出圖後的元件我們稱為Entity, 如圓弧, 直線, 雲行線等皆是實體. 上回提過由DWG/DXF檔案 經過程式剖析分解後產生一連串Entity的資料, 如圖一, 是圓的Entity, 將它送入GCodeCircle(Entity) 函式就可很快地產生切圓的G-Code, 下面是GCodeCircle(Entity)程式範例:

//-------------------------------------------------------------------------

public string GCodeCircle(EntityRecord entityrecord)

{

string gCode = "";

Point3D center = new Point3D(entityrecord.Circle.Center.X, entityrecord.Circle.Center.Y, entityrecord.Circle.Center.Z);

double radius = entityrecord.Circle.Radius;

Point3D point = new Point3D(0, 0, 0);

point.X = center.X + radius;

point.Y = center.Y;

gCode += "G00 X" + (point.X - center.X).ToString("#0.0000") + " " + "Y"+ (point.Y - center.Y).ToString("#0.0000") + " " + "Z5.0000"+ "\n";

//此段是為了說明已經簡化許多參數

gCode += "G01" + " " + "Z-1.0000"+ " " + "F200"+ "\n";

gCode += "G02" + " " + "I-"+ radius.ToString("#0.0000");

return gCode;

}

圖二是產生的G-Code, 可直接送去機器做切割一個100mm的正圓.

另外之前有位朋友問我5軸聯動切向跟隨實作問題, 我列出部分程式碼給您參考一下, 基本上我大部分實作都是圓弧直線插補ArcLine()就可完成.

//---------------------------------------------------------------------------

//圓弧直線跟隨插補

//pos : Z軸直線運動位置

//axisNum = 3, 圓弧+直線運動軸數 X Y Z

public boolArcLine(int startx, int starty, int endx, int endy, int cx, intcy, int[] pos, int[] axis, int dir = 0, int axisNum = 3, double acc = 10, doubletgvel = 100, double endvel = 0, double feedRate = 1.0, int wait = 1, intfifo = (int)FIFO_SEL.SEL_PFIFO1, boolbAbs = true)

{

int st;

if(axisNum < 2 || axisNum > MAX_NAXIS)

return false;

//清空PFIFO

st = IMC_Pkg.PKG_IMC_PFIFOclear(gHandle, fifo);

if(st == 0)

return false;

//設置加速度和進給率

if(SetPFIFO(acc, feedRate, fifo) == false)

return false;

//映射軸

st = IMC_Pkg.PKG_IMC_AxisMap(gHandle, axis, axisNum, fifo);

if(st == 0)

return false;

double dx,dy;

dx = startx - cx;

dy = starty - cy;

double r1 = Math.Sqrt(dx * dx + dy * dy);

dx = endx - cx;

dy = endy - cy;

double r2 = Math.Sqrt(dx * dx + dy * dy);

//判斷, 如果起點到圓心距離r1 != 終點到圓心距離r2 表示圓弧軌跡不正確, 跳出不執行

if(r1 != r2)

return false;

//由當前位置移動到指定位置

if(bAbs) //絕對位置

st = IMC_Pkg.PKG_IMC_ArcLine_Pos(gHandle, endx, endy, cx, cy, dir, pos, axisNum - 2, tgvel, endvel, wait, fifo); //絕對位置

else

st = IMC_Pkg.PKG_IMC_ArcLine_Dist(gHandle, endx, endy, cx, cy, dir, pos, axisNum - 2, tgvel, endvel, wait, fifo); //相對位置

if(st == 0)

return false;

return true;

}

圖三是我執行雷射切割的機台, 雷射頭是5.5W藍光雷射, 下回再分享此G-Code雷射切割成果.

p.s. 在我的APP程式直接畫圖我是直接呼叫運動卡驅動CNC, 沒有經過G-Code產生器這道手續, 加快CNC處理速度, 除非是匯入DWG/DXF檔案才會呼叫G-Code 產生器。

黃小法
2019-08-14 14:25:41

這個有開源?

Jade Yang
2019-08-14 15:07:20

無私 , 給你讚。字串相加可改用 $”{}”你以後看才不會累


原文網址 陳俊成
2019-06-18 20:34:22

請問各位先進

要如何在Z軸上升的時候或是下降的時候

同時驅動RELAY??

因為主軸太大隻 有點重.....

方明亮
2019-06-18 21:01:52

應該是,開電同時啟動吧

陳俊成
2019-06-18 21:41:14

Z軸馬達正逆轉分別驅動不同relay

便宜十塊錢
2019-06-19 07:18:58

有些工作機主軸太重,都會拉配重塊,類似電梯一樣,減輕伺服煞不住


原文網址 石小川
2019-05-17 19:40:20

應用攝影機對CNC自動對刀程式的設計

對於非侵入性的偵測來說,我首推影像辨識技術,因為攝像頭價格越來越便宜,如果善用一些數位演算法的話,其實在CNC機台上可以做很多事,活用的話甚至可媲美幾百萬的進口機器。 我寫的這套VT軟體是結合了C++/C#/Qt + Mach3 + OpenCV和一些演算法來完成Z軸影像自動對刀功能,我是利用雷射來定位工件,其中攝像頭畸變須要校準才能量測準確,精密度我抓小數點第三位(單位mm)。 其它像工件尺寸量測、3D工件掃描建模直接出圖、或是機台要做手機拆解機器…等原理皆一樣,如果要做到物件直間掃描再CNC複製, 應該可挑戰一下,這就留給有興趣的人想想實作了, 先寫到這裡,祝各位好友假日愉快^^

林志強
2019-05-17 19:56:00

宜震陳
2019-05-17 20:00:39

已跪

辛育全
2019-05-17 22:20:29

哥 鏡頭可以考慮換焦段大一點的變異比較小,當然鏡頭品牌品質有差,且焦段大也不用看太多其他地方,可以增加你的解析,規格選一下可以不用校正就不要校正,然後改成背光,因為用環境光你需要限制客戶背景!


原文網址 Michael Lin
2019-04-29 11:25:34

DIY 臥式CNC

原來有DIY做立式的CNC,但是很多人說想要做榫接...

可是做榫接的話,有時候需要把材料立起來,Z軸無法做那麼高,就算做了剛性也會不夠...

所以乾脆打掉重練,設計台臥式的CNC好了...

# 小間製作所


原文網址 李派克
2019-04-14 09:33:43

結果⋯⋯女兒説⋯⋯月亮咧!?
只好再花3分鐘畫圖,3分鐘跑CAM
10分鐘上料⋯⋯2分鐘銑月亮⋯⋯

這次改的X軸和Z軸,跑起來覚得穏定很多⋯⋯聲音也完全不同⋯⋯
尺寸也很不錯!
一整個很過癮!

黃小法
2019-04-14 09:39:28

好的,我等等過去取


原文網址 李派克
2019-03-29 13:59:47

Z軸⋯⋯這樣應該夠了吧!


原文網址 李派克
2019-03-25 16:21:26

一個一個來⋯⋯
馬達座ok⋯⋯

再來搞定z軸⋯⋯


原文網址 Cheng Chris
2018-12-26 22:01:20

想請問各位對於機台上的z軸深度正不正常大家都怎麼做測試的?


原文網址 石小川
2018-11-27 16:28:55

機器視覺應用在CNC介紹

機器視覺在工業4.0的應用非常廣泛,例如樣本比對、良率偵測、工件大小量測、微生物標定…..等,如果結合人工智慧資料分析就是一套很完整的專家系統了。

圖中軟體是我將紅血球/白血球辨識及標定的核心程式改寫成簡單的CNC自動對刀及工件偵測系統,理論上量測精度可控制在1um(10^-6m)以內,不過我的CNC機台螺桿可沒這麼精密,所以我把它控制在浮點數第3位即可,整體而言精密度與攝像頭、機台、都有關係,端看應用者的要求而調整軟硬體。

自動對刀是用演算法找出工件中心點,而自動對焦是採用Z軸移動加上演算法達成,另外比例尺可配合3軸移動及像素自動求得,一旦中心點座標找出來就很容易結合Mach3或PLC將主軸定位在工件上。值得一提的是打光技術在影像辨識也非常重要,打光打得好辨識率就很好,演算法就可精簡些,其餘利用影像偵測工作臺大小及影像多軸限位開關技巧和Z軸單鏡頭工件深度偵測技巧,這些功能我就留在下回再演示了(因為前陣子瘋選舉我還沒寫好Demo程式, 哈哈… 抱歉了 ^^”)。

黃小法
2018-11-27 17:19:17

比例是手動拿尺先抓出比例嗎?立體的東西高度不同如何量測?這是不是中心點跟滑鼠之間針對每個像素點分析抓出分際點?

李派克
2018-11-28 15:41:40

其實我也是是用CCD來對刀吔,只是因為CCD不防水所以常拆,每次都要改變OFFSET就沒做圖形偵測了⋯⋯不過你的CCD也太威了,我還只用WEBCAM而已,我是掛在raspberry pi上,就直接可以做成自己機子的HMI了

Allen Chang
2018-12-02 12:32:06

之前在工業手臂組裝工件做過類似功能,
治具安裝+-10mm即可完成治具架設
https://www.youtube.com/watch?v=Drkw6hwD-iE

Allen Chang
2018-12-02 12:34:19


原文網址 Devon Hsin
2018-09-01 20:26:02

請教一下各位大大
機器裝一般主軸、變頻器
能攻牙嗎?
(不知道轉速和Z軸的加速度會不會同步……)

Michael Lin
2018-09-01 20:29:32

裝個伸縮攻牙刀柄就可以了

Devon Hsin
2018-09-01 20:30:31

原來如此!所以就不用管同步,只管轉幾圈就好囉?

謝小進
2018-09-01 20:30:32

神回覆了!
跪拜中

Michael Lin
2018-09-01 20:32:20

夏瑀
2018-09-01 20:34:10

轉速進給,不同步,輕則亂牙,重則斷刀,裝彈性刀把,如果刀把拉長嚴重,代表進給轉速不同步

Devon Hsin
2018-09-01 20:36:08

再請教一下,一般攻牙機該不會也是採用一樣的手段?沒用過攻牙機

Michael Lin
2018-09-01 20:37:29

氣動的與電動的原理不一樣... 看設備,每種的設計理念都有所不同...

夏瑀
2018-09-01 20:39:09

攻牙機無進給問題,他的Z軸是自由的,轉幾圈進多少都是由牙刀決定

Devon Hsin
2018-09-01 21:07:04

查了一下,柄徑至少16mm,ER-11哭哭

Devon Hsin
2018-09-01 21:08:19

ER11裝延長杆接ER16再裝伸縮攻牙刀柄,轉起來應該會很恐怖XD

夏瑀
2018-09-01 21:22:08

還有一個要考慮的 你的主軸馬力夠大嗎

Devon Hsin
2018-09-01 21:23:18

假如預先鑽好孔,M6攻10mm深,800W夠用嗎?

夏瑀
2018-09-01 21:31:39

我不確定哀,對主軸沒研究,

Blue Hwang
2018-09-02 01:21:27

你問的這種方式進給跟轉速同步的方式稱為「剛性攻牙」,兩者需要配合好不然tap會斷掉
為了避免兩者不同步於是有了「彈性攻牙器」也就是上面前輩說明的方式

以速度來講剛性攻牙快很多

Blue Hwang
2018-09-02 01:32:05

2:10秒左右攻M8的牙就是剛性攻牙,直上直下https://youtu.be/-fcWdMVVbEs

Michael Lin
2018-09-02 07:32:20

800W主軸到低轉速,扭力可能不夠... 如果只是要攻牙,可能拿電動螺絲起子較快...

林志強
2018-09-02 10:56:19

一般
的主軸不建議
要用伺服馬達主軸
加上
你的
控制器要有剛性攻牙的功能
這樣會比較好
如過硬要用
G碼程式去寫
風險會比較高
就算是
用那種
伸縮刀柄也是有限的
以上是
小弟個人的經驗分享
希望對你有幫助

林志強
2018-09-02 11:01:00

夏瑀
正解

林志強
2018-09-02 11:01:55

回答的很漂亮
簡單
易懂

林志強
2018-09-02 11:09:50

電動攻牙機
氣動攻牙機
垂直方向都是活動的z軸是自由的
原理都一樣吧

Allen Chang
2018-09-04 14:45:40

買銑牙刀把,用銑的

Devon Hsin
2018-09-04 14:58:32

這招好像只能用在大口徑對吧?

Allen Chang
2018-09-04 14:59:11

M幾的

Devon Hsin
2018-09-04 15:00:25

我大部分的需求是M8以下^^"

Allen Chang
2018-09-04 15:01:05

Devon Hsin
2018-09-04 15:01:18

管牙那種好像都是用你說的這招跑螺旋對吧?而且內外牙都可以做

Devon Hsin
2018-09-04 15:03:07

太帥了,這個好耶

Allen Chang
2018-09-04 15:03:09

嗯,銑牙刀,內外牙都可以做

Allen Chang
2018-09-04 15:09:28

呃!這個主軸跟進給(Z及XY)也要同步,牙才不會變形太多

Devon Hsin
2018-09-04 15:10:40

是喔!我以為是單純的側向雕刻

Allen Chang
2018-09-04 15:11:14

自製伸縮攻牙治具,汪老師有做過車床的

林志強
2018-09-04 17:41:40

用銑的實用多了

Devon Hsin
2018-09-04 19:10:02

對呀,不管什麼口徑、牙距、內外牙,都可以一刀包辦

林志強
2018-09-04 21:32:09

我也想來試試

Devon Hsin
2018-09-04 21:32:43

可惡…我的手也有點滑