Mục lục:

Thùng phân loại - Phát hiện và sắp xếp thùng rác của bạn: 9 bước
Thùng phân loại - Phát hiện và sắp xếp thùng rác của bạn: 9 bước

Video: Thùng phân loại - Phát hiện và sắp xếp thùng rác của bạn: 9 bước

Video: Thùng phân loại - Phát hiện và sắp xếp thùng rác của bạn: 9 bước
Video: Xây dần ước mơ "Bảo Tàng Tiền Tệ" 🏛 2024, Tháng bảy
Anonim
Image
Image
Làm thế nào nó hoạt động
Làm thế nào nó hoạt động

Bạn đã bao giờ thấy ai đó không tái chế hoặc đang làm việc đó theo cách tồi tệ chưa?

Bạn đã bao giờ ước có một chiếc máy có thể tái chế cho bạn?

Tiếp tục đọc dự án của chúng tôi, bạn sẽ không hối tiếc!

Thùng phân loại là một dự án với động cơ rõ ràng là giúp tái chế trên thế giới. Như ai cũng biết, việc thiếu tái chế đang gây ra nhiều vấn đề nghiêm trọng trên hành tinh của chúng ta, chẳng hạn như sự biến mất của các nguyên liệu thô và ô nhiễm nước biển, trong số những vấn đề khác.

Vì lý do đó, nhóm chúng tôi đã quyết định phát triển một dự án ở quy mô nhỏ: một thùng phân loại có thể phân loại rác thành những người nhận khác nhau tùy thuộc vào vật liệu là kim loại hay phi kim loại. Trong các phiên bản tương lai, thùng phân loại đó có thể được ngoại suy ở quy mô lớn, cho phép phân chia rác thành tất cả các loại vật liệu khác nhau (gỗ, nhựa, kim loại, hữu cơ…).

Vì mục đích chính là để phân biệt giữa kim loại hay phi kim loại, thùng phân loại sẽ được trang bị cảm biến cảm ứng, nhưng cũng có cảm biến siêu âm để phát hiện xem có thứ gì trong thùng hay không. Hơn nữa, thùng sẽ cần một chuyển động thẳng để di chuyển rác vào hai hộp, do đó, động cơ bước ia được chọn.

Trong các phần tiếp theo, dự án này sẽ được giải thích từng bước.

Bước 1: Cách thức hoạt động

Làm thế nào nó hoạt động
Làm thế nào nó hoạt động
Làm thế nào nó hoạt động
Làm thế nào nó hoạt động

Thùng phân loại đã được thiết kế để làm cho công việc tương đối dễ dàng cho người sử dụng: rác phải được đưa vào qua lỗ được đặt ở đĩa phía trên, nút màu vàng phải được nhấn và quá trình bắt đầu, kết thúc với rác thành một của người nhận. Nhưng câu hỏi bây giờ là… quy trình đó hoạt động nội bộ như thế nào?

Khi quá trình bắt đầu, đèn LED màu xanh lá cây sẽ sáng. Sau đó, các cảm biến siêu âm, được gắn vào tấm trên cùng thông qua một giá đỡ, bắt đầu công việc của chúng để xác định xem có vật thể bên trong hộp hay không.

Nếu không có bất kỳ vật thể nào bên trong hộp, đèn LED màu đỏ sẽ bật và đèn LED màu xanh lá cây sẽ tắt. Ngược lại, nếu có một vật thể, các cảm biến cảm ứng sẽ được kích hoạt để phát hiện vật thể đó là kim loại hay phi kim loại. Khi đã xác định được loại vật liệu, đèn LED màu đỏ và vàng sẽ bật sáng và hộp sẽ di chuyển theo một hướng hoặc ngược lại tùy thuộc vào loại vật liệu, được đẩy bằng động cơ bước.

