Mục lục:
- Bước 1: Yêu cầu về thành phần
- Bước 2: Tải xuống Gui
- Bước 3: Kết nối
- Bước 4: Tải lên chương trình cơ sở và kiểm tra kết quả mã trong Bảng điều khiển Arduino
- Bước 5: Thiết kế và in tất cả các phần trong tấm ván ép
- Bước 6: Lắp ráp
- Bước 7: Thiết lập Cài đặt GBRL
- Bước 8: Tải lên mã cuối cùng và kiểm tra kết quả ảo trong Bảng điều khiển phần mềm Arduino Uno
Video: Robot chọn và đặt cơ sở Arduino: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Tôi đã chế tạo một cánh tay rô bốt công nghiệp siêu rẻ (chưa đến 1000 đô la) để cho phép sinh viên hack rô bốt quy mô lớn hơn và cho phép các cơ sở sản xuất nhỏ ở địa phương sử dụng rô bốt trong các quy trình của họ mà không bị vi phạm. Eassy của nó để xây dựng và tạo ra những người có độ tuổi từ 15 đến 50 tuổi.
Bước 1: Yêu cầu về thành phần
1. Arduino + Shield + Pins + Cáp
2. Bộ điều khiển động cơ: dm860A (Ebay)
3. Steppermotor: 34hs5435c-37b2 (Ebay)
4. Bu lông M8x45 + 60 + 70 và bu lông M8.
5. Ván ép 12mm.
6. 5mm Nylon.
7. Vòng đệm mù 8mm.
8. Vít gỗ 4,5x40mm.
9. Bộ đếm M3 bị chìm, 10. Nguồn điện 12v
11. trình điều khiển động cơ servo arduino
Bước 2: Tải xuống Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Bước 3: Kết nối
Kết nối các dây được đưa ra trong hình ảnh sẽ giúp bạn hiểu rõ hơn.
chúng tôi cần kết nối trình điều khiển động cơ với Arduino và các đầu nối khác được yêu cầu theo robot của bạn.
Bước 4: Tải lên chương trình cơ sở và kiểm tra kết quả mã trong Bảng điều khiển Arduino
Cài đặt phần sụn trên Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Lưu ý: Bạn có thể gặp xung đột khi biên dịch trong Arduino. Xóa tất cả các thư viện khác khỏi thư mục thư viện của bạn (../documents/Arduino/libraries).
Thiết lập chương trình cơ sở
Đặt kích hoạt thành thời gian chờ mới hơn. Sử dụng kết nối nối tiếp và viết:
$1=255
Đặt homing:
$22=1
Nhớ đặt serial thành baud: 115200
Mã G hữu ích
Đặt điểm 0 cho rô bốt:
G10 L2 Xnnn Ynnn Znnn
Sử dụng điểm 0:
G54
Khởi tạo điển hình cho robot trung tâm:
G10 L2 X1.5 Y1.2 Z1.1
G54
Di chuyển robot đến vị trí nhanh chóng:
G0 Xnnn Ynnn Znnn
Thí dụ:
G0 X10.0 Y3.1 Z4.2 (trả lại)
Di chuyển robot đến vị trí với tốc độ cụ thể:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (trả lại)
F phải từ 10 (slooooow) đến 600 (nhanh)
Các đơn vị mặc định cho X, Y và Z
Khi sử dụng cài đặt bước / đơn vị mặc định (250 bước / đơn vị) cho GRBL và
ổ đĩa bước được thiết lập cho 800 bước / vòng quay, các đơn vị sau áp dụng cho tất cả các trục:
+ - 32 đơn vị = + - 180 độ
Ví dụ về mã xử lý:
Mã này có thể giao tiếp trực tiếp với Arduino GRBL.
github.com/damellis/gctrl
Nhớ đặt serial thành baud: 115200
Uoload mã trong ardunio
nhập java.awt.event. KeyEvent;
nhập javax.swing. JOptionPane;
nhập xử lý.serial. *;
Cổng nối tiếp = null;
// chọn và sửa đổi dòng thích hợp cho hệ điều hành của bạn
// để lại dưới dạng null để sử dụng cổng tương tác (nhấn 'p' trong chương trình)
Chuỗi portname = null;
// String portname = Serial.list () [0]; // Mac OS X
// Chuỗi portname = "/ dev / ttyUSB0"; // Linux
// Chuỗi portname = "COM6"; // Các cửa sổ
boolean streaming = false;
tốc độ phao = 0,001;
Chuỗi gcode;
int i = 0;
void openSerialPort ()
{
if (portname == null) return;
if (port! = null) port.stop ();
port = new Serial (this, portname, 115200);
port.bufferUntil ('\ n');
}
void selectSerialPort ()
{
Chuỗi kết quả = (Chuỗi) JOptionPane.showInputDialog (this, "Chọn cổng nối tiếp tương ứng với bảng Arduino của bạn.", "Chọn cổng nối tiếp", JOptionPane. PLAIN_MESSAGE, vô giá trị, Serial.list (), 0);
if (result! = null) {
portname = kết quả;
openSerialPort ();
}
}
void setup ()
{
kích thước (500, 250);
openSerialPort ();
}
void draw ()
{
nền (0);
điền (255);
int y = 24, dy = 12;
text ("HƯỚNG DẪN", 12, y); y + = dy;
text ("p: chọn cổng nối tiếp", 12, y); y + = dy;
text ("1: đặt tốc độ thành 0,001 inch (1 triệu) mỗi lần chạy bộ", 12, y); y + = dy;
text ("2: đặt tốc độ thành 0,010 inch (10 triệu) mỗi lần chạy", 12, y); y + = dy;
text ("3: đặt tốc độ thành 0,100 inch (100 triệu) mỗi lần chạy", 12, y); y + = dy;
text ("các phím mũi tên: chạy bộ trong mặt phẳng x-y", 12, y); y + = dy;
text ("trang lên & trang xuống: chạy theo trục z", 12, y); y + = dy;
text ("$: hiển thị cài đặt grbl", 12, y); y + = dy;
text ("h: go nha", 12, y); y + = dy;
text ("0: 0 máy (đặt nhà ở vị trí hiện tại)", 12, y); y + = dy;
text ("g: truyền một tệp mã g", 12, y); y + = dy;
text ("x: dừng phát trực tuyến mã g (điều này KHÔNG phải ngay lập tức)", 12, y); y + = dy;
y = chiều cao - dy;
text ("tốc độ chạy bộ hiện tại:" + tốc độ + "inch mỗi bước", 12, y); y - = dy;
text ("cổng nối tiếp hiện tại:" + tên cổng, 12, y); y - = dy;
}
void keyPressed ()
{
if (key == '1') speed = 0,001;
if (key == '2') speed = 0,01;
if (key == '3') speed = 0,1;
if (! streaming) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + speed + "Y0.000 Z0.000 / n");
if (keyCode == RIGHT) port.write ("G91 / nG20 / nG00 X" + speed + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + speed + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + speed + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + speed + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + speed + "\ n");
// if (key == 'h') port.write ("G90 / nG20 / nG00 X0.000 Y0.000 Z0.000 / n");
if (key == 'v') port.write ("$ 0 = 75 / n $ 1 = 74 / n $ 2 = 75 / n");
// if (key == 'v') port.write ("$ 0 = 100 / n $ 1 = 74 / n $ 2 = 75 / n");
if (key == 's') port.write ("$ 3 = 10 / n");
if (key == 'e') port.write ("$ 16 = 1 / n");
if (key == 'd') port.write ("$ 16 = 0 / n");
if (key == '0') openSerialPort ();
if (key == 'p') selectSerialPort ();
if (key == '$') port.write ("$$ / n");
if (key == 'h') port.write ("$ H / n");
}
if (! streaming && key == 'g') {
gcode = null; i = 0;
Tệp tin = null;
println ("Đang tải tệp tin…");
selectInput ("Chọn một tệp để xử lý:", "fileSelected", tệp);
}
if (key == 'x') streaming = false;
}
void fileSelected (Lựa chọn tệp) {
if (selection == null) {
println ("Cửa sổ đã bị đóng hoặc người dùng nhấn hủy.");
} khác {
println ("Người dùng đã chọn" + select.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
if (gcode == null) return;
streaming = true;
dòng();
}
}
void stream ()
{
if (! streaming) return;
trong khi (đúng) {
if (i == gcode.length) {
phát trực tuyến = false;
trở lại;
}
if (gcode .trim (). length () == 0) i ++;
khác phá vỡ;
}
println (gcode );
port.write (gcode + '\ n');
i ++;
}
void serialEvent (Serial p)
{
String s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). startedWith ("ok")) stream ();
if (s.trim (). startedWith ("error")) stream (); // XXX: thật không?
}
Bước 5: Thiết kế và in tất cả các phần trong tấm ván ép
Tải xuống phần robot và thiết kế trong AutoCAD và in trên tấm ván ép 12mm và phần hoàn thiện và thiết kế. Nếu ai có nhu cầu về file cad thì hãy để lại ý kiến ở phần bình luận khung mình sẽ `gửi trực tiếp cho các bạn.
Bước 6: Lắp ráp
thu thập tất cả các phần và sắp xếp theo trình tự trên hình ảnh được cho và theo sơ đồ hình ảnh.
Bước 7: Thiết lập Cài đặt GBRL
Cài đặt đã được chứng minh là hoạt động trên rô bốt của chúng tôi.
$ 0 = 10 (xung bước, usec) $ 1 = 255 (độ trễ không tải bước, mili giây) $ 2 = 7 (mặt nạ đảo cổng bước: 00000111) $ 3 = 7 (mặt nạ đảo cổng dir: 00000111) $ 4 = 0 (đảo ngược kích hoạt bước, bool) $ 5 = 0 (đảo ngược chân giới hạn, bool) $ 6 = 1 (đảo ngược chân đầu dò, bool) $ 10 = 3 (mặt nạ báo cáo trạng thái: 00000011) $ 11 = 0,020 (độ lệch đường giao nhau, mm) $ 12 = 0,002 (dung sai vòng cung, mm) $ 13 = 0 (báo cáo inch, bool) $ 20 = 0 (giới hạn mềm, bool) $ 21 = 0 (giới hạn cứng, bool) $ 22 = 1 (chu kỳ homing, bool) $ 23 = 0 (mặt nạ đảo ngược homing dir: 00000000) $ 24 = 100.000 (nguồn cấp dữ liệu homing, mm / phút) $ 25 = 500.000 (homing tìm kiếm, mm / phút) $ 26 = 250 (homing debounce, msec) $ 27 = 1.000 (homing pull-off, mm) $ 100 = 250.000 (x, bước / mm) $ 101 = 250.000 (y, bước / mm) 102 đô la = 250.000 (z, bước / mm) 110 đô la = 500.000 (x tốc độ tối đa, mm / phút) 111 đô la = 500.000 (tốc độ tối đa y, mm / phút) 112 đô la = 500.000 (tốc độ tối đa z, mm / phút) $ 120 = 10.000 (x accel, mm / giây ^ 2) $ 121 = 10.000 (y accel, mm / giây ^ 2) $ 122 = 10.000 (z accel, mm / giây ^ 2) $ 130 = 200.000 (x di chuyển tối đa, mm) $ 131 = 200.000 (hành trình tối đa y, mm) $ 132 = 200.000 (hành trình tối đa z, mm)
Bước 8: Tải lên mã cuối cùng và kiểm tra kết quả ảo trong Bảng điều khiển phần mềm Arduino Uno
// Đơn vị: CM
float b_height = 0;
float a1 = 92;
float a2 = 86;
float snude_len = 20;
boolean doZ = false;
float base_angle; // = 0;
float arm1_angle; // = 0;
float arm2_angle; // = 0;
float bx = 60; // = 25;
float by = 60; // = 0;
float bz = 60; // = 25;
float x = 60;
float y = 60;
float z = 60;
phao q;
phao c;
float V1;
phao V2;
phao V3;
float V4;
phao V5;
void setup () {
kích thước (700, 700, P3D);
cam = new PeasyCam (this, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
void draw () {
// ligninger:
y = (mouseX - width / 2) * (- 1);
x = (mouseY - height / 2) * (- 1);
bz = z;
bằng = y;
bx = x;
float y3 = sqrt (bx * bx + by * by);
c = sqrt (y3 * y3 + bz * bz);
V1 = acos ((a2 * a2 + a1 * a1-c * c) / (2 * a2 * a1));
V2 = acos ((c * c + a1 * a1-a2 * a2) / (2 * c * a1));
V3 = acos ((y3 * y3 + c * c-bz * bz) / (2 * y3 * c));
q = V2 + V3;
arm1_angle = q;
V4 = radian (90,0) - q;
V5 = radian (180) - V4 - radian (90);
arm2_angle = radian (180.0) - (V5 + V1);
base_angle = độ (atan2 (bx, by));
arm1_angle = độ (arm1_angle);
arm2_angle = độ (arm2_angle);
// println (do, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
arm1_angle = 23;
arm2_angle = 23;
*/
// tương tác:
// if (doZ)
//
// {
// base_angle = base_angle + mouseX-pmouseX;
// } khác
// {
// arm1_angle = arm1_angle + pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle + mouseY-pmouseY;
draw_robot (base_angle, - (arm1_angle-90), arm2_angle + 90 - (- (arm1_angle-90)));
// println (base_angle + "," + arm1_angle + "," + arm2_angle);
}
void draw_robot (float base_angle, float arm1_angle, float arm2_angle)
{
xoayX (1.2);
xoayZ (-1,2);
nền (0);
đèn ();
pushMatrix ();
// CƠ SỞ
điền vào (150, 150, 150);
box_corner (50, 50, b_height, 0);
xoay (radian (base_angle), 0, 0, 1);
// ARM 1
điền vào (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// ARM 2
điền (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// SNUDE
điền (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle-arm2_angle + 90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
dịch (0, -action_box_size / 2, action_box_size / 2 + b_height);
pushMatrix ();
dịch (x, action_box_size- y-action_box_size / 2, z-action_box_size / 2);
điền (255, 255, 0);
hộp (20);
popMatrix ();
điền (255, 255, 255, 50);
box (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float xoay)
{
xoay (radian (xoay), 1, 0, 0);
dịch (0, 0, d / 2);
hộp (w, h, d);
dịch (0, 0, d / 2);
}
void keyPressed ()
{
if (key == 'z')
{
doZ =! doZ;
}
if (key == 'h')
{
// đặt tất cả thành 0
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
if (key == 'g')
{
println (độ (V1));
println (độ (V5));
}
if (keyCode == UP)
{
z ++;
}
if (keyCode == DOWN)
{
z -;
}
if (key == 'o')
{
y = 50;
z = 50;
println (q);
println (c, "c");
println (V1, "V1");
println (V2);
println (V3);
println (arm1_angle);
println (V4);
println (V5);
println (arm2_angle);
}
}
Đề xuất:
Menu màn hình OLED Arduino có tùy chọn để chọn: 8 bước
Menu màn hình OLED Arduino có tùy chọn để chọn: Trong hướng dẫn này, chúng ta sẽ học cách tạo menu với tùy chọn lựa chọn bằng Màn hình OLED và Visuino
Bộ chọn màu Arduino RGB - Chọn màu từ các đối tượng trong cuộc sống thực: 7 bước (có hình ảnh)
Bộ chọn màu Arduino RGB - Chọn màu từ các đối tượng trong cuộc sống thực: Dễ dàng chọn màu từ các đối tượng vật lý với bộ chọn màu RGB dựa trên Arduino này, cho phép bạn tạo lại màu sắc mà bạn nhìn thấy trong các đối tượng đời thực trên máy tính hoặc điện thoại di động của mình. Chỉ cần nhấn một nút để quét màu của đối tượng bằng TCS347 giá rẻ
Robot chọn và đặt dựa trên RFID: 4 bước
Robot chọn và đặt dựa trên RFID: Từ nhiều năm nay, con người cố gắng thay thế công việc của con người bằng máy móc. Máy móc được gọi là robot nhanh hơn và hiệu quả hơn con người. Thuật ngữ robot thực tế được định nghĩa là việc nghiên cứu, thiết kế và sử dụng các hệ thống robot để sản xuất. Robot là g
UCL - Nhúng - Chọn và Đặt: 4 bước
UCL - Nhúng - Chọn và Đặt: Hướng dẫn này sẽ diễn ra tùy thuộc vào cách thực hiện đơn vị chọn và đặt 2D cũng như cách mã hóa đơn vị đó
Chọn và đặt dựa trên tầm nhìn với UArm: 6 bước
Chọn và đặt dựa trên tầm nhìn với UArm: Gần đây, hầu hết các câu hỏi mà chúng tôi nhận được từ bạn là về các ứng dụng dựa trên tầm nhìn của uArm, như nhận dạng đối tượng, tương quan camera-uArm, v.v. Trên thực tế, chúng tôi đã nghiên cứu điều đó cho một Chúng tôi đã tiến hành một tầm nhìn đơn giản dựa trên