- Bahan yang Dibutuhkan:
- Konsep Robot Menghindari Rintangan:
- Diagram Sirkuit dan Penjelasan:
- Memprogram Anda PIC Mikrokontroler:
- Robot Penghindar Rintangan Beraksi:
Robot Obstacle Avoider adalah robot terkenal lainnya yang membumbui proyek yang disematkan. Bagi mereka yang merupakan robot pencegah rintangan baru, ini hanyalah robot beroda biasa yang dapat menavigasi jalannya tanpa menabrak rintangan apa pun. Ada banyak cara untuk membangun robot penghindar rintangan dalam proyek ini kita akan menggunakan satu Sensor Ultrasonik (depan) dan dua sensor IR (Kiri / Kanan) sehingga robot kita memiliki mata di ketiga arah. Dengan cara ini Anda dapat membuatnya lebih pintar dan lebih cepat dengan mendeteksi objek di ketiga sisi dan melakukan manuver yang sesuai. Di sini kami menggugat Mikrokontroler PIC PIC16F877A untuk robot yang menghindari rintangan ini.
Pengoperasian robot penghindar rintangan dapat diamati dari produk waktu nyata yang disebut Robot pembersih rumah. Meskipun teknologi dan sensor yang digunakan jauh lebih rumit, konsepnya tetap sama. Mari kita lihat seberapa banyak yang dapat kita capai dengan menggunakan sensor normal dan mikrokontroler PIC.
Juga periksa Robot Menghindari Rintangan kami yang lain:
- Robot Penghindar Rintangan Berbasis Raspberry Pi
- Robot Pembersih Vakum Cerdas DIY menggunakan Arduino
Bahan yang Dibutuhkan:
- PIC16F877A
- Sensor IR (2Nos)
- Sensor Ultrasonik (1Nos)
- Motor Roda Gigi DC (2Nos)
- Pengemudi Motor L293D
- Chaises (Anda juga bisa membuatnya sendiri menggunakan karton)
- Bank daya (Sumber daya apa pun yang tersedia)
Konsep Robot Menghindari Rintangan:
Konsep Robot Menghindari Rintangan sangat sederhana. Kami menggunakan sensor untuk mendeteksi keberadaan objek di sekitar robot dan menggunakan data ini untuk tidak menabrakkan robot di atas objek tersebut. Untuk mendeteksi suatu Objek kita dapat menggunakan sensor apa saja seperti sensor IR dan sensor Ultrasonik.
Di robot kami, kami telah menggunakan sensor AS sebagai sensor depan dan dua sensor IR masing-masing untuk kiri dan kanan. Robot akan bergerak maju jika tidak ada objek yang ada sebelumnya. Jadi robot akan bergerak maju hingga sensor Ultrasonic (US) mendeteksi adanya objek.
Saat suatu objek terdeteksi oleh sensor AS, sekarang saatnya untuk mengubah arah robot. Kita bisa belok kiri atau kanan, untuk menentukan arah belok kita menggunakan bantuan sensor IR untuk memeriksa apakah ada objek yang ada di dekat sisi kiri atau kanan robot.
Jika ada benda yang terdeteksi di bagian depan dan kanan Robot, maka robot akan kembali dan berbelok ke kiri. Kami membuat robot untuk berlari mundur dengan jarak tertentu agar tidak bertabrakan dengan benda saat melakukan belokan.
Jika ada benda yang terdeteksi di depan dan kiri Robot, maka robot akan kembali dan berbelok ke kanan.
Jika robot mencapai sudut ruangan, robot akan merasakan objek yang ada di keempatnya. Dalam hal ini kita harus menggerakkan robot ke belakang sampai salah satu sisinya bebas.
Kasus lain yang mungkin adalah bahwa akan ada objek di depan tetapi mungkin tidak ada objek baik di sisi kiri maupun di sisi kanan, dalam hal ini kita harus memutar secara acak ke arah mana pun.
Semoga ini bisa memberikan gambaran kasar tentang cara kerja penghindar Rintangan, sekarang mari kita lanjutkan dengan Diagram Sirkuit untuk membuat bot ini dan menikmatinya dalam tindakan.
Diagram Sirkuit dan Penjelasan:
Diagram rangkaian lengkap dari robot penghindar halangan berbasis PIC ini ditunjukkan pada gambar di atas. Seperti yang Anda lihat, kami telah menggunakan dua sensor IR untuk mendeteksi objek di kiri dan kanan robot masing-masing dan sensor Ultrasonik untuk mengukur jarak objek yang ada di depan robot. Kami juga telah menggunakan modul Driver Motor L293D untuk Menggerakkan dua motor yang ada dalam proyek ini. Ini hanyalah motor roda gigi DC biasa untuk roda dan karenanya dapat diturunkan dengan sangat mudah. Tabel berikut akan membantu Anda dalam koneksi.
S.No |
Tersambung dari |
Terhubung dengan |
1 |
Sensor IR Pin kiri keluar |
RD2 (pin 21) |
2 |
Sensor IR Pin keluar kanan |
RD3 (pin 22) |
4 |
Motor 1 Saluran A pin |
RC4 (pin 23) |
5 |
Motor 1 Channel B. pin |
RC5 (pin 25) |
6 |
Motor 2 Channel A pin |
RC6 (pin 26) |
7 |
Motor 2 Channel B. pin |
RC7 (pin 27) |
8 |
Pin Pemicu AS |
RB1 (pin 34) |
9 |
Pin Gema AS |
RB2 (pin 35) |
Modul Driver motor seperti L293D adalah wajib karena jumlah arus yang diperlukan untuk menjalankan motor roda gigi DC tidak dapat bersumber dari pin I / O mikrokontroler PIC. Sensor dan modul ditenagai oleh pasokan + 5V yang diatur oleh 7805. Modul driver motor dapat diberi daya bahkan menggunakan + 12V, tetapi untuk proyek ini saya hanya menggunakan + 5V yang tersedia.
Robot lengkap didukung oleh Power bank dalam kasus saya. Anda juga dapat menggunakan bank daya biasa dan melewati bagian regulator atau menggunakan rangkaian di atas dan menggunakan baterai 9V atau 12V untuk Robot seperti yang ditunjukkan pada diagram rangkaian di atas. Setelah koneksi Anda selesai, akan terlihat seperti ini di bawah
Memprogram Anda PIC Mikrokontroler:
Memprogram Anda PIC untuk bekerja untuk penghindar Rintangan sangat mudah. Kami hanya perlu membaca nilai dari ketiga sensor ini dan menggerakkan Motor sesuai dengan itu. Dalam proyek ini kami menggunakan sensor Ultrasonic. Kami telah mempelajari cara menghubungkan ultrasonik dengan mikrokontroler PIC, jika Anda baru di sini, silakan kembali ke tutorial itu untuk memahami bagaimana sensor AS bekerja dengan PIC, karena saya akan melewatkan detailnya di sini untuk menghindari pengulangan.
Program lengkap atau Robot ini diberikan di akhir halaman ini, saya telah menjelaskan lebih lanjut bagian penting dari program di bawah ini.
Seperti yang kita ketahui semua program dimulai dengan deklarasi pin Input dan Output. Di sini Empat pin modul Penggerak Motor dan pin Pemicu adalah pin Output, sedangkan pin Echo dan dua pin IR out akan menjadi input. Kita harus menginisialisasi modul Timer 1 untuk digunakan dengan sensor Ultrasonic.
TRISD = 0x00; // PORTD dideklarasikan sebagai keluaran untuk antarmuka LCD TRISB1 = 0; // Pin pemicu sensor US dikirim sebagai pin keluaran TRISB2 = 1; // Pin gema sensor AS disetel sebagai pin input TRISB3 = 0; // RB3 adalah pin keluaran untuk LED TRISD2 = 1; TRISD3 = 1; // Kedua pin sensor IR dinyatakan sebagai masukan TRISC4 = 0; TRISC5 = 0; // Pin motor 1 dideklarasikan sebagai keluaran TRISC6 = 0; TRISC7 = 0; // Motor 2 pin dideklarasikan sebagai keluaran T1CON = 0x20;
Dalam program ini kita harus memeriksa jarak antara sensor dan objek cukup sering, jadi kita telah membuat fungsi bernama kalkulasi_distance () di dalamnya di mana kita akan mengukur jarak dengan metode yang dibahas dalam tutorial antarmuka sensor AS. Kode ditampilkan di bawah ini
void count_distance () // berfungsi untuk menghitung jarak US {TMR1H = 0; TMR1L = 0; // hapus bit timer Trigger = 1; __delay_us (10); Pemicu = 0; sementara (Gema == 0); TMR1ON = 1; sementara (Gema == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); jarak = (0,0272 * waktu_diambil) / 2; }
Langkah selanjutnya adalah membandingkan nilai sensor Ultrasonik dan sensor IR dan menggerakkan robot sesuai dengan itu. Di sini, dalam program ini saya telah menggunakan nilai cm sebagai jarak kritis di bawahnya dimana Robot harus mulai melakukan perubahan arah. Anda dapat menggunakan nilai-nilai pilihan Anda. Jika tidak ada benda maka robot hanya bergerak maju
jika (jarak> 5) {RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 0; // Motor 2 maju}
Jika suatu benda terdeteksi, maka jaraknya akan di bawah cm. Dalam hal ini kami mempertimbangkan nilai sensor Ultrasonik kiri dan kanan. Berdasarkan nilai ini kami memutuskan untuk berbelok ke kiri atau ke kanan. Penundaan dalam ms digunakan agar perubahan arah terlihat.
if (RD2 == 0 && RD3 == 1 && distance <= 5) // Sensor kiri diblokir {back_off (); RC4 = 1; RC5 = 1; // Motor 1 stop RC6 = 1; RC7 = 0; // Motor 2 maju __delay_ms (500); } jarak_hitung (); if (RD2 == 1 && RD3 == 0 && distance <= 5) // Sensor kanan diblokir {back_off (); RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 1; // Motor 2 berhenti __delay_ms (500); }
Terkadang sensor Ultrasonic akan mendeteksi suatu objek, tetapi tidak akan ada objek yang terdeteksi oleh sensor IR. Dalam hal ini robot berbelok ke kiri secara default. Anda juga dapat membuatnya berbelok ke kanan atau ke arah acak berdasarkan preferensi Anda. Jika ada objek di kedua sisi maka kita membuatnya mundur. Kode untuk melakukan hal yang sama ditunjukkan di bawah ini.
jarak_hitung (); if (RD2 == 0 && RD3 == 0 && distance <= 5) // Kedua sensor terbuka {back_off (); RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 1; // Motor 2 berhenti __delay_ms (500); } jarak_hitung (); if (RD2 == 1 && RD3 == 1 && distance <= 5) // Kedua sensor diblokir {back_off (); RC4 = 1; RC5 = 0; // Motor 1 mundur RC6 = 1; RC7 = 1; // Motor 2 berhenti __delay_ms (1000); }
Robot Penghindar Rintangan Beraksi:
Pengerjaan proyek ini sangat menarik dan menyenangkan untuk ditonton. Setelah Anda selesai dengan Sirkuit dan Kode Anda, cukup nyalakan Bot Anda dan biarkan di tanah. Itu harus bisa mengidentifikasi hambatan dan menghindarinya dengan cerdas. Tapi, inilah bagian yang menyenangkan. Anda dapat mengubah kode dan membuatnya melakukan lebih banyak hal seperti menghindari tangga, membuatnya lebih pintar dengan menyimpan belokan yang berharga dan apa yang tidak?
Robot ini akan membantu Anda memahami dasar-dasar pemrograman dan mempelajari bagaimana perangkat keras yang sebenarnya akan merespons kode Anda. Selalu menyenangkan untuk memprogram robot ini dan melihat bagaimana perilakunya untuk kode di dunia nyata.
Di sini kami telah menggunakan papan perf PIC yang sama yang telah kami buat untuk berkedip LED menggunakan mikrokontroler PIC dan menggunakan papan ini dalam proyek lain dari Seri Tutorial PIC.
Robot Anda akan terlihat seperti yang ditunjukkan pada gambar di atas. Pekerjaan lengkap proyek ini ditunjukkan pada video di bawah ini.
Semoga Anda memahami proyek ini dan menikmati membangunnya. Jika Anda ragu atau buntu, Anda dapat menggunakan bagian komentar untuk mengirim pertanyaan Anda dan saya akan mencoba yang terbaik dalam menjawabnya.