Khi hộp đến hết nét và vật đã được thả vào đúng người nhận, hộp sẽ quay trở lại vị trí ban đầu. Cuối cùng, với hộp ở vị trí ban đầu, đèn LED màu vàng sẽ tắt. Bộ sắp xếp sẽ sẵn sàng để bắt đầu lại với quy trình tương tự. Quá trình này được mô tả trong các đoạn cuối cũng được hiển thị trong hình của biểu đồ quy trình làm việc được đính kèm trong Bước 6: Lập trình.

Bước 2: Hóa đơn nguyên vật liệu (BOM)

Bộ phận cơ khí:

  • Đã mua các bộ phận cho cấu trúc dưới cùng

    • Cấu trúc kim loại [Liên kết]
    • Hộp màu xám [Liên kết]
  • máy in 3D

    PLA cho tất cả các bộ phận được in (các vật liệu khác cũng có thể được sử dụng, như ABS)

  • Máy cắt laser

    • MDF 3mm
    • Plexiglass 4mm
  • Bộ vòng bi tuyến tính [Liên kết]
  • Vòng bi tuyến tính [Liên kết]
  • Trục [Liên kết]
  • Giá đỡ trục (x2) [Liên kết]

Phần điện tử:

  • Động cơ

    Động cơ bước tuyến tính Nema 17 [Liên kết]

  • Ắc quy

    12 v Pin [Liên kết]

  • Cảm biến

    • 2 Cảm biến siêu âm HC-SR04 [Liên kết]
    • 2 cảm ứng cảm ứng LJ30A3-15 [Link]
  • Vi điều khiển

    1 bo mạch arduino UNO

  • Các thành phần bổ sung

    • Trình điều khiển DRV8825
    • 3 đèn LED: đỏ, xanh lá cây và cam
    • 1 nút
    • Một số dây nhảy, dây điện và tấm hàn
    • Breadboard
    • Cáp USB (kết nối Arduino-PC)
    • Tụ điện: 100uF

Bước 3: Thiết kế cơ khí

Image
Image
Thiết kế kĩ thuật
Thiết kế kĩ thuật
Thiết kế kĩ thuật
Thiết kế kĩ thuật

Trong các hình ảnh trước, tất cả các bộ phận của lắp ráp được hiển thị.

Đối với thiết kế cơ khí, SolidWorks đã được sử dụng làm chương trình CAD. Các bộ phận khác nhau của cụm lắp ráp đã được thiết kế có tính đến phương pháp sản xuất mà chúng sẽ được sản xuất.

Các bộ phận cắt bằng laser:

  • MDF 3mm

    • Trụ cột
    • Tấm trên cùng
    • Hỗ trợ cảm biến siêu âm
    • Hỗ trợ cảm biến cảm ứng
    • Thùng rác
    • Hỗ trợ pin
    • Hỗ trợ Breadboard và Arduino
  • Plexiglass 4mm

    Nền tảng

Các bộ phận in 3D:

  • Trụ cột
  • Yếu tố truyền chuyển động tuyến tính từ động cơ bước
  • Động cơ bước và hỗ trợ ổ trục
  • Bộ phận cố định tường cho hộp đựng rác

Để sản xuất từng bộ phận này, các tệp. STEP phải được nhập vào định dạng chính xác, tùy thuộc vào máy sẽ được sử dụng cho mục đích đó. Trong trường hợp này, tệp.dxf đã được sử dụng cho máy cắt laser và tệp.gcode cho máy in 3D (Ultimaker 2).

Việc lắp ráp cơ khí của dự án này có thể được tìm thấy trong tệp. STEP được đính kèm trong phần này.

Bước 4: Điện tử (Lựa chọn thành phần)

Trong phần này, mô tả ngắn gọn về các thành phần điện tử được sử dụng và giải thích về các lựa chọn thành phần sẽ được thực hiện.

Bo mạch Arduino UNO (như bộ vi điều khiển):

Phần cứng và phần mềm mã nguồn mở. Giá rẻ, dễ có, dễ mã. Bo mạch này tương thích với tất cả các thành phần mà chúng tôi đã sử dụng và bạn có thể dễ dàng tìm thấy nhiều hướng dẫn và diễn đàn rất hữu ích để tìm hiểu và giải quyết vấn đề.

