# Giới thiệu sản phẩm > Đồ tự chế >  Chế MPG cho máy CNC 5 trục phay gỗ

## trongbim

Em đang tính làm cái MPG cho con máy đục tượng gỗ 5 trục điều khiển bằng Mach3, để lúc sử dụng đỡ phải chạy đi chạy lại nhiều; thì may quá, tìm được bài hướng dẫn rất chi tiết của bác minhdt. Nhưng ngặt nỗi lại không có cái BOB Chị na thứ 2 để dùng riêng cho MPG, em mới nghĩ là nếu không dùng BOB thứ 2 thì có được không? Vậy là em đi tìm hiểu cách thức giao tiếp của Mach3 với thiết bị bên ngoài qua cổng LPT. Ban đầu chẳng biết gì nên thử với một đống nút nhấn và con lăn từ con chuột máy tính cũ.


Đây là sơ đồ nối dây em tham khảo từ trang 9w2bsr.com

Cổng  USB để lấy nguồn 5V trực tiếp từ máy tính, không cần dùng nguồn bên ngoài.
Sau một hồi loay hoay thì em nhận ra rằng có thể sử dụng 13 chân: gồm 8 chân màu vàng (Pin2 đến Pin9) và 5 chân màu xanh dương (Pin10, 11, 12, 13, 15) để làm các chân input; 5 chân màu đỏ (Pin1, 14, 16, 17) làm các chân output; còn các chân màu xanh lá cây (Pin18 đến Pin15) là các chân đất.
Thế là bắt đầu cân đo đong đếm xem có thể đưa được những nút nhấn nào lên MPG. Mất cả tuần tham khảo từ khắp các nguồn em mới vẽ được cái sơ đồ nguyên lý cho nó.


Dựng mô hình 3D lên SolidWorks cho dễ hình dung.
Ý định của em là :
13 chân inputs sẽ gồm :
-	5 nút nhấn chọn 5 trục (gộp chung vào 1 công tắc chuyển mạch 5 vị trí)
-	1 nút thay cho nút Tab trên bàn phím để hiển thị MPG ảo trên màn hình máy tính
-	1 nút bật tắt MPG mode
-	1 nút thay đổi Jog Step
-	1 nút set Zero cho các trục
-	1 nút Cycle Start
-	1 nút Feed Hold
-	2 chân phát xung cho tay quay

4 chân outputs sẽ gồm:
-	3 Led lần lượt sáng tương ứng với mỗi Jog step 1; 0.1; 0.01
-	1 Led sáng báo rằng MPG mode đang bật

Ngoài ra còn 1 nút E-stop và 1 nút bên cạnh E-stop em dùng để xóa tín hiệu Limit Switch về board khi mà máy chạy gặp giới hạn; 2 nút nhấn này không đi về cổng DB25 mà đi về BOB.
Ý tưởng là thế, cũng gần đủ các chức năng em hay dùng. Bắt tay vào làm xem nó có ra gì không. Đầu tiên là cái vỏ hộp. Tính làm bằng tôn cho nhẹ, nhưng mang cái bản vẽ ở trên kia đi gia công thì không chỗ nào làm cho vì em làm có 1 chiếc. Đành mua cái hộp nhựa về khoan khoan đục đục 1 hồi thành ra thế này.
In tờ giấy rồi cắt dán để dùng tạm, có thời gian nhất định sẽ làm lại đàng hoàng cho em nó.
Dùng 2 cáp 10 ruột mà vẫn thiếu @@
Coi như là đã xong phần cứng.
Do máy tính chỉ có 1 cổng LPT nên em mua thêm 1 card PCI-express to LPT.
Em cài driver và lấy địa chỉ của nó trong Device Manager điền vào Port Setup trong Mach3 như thế này. Ở đây em dùng Port #1 là cổng điều khiển động cơ các trục, Port #2 là cổng MPG. Vậy nên khi thiếp lập Config, ở cột Port# tất cả sẽ điền là 2.


Tiếp theo là Input Signals.




Ở đây em dùng 11 nút nhấn từ OEM Trig #1 đến OEM Trig #11. Như ảnh trên thì OEM Trig #1 sẽ tương đương với Pin4 trên cổng DB25. Các bác có thể tùy chỉnh theo ý mình cho phù hợp.

Tiếp theo là Output Signals (điều khiển 4 Led) thiết lập như sau.


Cái này các bác cũng có thể tùy chỉnh theo ý mình. Do em nối dây không theo thứ tự của các con Led trên MPG và do code điều khiển ở phía sau nên mới lung tung như vậy.

Tiếp theo là System Hotkeys.


Bảng OEM Code của Mach3 các bác search google là ra ngay. Em điền các giá trị OEM Code tương ứng của 11 nút nhấn vào Trigger # 1 đến 11. Trong đó có Trigger#11 điền giá trị 301 (301 là một giá trị đăc biệt – Trigger Macro). Khi ta ấn nút nào được gán giá trị này, một chương trình con sẽ được Mach3 khởi chạy. Và chương trình con này là do người dùng tự lập trình. Vì vậy em sẽ dùng cái nút đặc biệt này làm nút Set Zero cho từng trục.

Đến đây là cái MPG đã nhận các nút bấm và quay tay điểu khiển được các trục rồi. Riêng chỉ có nút Set Zero là chưa hoạt động và 4 con Led là chưa sáng theo ý muốn.

Em sẽ tách riêng làm 2 phần để giải quyết từng phần cho gọn.

*1.	Set Zero cho từng trục*
Đầu tiên em tạo 2 file .m1s với nội dung như sau (em tạo 2 file .txt rồi đổi đuôi thành .m1s).
M299.m1s
-------------------------
SetTRiggerMacro 300
-------------------------

M300.m1s
-------------------------
Sub Main()
If IsActive (OEMTRIG2) and getoemled (59) Then
dooembutton (1008)                             
End If

If IsActive (OEMTRIG2) and getoemled (60) Then
dooembutton (1009)                               
End If

If IsActive (OEMTRIG2) and getoemled (61) Then   
dooembutton (1010)                               
End If

If IsActive (OEMTRIG2) and getoemled (62) Then   
dooembutton (1011)                               
End If

If IsActive (OEMTRIG2) and getoemled (63) Then   
dooembutton (1012)                               
End If
End Sub
-------------------------
Em Save lại rồi copy cả 2 vào thư mục : _C:\Mach3\macros\Mach3Mill_

Tiếp theo vào General Config trong Mach3 và thêm M299 vào dòng Initialization String.



Mục đích của việc này là yêu cầu Mach3 chạy Macro M299 khi khởi động chương trình. Trong M299 ta đã gán M300 là Trigger Macro (Nút đặc biệt mang giá trị 301). Kết quả là khi ta nhấn nút mang giá trị 301 đó, chương trình trong M300 sẽ tự động chạy. Đó là chương trình set Zero.
*
2.	Điều khiển Led sáng*
Trước tiên em tạo 1 file có tên là “_macropump.m1s_” với nội dung như sau:
------------
If GetOemDRO(828)=1 and GetOemLED(15) Then
DoOEMButton (233)          DoOEMButton (236)
DoOEMButton (238)          End If

If GetOemDRO(828)=0.1 And GetOemLED(15) Then
DoOEMButton (235)          DoOEMButton (234)          DoOEMButton (238)         
End If

If GetOemDRO(828)=0.01 and GetOemLED(15) Then
DoOEMButton (237)        
DoOEMButton (234)         
DoOEMButton (236)         End If

If GetOemLED(57) Then
ActivateSignal(OutPut1)
Else
DeActivateSignal(OutPut1)
End If
------------------
Save lại rồi copy vào thư mục: _C:\Mach3\macros\Mach3Mill_

Tiếp theo vào General Config trong Mach3 và đánh dấu tick vào dòng Run Macro Pump.


Xong rồi tắt Mach3 đi và bật lại để nó cập nhật chương trình. Bây giờ là 4 con Led đã sáng theo ý muốn rồi.
Phần này em không biết giải thích thế nào cho dễ hiểu, các bác muốn tìm hiểu thêm thì có thể google mấy từ khóa này là hiểu ngay: macro pump Mach3, GetOEMLED, GetOEMDRO.

Đây là video em test tổng thế tất cả các chức năng




Nhờ có bài viết rất chi tiết của bác minhdt mà em hoàn thành được 1 cái MPG đầu tay. Tuy không phải đầy đủ tiện nghi nhưng trước mắt là cũng đủ dùng, em sẽ theo dõi 1 thời gian để hoàn thiện thêm cho các phiên bản sau. Mong các bác gạch đá nhiều  :Big Grin:

----------

