Daftar Isi:
- Langkah 1: Persyaratan Komponen
- Langkah 2: Unduh Gui
- Langkah 3: Koneksi
- Langkah 4: Unggah Firmware dan Periksa Hasil Kode di Dasbor Arduino
- Langkah 5: Desain dan Cetak Semua Bagian dalam Lembar Kayu Lapis
- Langkah 6: Perakitan
- Langkah 7: Atur Pengaturan GBRL
- Langkah 8: Unggah Kode Akhir dan Periksa Hasil Virtual di Dasbor Perangkat Lunak Arduino Uno
Video: Arduino Base Pick and Place Robot: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Saya telah membuat lengan robot industri super murah (kurang dari 1000 dolar) untuk memungkinkan siswa meretas robotika skala besar dan untuk memungkinkan produksi lokal kecil menggunakan robot dalam proses mereka tanpa merusak bank. Sangat mudah untuk membangun dan membuat kelompok usia 15 hingga 50 tahun.
Langkah 1: Persyaratan Komponen
1. Arduino+ Perisai + Pin + Kabel
2. Pengendali motor: dm860A (Ebay)
3. Motor langkah: 34hs5435c-37b2 (Ebay)
4. Baut M8x45+60+70 dan baut M8.
5. Kayu Lapis 12mm.
6. Nilon 5mm.
7. Mesin cuci buta 8mm.
8. Sekrup Kayu 4.5x40mm.
9. Penghitung M3 tenggelam, 10. Catu daya 12v
11. driver motor servo arduino
Langkah 2: Unduh Gui
zapmaker.org/projects/grbl-controller-3-0/
github.com/grbl/grbl/wiki/Using-Grbl
Langkah 3: Koneksi
Hubungkan kabel yang diberikan pada gambar adalah pemahaman yang lebih besar untuk Anda.
kita perlu menghubungkan driver motor ke Arduino dan konektor lain yang diperlukan sesuai robot Anda.
Langkah 4: Unggah Firmware dan Periksa Hasil Kode di Dasbor Arduino
Menginstal firmware di Arduino - GRBL:
github.com/grbl/grbl/wiki/Compiling-Grbl
Catatan: Anda mungkin mendapatkan konflik saat kompilasi di Arduino. Hapus semua perpustakaan lain dari folder perpustakaan Anda (../documents/Arduino/libraries).
Pengaturan firmware
Setel aktifkan ke batas waktu yang lebih baru. Gunakan koneksi serial dan tulis:
$1=255
Setel beranda:
$22=1
Ingatlah untuk mengatur serial ke baud: 115200
Kode-G yang berguna
Tetapkan titik nol untuk robot:
G10 L2 Xnnn Ynn Znn
Gunakan titik nol:
G54
Inisialisasi tipikal ke robot tengah:
G10 L2 X1.5 Y1.2 Z1.1
G54
Pindahkan robot ke posisi cepat:
G0 Xnnn Ynnn Znnn
Contoh:
G0 X10.0 Y3.1 Z4.2 (kembali)
Pindahkan robot ke posisi dengan kecepatan tertentu:
G1 Xnnn Ynnn Znnn Fnn
G1 X11 Y3 Z4 F300 (kembali)
F harus antara 10 (slooooow) dan 600 (cepat)
Satuan default untuk X, Y dan Z
Saat menggunakan pengaturan langkah/unit default (250 langkah/unit) untuk GRBL dan
drive stepper diatur untuk 800 langkah/putaran unit berikut berlaku untuk semua sumbu:
+- 32 satuan = +- 180 derajat
Contoh kode pemrosesan:
Kode ini dapat berkomunikasi langsung dengan Arduino GRBL.
github.com/damellis/gctrl
Ingatlah untuk mengatur serial ke baud: 115200
Kode uoload di ardunio
impor java.awt.event. KeyEvent;
impor javax.swing. JOptionPane;
import processing.serial.*;
Port serial = nol;
// pilih dan ubah baris yang sesuai untuk sistem operasi Anda
// biarkan sebagai null untuk menggunakan port interaktif (tekan 'p' dalam program)
Nama port string = null;
//String portname = Serial.list()[0]; // Mac OS X
//String nama port = "/dev/ttyUSB0"; // Linux
//String nama port = "COM6"; // Windows
streaming boolean = salah;
kecepatan mengambang = 0,001;
String kode g;
int saya = 0;
batalkan openSerialPort()
{
if (nama port == null) kembali;
if (port != null) port.stop();
port = Serial baru (ini, nama port, 115200);
port.bufferSampai('\n');
}
batal pilihSerialPort()
{
Hasil string = (String) JOptionPane.showInputDialog(ini, "Pilih port serial yang sesuai dengan papan Arduino Anda.", "Pilih port serial", JOptionPane. PLAIN_MESSAGE, batal, Serial.daftar(), 0);
if (hasil != null) {
nama port = hasil;
openSerialPort();
}
}
batalkan pengaturan()
{
ukuran (500, 250);
openSerialPort();
}
batal menggambar()
{
latar belakang(0);
isi(255);
int y = 24, dy = 12;
teks("INSTRUKSI", 12, y); y += hari;
text("p: pilih port serial", 12, y); y += hari;
text("1: setel kecepatan ke 0,001 inci (1 mil) per joging", 12, y); y += hari;
text("2: setel kecepatan ke 0,010 inci (10 mil) per joging", 12, y); y += hari;
text("3: setel kecepatan ke 0,100 inci (100 mil) per joging", 12, y); y += hari;
text("tombol panah: jog di bidang xy", 12, y); y += hari;
text("halaman atas & halaman bawah: joging di sumbu z", 12, y); y += hari;
text("$: menampilkan pengaturan grbl", 12, y); y+= hari;
text("h: pulang", 12, y); y += hari;
text("0: mesin nol (set home ke lokasi saat ini)", 12, y); y += hari;
text("g: streaming file kode-g", 12, y); y += hari;
text("x: hentikan streaming g-code (ini TIDAK langsung)", 12, y); y += hari;
y = tinggi - dy;
text("kecepatan joging saat ini: " + kecepatan + " inci per langkah", 12, y); y -= hari;
text("port serial saat ini: " + namaport, 12, y); y -= hari;
}
tombol batal Ditekan()
{
if (kunci == '1') kecepatan = 0,001;
if (kunci == '2') kecepatan = 0,01;
if (kunci == '3') kecepatan = 0,1;
jika (! streaming) {
if (Kode kunci == KIRI) port.write("G91\nG20\nG00 X-" + kecepatan + " Y0.000 Z0.000\n");
if (Kode kunci == KANAN) port.write("G91\nG20\nG00 X" + kecepatan + " Y0.000 Z0.000\n");
if (Kode kunci == UP) port.write("G91\nG20\nG00 X0.000 Y" + kecepatan + " Z0.000\n");
if (Kode kunci == BAWAH) port.write("G91\nG20\nG00 X0.000 Y-" + kecepatan + " Z0.000\n");
if (Kode kunci == KeyEvent. VK_PAGE_UP) port.write("G91\nG20\nG00 X0.000 Y0.000 Z" + kecepatan + "\n");
if (Kode kunci == KeyEvent. VK_PAGE_DOWN) port.write("G91\nG20\nG00 X0.000 Y0.000 Z-" + kecepatan + "\n");
//if (kunci == 'h') port.write("G90\nG20\nG00 X0.000 Y0.000 Z0.000\n");
if (kunci == 'v') port.write("$0=75\n$1=74\n$2=75\n");
//if (kunci == 'v') port.write("$0=100\n$1=74\n$2=75\n");
if (kunci == 's') port.write("$3=10\n");
if (kunci == 'e') port.write("$16=1\n");
if (kunci == 'd') port.write("$16=0\n");
if (kunci == '0') openSerialPort();
if (kunci == 'p') pilihSerialPort();
if (kunci == '$') port.write("$$\n");
if (kunci == 'h') port.write("$H\n");
}
if (!streaming && kunci == 'g') {
gkode = nol; saya = 0;
Berkas berkas = nol;
println("Memuat file…");
selectInput("Pilih file yang akan diproses:", "fileSelected", file);
}
if (kunci == 'x') streaming = false;
}
void fileSelected(Pilihan file) {
if (pilihan == null) {
println("Jendela ditutup atau pengguna menekan batal.");
} lain {
println("Pengguna yang dipilih " + seleksi.getAbsolutePath());
gcode = loadStrings(selection.getAbsolutePath());
if (gcode == null) kembali;
streaming = benar;
sungai kecil();
}
}
aliran kosong()
{
jika (!streaming) kembali;
sementara (benar) {
if (i == gcode.length) {
streaming = salah;
kembali;
}
if (gcode.trim().length() == 0) i++;
lain istirahat;
}
println(gkode);
port.write(gcode + '\n');
saya++;
}
batal serialEvent(Serial p)
{
String s = p.readStringUntil('\n');
println(s.trim());
if (s.trim().startsWith("ok")) stream();
if (s.trim().startsWith("error")) stream(); // XXX: benarkah?
}
Langkah 5: Desain dan Cetak Semua Bagian dalam Lembar Kayu Lapis
Unduh bagian dan desain robot di AutoCAD dan cetak pada lembar kayu lapis 12mm dan bagian akhir dan desain. Jika ada yang membutuhkan file cad, silakan tinggalkan komentar di kotak bagian komentar, saya akan `Anda kirim langsung.
Langkah 6: Perakitan
kumpulkan semua bagian dan atur dalam urutan pada gambar yang diberikan dan ikuti diagram gambar.
Langkah 7: Atur Pengaturan GBRL
Setting yang telah terbukti berhasil pada robots.txt kami.
$0=10 (step pulse, usec) $1=255 (step idle delay, msec) $2=7 (step port invert mask:00000111) $3=7 (dir port invert mask:00000111) $4=0 (step enable invert, bool) $5=0 (pembalikan pin batas, bool) $6=1 (pembalikan pin probe, bool) $10=3 (masker laporan status:00000011) $11=0,020 (penyimpangan persimpangan, mm) $12=0,002 (toleransi busur, mm) $13 =0 (laporan inci, bool) $20=0 (batas lunak, bool) $21=0 (batas keras, bool) $22=1 (siklus homing, bool) $23=0 (masker invert direktori homing:00000000) $24=100.000 (homing feed, mm/mnt) $25=500.000 (homing seek, mm/min) $26=250 (homing debounce, msec) $27=1.000 (homing pull-off, mm) $100=250.000 (x, step/mm) $101= 250.000 (y, step/mm) $102=250.000 (z, step/mm) $110=500.000 (x rate max, mm/min) $111=500.000 (y max rate, mm/min) $112=500.000 (z max rate, mm/mnt) $120=10.000 (x akselerasi, mm/dtk^2) $121=10.000 (y akselerasi, mm/dtk^2) $122=10.000 (z akselerasi, mm/dtk^2) $130=200.000 (x perjalanan maksimum, mm) $131=200.000 (y perjalanan maks, mm) $132=200.000 (z perjalanan maks, mm)
Langkah 8: Unggah Kode Akhir dan Periksa Hasil Virtual di Dasbor Perangkat Lunak Arduino Uno
// Satuan: CM
float b_height = 0;
mengapung a1 = 92;
pelampung a2 = 86;
float snude_len = 20;
boolean doZ = salah;
float base_angle;// = 0;
float arm1_angle; // = 0;
float arm2_angle; //= 0;
float bx = 60;// = 25;
melayang sebesar = 60;// = 0;
float bz = 60;// = 25;
mengapung x = 60;
mengapung y = 60;
mengapung z = 60;
mengambang q;
mengapung c;
mengapung V1;
mengapung V2;
mengapung V3;
mengapung V4;
mengapung V5;
batalkan pengaturan() {
ukuran (700, 700, P3D);
cam = PeasyCam baru(ini, 300);
cam.setMinimumDistance(50);
cam.setMaximumDistance(500);
}
batal menggambar() {
// ligninger:
y = (mouseX - lebar/2)*(-1);
x = (mouseY - tinggi/2)*(-1);
bz = z;
oleh = y;
bx = x;
float y3 = kuadrat(bx*bx+by*by);
c = kuadrat(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;
lengan1_sudut = q;
V4 = radian(90,0) - q;
V5 = radian(180) - V4 - radian(90);
arm2_angle = radian(180,0) - (V5 + V1);
base_angle = derajat(atan2(bx, by));
arm1_angle=derajat(arm1_angle);
arm2_angle=derajat(arm2_angle);
//println(oleh, bz);
//lengan1_sudut = 90;
//lengan2_sudut = 45;
/*
lengan2_sudut = 23;
lengan1_sudut= 23;
lengan2_angle=23;
*/
// interaktif:
// jika (doZ)
//
// {
// sudut_dasar = sudut_dasar+ mouseX-pmouseX;
// } lain
// {
// arm1_angle = arm1_angle+ pmouseX-mouseX;
// }
//
// arm2_angle = arm2_angle+ mouseY-pmouseY;
draw_robot(sudut_dasar, -(sudut1_sudut-90), sudut_lengan+90 - (-(sudut1_sudut-90)));
// println(sudut_dasar + ", " + sudut_lengan + ", " + sudut_lengan);
}
void draw_robot(sudut_dasar mengambang, sudut_lengan mengambang, sudut_lengan mengambang)
{
putarX(1.2);
putarZ(-1.2);
latar belakang(0);
lampu();
pushMatriks();
// BASIS
isi(150, 150, 150);
box_corner(50, 50, b_height, 0);
putar(radian(sudut_dasar), 0, 0, 1);
// lengan 1
isi(150, 0, 150);
box_corner(10, 10, a1, arm1_angle);
// lengan 2
isi(255, 0, 0);
box_corner(10, 10, a2, arm2_angle);
// SNUDE
isi(255, 150, 0);
box_corner(10, 10, snude_len, -arm1_angle-arm2_angle+90);
popMatriks();
pushMatriks();
float action_box_size=100;
translate(0, -action_box_size/2, action_box_size/2+b_height);
pushMatriks();
translate(x, action_box_size- y-action_box_size/2, z-action_box_size/2);
isi(255, 255, 0);
kotak (20);
popMatriks();
isi(255, 255, 255, 50);
box(ukuran_kotak_aksi, ukuran_kotak_aksi, ukuran_kotak_aksi);
popMatriks();
}
void box_corner(float w, float h, float d, float rotate)
{
memutar(radian(memutar), 1, 0, 0);
terjemahkan(0, 0, d/2);
kotak (w, h, d);
terjemahkan(0, 0, d/2);
}
tombol batal Ditekan()
{
jika (kunci == 'z')
{
doZ = !doZ;
}
jika (kunci == 'h')
{
// setel semua ke nol
lengan2_sudut = 0;
lengan1_sudut = 90;
dasar_angle = 0;
}
jika (kunci == 'g')
{
println(derajat(V1));
println(derajat(V5));
}
if (Kode kunci == UP)
{
z++;
}
jika (Kode kunci == BAWAH)
{
z --;
}
jika (kunci == 'o')
{
y = 50;
z = 50;
println(q);
println(c, "c");
println(V1, "V1");
println(V2);
println(V3);
println(lengan1_sudut);
println(V4);
println(V5);
println(lengan2_angle);
}
}
Direkomendasikan:
Robot Pick and Place Berbasis RFID: 4 Langkah
Robot Pick and Place Berbasis RFID: Sejak bertahun-tahun orang mencoba menggantikan pekerjaan manusia dengan mesin. Mesin yang disebut robot lebih cepat dan lebih efektif daripada manusia. Istilah robotika secara praktis didefinisikan sebagai studi, desain dan penggunaan sistem robot untuk manufaktur. Robot adalah
Pick-and-place Berbasis Visi Dengan UArm: 6 Langkah
Pick-and-place Berbasis Visi Dengan UArm: Baru-baru ini, sebagian besar pertanyaan yang kami dengar dari Anda adalah tentang aplikasi berbasis visi uArm, seperti pengenalan objek, korelasi kamera-uArm, dll. Sebenarnya kami telah mengerjakannya untuk a periode waktu. Kami telah melakukan p
Pick Gitar Bantu: 10 Langkah
Assistive Guitar Pick: Apa yang kami lakukan: Assistive guitar pick dikembangkan untuk individu yang memiliki otot rendah dan kontraktur di tangan. Untuk mempelajari tentang tujuan kami untuk proyek ini, cara memakai assistive pick, dan melihat demo bermain gitar menggunakan
[Robot Arduino] Cara Membuat Robot Penangkap Gerak - Robot Jempol - Motor Servo - Kode Sumber: 26 Langkah (dengan Gambar)
[Robot Arduino] Cara Membuat Robot Penangkap Gerak | Robot Jempol | Motor Servo | Kode Sumber: Robot Jempol. Menggunakan potensiometer motor servo MG90S. Ini sangat menyenangkan dan mudah! Kodenya sangat sederhana. Hanya sekitar 30 baris. Ini terlihat seperti penangkapan gerak. Silakan tinggalkan pertanyaan atau umpan balik! [Instruksi] Kode Sumber https://github.c
Bicara dengan Pick dan Obrolan Kecerdasan Buatan Menggunakan Cleverbot: 14 Langkah (dengan Gambar)
Talk to Pick dan Obrolan Kecerdasan Buatan Menggunakan Cleverbot: Di sini saya mencoba tidak hanya perintah suara tetapi juga Obrolan Kecerdasan Buatan dengan Komputer menggunakan Cleverbot. Sebenarnya ide itu muncul ketika menemukan anak-anak mencampur warna di kotak mewarnai saat mengambil warna dari satu warna ke warna terdekat. Tapi akhirnya menerapkan