Động cơ (Động cơ bước tuyến tính Nema 17):

Là một loại động cơ bước chia vòng quay hoàn toàn theo một số bước nhất định. Do đó, nó được kiểm soát bằng cách đưa ra một số bước nhất định. Nó mạnh mẽ và chính xác và không cần bất kỳ cảm biến nào để kiểm soát vị trí thực của nó. Nhiệm vụ của mô tơ là điều khiển chuyển động của hộp có chứa vật ném và thả vào đúng thùng.

Để chọn mô hình, bạn đã thực hiện một số tính toán về mô-men xoắn cực đại cần thêm hệ số an toàn. Về kết quả, chúng tôi đã mua mô hình bao gồm phần lớn giá trị được tính toán.

Trình điều khiển DRV8825:

Bo mạch này được sử dụng để điều khiển động cơ bước lưỡng cực. Nó có bộ điều khiển dòng điện có thể điều chỉnh cho phép bạn đặt công suất dòng điện tối đa bằng chiết áp cũng như sáu độ phân giải bước khác nhau: toàn bước, nửa bước, 1/4 bước, 1/8 bước, 1/16- bước và 1/32 bước (cuối cùng chúng tôi đã sử dụng bước đầy đủ vì chúng tôi không thấy cần phải chuyển sang bước siêu nhỏ nhưng nó vẫn có thể được sử dụng để cải thiện chất lượng của chuyển động).

Cảm biến siêu âm:

Đây là một loại cảm biến âm thanh chuyển đổi tín hiệu điện thành sóng siêu âm và ngược lại. Họ sử dụng phản hồi tiếng vang của một tín hiệu âm thanh được phát ra lần đầu tiên để tính toán khoảng cách đến một vật thể. Chúng tôi đã sử dụng chúng để phát hiện xem có vật thể trong hộp hay không. Chúng rất dễ sử dụng và cung cấp một thước đo chính xác.

Mặc dù đầu ra của cảm biến này là một giá trị (khoảng cách), bằng cách thiết lập một ngưỡng để xác định xem một đối tượng có hiện diện hay không, chúng tôi biến đổi

Cảm biến cảm ứng:

Dựa trên định luật Faraday, nó thuộc loại cảm biến tiệm cận điện tử không tiếp xúc. Chúng tôi đặt chúng ở dưới cùng của hộp di chuyển, dưới bệ plexiglass hỗ trợ đối tượng. Mục tiêu của họ là phân biệt giữa vật thể kim loại và vật thể phi kim loại cho ra đầu ra kỹ thuật số (0/1).

Đèn LED (xanh, vàng, đỏ):

Nhiệm vụ của họ là giao tiếp với người dùng:

- Đèn LED xanh sáng: robot đang đợi một đối tượng.

-Red LED on: máy đang hoạt động, bạn không thể ném bất kỳ vật thể nào.

-Đèn LED vàng bật: một đối tượng được phát hiện.

Pin 12V hoặc nguồn 12V + Nguồn 5V USB:

Nguồn điện áp là cần thiết để cung cấp năng lượng cho các cảm biến và động cơ bước. Nguồn điện 5V là cần thiết để cấp nguồn cho Arduino. Điều này có thể được thực hiện thông qua pin 12V nhưng tốt nhất nên có nguồn điện 5V riêng cho Arduino (chẳng hạn như cáp USB và bộ chuyển đổi điện thoại được kết nối với nguồn điện hoặc với máy tính).

