Isi kandungan:
- Langkah 1: Perkara yang Anda Perlu: -
- Langkah 2: Membuat Lengan: -
- Langkah 3: Membuat Sambungan: -
- Langkah 4: Pengekodan: -
- Langkah 5: Menguji: -
Video: Lengan Robotik Mudah & Pintar Menggunakan Arduino !!!: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
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: -
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: -
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: -
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: -
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:
Lengan Robotik Dengan Gripper: 9 Langkah (dengan Gambar)
Robotic Arm With Gripper: Menuai pokok lemon dianggap kerja keras, kerana saiz pokok yang besar dan juga disebabkan oleh iklim panas di kawasan di mana pokok lemon ditanam. Itulah sebabnya kita memerlukan sesuatu yang lain untuk membantu pekerja pertanian untuk menyelesaikan pekerjaan mereka dengan lebih banyak
Ketibaan Lengan Robotik Pintar: 3 Langkah
Kedatangan Lengan Robotik Pintar: Bersalaman dengan tetamu, bercakap, makan dan sebagainya perkara biasa ini, kerana kesihatan hidup kita adalah perkara biasa, tetapi bagi beberapa orang istimewa, itu adalah mimpi. Beberapa orang istimewa yang disebut oleh saya adalah orang kurang upaya yang kehilangan
Lengan Robotik Mudah Dikendalikan Atas Pergerakan Tangan Sebenar: 7 Langkah (dengan Gambar)
Lengan Robotik Mudah Dikendalikan Atas Pergerakan Tangan Sebenar: Ini adalah lengan robot DOF yang sangat mudah untuk pemula. Lengan dikendalikan oleh Arduino. Ia dihubungkan dengan sensor yang terpasang di tangan pengendali. Oleh itu pengendali dapat mengawal siku lengan dengan membengkokkan pergerakan sikunya sendiri.Pada
Lengan Robotik terkawal Nunchuk (dengan Arduino): 14 Langkah (dengan Gambar)
Lengan Robotik Terkawal Nunchuk (dengan Arduino): Lengan robotik hebat! Kilang di seluruh dunia memilikinya, di mana mereka melukis, menyolder dan membawa barang dengan tepat. Mereka juga boleh didapati dalam penerokaan ruang angkasa, kenderaan yang dikendalikan jauh di bawah laut, dan bahkan dalam aplikasi perubatan! Dan sekarang anda boleh
DIY MusiLED, LED Diselaraskan Muzik Dengan Aplikasi Windows & Linux Satu-klik (32-bit & 64-bit). Mudah Dicipta, Mudah Digunakan, Mudah Dihantar: 3 Langkah
DIY MusiLED, LED Diselaraskan Muzik Dengan Aplikasi Windows & Linux Satu-klik (32-bit & 64-bit). Mudah Dicipta, Mudah Digunakan, Mudah Dihantar: Projek ini akan membantu anda menyambungkan 18 LED (6 Merah + 6 Biru + 6 Kuning) ke Papan Arduino anda dan menganalisis isyarat masa nyata Kad Suara komputer anda dan menyampaikannya kepada LED untuk menyalakannya mengikut kesan rentak (Snare, High Hat, Kick)