Isi kandungan:

Lengan Robotik Mudah & Pintar Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)
Lengan Robotik Mudah & Pintar Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)

Video: Lengan Robotik Mudah & Pintar Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)

Video: Lengan Robotik Mudah & Pintar Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)
Video: Tutorial Rakit Robot Arm / Lengan Robot Ga Sampe 20 Menit 2024, Jun
Anonim
Image
Image
Perkara yang Anda Perlu
Perkara yang Anda Perlu

Dalam arahan ini saya akan membuat lengan robot sederhana. Itu akan dikawal menggunakan master arm. Lengan akan mengingati pergerakan dan bermain mengikut urutan. Konsepnya tidak baru Saya mendapat Idea dari "lengan robot mini-oleh Stoerpeak" Saya ingin membuatnya lama, tetapi ketika itu saya benar-benar noob dan tidak mempunyai pengetahuan mengenai pengaturcaraan. Sekarang akhirnya saya membina satu, Jadikannya mudah, murah dan berkongsi dengan anda semua.

Oleh itu mari kita mulakan….

Langkah 1: Perkara yang Anda Perlu: -

Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu

Berikut adalah senarai perkara yang anda perlukan: -

1. Motor servo x 5 Link untuk AS: - https://amzn.to/2OxbSH7Link untuk Eropah: -

2. Potentiometers x 5 (Saya telah menggunakan 100k.) Pautan untuk AS: - https://amzn.to/2ROjhDMLink untuk Eropah: -

3. Arduino UNO. (Anda juga boleh menggunakan Arduino Nano) Pautan untuk AS: - https://amzn.to/2DBbENWLink untuk Eropah: -

4. Papan roti. (Saya cadangkan kit ini) Pautan untuk AS: - https://amzn.to/2Dy86w4Link untuk Eropah: -

5. Bateri. (pilihan, saya menggunakan penyesuai 5v)

6. Kadbod / Kayu / Papan Sun / akrilik yang pernah ada atau senang dicari.

Dan anda juga perlu memasang Arduino IDE.

Langkah 2: Membuat Lengan: -

Membuat Lengan
Membuat Lengan
Membuat Lengan
Membuat Lengan

Di sini saya telah menggunakan tongkat Popsicle untuk membuat lengan. Anda boleh menggunakan sebarang bahan yang tersedia untuk anda. Dan anda boleh mencuba pelbagai reka bentuk mekanikal untuk membuat lengan yang lebih baik. reka bentuk saya tidak begitu stabil.

Saya hanya menggunakan pita dua sisi untuk melekatkan servo ke batang Popsicle dan mengikatnya menggunakan skru.

Untuk lengan Master saya menempelkan potensiometer ke batang popsicle dan lengan yang dibuat.

Merujuk gambar akan memberi anda Idea yang lebih baik.

Saya telah memasang semuanya pada papan kanvas bersaiz A4 yang digunakan sebagai asas.

Langkah 3: Membuat Sambungan: -

Membuat Sambungan
Membuat Sambungan
Membuat Sambungan
Membuat Sambungan
Membuat Sambungan
Membuat Sambungan

Dalam langkah ini kita akan membuat semua sambungan yang diperlukan, Rujuk gambar di atas.

  • Mula-mula sambungkan semua servo selari dengan bekalan kuasa (The Red wire to + ve dan Black or Brown Wire to Gnd)
  • Seterusnya sambungkan wayar isyarat iaitu wayar Kuning atau Orange ke pin PWM arduino.
  • Sekarang sambungkan potensiometer ke + 5v dan Gnd arduino secara selari.
  • Sambungkan terminal tengah ke pin Analog ardunio.

Di sini Digital Pin 3, 5, 6, 9 & 10 digunakan untuk mengawal servos

Pin Analog A0 hingga A4 digunakan untuk Input dari Potentiometers.

Servo yang disambungkan ke pin 3 akan dikendalikan oleh potensiometer yang disambungkan ke A0