Các vấn đề mà chúng tôi đã tìm thấy:

  • Phát hiện cảm biến cảm ứng, chúng tôi không nhận được độ chính xác mong muốn vì đôi khi không nhận thấy được một vật thể kim loại ở vị trí không tốt. Điều này là do 2 hạn chế:

    • Diện tích được bao phủ bởi các cảm biến trong nền hình vuông chỉ chiếm dưới 50% diện tích của nó (vì vậy không thể phát hiện được vật thể nhỏ). Để giải quyết vấn đề này, chúng tôi khuyên bạn nên sử dụng 3 hoặc 4 cảm biến cảm ứng để đảm bảo hơn 70% diện tích được bao phủ.
    • Khoảng cách phát hiện của các cảm biến được giới hạn ở mức 15mm, vì vậy chúng tôi thấy mình buộc phải sử dụng một nền tảng thủy tinh tốt. Đây cũng có thể là một hạn chế khác khi phát hiện các vật thể có hình dạng kỳ lạ.
  • Phát hiện bằng sóng siêu âm: một lần nữa, các vật thể có hình dạng phức tạp gây ra các vấn đề do tín hiệu do cảm biến phát ra bị phản xạ kém và quay trở lại cảm biến muộn hơn so với mức cần thiết.
  • Pin: chúng tôi gặp một số vấn đề trong việc kiểm soát dòng điện do pin cung cấp và để giải quyết vấn đề này, cuối cùng chúng tôi đã sử dụng nguồn điện. Tuy nhiên, các giải pháp khác như sử dụng diode có thể được thực hiện.

Bước 5: Điện tử (Kết nối)

Điện tử (Kết nối)
Điện tử (Kết nối)
Điện tử (Kết nối)
Điện tử (Kết nối)

Phần này hiển thị hệ thống dây của các thành phần khác nhau được đặt hoàn toàn. Nó cũng hiển thị chân nào trên Arduino mà mỗi thành phần được kết nối với.

Bước 6: Lập trình

Lập trình
Lập trình

Phần này sẽ giải thích logic lập trình đằng sau Máy phân loại thùng.

Chương trình được chia thành 4 bước như sau:

  1. Khởi tạo hệ thống
  2. Kiểm tra sự hiện diện của các đối tượng
  3. Kiểm tra loại đối tượng hiện tại
  4. Hộp di chuyển

Để biết mô tả chi tiết của từng bước, hãy xem bên dưới:

Bước 1 Khởi tạo hệ thống

Bảng LED (3) - đặt Đèn LED hiệu chỉnh (đỏ) CAO, Đèn LED sẵn sàng (xanh) THẤP, Đối tượng hiện tại (vàng) THẤP

Kiểm tra động cơ bước ở vị trí ban đầu

  • Chạy kiểm tra cảm biến siêu âm để đo khoảng cách từ mặt bên đến thành hộp

    • Vị trí ban đầu == 0 >> Cập nhật giá trị của LED Sẵn sàng CAO và LED Hiệu chỉnh THẤP -> bước 2
    • Vị trí ban đầu! = 0 >> giá trị đọc kỹ thuật số của cảm biến siêu âm và dựa trên giá trị của cảm biến:

      • Cập nhật giá trị của đèn LED di chuyển động cơ CAO.
      • Chạy hộp di chuyển cho đến khi giá trị của cả hai cảm biến siêu âm <giá trị ngưỡng.

Cập nhật giá trị của vị trí ban đầu = 1 >> Cập nhật giá trị của đèn LED Sẵn sàng CAO và động cơ di chuyển THẤP và Hiệu chỉnh THẤP >> bước 2

Bước 2

Kiểm tra sự hiện diện của các đối tượng

Chạy phát hiện đối tượng siêu âm

  • Đối tượng hiện tại == 1 >> Cập nhật giá trị của đối tượng hiện tại LED CAO >> Bước 3
  • Đối tượng hiện tại == 0 >> Không làm gì

Bước 3

Kiểm tra loại đối tượng hiện tại

Chạy phát hiện cảm biến cảm ứng

  • inductiveState = 1 >> Bước 4
  • inductiveState = 0 >> Bước 4

Bước 4

Hộp di chuyển

Chạy vận hành động cơ

  • inductiveState == 1

    Cập nhật đèn LED di chuyển động cơ CAO >> Làm cho động cơ di chuyển sang trái, (cập nhật vị trí ban đầu = 0) trì hoãn và di chuyển trở lại bên phải >> Bước 1

  • inductiveState == 0

    Cập nhật đèn LED di chuyển động cơ CAO >> Làm cho động cơ di chuyển sang phải, (cập nhật vị trí ban đầu = 0), trì hoãn và di chuyển trở lại bên trái >> Bước 1

Chức năng

Như có thể thấy từ logic lập trình, chương trình hoạt động bằng cách thực thi các chức năng với một mục tiêu cụ thể. Ví dụ, bước đầu tiên là khởi tạo hệ thống có chức năng "Kiểm tra động cơ bước ở vị trí ban đầu". Bước thứ hai sau đó kiểm tra sự hiện diện của vật thể mà bản thân nó là một chức năng khác (chức năng "Phát hiện vật thể siêu âm"). Và kể từ đó trở đi.

Sau bước 4, chương trình đã thực thi đầy đủ và sẽ trở lại bước 1 trước khi chạy lại.

Các chức năng được sử dụng trong phần thân chính được định nghĩa dưới đây.

Chúng lần lượt là:

  • inductiveTest ()
  • moveBox (inductiveState)
  • ultrasonicObjectDetection ()

// Kiểm tra xem đối tượng có phải là kim loại hay không

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Hộp chuyển sang bên trái khi phát hiện ra kim loại và inductiveState = true if (inductiveState == 0) {stepper.moveTo (step); // vị trí ngẫu nhiên kết thúc để kiểm tra stepper.runToPosition (); chậm trễ (1000); stepper.moveTo (0); stepper.runToPosition (); chậm trễ (1000); } else if (inductiveState == 1) {stepper.moveTo (-steps); // vị trí ngẫu nhiên kết thúc để kiểm tra stepper.runToPosition (); chậm trễ (1000); stepper.moveTo (0); // vị trí ngẫu nhiên kết thúc để kiểm tra stepper.runToPosition (); chậm trễ (1000); }} boolean ultrasonicObjectDetection () {long time1, distance1, lengthTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Xác định số đo đường dàiMax = 0; khoảng cách xaMin = 4000; khoảng cách dàiTotal = 0; for (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal + = distanceTemp; } Serial.print ("Cảm biến1 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor1 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Lấy khoảng cách trung bình từ các lần đọc averageDistance1 = distanceTotal / 10; Serial.print ("Sensor1 AverageDistance1"); Serial.print (AverageDistance1); Serial.println ("mm"); // Loại bỏ các giá trị cao nhất và thấp nhất của các phép đo để tránh các kết quả đọc sai AverageDistanceTemp = distanceTotal - (distanceMax + distanceMin); AverageDistanceOlympian1 = AverageDistanceTemp / 8; Serial.print ("Sensor1 AverageDistanceOlympian1"); Serial.print (AverageDistanceOlympian1); Serial.println ("mm");

// Đặt lại giá trị tạm thời

distanceTotal = 0; khoảng cáchMax = 0; khoảng cáchMin = 4000; thời lượng dài2, khoảng cách2, trung bìnhDistance2, trung bìnhDistanceOlympian2; // Xác định số phép đo cần thực hiện đối với (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal + = distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Lấy khoảng cách trung bình từ các bài đọc averageDistance2 = distanceTotal / 10; Serial.print ("Sensor2 AverageDistance2"); Serial.print (AverageDistance2); Serial.println ("mm"); // Loại bỏ các giá trị cao nhất và thấp nhất của các phép đo để tránh các kết quả đọc sai AverageDistanceTemp = distanceTotal - (distanceMax + distanceMin); AverageDistanceOlympian2 = AverageDistanceTemp / 8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (AverageDistanceOlympian2); Serial.println ("mm"); // Đặt lại các giá trị tạm thời distanceTotal = 0; khoảng cáchMax = 0; khoảng cáchMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <blankBoxDistance) {return true; } else {return false; }}

Cơ thể chính

Phần nội dung chính chứa cùng một logic được giải thích ở đầu phần này, nhưng được viết bằng mã. Tệp có sẵn để tải xuống bên dưới.

Cảnh báo

Nhiều bài kiểm tra đã được thực hiện để tìm các hằng số: blankBoxDistance, các bước và Tốc độ tối đa và khả năng tăng tốc trong quá trình thiết lập.

Bước 7: Cải tiến có thể có

Cải tiến có thể
Cải tiến có thể

- Chúng tôi cần phản hồi về vị trí của hộp để đảm bảo rằng nó luôn ở đúng vị trí để chọn đối tượng lúc đầu. Các tùy chọn khác nhau có sẵn để giải quyết vấn đề nhưng một cách dễ dàng có thể là sao chép hệ thống mà chúng tôi tìm thấy trong máy in 3D bằng cách sử dụng công tắc ở một đầu đường dẫn của hộp.

-Do các vấn đề mà chúng tôi tìm thấy với phát hiện siêu âm, chúng tôi có thể tìm kiếm một số lựa chọn thay thế cho chức năng đó: Máy dò laser và tia laser KY-008 (hình ảnh), cảm biến điện dung.

Bước 8: Các yếu tố giới hạn

Dự án này hoạt động như được mô tả trong các tài liệu hướng dẫn nhưng phải đặc biệt chú ý trong các bước sau:

Hiệu chuẩn cảm biến siêu âm

Góc mà các cảm biến siêu âm được đặt so với đối tượng mà chúng phải phát hiện có tầm quan trọng thiết yếu đối với hoạt động chính xác của nguyên mẫu. Đối với dự án này, một góc 12,5 ° so với bình thường đã được chọn để định hướng các cảm biến siêu âm nhưng góc tốt nhất nên được xác định bằng thực nghiệm bằng cách ghi lại các bài đọc khoảng cách bằng cách sử dụng các đối tượng khác nhau.

Nguồn năng lượng

Công suất cần thiết cho trình điều khiển động cơ bước DRV8825 là 12V và từ 0,2 đến 1 Amp. Arduino cũng có thể được cấp nguồn tối đa 12V và 0,2 Amp bằng cách sử dụng đầu vào giắc cắm trên Arduino. Tuy nhiên, phải đặc biệt cẩn thận nếu sử dụng cùng một nguồn điện cho cả Arduino và trình điều khiển động cơ bước. Nếu được cấp nguồn từ ổ cắm điện thông thường, chẳng hạn như nguồn điện bộ chuyển đổi AC / DC 12V / 2A, cần có bộ điều chỉnh điện áp và điốt trong mạch trước khi cấp nguồn vào arduino và trình điều khiển động cơ bước.

Homing the Box

Mặc dù dự án này sử dụng động cơ bước mà trong điều kiện bình thường sẽ quay trở lại vị trí ban đầu với độ chính xác cao, nhưng thực tiễn tốt là bạn nên có cơ chế di chuyển trong trường hợp xảy ra lỗi. Dự án vì nó không có cơ chế homing nhưng nó khá đơn giản để thực hiện một cơ chế. Đối với điều này, một công tắc cơ học ở vị trí ban đầu của hộp phải được thêm vào để khi hộp chạm vào công tắc, nó biết nó đang ở vị trí chính của nó.

Trình điều khiển bước DRV8825 Điều chỉnh

Trình điều khiển bước yêu cầu điều chỉnh để hoạt động với động cơ bước. Điều này được thực hiện bằng thực nghiệm bằng cách vặn chiết áp (vít) trên chip DRV8825 để lượng dòng điện thích hợp được cung cấp cho động cơ. Vì vậy, xoay nhẹ vít chiết áp cho đến khi động cơ hoạt động theo hướng nghiêng.

Bước 9: Tín dụng

Dự án này được thực hiện như một phần của khóa học cơ điện tử trong năm học 2018-2019 cho Thạc sĩ Bruface tại Đại học Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Các tác giả là:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Đặc biệt cảm ơn người giám sát của chúng tôi, Albert de Beir, người đã giúp đỡ chúng tôi trong suốt dự án.

Đề xuất: