2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Phần hướng dẫn này sẽ trình bày cách thực hiện đơn vị chọn và đặt 2D cũng như cách mã hóa đơn vị đó.
Bước 1: Các bản tổng hợp
1x Adrio Mega
2x động cơ bước (chúng tôi đã sử dụng Động cơ bước JLB, model 17H1352-P4130)
2x Mô-đun bảng điều khiển ổ đĩa động cơ bước L298N Cầu H kép DC cho Arduino
1x động cơ servo (Chúng tôi không có điểm trên cái này)
Điện trở 3x 10k ohm
2x bánh xe nylon
Nguồn điện 1x 12v
Một số gỗ cho khung
Dây điện
Bước 2: Thi công
Điều đầu tiên trong mặt Xây dựng là xem xét kích thước và hình dạng của dụng cụ chọn và đặt mashine
Đầu tiên, chúng tôi xây dựng gỗ hình dạng cơ bản. Chúng tôi đã xây dựng khung chọn và đặt của chúng tôi từ 50cm x 25cm x 30cm. Tất cả mọi thứ ngoại trừ khung, cầu và tay nâng, đều được sản xuất bằng máy cắt tia laser.
Đây là liên kết đến tất cả các tệp
Sau đó, chúng tôi muốn hệ thống ròng rọc. Ở đây chúng tôi đã đi với hai vòng 50mm và một vòng 20mm. Sau đó, chúng tôi đặt một paracord bên cạnh 20mm với một số keo. Sau đó, chúng tôi bóp hai vòng 50mm ở hai bên của vòng 20mm.
20mm
50mm
Sau đó, chúng ta cần thiết kế một hướng dẫn trượt đến cánh tay. Ở đây chúng tôi đã làm hai mặt và một mặt sau.
Sau đó được dán ở dạng chữ U. Sau đó, chúng tôi kết nối nó với cây cầu.
Tấm bên
Tấm sau
Bây giờ các phần để di chuyển cánh tay lên và xuống đã được thực hiện. Chúng ta cần di chuyển nó qua lại.
Khi thiết kế này, chúng tôi đảm bảo rằng các răng thẳng hàng với nhau. Vì vậy, cả hai mục đã được tạo ra ở cùng một nơi dự án.
Bước 3: Mã
Chương trình khá đơn giản và bao gồm 5 phần
- Bao gồm Thư viện và Thiết lập các biến để sử dụng nội bộ và IO
- Nạp đầu vào cho Ram
- Sekvens, chọn chuyển động bạn muốn.
- Điều khiển vị trí bước / servo
- Đầu ra thế giới
Chúng tôi sẽ giải thích rõ ràng từng phần, nhưng hãy nhớ đây chỉ là một trong nhiều giải pháp.
1: Để thiết lập void, chúng tôi đã bao gồm 2 thư viện chúng tôi cần cho projekt này. Bước và Servo. Sử dụng Thư viện đi kèm, giúp bạn tiết kiệm khi tìm hiểu mọi chi tiết về động cơ bước và động cơ servo.
#bao gồm
#bao gồm
const int stepsPerRevolution = 200; // thay đổi điều này để phù hợp với số bước trên mỗi vòng quay cho động cơ của bạn
// khởi tạo thư viện bước trên các chân 8 đến 11:
Stepper XStepper (các bướcPerRevolution, 22, 23, 24, 25); Bước YStepper (bướcPerRevolution, 28, 29, 30, 31); Servo Griper; // tạo đối tượng servo để điều khiển một servo
Gripper cần phải đính kèm trong thiết lập void
void setup () {// khởi tạo cổng nối tiếp: Serial.begin (9600); Griper.attach (9); // gắn servo trên chân 9 vào đối tượng servo
Phần còn lại của phần này chỉ là thiết lập của Biến và Hằng số.
2: Điều đầu tiên trong Void Loop là tải tất cả các đầu vào đã sử dụng vào một biến. Điều này được thực hiện vì hai lý do. Lý do đầu tiên là để hạn chế các tác vụ nặng nề của CPU khi đọc một Đầu vào. Lý do thứ hai, là lần nhập nhiều nhất và để đảm bảo rằng nếu một Đầu vào được sử dụng nhiều lần, thì nó sẽ có cùng giá trị trong toàn bộ quá trình quét. Điều này làm cho việc viết mã nhất quán dễ dàng hơn. Đây là một thực tế rất phổ biến trong lập trình PLC, nhưng nó cũng áp dụng cho lập trình nhúng.
// ------------------------- Nhập vào RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);
3: Trong phần sekvens của mã, chúng tôi chỉ tạo một sekvens bằng Switch và các lệnh trường hợp. Phần sekvens chỉ cung cấp tín hiệu cho phần Điều khiển vị trí của mã. Phần này có thể dễ dàng được tùy chỉnh theo ứng dụng của bạn hoặc được sử dụng nguyên trạng.
4: Vị trí của servo chỉ được điều khiển bởi servo liberi và một câu lệnh if cho bộ kẹp mở và đóng.
Điều khiển bước phức tạp hơn một chút. Hàm so sánh Điểm đặt (Vị trí bạn muốn cánh tay đến) và Vị trí hiện tại. Nếu vị trí hiện tại là người yêu, hàm sẽ bổ sung vào vị trí và yêu cầu hàm Stepper liberi thực hiện một bước tích cực. Điều ngược lại là đúng đối với vị trí to hig. nếu vị trí giống như Điểm đặt, một bit XinPos là sat hig và bước dừng.
// SP điều khiển X
if (XstepCountXsp chứ không phải Trang chủ) {
XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }
5: Thêm vào cuối mã động cơ được điều khiển bằng các chức năng liberi.
// -------------------- Đầu ra ---------------------- // bước một bước: XStepper.step (Xstep); // bước một bước: YStepper.step (Ystep);
Griper.write (GripSp);
Bước 4: Được thực hiện bởi
casp6099 - Casper Hartung Christensen
rasm616d - Rasmus Hansen