Mục lục:

Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do: 5 bước (có hình ảnh)
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do: 5 bước (có hình ảnh)

Video: Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do: 5 bước (có hình ảnh)

Video: Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do: 5 bước (có hình ảnh)
Video: Đồ án tốt nghiệp BKĐN | Cánh Tay Robot 4 Bậc Tự do phân loại sản phẩm theo màu sắc | Robot arm 4 dof 2024, Tháng bảy
Anonim
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do
Cánh tay rô bốt điều khiển Arduino W / 6 độ tự do

Tôi là thành viên của một nhóm người máy và mỗi năm nhóm chúng tôi đều tham gia Hội chợ Mini-Maker hàng năm. Bắt đầu từ năm 2014, tôi quyết định xây dựng một dự án mới cho sự kiện của mỗi năm. Vào thời điểm đó, tôi có khoảng một tháng trước khi sự kiện diễn ra và không biết mình muốn làm gì.

Một thành viên khác đã đăng một liên kết đến "một chế tạo cánh tay robot mã nguồn mở thú vị" khiến tôi quan tâm nhiều nhất. Các kế hoạch chỉ là một cánh tay không có điều khiển hoặc người điều khiển. Xem xét những hạn chế về thời gian của tôi, đó có vẻ như là một điểm khởi đầu thực sự tốt. Vấn đề duy nhất là tôi thực sự không có công cụ để bắt đầu.

Với sự giúp đỡ của một số thành viên trong nhóm, tôi đã có thể cắt các bộ phận acrylic và gửi cho tôi cũng như hai bộ phận in 3D được hiển thị bên dưới. Kết hợp với một số đơn đặt hàng phần cứng qua đêm và một số chuyến đi đến cửa hàng phần cứng địa phương, tôi đã hoàn thành một dự án làm việc vào đêm trước sự kiện!

Như thường lệ, câu chuyện còn nhiều hơn thế và một số hiện thân trong bản dựng đã được cô đọng lại như những gì bạn thấy bên dưới. Nếu bạn quan tâm đến câu chuyện phía sau, có thể tìm thêm thông tin tại đây:

Bước 1: Những gì bạn cần - Phần cứng & Điện tử

Những gì bạn cần - Phần cứng & Điện tử
Những gì bạn cần - Phần cứng & Điện tử
Những gì bạn cần - Phần cứng & Điện tử
Những gì bạn cần - Phần cứng & Điện tử

Người thiết kế dự án ban đầu sống ở Châu Âu và sau đó đã sử dụng các phép đo hệ mét và các vật liệu phổ biến ở đó. Ví dụ như bảng báo chí mà anh ấy sử dụng cho cơ thể là tiêu chuẩn dày 5mm. Vật liệu tương tự ở đây ở Mỹ là 1/8 , dày khoảng 3,7mm. Điều này để lại một khoảng trống trong các lỗ ban đầu được thiết kế để lắp máy ép. Thay vì sửa bản vẽ, tôi chỉ đơn giản sử dụng Gorilla Glue để giữ chặt các khớp này.

Anh ta cũng sử dụng đai ốc và bu lông có ren M3 không đạt tiêu chuẩn tại cửa hàng phần cứng địa phương của bạn ở Mỹ. Thay vì chuyển đổi chúng thành các tùy chọn có sẵn tại địa phương, tôi chỉ cần đặt hàng trực tuyến phần cứng như được hiển thị trong danh sách các bộ phận của tôi bên dưới.

  • 22 - Dự phòng M3 x 0,5 x 23mm
  • Miếng đệm 15 - M3 x 15mm
  • 40 - Vít M3
  • M3 Hex Nuts
  • Vít M3 25mm
  • 1 - Mùa xuân
  • Băng gắn 3/4 "Hai mặt
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini servo
  • 1 - SG90 TowerPro mini servo
  • Đầu ghim thẳng hàng đơn 2,54 mm
  • 1 - Breadboard cỡ nửa
  • 1 - Dây Jumper 'Mở rộng' Nữ / Nam - 40 x 6"
  • Tấm acrylic màu xanh lam 1 - 12 "x 24" hoặc các miếng cắt bằng laser từ nhà cung cấp dịch vụ yêu thích của bạn
  • Miếng đệm ổ trục khớp 2 - 3mm x 20mm + 4mm x 5mm In 3D (xem bên dưới)
  • 1 - Bảng điều khiển * Xem Lưu ý trong Phần đấu dây
  • 1 - Đèn LED 10mm RGB (ba màu) khuếch tán
  • 1 - Arduino Uno
  • 1 - LCD tiêu chuẩn 16x2 + tính năng bổ sung - trắng trên xanh lam
  • 1 - ba lô LCD ký tự i2c / SPI
  • 1 - Trình điều khiển PWM / Servo 16 kênh 12-bit Adafruit
  • 1 - MCP3008 - 8 kênh 10-bit ADC với giao diện SPI
  • 3 - Cảm biến mô-đun đột phá JoyStick * Xem lưu ý trong phần đấu dây
  • Jack thùng DC
  • Bộ chuyển đổi AC sang DC
  • Cáp mở rộng Servo - các loại chiều dài

Hầu hết tất cả các bộ phận của cánh tay này được cắt từ 1/8 inch acrylic. Tuy nhiên, hai miếng đệm ổ trục khớp nối cần phải được in. Ngoài ra, thiết kế ban đầu yêu cầu hai đế đệm khớp cao hơn 7mm so với trục ổ trục. Khi tôi bắt đầu lắp ráp cánh tay trên, tôi nhanh chóng nhận ra rằng chúng quá cao do chiều cao của các servos TowerPro. Tôi phải có vòng bi khớp mới được làm với đế chỉ cao 3mm, nhân tiện, nó vẫn hơi quá cao nhưng có thể quản lý được. Bạn sẽ muốn lưu ý về chiều cao tương đối của các Servos của mình và tính đến khoảng cách giữa hai cánh tay dưới:

Chiều cao servo + còi servo + ổ trục khớp + băng keo hai mặt = 47mm +/- 3mm.

Bước 2: Lắp ráp cánh tay

Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay
Lắp ráp cánh tay

Trước khi bắt đầu, hãy đảm bảo căn giữa tất cả các Servos của bạn! Nếu bất kỳ lúc nào trong quá trình xây dựng, nếu bạn di chuyển vị trí của servo theo cách thủ công, bạn sẽ cần phải chỉnh sửa lại nó trước khi cố định nó vào khung. Điều này đặc biệt quan trọng với các servo vai luôn cần di chuyển đồng thời.

  1. Gắn servo đế vào tấm đế trên cùng bằng vít M3 25mm và đai ốc lục giác. Đừng siết quá chặt LƯU Ý: Bạn có thể muốn khóa chặt các ren để giảm thiểu sự lỏng lẻo của đai ốc trong quá trình sử dụng.

  2. Nếu bạn đang sử dụng danh sách các bộ phận mà tôi có ở trên, tiếp theo, bạn sẽ muốn lắp ráp 5 miếng đệm đế bằng cách luồn 2 mỗi Chân đế M3 x 0,5 x 23mm lại với nhau và sau đó gắn chúng vào tấm đế phía trên bằng đai ốc lục giác.
  3. Gắn tấm đế dưới vào giá đỡ bằng 5 Ốc vít M3.
  4. Gắn tấm vai vào hai tấm gắn servo bằng chất kết dính an toàn acrylic. Tôi đã sử dụng Gorilla Glue ở đây. LƯU Ý: Mỗi tấm trong số hai tấm servo có một lỗ ở phía sau cho phép chèn một miếng đệm tăng cường kết nối chúng. Đảm bảo các lỗ thẳng hàng! * Trong khi bạn có sẵn keo, hãy tiếp tục và nối tấm gắn cổ tay với tấm chính của bộ kẹp. * Tùy chọn, bạn cũng có thể dán tấm servo cổ tay vào hai tấm khớp cổ tay. Thay vào đó, tôi đã không thực hiện việc bầu chọn này để gắn những thứ này cùng với các chế độ chờ như được mô tả bên dưới.
  5. Gắn cụm vai đã được bảo dưỡng vào servo cơ sở. Tôi đã sử dụng sừng rộng nhất đi kèm với servo, đó là sừng gắn sáu thân.
  6. Việc thêm khung dưới cánh tay vào các đòn gánh có thể khá phức tạp. Tôi khuyên bạn nên cố định sừng vào khung dưới cánh tay trước khi tiếp tục. LƯU Ý: Đảm bảo căn giữa các servo của bạn cho cụm vai TRƯỚC KHI gắn chúng vào khung. Hai servo này phải di chuyển đồng thời và nếu chúng bị lệch ít nhất sẽ gây ra hiện tượng chập chờn servo và nếu lệch đủ, có thể làm hỏng khung hoặc các servo. * Mỗi servo vai được gắn với giá đỡ của chúng ở mặt sau của các tấm gắn thay vì đưa các Servo qua các tấm - điều này sẽ cho phép bạn đẩy còi lên trục servo theo một góc và cố định vít. Chưa gắn chặt servo vào tấm gắn. * Tiếp theo, thêm servo bên trong và gắn cánh tay

  7. Lắp ráp khung trên cánh tay và các servo bằng cách đẩy các servo qua các khoảng trống trong các cánh tay và sau đó chèn các miếng đệm vào giữa cả hai tấm cánh tay trên và cố định bằng vít M3.
  8. Thêm băng dính hai mặt vào mặt sau của miếng đệm khớp khuỷu tay và cắt phần thừa.
  9. Gắn miếng đệm vào dưới cùng của servo sẽ hoạt động như bộ truyền động khuỷu tay.
  10. Trượt cụm cánh tay trên vào khung lắp ráp cánh tay dưới và giữ chặt các vít còi servo.
  11. Thêm dự phòng gia cố giữa hai tấm cánh tay dưới. Tôi đã sử dụng hai thay vì cả bốn để giảm trọng lượng.
  12. Thêm băng dính hai mặt vào mặt sau của miếng đệm khớp cổ tay trên và cắt phần thừa.
  13. Gắn miếng đệm vào dưới cùng của servo sẽ hoạt động như bộ truyền động cổ tay.
  14. Gắn tấm cổ tay bên ngoài vào sừng servo cổ tay và cố định bằng vít còi.
  15. Lắp ráp tấm servo cổ tay với hai tấm khớp cổ tay và chân đế.
  16. Giữ chặt servo cổ tay trên tấm servo bằng tấm kẹp servo.
  17. Bạn sẽ cần cố định còi cổ tay vào servo trước khi gắn cụm kẹp vào còi đó do lỗ mở vít còi bị chặn.
  18. Lắp ráp lỏng lẻo các miếng kẹp cho vừa khít trước khi gắn còi servo bộ kẹp vào servo. Điều này sẽ cho phép bạn có không gian để vặn còi ở bước trước.
  19. Gắn sừng bộ kẹp vào servo của nó và siết chặt hơn nữa các vít giữ các khớp bộ kẹp. LƯU Ý: không siết chặt hoàn toàn các đai ốc và bu lông này vì chúng cần phải lỏng để cho phép bộ kẹp di chuyển.

Bước 3: Hệ thống dây và Bảng điều khiển

Hệ thống dây điện và bảng điều khiển
Hệ thống dây điện và bảng điều khiển
Hệ thống dây điện và bảng điều khiển
Hệ thống dây điện và bảng điều khiển
Hệ thống dây điện và bảng điều khiển
Hệ thống dây điện và bảng điều khiển

Tôi đã xây dựng dự án này như một nền tảng phát triển cho một số ý tưởng mà tôi có cho một dự án giáo dục sau này. Vì vậy, hầu hết các kết nối của tôi là kết nối đơn giản. Mối hàn duy nhất tôi đã làm là cho MCP3008. Nếu bạn có thể tìm thấy một bảng đột phá cho thành phần này, thì bạn sẽ có thể chế tạo cánh tay hàn này miễn phí.

Có 3 nhóm thành phần:

  1. Đầu vào - Các mục này lấy thông tin từ người dùng và bao gồm các cần điều khiển và mcp3008 ADC.
  2. Đầu ra - Các mục này truyền tải dữ liệu đến thế giới bằng cách hiển thị trạng thái cho người dùng hoặc cập nhật các servos với dữ liệu vị trí. Những thứ này là Màn hình LCD, Ba lô LCD, LED RGB, bảng điều khiển Servo và cuối cùng là Servo.
  3. Xử lý - Arduino kết thúc nhóm cuối cùng lấy dữ liệu từ các đầu vào và đẩy dữ liệu ra đầu ra theo các lệnh mã.

Sơ đồ Fritzing ở trên trình bày chi tiết các kết nối chân cho tất cả các thành phần.

Đầu vào

Chúng tôi sẽ bắt đầu với các đầu vào. Các cần điều khiển là các thiết bị tương tự - có nghĩa là chúng cung cấp một điện áp thay đổi làm đầu vào cho Arduino. Mỗi trong số ba cần điều khiển có hai đầu ra tương tự cho X và Y (lên, xuống, trái phải) tạo nên tổng cộng 6 đầu vào cho Arduino. Trong khi Arduino Uno có sẵn 6 đầu vào tương tự, chúng ta cần sử dụng hai trong số các chân này để giao tiếp I2C với màn hình và bộ điều khiển servo.

Do đó, tôi đã kết hợp bộ chuyển đổi tín hiệu tương tự sang kỹ thuật số MCP3008 (ADC). Con chip này sử dụng tối đa 8 đầu vào tương tự và chuyển đổi chúng thành tín hiệu kỹ thuật số qua các chân giao tiếp SPI của Arduino như sau:

  • Chân MCP 1-6> Đầu ra có thể thay đổi của cần điều khiển ngón tay cái
  • Chân MCP 7 & 8> Không có kết nối
  • MCP Pin 9 (DGND)> Nối đất
  • MCP Pin 10 (CS / SHDN)> Uno Pin 12
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP Pin 13 (CLK)> Uno Pin 9
  • Chân MCP 14 (AGND)> Nối đất
  • Chân MCP 15 & 16> + 5V

Các kết nối cần điều khiển trong sơ đồ chỉ được hiển thị cho một ví dụ. Tùy thuộc vào việc mua cần điều khiển nào và cách chúng được gắn, kết nối của bạn có thể khác với của tôi. Các nhãn hiệu khác nhau của cần điều khiển có thể có sơ đồ chân khác nhau và cũng có thể định hướng X và Y khác nhau. Điều quan trọng là hiểu mỗi đầu vào trên ADC đại diện cho điều gì. Mỗi pin đại diện cho các mối quan hệ sau trong mã của tôi:

  • Chân 1 - Chân đế - Dữ liệu tương tự trên chân này sẽ xoay servo thấp nhất trên rô bốt
  • Chân 2 - Vai - Dữ liệu tương tự trên chân này sẽ xoay hai servo phía trên servo cơ sở
  • Chân 3 - Khuỷu tay - Dữ liệu tương tự trên chân này sẽ xoay servo tiếp theo từ servo vai
  • Chân 4 - UP / DN Cổ tay - Dữ liệu tương tự trên chân này sẽ xoay servo cổ tay, nâng và hạ cụm kẹp
  • Chân 5 - Bộ kẹp - Dữ liệu tương tự trên chân này sẽ mở và đóng bộ kẹp
  • Chân 6 - Xoay cổ tay - Dữ liệu tương tự trên chân này sẽ xoay bộ kẹp

LƯU Ý: Khi mua và lắp các cần điều khiển ngón tay cái được tham chiếu trong danh sách các bộ phận, hãy nhớ rằng hướng của các mô-đun có thể khác với hướng của tôi, hãy kiểm tra đầu ra x và y để kết nối thích hợp với ADC. Ngoài ra, nếu bạn đang sử dụng bảng điều khiển in 3D của tôi, các lỗ lắp có thể bị lệch khỏi của tôi.

Kết quả đầu ra

Bộ điều khiển PWM / Servo Adafruit làm cho dự án này trở nên cực kỳ đơn giản. Chỉ cần kết nối Servos với tiêu đề servo và tất cả các kết nối nguồn và tín hiệu đều được xử lý. Trừ khi bạn tìm thấy các servo có dây dẫn quá dài, bạn sẽ muốn có một bộ các phần mở rộng cáp servo với các độ dài khác nhau để tất cả các cáp servo đều đến được bo mạch điều khiển của bạn.

Servos được kết nối như sau:

  • Vị trí 0 - Servo cơ sở
  • Vị trí 1 - Servo vai (Cáp Servo Y)
  • Vị trí 2 - Servo khuỷu tay
  • Vị trí 3 - Cổ tay 1 Servo
  • Vị trí 4 - Gripper Servo
  • Vị trí 5 - Servo cổ tay 2

Ngoài ra, VCC và V + đều được kết nối với +5 Volts và GND được kết nối với Ground.

LƯU Ý 1: Một lưu ý LỚN ở đây: Điện áp cung cấp cho toàn bộ dự án đến thông qua khối đầu cuối nguồn trên Bảng điều khiển Servo. Chân V + trên Bộ điều khiển Servo thực sự đang cấp nguồn từ khối đầu cuối cho phần còn lại của mạch. Nếu bạn cần lập trình Uno của mình, tôi thực sự khuyên bạn nên ngắt kết nối chân V + trước khi kết nối Uno với PC của bạn vì dòng điện hiện tại từ Servos có thể làm hỏng cổng USB của bạn.

LƯU Ý 2: Tôi đang sử dụng bộ chuyển đổi âm tường 6V AC sang DC để cấp nguồn cho dự án. Tôi khuyên bạn nên sử dụng bộ điều hợp có thể cung cấp dòng điện ít nhất 4A để khi một hoặc nhiều Servos bị kết nối, dòng điện đột ngột tăng đột ngột không làm hỏng hệ thống của bạn và thiết lập lại Arduino của bạn.

Màn hình LCD 16X2 được kết nối với Balo Adafruit LCD để tận dụng giao diện I2C đã được Bộ điều khiển Servo sử dụng. SCL trên Bộ điều khiển Servo và CLK trên Balo đều kết nối với Pin A5 trên Uno. Tương tự như vậy, SDA trên Bộ điều khiển Servo và DAT trên Balo đều kết nối với Pin A4 trên Uno. Ngoài ra, 5V được kết nối với +5 Volts và GND được kết nối với đất. LAT trên Ba lô không được kết nối với bất kỳ thứ gì.

Cuối cùng, đèn LED RGB được kết nối với các chân 7 (ĐỎ), 6 (Xanh lục) và 5 (Xanh lam) trên Uno. Chân nối đất của đèn LED được nối với Nối đất thông qua một điện trở 330Ohm.

Xử lý

Cuối cùng nhưng không kém phần quan trọng, phần còn lại của các kết nối Arduino không được liệt kê ở trên như sau: Pin 5V được kết nối với +5 Volts và GND được kết nối với Ground.

Trong thiết lập của mình, tôi đã sử dụng các thanh ray bên của bảng mạch để buộc tất cả các đường dây nguồn và đường đất với nhau cũng như các chân I2C cho tất cả các thiết bị.

Bước 4: Mã

Mã số
Mã số

Như đã nói trước đây, ban đầu tôi xây dựng dự án này như một minh chứng cho Maker Faire tại địa phương của tôi. Tôi dự định nó sẽ là thứ để trẻ em và người lớn chơi cùng khi ở gian hàng của chúng tôi. Hóa ra, nó phổ biến hơn tôi tưởng tượng - đến nỗi lũ trẻ đang tranh giành nó. Vì vậy, khi đã đến lúc viết lại, tôi đã kết hợp "Chế độ demo" thực hiện giới hạn thời gian.

Cánh tay đặt ở đó chờ ai đó di chuyển cần điều khiển và khi họ di chuyển cần điều khiển, nó bắt đầu hẹn giờ 60 giây. Vào cuối 60 giây, nó sẽ ngừng lấy dữ liệu đầu vào từ người dùng và "Rests" trong 15 giây. Khoảng thời gian chú ý ngắn là những gì họ đang có, khoảng thời gian nghỉ ngơi này làm giảm đáng kể sự tranh giành thời gian gắn bó.

Hoạt động cơ bản

Đoạn mã được liệt kê trong phần tham khảo bên dưới khá đơn giản. Một mảng theo dõi 6 khớp với phạm vi tối thiểu, tối đa, vị trí nhà và vị trí hiện tại. Khi cánh tay được cấp nguồn, chức năng khởi động xác định các thư viện cần thiết để nói chuyện với MCP3008, Balo LCD (và sau đó là màn hình) và xác định các chân LED. Từ đó nó sẽ kiểm tra hệ thống cơ bản và tiến hành về nhà cánh tay. Chức năng gia đình bắt đầu với bộ kẹp và hoạt động theo cách của nó xuống đế để giảm thiểu cơ hội bị ràng buộc trong điều kiện bình thường. Nếu cánh tay được mở rộng hoàn toàn, thì cách tốt nhất là bạn nên đặt cánh tay đó theo cách thủ công trước khi cấp nguồn cho nó. Vì các Servos chung chung không cung cấp phản hồi về vị trí của nó, chúng tôi cần đặt từng chiếc ở một điểm xác định trước và theo dõi quãng đường di chuyển của từng chiếc.

Đầu tiên, vòng lặp chính bắt đầu ở chế độ chờ - tìm kiếm các cần điều khiển di chuyển khỏi vị trí trung tâm của chúng. Khi điều đó xảy ra, vòng lặp chính sẽ thay đổi trạng thái thành trạng thái đếm ngược. Khi người dùng di chuyển từng cần điều khiển, vị trí tương đối của cần điều khiển từ trung tâm sẽ thêm vào hoặc trừ đi vị trí đã biết hiện tại và cập nhật servo thích hợp. Khi một servo đã đạt đến giới hạn xác định theo một hướng, cần điều khiển sẽ dừng lại. Người dùng sẽ cần di chuyển cần điều khiển theo hướng khác để di chuyển lại. Đây là giới hạn phần mềm áp dụng cho các servos bất kể điểm dừng phần cứng của chúng. Tính năng này cho phép bạn giữ các chuyển động của cánh tay trong một khu vực hoạt động cụ thể nếu cần. Nếu cần điều khiển được thả về giữa, chuyển động sẽ dừng lại.

Mã này chỉ là một điểm khởi đầu chung. Bạn có thể thêm các chế độ của riêng mình như bạn muốn. Một ví dụ có thể là chế độ chạy liên tục không hẹn giờ hoặc có thể thêm các nút nhấn cần điều khiển làm đầu vào và ghi chế độ ghi / phát lại.

Bước 5: Liên kết và Tài nguyên

Tham chiếu cánh tay

  • Đăng đã truyền cảm hứng cho dự án này
  • Các bài đăng trên blog của Nhà thiết kế ban đầu
  • Thingiverse Arm
  • Thingiverse Mini Servo Gripper

Thư viện phần mềm

  • Tài nguyên bộ điều khiển PWM / Servo Adafruit
  • Thư viện MCP3008
  • Bảng dữ liệu MCP3008

Bảng điều khiển và mã

  • Bản vẽ Tinkercad của Bảng điều khiển tôi đã thực hiện
  • Kho mã hiện tại

Đề xuất: