Mục lục:

Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu: 5 bước
Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu: 5 bước

Video: Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu: 5 bước

Video: Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu: 5 bước
Video: Hướng Dẫn Chi Tiết Chế Tạo Đầu Kẹp Eto 2024, Tháng bảy
Anonim
Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu
Công cụ đo tốc độ nạp liệu CNC được làm từ phế liệu

Có ai đã từng muốn đo tốc độ tiến dao thực tế trên máy CNC chưa? Có lẽ là không, cho đến khi các mũi phay còn nguyên vẹn sau khi gia công CNC… nhưng khi chúng bắt đầu bị gãy một cách thường xuyên, có lẽ đã đến lúc điều tra. Trong hướng dẫn này, bạn có thể làm theo một nhiệm vụ trong việc xác định tốc độ tiến dao thực tế của một máy CNC. Nó sẽ bao gồm phần thiết kế ngược của máy in, phần sụn arduino, phần mềm PC và kết quả mà tôi nhận được với sự giúp đỡ của các đồng nghiệp của mình, và một thùng rác đã biến thành kho báu.

Bước 1: Vật liệu, công cụ, thiết bị được sử dụng để chạy dự án

Khi tôi bắt đầu làm việc này, tôi đã nghĩ ra một danh sách ngắn những thứ chúng tôi sẽ cần:

  • cơ chế vận chuyển máy in tháo rời
  • công cụ cầm tay để điều chỉnh điều đó
  • mỏ hàn, thuốc hàn, dây điện
  • đồng hồ vạn năng
  • máy hiện sóng hoặc máy phân tích logic - điều này không hoàn toàn cần thiết
  • Nguồn cấp
  • kính hiển vi
  • Sơ đồ chân Arduino nano +
  • PC có cài đặt công cụ Arduino IDE, Visual Studio 2008 Express + MS Charting
  • (MPU6050 - Tôi đã không sử dụng cái này)
  • sẵn sàng duyệt mọi thứ bạn không biết cách làm

Lúc đầu, tôi nghĩ rằng bảng MPU6050 sẽ cho phép tôi đo tốc độ tiến dao trên cả ba trục cùng một lúc. Có gia tốc kế bên trong, tôi chắc chắn rằng việc tổng hợp dữ liệu gia tốc sẽ cho tôi giá trị mong muốn - tốc độ trên mỗi trục. Sau khi tải xuống và sửa đổi đoạn mã Arduino hiển thị dữ liệu thô trên màn hình nối tiếp, tôi đã viết một chương trình PC nhỏ trong Visual Studio để xử lý dữ liệu và vẽ nó trên biểu đồ để giải thích dễ dàng hơn. Tôi đã phải tải xuống cả Visual Studio C # Express 2008 và các công cụ biểu đồ cho việc này.

Sau khi viết mã một lúc và tra cứu tất cả những thứ tôi cần cho giao tiếp nối tiếp, tôi đã kết thúc với các giá trị được vẽ, nhưng cho dù tôi đã làm gì, nó vẫn không thể sử dụng được. Những chuyển động nhỏ nhưng đột ngột sẽ dẫn đến mức tăng đột biến, trong khi những chuyến đi dài hơn thậm chí sẽ không hiển thị trên bảng xếp hạng. Sau hai ngày đập MPU6050, cuối cùng tôi đã từ bỏ và chuyển sang một thứ khác - cơ chế phản hồi vị trí của máy in đã được tháo rời.

Bước 2: Nội dung phần cứng cần hoàn thành

Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành
Nội dung phần cứng cần được hoàn thành

Kỹ thuật đảo ngược

Tất nhiên, cơ chế máy in không có số bộ phận mà tôi có thể sử dụng để xác định các thuộc tính chính xác của nó, cần phải có một chút kỹ thuật đảo ngược để đạt được nơi chúng tôi muốn. Sau khi kiểm tra kỹ lưỡng cơ chế và các thiết bị điện tử, tôi quyết định rằng điều đầu tiên phải là xác định các chân cảm biến quang học. Điều này phải được thực hiện để giao tiếp toàn bộ với Arduino. Tôi đã tháo rời phần nhựa đen, trích xuất PCB và kiểm tra cảm biến: nó có ghi ROHM RPI-2150 trên đó. Điều đó làm tôi rất vui, hy vọng rất cao rằng tôi sẽ tìm thấy một biểu dữ liệu. Thật không may, đây là một phần cũ hoặc một phần tùy chỉnh - không có biểu dữ liệu nào được tìm thấy ở bất kỳ đâu trên web. Điều này có nghĩa là tôi phải tự mình giải quyết các vấn đề: biết rằng các cảm biến này thường có đèn LED hồng ngoại và hai bóng bán dẫn quang bên trong, tôi lấy một đồng hồ vạn năng, đặt nó ở chế độ đo diode và bắt đầu đo giữa các chân.

Các chân nguồn thường dễ tìm - chúng sẽ có các tụ điện trên chúng và chúng thường được kết nối với các vết rộng trên PCB-s. Dấu vết nối đất thường được kết nối với nhiều tấm đệm để loại bỏ tiếng ồn tốt hơn.

Tuy nhiên, các chân đầu vào và đầu ra không phải là tầm thường. Khi đo qua một diode, đồng hồ sẽ hiển thị điện áp chuyển tiếp của nó theo một hướng và quá tải (vô hạn) theo hướng khác. Tôi đã có thể xác định bốn điốt giữa các chân, tôi kết luận rằng điốt thứ tư phải là một loại diode zener hoặc TVS, vì nó nằm ngay giữa các chân nguồn của linh kiện. Xác định vị trí bộ phát hồng ngoại rất dễ dàng, có một điện trở 89R mắc nối tiếp với nó. Tôi còn lại với hai phép đo diode trên hai chân còn lại, chúng phải là hai bộ thu.

Lưu ý: Các cảm biến này có hai bộ thu để có thể xác định hướng chuyển động ngoài việc xác định vị trí bằng cách đếm các xung. Hai dạng sóng đầu ra này lệch pha nhau 90 °, được sử dụng để tạo ra xung đếm lên hoặc đếm xuống. Bằng cách theo dõi số lượng xung này, vị trí chính xác của đầu in có thể được xác định.

Khi bộ phát và hai bộ thu được định vị, tôi đã hàn dây vào chân của chúng, vì vậy tôi có thể giao tiếp cảm biến với Arduino. Trước khi làm điều đó, tôi cung cấp cho cảm biến 3.3V, kéo dải giữa cảm biến một vài lần và quan sát sóng vuông trên các đầu ra. Tần số của sóng vuông thay đổi theo tốc độ di chuyển và tôi kết luận rằng hệ thống đo lường hiện đã sẵn sàng được kết nối với Arduino.

Kết nối Arduino

Kết nối 'cảm biến' mới này rất dễ dàng. Chỉ cần kết nối các đầu ra cảm biến với D2 và D3 (các chân có khả năng ngắt!), Và các đường cấp điện, và quá trình mã hóa có thể bắt đầu.

Bước 3: Mã hóa Arduino

Mã hóa Arduino
Mã hóa Arduino

Mã Arduino khá đơn giản. Tôi đã chỉ định một hàm thực thi mỗi khi D2 nhìn thấy một cạnh tăng, đây là hàm trôi qua từ mã Arduino mà tôi đã đính kèm. Nếu bạn xem xét các tín hiệu của bộ mã hóa bậc hai, bạn sẽ thấy điều này:

  • theo một hướng, pha A là mức logic cao trên mọi cạnh tăng của pha B
  • theo hướng khác, pha A là mức logic thấp trên mọi cạnh tăng của pha B

Đây là thuộc tính của bộ mã hóa mà tôi đã tận dụng: vì hàm elapse thực thi mỗi khi D2 có một cạnh tăng, tôi chỉ viết nếu điều đó tăng một bộ đếm khi D3 cao và giảm nó khi D3 thấp. Điều này đã hoạt động ở lần thử đầu tiên, tôi gửi giá trị bộ đếm ra màn hình nối tiếp và xem nó tăng / giảm khi tôi di chuyển đầu máy in trên trục.

Tóm lại, phần sụn thực hiện những việc sau trong chức năng vòng lặp:

  1. kiểm tra bộ đệm nhận nối tiếp xem có bất kỳ dữ liệu nào đến không
  2. nếu có dữ liệu đến, hãy kiểm tra xem đó có phải là '1' hay không
  3. nếu đó là '1', điều đó có nghĩa là phần mềm PC đang yêu cầu giá trị bộ đếm
  4. gửi giá trị bộ đếm đến PC qua nối tiếp
  5. bắt đầu lại lúc 1.

Với điều này, quả bóng đang ở trong sân của phần mềm PC. Hãy vào đó!

Bước 4: Phần mềm Visual Studio C #

Mục đích của chương trình VS C # là chuyển gánh nặng tính toán từ Arduino sang PC. Phần mềm này nhận dữ liệu mà Arduino đang cung cấp, tính toán và hiển thị tốc độ dưới dạng biểu đồ.

Điều đầu tiên tôi làm là lên google cách thực hiện giao tiếp nối tiếp trong C #. Tôi đã tìm thấy rất nhiều thông tin tốt trên MSDN.com cùng với một ví dụ điển hình, sau đó tôi chỉ ném ra những thứ tôi không cần - về cơ bản là tất cả mọi thứ ngoại trừ phần đọc. Tôi đã thiết lập cổng COM và tốc độ để phù hợp với cổng của Arduino, sau đó chỉ cần thử một vài lần và kết xuất mọi thứ có trên cổng nối tiếp vào một hộp văn bản nhiều dòng.

Sau khi các giá trị được đọc, tôi chỉ có thể sử dụng các hàm readto & split để tách biệt một số đo với nhau và với các ký tự phân tách. Chúng được vẽ trên một điều khiển Biểu đồ và các giá trị bắt đầu xuất hiện trên màn hình.

Nếu bạn không thể thấy điều khiển Biểu đồ trong hộp công cụ VS của mình, bạn có thể google vấn đề và tìm giải pháp tại đây (tìm câu trả lời số 1): liên kết

Nguyên tắc đo lường

Để tìm mối liên hệ giữa số lần đếm và khoảng cách mà đầu di chuyển, chúng tôi đã làm bằng không giá trị đếm, di chuyển đầu máy in 100mm bằng tay và quan sát sự thay đổi về số đếm. Cuối cùng chúng tôi đã đưa ra tỷ lệ sau: 1 số đếm = 0,17094mm.

Vì chúng tôi có thể truy vấn khoảng cách và chúng tôi có thể đo thời gian giữa các mẫu, chúng tôi có thể tính toán tốc độ dịch chuyển vị trí xảy ra - chúng tôi có thể tính toán tốc độ!

Có một thời gian phần mềm thô là 50ms nhờ TMR0, nhưng chúng tôi nhận thấy rằng những thời gian này không quá chính xác. Trên thực tế, sau một số phép đo tốc độ phần mềm, chúng tôi nhận thấy rằng 50ms tính giờ không phải là 50ms. Điều này có nghĩa là các mẫu không được lấy trong khoảng thời gian cố định, vì vậy việc tính toán tốc độ cũng không thể sử dụng cơ sở thời gian cố định. Khi chúng tôi phát hiện ra vấn đề này, thật dễ dàng để tiếp tục: chúng tôi lấy chênh lệch về khoảng cách và chênh lệch về thời gian và tính toán tốc độ dưới dạng D_distance / D_time (thay vì D-distance / 50ms).

Ngoài ra, bởi vì phương trình của chúng ta sẽ trả về tốc độ theo đơn vị mm / 50ms, chúng ta cần nhân nó với 1200 để có được quãng đường mà đầu sẽ đi được trong một phút, tính bằng [mm / phút].

Lưu ý: phần mềm điều khiển máy nghiền CNC Mach 3 xác định tốc độ tiến dao theo đơn vị [mm / phút]

Lọc

Kể từ thời điểm này, các phép đo dường như khá chính xác, nhưng có một số nhiễu trên tín hiệu đo được. Chúng tôi nghi ngờ rằng điều này là do sự không nhất quán cơ học trong trục, khớp nối trục, v.v., vì vậy quyết định lọc nó ra, để có được giá trị trung bình tốt đẹp của giá trị đo được.

Điều chỉnh tốt cho phần mềm

Để thay đổi tốc độ mẫu và tốc độ lọc trong thời gian chạy, các thanh cuộn đã được thêm vào - mỗi thanh một thanh. Ngoài ra, khả năng ẩn các âm mưu cũng được giới thiệu.

Bước 5: Kết quả

Kết quả
Kết quả
Kết quả
Kết quả
Kết quả
Kết quả
Kết quả
Kết quả

Sau khi phần cứng và phần mềm đã sẵn sàng, chúng tôi chạy ba bộ phép đo với mach 3 + phần mềm của tôi, bạn có thể xem kết quả trên các hình ảnh đính kèm. Biểu đồ hiển thị tốc độ đo được với màu đỏ đặc và trung bình với màu xanh lam có chấm gạch ngang.

Điều đó đang được nói, có vẻ như Mach 3 xử lý các cài đặt tốc độ này khá chính xác, nhưng bây giờ chúng tôi biết chắc chắn:)

Tôi hy vọng bạn thích hướng dẫn ngắn này về kỹ thuật đảo ngược và biến nước thành rượu!

Chúc mừng!

Đề xuất: