Thứ Bảy, 31 tháng 3, 2018

[5 Axis Milling CNC] MPG - Lắp ráp và hoàn thiện

Các chức năng điều khiển chính của một chiếc MPG cũng đã hòm hòm nên mình bắt tay vào vẽ cái vỏ cho em nó. 

Đây là là mẫu mình dựng trên SolidWorks, mang đi gia công thì họ không làm cho vì số lượng ít quá, nên đành mua cái hộp nhựa về đục đục khoét khoét thành ra thế này.


Cắt tờ giấy dùng tạm, bao giờ có thời gian sẽ tân trang lại đàng hoàng hơn.


Nút nhấn màu đỏ cạnh E-stop là "nút nhả Stop tạm thời" mà mình đã nhắc đến trong bài về mạch Relay phụ (xem lại tại đây).

Thêm một số ảnh trong quá trình mình làm.



Đầu tư hẳn 25k cho một em công tắc chuyển mạch cũ của Liên Xô trên chợ Trời.


Test tổng thể phát xem nào.


Mọi thứ chạy khá là ổn.
Đọc sơ đồ mạch các bạn sẽ hiểu rõ hơn nguyên lý hoạt động của em nó.

Phần cuối cùng là điều khiển 4 con LED sáng theo ý muốn, 3 con màu xanh dương sẽ sáng tương ứng theo các bước 1; 0.1; 0.01 và 1 con màu đỏ báo rằng Mach3 đang ở chế độ MPG.
Setup Output Signals cho bọn nó như sau.


Và code cho macropump.
----------------------------------

If GetOemDRO(828)=1 Then
DoOEMButton (233)         
DoOEMButton (236)        
DoOEMButton (238)         
End If

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

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

If GetOemLED(57) Then
ActivateSignal(OutPut1)
Else
DeActivateSignal(OutPut1)
End If
----------------------------------

Vậy là đã hoàn thành chiếc MPG đầu tiên, mình sẽ theo dõi các vấn đề phát sinh trong quá trình sử dụng để hoàn thiện hơn trong các phiên bản sau.

Cảm ơn vì đã đọc bài viết!












Thứ Ba, 13 tháng 3, 2018

[5 Axis Milling CNC] Demo MPG - Set Zero

Khi DIY MPG với cổng LPT, nếu mỗi trục ta dùng 1 nút nhấn (OEM Buttons) để set zero thì sẽ không đủ cho các chức năng khác. Hoặc nếu sử dụng chỉ 1 nút để Zero all (1007) thì sẽ rất khó khăn trong quá trình set gốc phôi.
Vì vậy trong bài này ta sẽ tìm hiểu cách sử dụng chỉ 1 nút nhấn mà có thể set zero cho lần lượt các trục bất kì.

Trước hết, mình tạo 2 file text với nội dung tương ứng bên dưới rồi đổi đuôi sang ".m1s".

M100.m1s
---------------------------
SetTRiggerMacro 101
---------------------------

M101.m1s
---------------------------
Sub Main()

If IsActive (OEMTRIG2) and getoemled (59) Then
dooembutton (1008)
End If

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

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

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

If IsActive (OEMTRIG2) and getoemled (63) Then
dooembutton (1008)
End If

End Sub
---------------------------

Tạo xong mình copy 2 file trên vào thư mục cài đặt Mach3: C:\Mach3\macros\Mach3Mill

Tiếp theo mình setup trên Mach3.

Phần Ports and Pins mình vẫn giữ nguyên cài đặt như ở bài viết trước, các bạn có thể tham khảo lại tại đây.


Mình thêm M100 vào dòng Initialization String để khi khởi động Mach3 sẽ đọc file M100.m1s chúng ta vừa tạo. Trong file M100.m1s mình đã gán file M101.m1s là TriggerMacro (OEM Code là 301).


Khi bạn nhấn cái nút mà bạn đã gán giá trị 301 (của mình là nút số 2) thì Mach3 sẽ set zero cho trục đang được chọn. Việc của bạn chỉ là chọn bất kì trục nào bạn muốn rồi ấn Zero.
Xem video dưới đây của mình để hiểu rõ hơn nhé.


Cám ơn vì đã đọc bài viết!

[5 Axes Milling CNC] Demo MPG - Buttons and Pulser

Mình đang tìm hiểu để làm một chiếc MPG (Manual Pulse Generator) cho em máy 5 trục, vì vậy mình làm trước bản demo này để có thể hiểu thêm về cách thức giao tiếp của Mach3 với thiết bị bên ngoài qua cổng LPT.

Đây là board các nút bấm điều khiển và một chiếc encoder mouse wheel mình tháo ra từ con chuột cũ.

Mình dùng cổng USB để lấy nguồn 5V nuôi mạch. Do ban đầu chưa hiểu rõ về cách làm việc của cổng LPT nên mình làm khá nhiều nút bấm để có thể kiểm tra tất cả các chân.

Sau đó mình nhận ra rằng chỉ có thể sử dụng 13 chân gồm 8 chân Data (Pin2 đến Pin9) và 5 chân Status (Pin10, 11, 12, 13, 15) làm các input nhận tín hiệu từ nút bấm và pulser. Các chân Control (Pin1, 14, 16, 17) thì xuất output (ở bài sau mình sẽ dùng các chân này để điều khiển LED).

Đây là sơ đồ nối dây mình tham khảo từ trang 9w2bsr.com, các bạn có thể tùy biến theo mục đích của mình.


Còn đây là chân cẳng của em mouse wheel, các bạn nhớ thay Pin 6, Pin 7 trong hình thành 2 chân cấp xung.

Chiếc rotary encoder từ em chuột cũ của mình hoạt động rất tốt nên mình đã thử luôn với em Manual Pulser của ANCA này xem tình hình ra sao.


Cách đấu nối tương tự với mini encoder.


Đã lo liệu xong xuôi phần cứng, giờ là lúc đả động đến phần mềm.

Máy tính của mình chỉ có 1 cổng LPT on board nên mình cắm thêm 1 card PCI-express to LPT. Các bạn cài driver rồi vào Device Manager lấy địa chỉ của card điền vào Port #2 như hình.


Mach3 hỗ trợ 15 nút bấm ngoài nhưng cổng LPT chỉ hỗ trợ 13 chân, trong đó có 2 chân cấp xung, do vậy chỉ còn 11 chân làm nút bấm. 




Bảng mã OEM Code chi tiết các bạn có thể tham khảo tại Mach3Wiki.


Quy định bước tiến dùng trong Jog Increment Cycle Mode. Ở đây mình dùng 3 bước đầu tiên.


Chuyển sang MPG mode để có thể sử dụng MPG chúng ta vừa mới hì hục làm.


Cùng xem kết quả nào.


Đây mới chỉ là bản demo, còn nhiều vấn đề mình cần phải giải quyết như việc tối ưu hóa, lựa chọn các nút bấm cần thiết nhất để chiếc MPG có thể thay thế hầu hết công việc của bàn phím máy tính; viết macro cho Mach3 để set Zero cho từng trục; thêm đèn LED hiển thị cho chế độ Jog increment cycle và Jog mode; thêm LCD hiển thị tốc độ của trục chính và tọa độ các trục; thiết kế vỏ tay cầm...

Mình sẽ hoàn thiện dần và cập nhật liên tục.

Cám ơn vì đã đọc bài viết!

Thứ Tư, 7 tháng 3, 2018

[5 Axes Milling CNC] Mạch rơle hỗ trợ BOB dùng cảm biến tiệm cận

Nếu bạn đang DIY một em CNC với break-out board Mach3 cổng LPT dưới đây, mà lại muốn dùng cảm biến tiệm cận để thay thế cho các công tắc hành trình dạng cơ học thì bạn sẽ không thể kết nối trực tiếp các cảm biến với BOB được.
Máy 5 trục phay tượng gỗ của mình do gặp khó khăn trong việc gá đặt các công tắc hành trình nên mình đã sử dụng mấy con cảm biến tiệm cận phát hiện kim loại này. Tên của nó là SN04-N, ngõ ra NPN, phát hiện kim loại ở khoảng cách 4mm, mình mua 60k/con.

Đây là sơ đồ đấu nối 6 cảm biến cho 3 trục X, Y, Z của mình (gồm 3 Home và 3 giới hạn hành trình). Nguồn nuôi cho các cảm biến này từ 6-36VDC, ở đây mình dùng nguồn 24VDC.
Vì BOB này không hỗ trợ tách riêng điểm Home và điểm giới hạn của các trục nên mình đã gộp chung 3 điểm giới hạn của 3 trục X, Y, Z vào thành 1 đường và nối chung với đường E-stop (Pin10). Còn Home của mỗi trục thì mình sẽ để riêng và nối vào các chân Limit Switch tương ứng trên board (Home X - Pin12; Home Y - Pin13; Home Z - Pin15).

Còn đây là board mình làm trên mạch đục lỗ với 4 con relay 24V.


Sơ đồ mạch, tất nhiên rồi.

Sau khi hoàn tất đấu nối, cùng Config Mach3 để xem các cảm biến có hoạt động đúng yêu cầu không nào.
Vậy là chúng ta đã hoàn thành 1 mạch relay đơn giản giúp hỗ trợ mở rộng cho BOB này.

Với cách đấu nối và cài đặt như trên, khi máy của chúng ta đang chạy mà gặp phải bất kì cảm biến giới hạn hành trình nào thì Mach3 sẽ hiểu tương đương với việc bạn nhấn nút E-stop và dừng toàn bộ chương trình. Thường thì ở các máy CNC đời cũ hoặc DIY thì khi gặp E-stop chúng ta phải tắt máy và di chuyển các trục bằng tay, như vậy rất tốn công sức. Có 2 cách để giải quyết vấn đề này:

Cách 1: Trên đường về của dây E-stop nối từ Relay Board tới BOB, bạn hãy đấu nối tiếp một nút nhấn thường đóng (NC Button). Khi gặp E-stop bạn chỉ cần nhấn nút này để ngắt tạm thời tín hiệu trả về là có thể di chuyển các trục bình thường (nhưng phải cẩn thận vì có thể nhầm chiều di chuyển).

Cách 2: Sử dụng Soft Limit của Mach3. Cách này các bạn có thể tham khảo Manual của Mach3, trong đó đã hướng dẫn rất chi tiết.

Cảm ơn vì đã đọc bài viết!