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

DIY CNC Machine.Taipei 造訪社團 » USB

原文網址 Shelandy Ting
2020-03-04 15:02:47

某空間有人留下小型CNC雕刻機,但是沒有控制器,想用最少的金錢讓他動起來。聽說用印表機埠的控制會比用usb好。我可以找到一個有parallel port 的舊電腦(或是arduino 樹莓派之類的單板機)來接控制卡。請問
*是去對岸買parallel port 的GRBL控制卡:CNC(X/Y/spindel +x/y/z 限位 ) 接 控制卡 接 電腦 印表機埠 這樣就硬體可以動了嗎?(還是有其他要接的硬體?)
*採購卡時有沒有啥要注意的地方(早期某個設計有雷,或是某個卡便宜又大碗...
*有沒有人閒置控制卡要出清的?


原文網址 張博翔
2019-12-07 19:31:03

最近換了壞掉的LPT port 的四軸卡,改用USB的軸卡,我使用5相步進馬達,

MACH3的軟體,安裝後3軸卻只能單向旋轉?改變DIR LowActive也沒有解決這個問題。

不知道各位先進有無遇到這同樣的問題嗎?希望能夠獲得解決。

Pey Chou
2019-12-07 22:20:14

隨機搜了國外文章

有案例是提到-USB軸卡驅動電流不足
請確認軸卡電流供應要足夠
或 更換其它電路設計版本的軸卡
或 提供功率足瓦的電源供應器
或 單獨給軸卡一組獨立電供(不要與馬達共用 ? )

詹 政運
2019-12-07 23:08:01

你把步進驅動器的型號PO上來 五項的步進馬達我有買過他的輸入訊號不是用這種方式

詹 政運
2019-12-08 11:00:40

一般的連結方式方式就是第一張圖這一個後面正反轉要變成後面這兩張圖

詹 政運
2019-12-08 11:02:14

詹 政運
2019-12-08 13:14:29

或者是淘寶也有在賣

張博翔
2019-12-09 10:52:56

感謝你提供這方向的思考,你是用淘寶的零件解決這個問題的嗎?


原文網址 石小川
2019-10-03 19:28:13

使用Python語言做自動控制的方法 - I 軟體篇

[語法簡單明瞭]

Python語法簡單易學,最重要的是還有大量功能強大的免費模組可下載,其強大的應用層面已經發展到令人不可忽視的重要地位,甚至NASA也拿來當作航太人機介面的控制語言。早期接的專案我都是用Assembly、C、C++、C#等設計自動控制系統,這幾年我很多是改用Python來撰寫,好處是取得系統傳回的資料後,可很容易且快速的結合各種海量模組演算法發展出很專業的人工智慧機器。

[Python是跨平台語言]

Python本身沒有支援特定硬體控制的功能,也正因為如此它才能夠跨平台,但這不是原罪,相反的卻是它的優點,換句話說,在x86、Arm、Arduino、PC、手機或平板等不同的作業系統環境下,相同的程式皆可以很容易互相移植過去正常執行,這 print('免費資源 + 免費的模組 + 簡單易學') 根本是一場世界革命,能不紅嗎!

綜合以上講了一大堆,無非就是要說服工程師們是該改變自已接受世界脈動的時候了,我也不例外,以此共勉之!

[軟體開發]

接下來進入主題談論如何用Python開發一個多軸的CNC平台,會舉這個CNC專題當作例子是因為在我眼裡,CNC其實就是一個機器人,我的經驗是~只要搞懂CNC軟硬體知識後,無論是自駕車、四軸無人機或是工具機皆是囊中物,至於想要用它做些甚麼,端看你無限的想像力而定!

因為Python沒有直接存取硬體的介面,我的方法是用Python當作主程式,將底層存取硬體的API程式(動態連結程式庫 DLL)封裝成Python可調用的格式即可,如此一來多年使用C++/C#寫的程式庫都可引用了。因為程式很長, 為免洗板我簡略敘說過程如下:

(A). 封裝DLL程式庫成PyCNC.py 模組,其中 class __IMC_Pkg()就是封裝成類別的名稱, 將來Python與機器溝通的介面就是依靠這項。

#---------------------------------------------------------------------------

# 這是被呼叫的模組 : PyCNC.py

#---------------------------------------------------------------------------

# 需引用ctypes

import ctypes

import ctypes.wintypes

#------------------------------------------------------------------------------

class __IMC_Pkg():

def __init__(self):

self.ptr = ctypes.WinDLL('IMC_Pkg.dll') # _stdcall

#---------------------------------------------------------------------------

def Open(self, netcardId, imcId):

self.ptr.PKG_IMC_Open.argtypes = (ctypes.c_int, ctypes.c_int)

self.ptr.PKG_IMC_Open.restype = ctypes.POINTER(ctypes.c_voidp)

return self.ptr.PKG_IMC_Open(netcardId, imcId) #---------------------------------------------------------------------------

def Close(self, handle):

self.ptr.PKG_IMC_Close.argtypes = (ctypes.POINTER(ctypes.c_voidp), )

self.ptr.PKG_IMC_Close.restype = ctypes.c_int

return self.ptr.PKG_IMC_Close(handle)

#---------------------------------------------------------------------------

def MoveAbs(self, handle, pos, startvel, tgvel, wait, axis):

self.ptr.PKG_IMC_MoveAbs.argtypes = (ctypes.POINTER(ctypes.c_voidp), ctypes.c_int, ctypes.c_double, ctypes.c_double, ctypes.c_int, ctypes.c_int) self.ptr.PKG_IMC_MoveAbs.restype = ctypes.c_int

return self.ptr.PKG_IMC_MoveAbs(handle, pos, startvel, tgvel, wait, axis)

#---------------------------------------------------------------------------

def MoveAbs_P(self, handle, pos, startvel, tgvel, wait, axis): # P 輔助座標

self.ptr.PKG_IMC_MoveAbs_P.argtypes = (ctypes.POINTER(ctypes.c_voidp), ctypes.c_int, ctypes.c_double, ctypes.c_double, ctypes.c_int, ctypes.c_int) self.ptr.PKG_IMC_MoveAbs_P.restype = ctypes.c_int

return self.ptr.PKG_IMC_MoveAbs_P(handle, pos, startvel, tgvel, wait, axis)

.

.

(B). 主程式motion.py 要引用也很簡單, 只要加上PyCNC.py模組,就可以調用IMC_Pkg所有的功能

#---------------------------------------------------------------------------

# 這是主程式 : motion.py

#---------------------------------------------------------------------------

from CNC import PyCNC

IMC_Pkg = PyCNC.__IMC_Pkg()

#---------------------------------------------------------------------------

if(self.gHandle != None):

IMC_Pkg.Close(self.gHandle)

self.gHandle = IMC_Pkg.Open(netcardId, imcId)

if(self.gHandle != None): #//if(IsOpen())

if(IMC_Pkg.InitCfg(self.gHandle) != 0):

self.nAxis = IMC_Pkg.GetNaxis(self.gHandle) # 取得設備支援軸數

p, self.Position = self.GetPosition(3)

(C). 建議開發環境安裝Anaconda開發包, 在設計Python程式時可少走很多冤枉路,為了相容以前DLL程式庫,我是下載Anaconda3 - 32bit - Python3.7.3版本。

p.s. (1). IMC3xx/IMC4xx系列運動控制卡所有函數(IMC_Pkg.dll)我都有封裝成PyCNC.py以方便Python呼叫,有興趣的朋友可加入我臉書討論。

((2). 圖-1. 八軸運動+I/O+AD/DA控制卡應用圖例

圖-2. motion.py 主程式的視窗介面

影片-1. 使用motion.py 展示CNC軸控,也順便Demo飛行搖桿控制3軸及發射雷射

影片-2. 電腦執行motion.py情形

影片-3. 使用motion.py 執行G-Code,用雷射雕刻一個正圓

(3). 下回有機會再補上 : "使用Python語言做自動控制的方法 - I I 硬體篇"及 "使用Python語言做自動控制的方法 - I I I 通信篇" (UART、USB、TCP/IP)兩篇才算完整,並且教導大家如何組裝一台三軸運動控制平台的知識(機械結構及控制電路的接法),對於想創業設計自已機器的朋友不要錯過了。在臉書不適合長篇大論所以只能簡單敘述,總感覺見樹不見林,當然我也有開相關的指導課程,有興趣的朋友可上我臉書或私訊我。

Wei-Hsiung Huang
2019-10-03 19:48:42

Nice..

便宜十塊錢
2019-10-03 19:49:49

Python好用+1
我幫公司做一個簡易Web資訊看板
用一台PLC+乙太模組做收集各產線資訊
(我很懶得拓樸一大堆通訊線,跑RS485 To Zigbee)
由乙太模組把資訊先推到ModbusTCP層
再由Python讀ModbusTCP把讀到的值推到前端Web上
簡易的產能看板
跨平台真的好用

吳小東
2019-10-03 22:16:58

深深認同

石小川
2019-10-03 23:30:37

good job! 這是很好的應用, 以前接工廠資料收集器專案, 通信用RS232, 十台一大捆線, 現在看太不可思議了, 哈哈^^

便宜十塊錢
2019-10-03 23:57:01

石小川 我收集的PLC有做類心跳封包,只對有開機的機台通訊,不然Timeout會拖慢速度,越多台沒開越慢,所有的數值都在各機台PLC處理好,再收集
另外還有外加自動紀錄(5天)+控制各站自動歸零(各站開機時規零)

便宜十塊錢
2019-10-04 00:08:16

這個是第一個有線通訊(4台)
現在在做的無線(9台)快好了
規劃排點位跟處理問題較麻煩 ?

石小川
2019-10-04 12:12:53

感謝分享, 在關燈無人工廠掘起後, 機台間的通信越來越重要了, 大大的技術應該很有潛力, 我還停留在十幾年前TCP/IP抓封包技術, 有機會再請教您^^


原文網址 石小川
2019-08-21 13:39:14

相容Mach3真六軸USB同動控制卡 - 使用說明

黃小法
2019-08-21 15:29:13

他這塊卡,其實大多數的功能都有發揮出來

黃小法
2019-08-21 15:31:31

這幾個功能都很棒

黃小法
2019-08-21 15:32:46

Yu Fish
2019-08-21 17:50:37

我也用過這卡片~


原文網址 Shih Chieh Huang
2019-07-08 14:14:30

佳門 JNC-40 MACH3 4軸控制器 USB介面
全新未使用過
售價3500 有軟體及說明書光碟


原文網址 石小川
2019-05-10 16:49:04

介紹一款CNC運動控制卡給喜歡自已寫控制程式的人參考

通常我不在社團內介紹商品以免有廣告之嫌, 不過這個運動卡我用過好幾個專案, 可控制自由度高, 一年了也沒出問題, 所以決定分享給社團好友參考.

如圖所示 IMC3xx2E 運動卡簡介: 我用的的是八軸及六軸聯動運動卡, 介面是採用RJ45網路線傳輸控制碼到機台, 以八軸卡來說內有80個輸入/ 48個輸出, 足夠一般機器使用, 在PC也是用ethernet 與運動卡通訊, 好處是防雜訊比USB好很多, 而且網路線可拉很長很長, 只要你網路可通的話!

我的重點是廠商有提共完整的API函數庫(VB, VC++, VC#, QT)讓你控制CNC所有功能, 包括網卡搜尋, 八軸運動, I/O狀態, 圓弧直線插補, 族繁不及備載, 該有的應該都有了, 端看你要如何應用, 我打算用跑Linux 的ARM板做脫機, 我這裡有一些相關pdf資料, 如果有興趣的人可mail我.

程式控制很簡單, 以C#為例:

(1)專案加入IMC_PKG.cs

(2)程式前面加上 using imcpkg;

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

//單軸連續移動(continue)

private void MachineMove(int axis, bool bDirection)

{

double acc = 10;

double startvel = 100;

double tgvel = 100;

IMC_Pkg.PKG_IMC_SetAccel(Global.gHandle,

acc, acc, axis);

if(bDirection)

IMC_Pkg.PKG_IMC_MoveVel(Global.gHandle,

startvel, tgvel, axis);

else

IMC_Pkg.PKG_IMC_MoveVel(Global.gHandle,

-startvel, -tgvel, axis);

}

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

//單軸移動至指定位置(step)

private void MachineMove(float pos, int axis)

{

double acc = 10;

double startvel = 100;

double tgvel = 100;

int pulse_per_mm = 5120; //steps_per=pulse/mm

int dist = (int)(pos * pulse_per_mm);

IMC_Pkg.PKG_IMC_SetAccel(Global.gHandle,

acc, acc, axis);

IMC_Pkg.PKG_IMC_MoveDist(Global.gHandle,

dist, startvel, tgvel, 0, axis);

}

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

David Chuang
2019-05-10 16:58:12

我有興趣

Allen Chang
2019-05-10 16:58:29

宜震陳
2019-05-10 17:00:32

? ?

蔣益民
2019-05-10 17:17:22

您可以將檔案分享到社團的檔案區

石小川
2019-05-10 17:28:31

ok! 已分享乙太網運動卡兩個檔案至社團檔案區, 有需要的可參考看, 軟硬體有問題可互相討論!

Don Si
2019-05-10 17:41:53

感謝分享

黃小法
2019-05-10 18:01:49

不好意思,小弟愚拙,這個該怎麼應用到CNC上??介面要自己搞??

Cheng Chris
2019-05-10 18:49:02

請教一下如果是大機台的那種可以嗎

辛育全
2019-05-10 19:33:52

哥價格落在哪?

盧人菖
2019-05-10 22:02:48

林錫義
2019-05-10 22:54:33

可以控制伺服馬達?

陳竑吾
2019-05-11 01:07:41

謝謝推薦!很實用的資訊

吳忠哲
2019-05-11 11:17:22

用這個來做CNC的話,可以享受自己搞一個Mach3的樂趣是嗎?


原文網址 石小川
2019-04-30 12:34:34

C#程式控制Mach3運動卡的方法(二)

上回寫的程式版本是透過USB HID介面直接控制Mach3, 這次版本是透過Mach3橋接, 用它提供的API做控制, 好處是幾乎所有Mach3功能皆可實作, 壞處是Mach3必須先執行, 這樣做有甚麼好處呢? 主要是二次開發用, 會自已寫程式的人(C# , C++, VB)可加入演算法提升CNC的功能, 例如可在CNC加入OpenCV做影像辨識或做3D工件掃描建模功能, 或者加入類神經網路做深度學習….等等, 下次有機會我們再詳細討論這部份. 本章重點是簡單介紹開發步驟, 以C#程式語言為例(其實任何語言皆可, 只是呼叫方式略有不同而已)如下:

(1)正常機碼必須有下列註冊檔, 否則程式無法呼叫API(有個補救方法, 下載Mach3Registry.reg, 執行可產生).

xxxxxxxxxx : 每套機碼不一樣. [HKEY_CLASSES_ROOT\CLSID\{xxxxxxxxxxx}] @="Mach4.Document"

[HKEY_CLASSES_ROOT\CLSID\{ xxxxxxxxxxx] @="ole32.dll"

[HKEY_CLASSES_ROOT\CLSID\{ xxxxxxxxxxx }\LocalServer32] @="C:\\Mach3\\Mach3.exe"

[HKEY_CLASSES_ROOT\CLSID\{ xxxxxxxxxxx }\ProgID] @="Mach4.Document"

[HKEY_CLASSES_ROOT\Mach4.Document] @="Mach4.Document"

[HKEY_CLASSES_ROOT\Mach4.Document\CLSID] @="{ xxxxxxxxxxx }"

(2)在C# /專案/加入參考/ 將Mach3.exe 加入參考,

並在程式前面加入

using System.Runtime.InteropServices;

using Mach4;

(3)主要操作就是這項, 一旦取得Mach3的handle(mInst), 就可長驅直入使用其提供的所有功能(功能可參考Mach3 Version3.x Macro Programmers Reference Manual.pdf) .

IMyScriptObject mInst = null;

try

{

Mach4 mach = (Mach4.IMach4)

Marshal.GetActiveObject("Mach4.Document");

mInst = (Mach4.IMyScriptObject)

mach.GetScriptDispatch();

}

catch

{

}

(4)程式有點長, 為避免洗版, 只好摘錄部分程式如下(有疑問或有興趣找我研發的也歡迎私訊我!):

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

//Mach3 Control Process

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

private IMyScriptObject GetMachInstance()

{

IMyScriptObject mInst = null;

try

{

IMach4 mach = (Mach4.IMach4)

Marshal.GetActiveObject("Mach4.Document");

mInst = (Mach4.IMyScriptObject)

mach.GetScriptDispatch();

}

catch

{

}

return mInst;

}

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

private bool DoEmButton(short number)

{

if(_mInst != null)

{

_mInst . DoOEMButton(number);

return true;

}

return false;

}

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

private void DoGCode(string code)

{

if(_mInst != null)

_mInst.Code(code);

}

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

private void sendMDI()

{

if(textBoxMDI.Text.Trim() != null)

{

DoGCode(textBoxMDI.Text.Trim());

}

}

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

private double[] UpdateDRO()

{

double[] dro = new double[3];

if(_mInst != null)

{

dro[0] = _mInst.GetOEMDRO(800);

dro[1] = _mInst.GetOEMDRO(801);

dro[2] = _mInst.GetOEMDRO(802);

}

return dro;

}

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

//dir = 0 to + direction, dir = 1 to - direction

private void xJogStart(DirectionType dir)

{

if(_mInst != null)

_mInst.JogOn((short)AxisType.X, (short)dir);

}

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

private void xJogStop()

{

if(_mInst != null)

_mInst.JogOff((short)AxisType.X);

}

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

private void yJogStart(DirectionType dir)

{

if(_mInst != null)

_mInst.JogOn((short)AxisType.Y, (short)dir);

}

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

private void yJogStop()

{

if(_mInst != null)

_mInst.JogOff((short)AxisType.Y);

}

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

private void zJogStart(DirectionType dir)

{

if(_mInst != null)

_mInst.JogOn((short)AxisType.Z, (short)dir);

}

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

private void zJogStop()

{

if(_mInst != null)

_mInst.JogOff((short)AxisType.Z);

}

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

private void buttonStart_Click(object sender, EventArgs e)

{

DoEmButton(1000); //start

}

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

private void buttonFeedhold_Click(object sender, EventArgs e)

{

DoEmButton(1001); //Feedhold

}

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

private void buttonStop_Click(object sender, EventArgs e)

{

DoEmButton(1003); //Stop

}

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

private void buttonMDI_Click(object sender, EventArgs e)

{

if(_mInst != null && textBoxMDI.Text.Trim() != null)

_mInst.Code(textBoxMDI.Text.Trim()); //senMDI

}

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

private void timerUpdateDRO_Tick(object sender, EventArgs e)

{

double[] dro = UpdateDRO();

textBoxX.Text = dro[0].ToString("#0.0000");

textBoxY.Text = dro[1].ToString("#0.0000");

textBoxZ.Text = dro[2].ToString("#0.0000");

}

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

private void buttonPX_MouseDown(object sender, MouseEventArgs e)

{

xJogStart(DirectionType.Positive);

}

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

private void buttonPX_MouseUp(object sender, MouseEventArgs e)

{

xJogStop();

}

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

private void buttonNX_MouseDown(object sender,

MouseEventArgs e)

{

xJogStart(DirectionType.Negtive);

}

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

private void buttonNX_MouseUp(object sender,

MouseEventArgs e)

{

xJogStop();

}

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

p.s. 一手操作一手攝影, 非專業攝影, 影片有些抖動請見諒!

辛育全
2019-04-30 12:37:03

Steve Wu
2019-04-30 13:01:22

張益晟
2019-04-30 18:27:16

?

Chihfu Huang
2019-04-30 19:13:38

沈宗麟
2019-04-30 21:32:50

厲害

徐豪宏
2019-05-01 00:33:13

Yu Tseng
2019-05-01 10:28:23

林志強
2019-05-01 17:14:23

好強

吳治彥
2019-05-04 22:53:05

石小川
2019-05-05 16:23:49

謝謝! 感謝以上兄弟們熱烈回應!
我是有些野人獻曝, 班門弄斧之感, 所幸大家善良. 在本社團內臥虎藏龍, 有經驗的CNC實務高手很多, 不結合一起做出好產品實在可惜, 畢竟要會玩也要會養家糊口, 哈哈哈! 想借此版拋磚引玉一下, 是否可腦力激盪, 集思廣益一下, 大家提出CNC專案或其他智慧機器由有興趣有能力的成員加入一起完成, 至於專案成立, 負責出資, 材料, 利潤分紅等細節我再想想, 會尊重此版規定, 跟管理員商討是公開或私訊方式. 以上是我初步構想, 看是否有正反意見皆可提出!


原文網址 陳啟耀
2018-11-09 11:04:13

請問各位前輩,有推薦的CNC主機板嗎?
手邊的CNC那個超級舊的主機板是使用印表機的接頭。
我也沒有舊型電腦主機板沒有孔位可以插,打算換成USB的CNC主機板。
目前使用是WIN7 64位元

另外主軸方面也考慮想換掉,原本的感覺沒什麼力然後有夠吵。
不知道前輩們有沒有比較推薦的主軸

David Chuang
2018-11-09 11:05:58

照片來看看

陳啟耀
2018-11-09 11:07:26

陳啟耀
2018-11-09 11:07:29

陳啟耀
2018-11-09 11:07:32

陳啟耀
2018-11-09 11:08:13

目前狀況是這樣,好幾年沒用了需要整理。而且他也沒有一些復歸的極限開關,到時候還要再改裝。

陳啟耀
2018-11-09 11:08:42

另外我覺得主軸可能也需要調整。

吳則磊
2018-11-09 11:23:09

陳啟耀
2018-11-09 11:25:11

轉接頭一個好選擇。不過我考慮要換換主控版。

陳啟耀
2018-11-09 11:26:08

不過我原本的板子好像要用XP的樣子,現在是WIN7好像不能用。

David Chuang
2018-11-09 11:35:06

看起來不錯

陳啟耀
2018-11-09 11:35:31

你說主板不錯嗎?

David Chuang
2018-11-09 11:35:58

原本是mach3 啊

David Chuang
2018-11-09 11:36:20

其實 lpt 接頭比較好喔

David Chuang
2018-11-09 11:37:02

我都有用過
Smoothie 你可以用這張,是offline 的

David Chuang
2018-11-09 11:38:52

陳啟耀 lpt 接頭的 伏特數比較高,較不受影響。

陳啟耀
2018-11-09 11:42:25

傳統連接復比較好嗎? 因為我看他好像沒有復歸的插槽,畢竟這個主板好久了,想說更新主板,新的主板功能比較好,但不知道時間上大家的看法是如何。

陳啟耀
2018-11-09 11:43:39

沒有限位。而且如果以後需要有雷雕功能好像他也不太符合。

David Chuang
2018-11-09 11:44:28

陳啟耀 一定有限位 你不知道腳位在哪而已

陳啟耀
2018-11-09 11:44:42

David Chuang 是阿....

陳啟耀
2018-11-09 11:45:02

新版子跟舊版子沒什麼差別嗎?!

David Chuang
2018-11-09 11:51:04

雷雕也沒有關係。 @@就主軸作可切換開關就好了。 我可以接這工作。

David Chuang
2018-11-09 11:53:02

陳啟耀 話說你這張是四軸的

陳啟耀
2018-11-09 11:54:28

David Chuang 他好像也沒有開關可以切換哈哈

陳啟耀
2018-11-09 11:54:44

我是看到新板子是有可以切換功能

David Chuang
2018-11-09 11:58:47

陳啟耀 都一樣啦~ spindle on 主軸轉 或是 雷雕。 當然 smoothie 的確比較好 可以依 sd卡片轉換不同模式。 你在意效果的話,雷射跟切削在 處理 過彎 或是 fade in fade out 的確有點不同。

廖元佑
2018-11-09 12:50:51

Mach3有usb版,在外掛驅動搞定

Brian Kuo
2018-11-09 13:04:25

sable 系列露天有主軸哦,但可能要看你想銑什麼材質,也是要稍微考量剛性。。。(希望有幫助)

Brian Kuo
2018-11-09 13:13:31

這台我是自己加EE670做極限位置感測。不過原來附的驅動板只有XYZ INPUT,但沒有分左右,我是直接兩條接一起,因為他是負緣觸發,所以沒有問題。但我曾買大陸的EE670, 感覺我買到假貨所以用示波器看訊號,它在臨界邊緣會有不穩定訊號(機台震動造成重覆觸發),所以我後來做了一塊電路板解決這個問題。

陳啟耀
2018-11-09 15:12:40

他的主軸好嗎?基本應該會是硬木、壓克力、銅鋁薄板切割及淺刻。

陳啟耀
2018-11-09 16:00:27

你是那個賣家嗎

Brian Kuo
2018-11-09 16:13:11

我不是賣家哦,只是我剛好家裡也有這台。一開始附的主軸也是這個,但切削很大聲,加上銑削鋁材時容易震動影響加工表面(不過這跟刀具選擇也有關係但我還沒測試其他刀具材質過)
我後來是用直流馬達的主軸,銅鋁薄板是ok的(我有用銅和鋁薄板替代做PCB的刷錫膏鋼板)。

陳啟耀
2018-11-09 16:15:35

Brian Kuo 你改成sable的主軸嗎?!

Brian Kuo
2018-11-09 16:15:54

壓克力,硬木沒問題。金屬的話就要考慮進刀深度和速度~~

Michael Lin
2018-11-09 17:13:58

如果不常用,那就將就一點用吧... 父母生出來就是這樣子,要改不容易,多花錢效果也不顯著... 舉例來說換Mach3 控制板,價格由1千多到1萬都有,買板子簡單,設定怎麼處理?有很多東西沒基礎,看說明書不一定能搞定... 換主軸,主軸座怎麼處理?需不需要動到機台結構,自己有機具可以處理金屬加工的部分嗎?主軸變大,重量增加,現有的步進馬達帶得動嗎?.... 還有很多... 說真的,沒經驗的要改,真的沒那麼簡單...

林志強
2018-11-21 07:56:33

林志強
2018-11-21 07:56:41

林志強
2018-11-21 07:56:54

這都很好用

李派克
2018-11-26 19:15:36

其實這種機器不太需要限位

David Chuang
2018-11-26 19:19:59

李派克 我用 homing 跟 soft limits 我覺得還不錯。 超過行程 會不能動。

李派克
2018-11-26 19:22:45

其實真的主要是看尋邊和對刀,機械原奌的意義其實不大,但如果是有ABC軸就有差別了

Morakot Lee
2018-11-28 13:34:46

這個主軸3mm以下的刀應該都夠力啊…
吵是比較吵沒錯 畢竟轉速很高
經過調速器後 噪音會比較小
畢竟有些料件轉速高沒有用

林志強
2018-11-28 15:19:14

Morakot Lee
你用過這主軸嗎?


原文網址 石小川
2018-10-13 12:53:47

用C++/C# 程式直接控制USB Mach3 CNC運動控制卡簡介

分享給想要了解Mach3及USB控制卡如何通訊的朋友參考.

Mach3 USB程式是以HID裝置類型通訊協定作為溝通管道, 因為現在Windows 作業系統都有內建支援HID裝置的驅動程式, 所以焦點只要設計PC應用程式即可, 省掉很多麻煩事情.

如果用抓封包工具程式(Wireshark 或 Bus Hound)觀察Mach3 USB封包可得知, HID報告描述元(Report)的每次輸入/輸出資料交易是以61個位元組(Byte)為單位送出或接收, 只要解析這些位元組即可直接控制USB Mach3 CNC運動控制卡, 不須Mach3介入, 這樣做的好處是可以自已設計一些人工智慧演算法(例如影像辨識)去直接控制CNC機台做自動光學檢測(AOI), 或改裝CNC成機器手等. 當然有些非Mach3 CNC控制卡廠商有推出API開發包, 應用程式直接呼叫API就更方便了, 這樣就不需要了解煩人的底層封包問題, 不過這篇是要分享給想設計類似Mach3程式或製作USB Mach3 CNC運動控制卡的人參考, 由於資料太多, 不想洗板, 我就列出部分範例提供參考.

我的CNC機器裝置配備是USB Mach3 CNC六軸連動控制卡, 螺桿Pitch=5mm, 步進驅動128細分.

解析後的封包資料如下:
基本上Reset , M code, G Code都要解碼.

(A)繼電器控制
M204/M205碼我是規劃成繼電器控制警示燈
M204 Code(Output 7 ON) :
public string[] Output = { "02 06 58 00 09 20 00 00 f0 f7 19 00 97 b1 9d 06 44 f8 19 00 00 01 00 00 9c b4 9e 06 00 00 00 00 1c f8 19 00 0c f8 19 00 10 80 9d 06 44 f8 19 00 00 01 00 00 9c b4 9e 06 1c f8 19 00 00" };

M205 Code(Output 7 OFF) :
public string[] Output = { "02 06 58 00 09 00 00 00 f0 f7 19 00 97 b1 9d 06 44 f8 19 00 00 01 00 00 9c b4 9e 06 00 00 00 00 1c f8 19 00 0c f8 19 00 10 80 9d 06 44 f8 19 00 00 01 00 00 9c b4 9e 06 1c f8 19 00 00" };

p.s. 標註的02 06 58 是M控制碼, 09 20/09 00 是On/Off作動參數.

(B)步進馬達控制
G0 Xn Code :
public string[][] G0X = {
//G0 X0
new string[]
{"02 0e 55 e6 ff 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 06 df 59 77 34 ef 55 77 f8 5b 38 a0 00 00 00 00 00 c0 2c 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00",
"02 0e 55 b4 ff 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 06 df 59 77 34 ef 55 77 f8 5b 38 a0 00 00 00 00 00 c0 2c 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00",
.
.
};

p.s. 標註的02 0e 55 是G0控制碼, e6 ff/b4 ff 是馬達脈衝參數.

另外值得一提的是Mach3步進馬達的脈衝控制是以圖中(G0 X5)所示的方式控制, 只要遵照斜率及內插數值就可組合出想要馬達移動的距離及速度了, 如果是六軸連動當然更複雜了!

沒圖沒真相, 最後簡單的寫了一個小程式Demo一下, 有興趣的朋友可參考一下囉!

林志強
2018-10-13 13:00:25

好強啊

Brian Kuo
2018-10-13 13:23:48

您是解析USB HID 的byte array來進行驅動控制板,印象中Mach3 軟體有提供API可以直接控制。可能會更方便哦,之前有下載但一直沒時間玩。。。

感謝您的分享哦~ 謝謝您

蘇炳文
2018-10-13 13:37:38

感謝分享,以前都用wireshark抓Ethernet封包觀看Internet的protocol,現在才知道也可以抓USB封包,太好用了。

Kenny Plus
2018-10-13 15:01:18

大大好強

Suadia Wu
2018-10-13 17:53:26

大大開個手把手的課啦~

廖元佑
2018-10-14 08:55:55

好厲害

李大熊
2018-11-03 00:13:00

連G Code都出來了 哈哈哈


原文網址 Milton Yang
2017-11-07 18:12:10

請教一下,我的需求如下
1.900mm*600mm*60mm加工範圍
2.具備f300加工6060鋁,f600加工木
3.吃110v或是220v單向電
4.需要獨立控制器與近接感應機械原點
這樣我準備10萬的預算可以嗎?
因為看到http://www.originalmind.co.jp/products/kitmill_moc#3
這台覺得很棒,但是她不能獨立運作而且要從日本運台灣感覺很貴所以很猶豫。社團有朋友能幫我造一台嗎?
我這邊有80直徑水冷主軸與mach3的usb控制版,也有220v單向變頻器。

蔡則昌
2017-11-07 18:17:16

跟我買 日本中古滾珠螺桿3支,你自己組

尤宏耀
2017-11-07 18:43:44

要看你電控配備

尤宏耀
2017-11-07 18:46:20

如果使用400w伺服+大陸脫機系統+你原有零件/10萬可以完成

Mach Chuang
2017-11-07 19:57:48

那台日製機器是純輕切削用....中看不重用!!

Milton Yang
2017-11-07 20:10:29

控制器想用DDCSV1.1或是SMC4-4-16A16b

Milton Yang
2017-11-08 10:35:31

我該先嘗試設計機架嗎?一般動龍門即可,但是比例要怎麼抓呢?

Milton Yang
2017-11-10 17:32:37

鋁板加工與鋁擠作機架哪個比較便宜?
或是混著用呢?