Servo yang disambungkan ke pin 5 akan dikendalikan oleh panci pada A1, dan seterusnya….

Catatan: - Walaupun Servos tidak dikuasakan oleh arduino, Pastikan untuk menghubungkan Gnd servos ke arduino atau lengan tidak berfungsi.

Langkah 4: Pengekodan: -

Pengekodan
Pengekodan

Logik kod ini cukup sederhana nilai potensiometer disimpan dalam tatasusunan yang kemudiannya dilalui dengan menggunakan loop for dan servo melakukan langkah-langkah mengikut nilai. Anda boleh melihat tutorial ini yang saya gunakan untuk rujukan "Arduino Potentiometer Servo Control & Memory"

Kod: - (Fail yang boleh dimuat turun dilampirkan di bawah.)

Mula-mula kita akan menyatakan semua pemboleh ubah yang diperlukan secara global supaya kita dapat menggunakannya sepanjang program. Tidak perlu penjelasan khas untuk ini

#sertakan

// Objek Servo Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Objek Potensiometer int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Boleh berubah untuk menyimpan Servo Position int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Pemboleh ubah untuk menyimpan nilai kedudukan sebelumnya int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Pemboleh ubah untuk menyimpan Nilai kedudukan semasa int Current_0_Pos; int Semasa_1_Pos; int Semasa_2_Pos; int Semasa_3_Pos; int Semasa_4_Pos; int Servo_Posisi; // Menyimpan sudut int Servo_Number; // Menyimpan no servo int Storage [600]; // Array untuk menyimpan data (Menambah saiz array akan memakan lebih banyak memori) int Index = 0; // Indeks array bermula dari kedudukan char kedudukan 0 = 0; // pemboleh ubah untuk menyimpan data dari input bersiri.

Sekarang kita akan menulis fungsi persediaan, di mana kita menetapkan pin dan fungsinya. Ini adalah fungsi utama yang dilaksanakan terlebih dahulu

persediaan tidak sah ()

{Serial.begin (9600); // Untuk komunikasi bersiri antara arduino dan IDE. // Objek servo dilekatkan pada pin PWM. Servo_0. Attach (3); Servo_1. Attach (5); Servo_2.attach (6); Servo_3.attach (9); Servo_4.attach (10); // Servos ditetapkan ke 100 kedudukan pada permulaan. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("Tekan 'R' untuk Merakam dan 'P' untuk bermain"); }

Sekarang kita harus membaca nilai potensiometer menggunakan pin Input Analog dan memetakannya untuk mengawal servos. Untuk ini kita akan menentukan fungsi dan menamakannya Map_Pot ();, anda boleh menamakannya apa sahaja yang anda mahukan adalah fungsi yang ditentukan pengguna

batal Map_Pot ()

{/ * Servo berputar pada 180 darjah tetapi menggunakannya secara terhad bukanlah idea yang baik kerana membuat servo berdengung secara berterusan yang menjengkelkan sehingga kami mengehadkan servo untuk bergerak antara: 1-179 * / Pot_0 = analogRead (A0); // Baca input dari periuk dan simpan di Variable Pot_0. Servo_0_Pos = peta (Pot_0, 0, 1023, 1, 179); // Peta servo mengikut nilai antara 0 hingga 1023 Servo_0.write (Servo_0_Pos); // Pindahkan servo ke kedudukan itu. Pot_1 = analogRead (A1); Servo_1_Pos = peta (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = peta (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = peta (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = peta (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }

Sekarang kita akan menulis fungsi gelung:

gelung kosong ()

{Peta_Pot (); // Fungsi panggilan untuk membaca nilai pot sementara (Serial.available ()> 0) {data = Serial.read (); if (data == 'R') Serial.println ("Rakaman Bergerak …"); if (data == 'P') Serial.println ("Memainkan Rakaman Bergerak …"); } if (data == 'R') // Jika 'R' dimasukkan, mulakan rakaman. {// Simpan nilai dalam pemboleh ubah Prev_0_Pos = Servo_0_Pos; Sebelumnya_1_Pos = Servo_1_Pos; Sebelumnya_2_Pos = Servo_2_Pos; Sebelumnya_3_Pos = Servo_3_Pos; Sebelumnya_4_Pos = Servo_4_Pos; Peta_Pot (); // Fungsi peta dipanggil semula untuk perbandingan jika (abs (Prev_0_Pos == Servo_0_Pos)) // nilai mutlak diperoleh dengan membandingkan {Servo_0.write (Servo_0_Pos); // Jika nilai padanan servo diposisikan kembali jika (Current_0_Pos! = Servo_0_Pos) // Jika nilai tidak sepadan dengan {Storage [Index] = Servo_0_Pos + 0; // Nilai ditambahkan ke array Indeks ++; // Nilai indeks meningkat sebanyak 1} Current_0_Pos = Servo_0_Pos; } / * Sama perbandingan nilai dilakukan untuk semua servos, +100 ditambahkan setiap untuk masuk sebagai nilai pembezaan. * / if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); jika (Semasa_1_Pos! = Servo_1_Pos) {Penyimpanan [Indeks] = Servo_1_Pos + 100; Indeks ++; } Semasa_1_Pos = Servo_1_Pos; } jika (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); jika (Semasa_2_Pos! = Servo_2_Pos) {Penyimpanan [Indeks] = Servo_2_Pos + 200; Indeks ++; } Semasa_Pos = Servo_2_Pos; } jika (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); jika (Semasa_3_Pos! = Servo_3_Pos) {Penyimpanan [Indeks] = Servo_3_Pos + 300; Indeks ++; } Semasa_3_Pos = Servo_3_Pos; } jika (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); jika (Semasa_4_Pos! = Servo_4_Pos) {Penyimpanan [Indeks] = Servo_4_Pos + 400; Indeks ++; } Semasa_4_Pos = Servo_4_Pos; } / * Nilai dicetak pada monitor bersiri, '\ t' adalah untuk menampilkan nilai dalam format tabel * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("Indeks ="); Serial.println (Indeks); kelewatan (50); } jika (data == 'P') // JIKA 'P' dimasukkan, Mulailah memainkan gerakan yang dirakam. {untuk (int i = 0; i <Index; i ++) // Melintasi tatasusunan menggunakan gelung {Servo_Number = Storage / 100; // Mencari bilangan servo Servo_Position = Storage % 100; // Mencari kedudukan suis servo (Servo_Number) {case 0: Servo_0.write (Servo_Position); rehat; kes 1: Servo_1.write (Servo_Position); rehat; kes 2: Servo_2.write (Servo_Position); rehat; kes 3: Servo_3.write (Servo_Position); rehat; kes 4: Servo_4.write (Servo_Position); rehat; } kelewatan (50); }}}

Setelah kodnya siap, Sekarang muat naik ke papan arduino

Lengan Pintar sedia berfungsi. Fungsinya belum sehalus yang dibuat oleh Stoerpeak.

Sekiranya anda dapat membuat kod yang lebih baik atau mempunyai cadangan untuk saya, sila beritahu saya di bahagian komen.

Dengan yang telah dikatakan, Mari kita beralih ke ujian….

Langkah 5: Menguji: -

Selepas memuat naik kod ke papan berjaya, Buka 'Serial Monitor' anda boleh menemuinya dalam pilihan Alat. Apabila monitor Serial bermula, arduino akan diset semula. Sekarang anda boleh mengawal lengan robot menggunakan lengan utama. Tetapi tidak ada yang dirakam.

Untuk memulakan rakaman, Masukkan 'R' di monitor sekarang anda dapat melakukan gerakan yang ingin anda rakam.

Setelah pergerakan selesai anda harus memasukkan 'P' untuk memainkan pergerakan yang dirakam. Servo akan terus melakukan pergerakan selagi papan tidak diset semula.

Disyorkan: