Isi kandungan:
- Langkah 1: Keperluan Komponen
- Langkah 2: Muat turun Gui
- Langkah 3: Sambungan
- Langkah 4: Muat naik Firmware dan Periksa Hasil Kod di Arduino Dashboard
- Langkah 5: Reka dan Cetak Semua Bahagian dalam Lembaran Papan lapis
- Langkah 6: Perhimpunan
- Langkah 7: Tetapkan Tetapan GBRL
- Langkah 8: Muat naik Kod Akhir dan Periksa Hasil Maya di Papan Pemuka Perisian Arduino Uno
Video: Arduino Base Pick and Place Robot: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Saya telah membuat lengan robot perindustrian super murah (kurang dari 1000 dolar) untuk membolehkan pelajar menggodam robotik skala lebih besar dan untuk membolehkan produksi tempatan kecil menggunakan robot dalam prosesnya tanpa melanggar bank. Kemudahannya untuk membina dan menjadikan golongan ini terdiri daripada 15 hingga 50 tahun.
Langkah 1: Keperluan Komponen
1. Arduino + Perisai + Pin + Kabel
2. Pengawal Motosikal: dm860A (Ebay)
3. Steppermotor: 34hs5435c-37b2 (Ebay)
4. M8x45 + 60 + 70 bolt dan M8 bolt.
5. Papan Lapis 12mm.
6. Nilon 5mm.
7. Pencuci buta 8mm.
8. Skru Kayu 4.5x40mm.
9. Kaunter M3 tenggelam, 10. bekalan kuasa 12v
11. pemandu motor servo arduino
Langkah 2: Muat turun Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Menggunakan-Grbl
Langkah 3: Sambungan
Sambungkan wayar yang diberikan dalam gambar adalah pemahaman yang lebih baik untuk anda.
kita perlu menghubungkan pemandu motor ke Arduino dan penyambung lain yang diperlukan mengikut robot anda.
Langkah 4: Muat naik Firmware dan Periksa Hasil Kod di Arduino Dashboard
Memasang firmware pada Arduino - GRBL:
github.com/grbl/grbl/wiki/Kompilasi-Grbl
Catatan: Anda mungkin mengalami konflik ketika menyusun di Arduino. Keluarkan semua perpustakaan lain dari folder perpustakaan anda (../documents/Arduino/libraries).
Penyediaan perisian api
Tetapkan aktifkan ke waktu tamat yang lebih baru. Gunakan sambungan bersiri dan tulis:
$1=255
Tetapkan homing:
$22=1
Ingatlah untuk menetapkan siri ke baud: 115200
Kod G yang berguna
Tetapkan titik sifar untuk robot:
G10 L2 Xnnn Ynnn Znnn
Gunakan titik sifar:
G54
Permulaan khas untuk robot pusat:
G10 L2 X1.5 Y1.2 Z1.1
G54
Gerakkan robot ke kedudukan pantas:
G0 Xnnn Ynnn Znnn
Contoh:
G0 X10.0 Y3.1 Z4.2 (kembali)
Gerakkan robot ke kedudukan pada kelajuan tertentu:
G1 Xnnn Ynnn Znnn Fnnn
G1 X11 Y3 Z4 F300 (kembali)
F mestilah antara 10 (slooooow) dan 600 (cepat)
Unit lalai untuk X, Y dan Z
Semasa menggunakan tetapan langkah / unit lalai (250 langkah / unit) untuk GRBL dan
langkah pemacu stepper untuk 800 langkah / rev unit berikut berlaku untuk semua paksi:
+ - 32 unit = + - 180 darjah
Contoh kod pemprosesan:
Kod ini dapat berkomunikasi secara langsung dengan Arduino GRBL.
github.com/damellis/gctrl
Ingatlah untuk menetapkan siri ke baud: 115200
Kod uoload di ardunio
import java.awt.event. KeyEvent;
import javax.swing. JOptionPane;
pemprosesan import.serial. *;
Port bersiri = null;
// pilih dan ubah baris yang sesuai untuk sistem operasi anda
// biarkan kosong untuk menggunakan port interaktif (tekan 'p' dalam program)
String portname = null;
// String portname = Serial.list () [0]; // Mac OS X
// String portname = "/ dev / ttyUSB0"; // Linux
// String portname = "COM6"; // Windows
streaming boolean = salah;
kelajuan apungan = 0.001;
Rentetan gcode;
int i = 0;
batal bukaSerialPort ()
{
jika (portname == null) kembali;
jika (port! = null) port.stop ();
port = Serial baru (ini, nama port, 115200);
port.bufferUntil ('\ n');
}
batal pilihSerialPort ()
{
Hasil rentetan = (String) JOptionPane.showInputDialog (ini, "Pilih port bersiri yang sesuai dengan papan Arduino anda.", "Pilih port bersiri", JOptionPane. PLAIN_MESSAGE, batal, Siri. senarai (), 0);
jika (hasil! = batal) {
nama port = hasil;
openSerialPort ();
}
}
persediaan tidak sah ()
{
saiz (500, 250);
openSerialPort ();
}
undian tidak sah ()
{
latar belakang (0);
isi (255);
int y = 24, dy = 12;
teks ("ARAHAN", 12, y); y + = dy;
teks ("p: pilih port bersiri", 12, y); y + = dy;
teks ("1: tetapkan kelajuan hingga 0,001 inci (1 mil) setiap jog", 12, y); y + = dy;
teks ("2: tetapkan kelajuan hingga 0,010 inci (10 mil) setiap jog", 12, y); y + = dy;
teks ("3: tetapkan kelajuan hingga 0.100 inci (100 mil) setiap jog", 12, y); y + = dy;
teks ("kekunci anak panah: berjoging dalam satah x-y", 12, y); y + = dy;
teks ("halaman atas & halaman bawah: jog dalam paksi z", 12, y); y + = dy;
teks ("$: tetapan paparan grbl", 12, y); y + = dy;
teks ("h: pulang ke rumah", 12, y); y + = dy;
teks ("0: mesin sifar (tetapkan rumah ke lokasi semasa)", 12, y); y + = dy;
teks ("g: stream fail g-code", 12, y); y + = dy;
teks ("x: hentikan streaming g-code (ini TIDAK segera)", 12, y); y + = dy;
y = tinggi - dy;
teks ("kelajuan jog semasa:" + kelajuan + "inci setiap langkah", 12, y); y - = dy;
teks ("port bersiri semasa:" + nama port, 12, y); y - = dy;
}
kekunci kekosongan Ditekan ()
{
jika (kunci == '1') kelajuan = 0.001;
jika (kunci == '2') kelajuan = 0.01;
jika (kunci == '3') kelajuan = 0.1;
jika (! streaming) {
if (keyCode == LEFT) port.write ("G91 / nG20 / nG00 X-" + kelajuan + "Y0.000 Z0.000 / n");
if (keyCode == KANAN) port.write ("G91 / nG20 / nG00 X" + kelajuan + "Y0.000 Z0.000 / n");
if (keyCode == UP) port.write ("G91 / nG20 / nG00 X0.000 Y" + kelajuan + "Z0.000 / n");
if (keyCode == DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y-" + kelajuan + "Z0.000 / n");
if (keyCode == KeyEvent. VK_PAGE_UP) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z" + kelajuan + "\ n");
if (keyCode == KeyEvent. VK_PAGE_DOWN) port.write ("G91 / nG20 / nG00 X0.000 Y0.000 Z-" + kelajuan + "\ 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");
jika (kunci == '0') openSerialPort ();
jika (kunci == 'p') pilihSerialPort ();
if (key == '$') port.write ("$$ / n");
if (key == 'h') port.write ("$ H / n");
}
jika (! streaming && key == 'g') {
gcode = null; i = 0;
Fail fail = null;
println ("Memuatkan fail …");
selectInput ("Pilih fail untuk diproses:", "fileSelected", fail);
}
jika (kunci == 'x') streaming = salah;
}
batal failPilih (Pemilihan fail) {
jika (pemilihan == null) {
println ("Tetingkap ditutup atau tekan pengguna membatalkan.");
} lain {
println ("Pengguna dipilih" + selection.getAbsolutePath ());
gcode = loadStrings (selection.getAbsolutePath ());
jika (gcode == null) kembali;
streaming = benar;
aliran ();
}
}
aliran kosong ()
{
sekiranya (! streaming) kembali;
sementara (benar) {
jika (i == gcode.length) {
streaming = palsu;
kembali;
}
jika (gcode .trim (). panjang () == 0) i ++;
lain pecah;
}
println (gcode );
port.write (gcode + '\ n');
saya ++;
}
batal serialEvent (Serial p)
{
Rentetan s = p.readStringUntil ('\ n');
println (s.trim ());
if (s.trim (). beginWith ("ok")) aliran ();
if (s.trim (). beginWith ("error")) aliran (); // XXX: betul-betul?
}
Langkah 5: Reka dan Cetak Semua Bahagian dalam Lembaran Papan lapis
Muat turun bahagian dan reka bentuk robot dalam AutoCAD dan cetak pada kepingan papan lapis 12mm dan bahagian akhir dan reka bentuk. Sekiranya ada yang memerlukan fail cad, sila tinggalkan komen di ruangan komen, saya akan menghantar anda secara langsung.
Langkah 6: Perhimpunan
kumpulkan semua bahagian dan susun mengikut urutan pada gambar yang diberikan dan ikuti rajah gambar.
Langkah 7: Tetapkan Tetapan GBRL
Tetapan yang terbukti berfungsi pada robot kami.
$ 0 = 10 (nadi langkah, usec) $ 1 = 255 (kelewatan step idle, msec) $ 2 = 7 (topeng invert port step: 00000111) $ 3 = 7 (topeng invert port dir: 00000111) $ 4 = 0 (langkah mengaktifkan invert, bool) $ 5 = 0 (had had pin, bool) $ 6 = 1 (pin prob invert, bool) $ 10 = 3 (status report mask: 00000011) $ 11 = 0.020 (simpang penyimpangan, mm) $ 12 = 0.002 (toleransi arka, mm) $ 13 = 0 (inci laporan, bool) $ 20 = 0 (had lembut, bool) $ 21 = 0 (had keras, bool) $ 22 = 1 (kitaran homing, bool) $ 23 = 0 (topeng invert dir homing: 00000000) $ 24 = 100.000 (umpan pulang, mm / min) $ 25 = 500.000 (pencarian homing, mm / min) $ 26 = 250 (debouning homing, msec) $ 27 = 1.000 (pull-off homing, mm) $ 100 = 250.000 (x, langkah / mm) $ 101 = 250.000 (y, langkah / mm) $ 102 = 250.000 (z, langkah / mm) $ 110 = 500.000 (kadar x maksimum, mm / min) $ 111 = 500.000 (kadar maksimum y, mm / min) $ 112 = 500.000 (kadar maksimum z, mm / min) $ 120 = 10.000 (x accel, mm / sec ^ 2) $ 121 = 10.000 (y accel, mm / sec ^ 2) $ 122 = 10.000 (z accel, mm / sec ^ 2) $ 130 = 200.000 (x maksimum perjalanan, mm) $ 131 = 200.000 (perjalanan maksimum, mm) $ 132 = 200.000 (perjalanan maksimum z, mm)
Langkah 8: Muat naik Kod Akhir dan Periksa Hasil Maya di Papan Pemuka Perisian Arduino Uno
// Unit: CM
apungan b_height = 0;
apungan a1 = 92;
apungan a2 = 86;
float snude_len = 20;
boolean doZ = false;
float base_angle; // = 0;
lengan apung1_angle; // = 0;
lengan apung2_angle; // = 0;
apungan bx = 60; // = 25;
terapung dengan = 60; // = 0;
apungan bz = 60; // = 25;
apungan x = 60;
terapung y = 60;
apungan z = 60;
apungan q;
apungan c;
terapung V1;
terapung V2;
terapung V3;
terapung V4;
terapung V5;
batal persediaan () {
saiz (700, 700, P3D);
cam = PeasyCam baru (ini, 300);
cam.setMinimumDistance (50);
cam.setMaximumDistance (500);
}
undian tidak sah () {
// ligninger:
y = (tetikusX - lebar / 2) * (- 1);
x = (tetikusY - tinggi / 2) * (- 1);
bz = z;
oleh = y;
bx = x;
terapung 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 = darjah (atan2 (bx, by));
arm1_angle = darjah (arm1_angle);
arm2_angle = darjah (arm2_angle);
// println (oleh, bz);
// arm1_angle = 90;
// arm2_angle = 45;
/*
arm2_angle = 23;
arm1_angle = 23;
arm2_angle = 23;
*/
// interaktif:
// jika (doZ)
//
// {
// base_angle = base_angle + mouseX-pmouseX;
//} lain
// {
// 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)
{
rotateX (1.2);
putarZ (-1.2);
latar belakang (0);
lampu ();
pushMatrix ();
// ASAS
isi (150, 150, 150);
box_corner (50, 50, b_height, 0);
putar (radian (base_angle), 0, 0, 1);
// ARM 1
isi (150, 0, 150);
box_corner (10, 10, a1, arm1_angle);
// ARM 2
isi (255, 0, 0);
box_corner (10, 10, a2, arm2_angle);
// PENILAIAN
isi (255, 150, 0);
box_corner (10, 10, snude_len, -arm1_angle-arm2_angle + 90);
popMatrix ();
pushMatrix ();
float action_box_size = 100;
terjemahkan (0, -action_box_size / 2, action_box_size / 2 + b_height);
pushMatrix ();
terjemahkan (x, action_box_size- y-action_box_size / 2, z-action_box_size / 2);
isi (255, 255, 0);
kotak (20);
popMatrix ();
isi (255, 255, 255, 50);
kotak (action_box_size, action_box_size, action_box_size);
popMatrix ();
}
void box_corner (float w, float h, float d, float putar)
{
putar (radian (putar), 1, 0, 0);
terjemahkan (0, 0, d / 2);
kotak (w, h, d);
terjemahkan (0, 0, d / 2);
}
kekunci kekosongan Ditekan ()
{
jika (kunci == 'z')
{
doZ =! doZ;
}
jika (kunci == 'h')
{
// tetapkan semua ke sifar
arm2_angle = 0;
arm1_angle = 90;
base_angle = 0;
}
jika (kunci == 'g')
{
println (darjah (V1));
println (darjah (V5));
}
jika (keyCode == UP)
{
z ++;
}
jika (keyCode == KE BAWAH)
{
z -;
}
jika (kunci == '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);
}
}
Disyorkan:
Pick-a-Player: 4 Langkah
Pick-a-Player: Instruksional ini akan membimbing anda bagaimana membuat keputusan Arduino. Dengan menekan butang, LED akan menyala dalam corak rawak. Selepas beberapa saat, satu LED akan menyala. Ini adalah keputusan terakhir yang dibuat oleh Arduino
Robot Pick and Place berdasarkan RFID: 4 Langkah
Robot Pilih dan Tempat Berasaskan RFID: Sejak bertahun-tahun orang cuba menggantikan kerja manusia dengan mesin. Mesin yang dipanggil robot lebih pantas dan berkesan daripada orang. Istilah robotik secara praktikal ditakrifkan sebagai kajian, reka bentuk dan penggunaan sistem robot untuk pembuatan. Robot adalah
Print-in-Place Robotic Gripper: 4 Langkah (dengan Gambar)
Print-in-Place Robotic Gripper: Robotics adalah bidang yang menarik, dan kami beruntung dapat hidup pada masa ketika komuniti robotik DIY menghasilkan beberapa karya dan projek yang luar biasa. Walaupun banyak projek ini sangat maju dan inovatif, saya telah berusaha untuk membuat robot
Bercakap dengan Pick dan Artificial Intelligence Chat Menggunakan Cleverbot: 14 Langkah (dengan Gambar)
Bercakap dengan Pick dan Artificial Intelligence Chat Menggunakan Cleverbot: Di sini saya cuba bukan sahaja arahan suara tetapi juga Artificial Intelligence Chat dengan Komputer menggunakan Cleverbot. Sebenarnya idea itu muncul ketika mendapati anak-anak mencampurkan warna dalam kotak pewarna ketika mengambil warna dari satu warna ke warna terdekat. Tetapi akhirnya melaksanakan
Arduino Base Auto Direction Robot: 8 Langkah (dengan Gambar)
Arduino Base Auto Direction Robot: robot yang bergerak dengan mengelakkan halangan. ia merasakan objek dan melihat sekelilingnya dan terus pergi ke tempat yang lapang