- Bahan yang Diperlukan:
- Konsep Robot Mengelakkan Halangan:
- Rajah dan Penjelasan Litar:
- Mengaturcara anda PIC Microcontroller:
- Obstacle Avoider Robot dalam Tindakan:
Obstacle Avoider Robot adalah robot terkenal lain yang menyusun projek tertanam. Bagi mereka yang baru robot penghalang Obstacle, robot beroda biasa hanyalah robot beroda yang dapat menavigasi jalannya tanpa menghadapi halangan. Terdapat banyak cara untuk membuat robot penghalang Obstacle dalam projek yang akan kita gunakan satu Sensor Ultrasonik (depan) dan dua sensor IR (Kiri / Kanan) sehingga robot kita memiliki mata di ketiga arah. Dengan cara ini, anda dapat menjadikannya lebih pintar dan pantas dengan mengesan objek di ketiga-tiga sisi dan melakukan manuver dengan sewajarnya. Di sini kita menuntut PIC Microcontroller PIC16F877A kerana robot mengelakkan halangan ini.
Pengoperasian robot penghalang halangan dapat diperhatikan dari produk masa nyata yang disebut robot Pembersihan rumah. Walaupun teknologi dan sensor yang digunakan di dalamnya sangat rumit, konsepnya tetap sama. Mari kita lihat sejauh mana yang boleh kita capai dengan menggunakan sensor normal dan mikrokontroler PIC kita.
Lihat juga Robot Mengelakkan Halangan kami yang lain:
- Halangan Berasaskan Raspberry Pi Mengelakkan Robot
- Robot Pembersih Vakum Pintar DIY menggunakan Arduino
Bahan yang Diperlukan:
- PIC16F877A
- Sensor IR (2Nos)
- Sensor Ultrasonik (1Nos)
- Motor Gear DC (2Nos)
- Pemandu Motor L293D
- Chaises (Anda juga boleh membina kadbod anda sendiri)
- Power bank (Mana-mana sumber kuasa yang ada)
Konsep Robot Mengelakkan Halangan:
Konsep Robot Mengelakkan Halangan sangat mudah. Kami menggunakan sensor untuk mengesan kehadiran objek di sekitar robot dan menggunakan data ini untuk tidak bertabrakan robot ke atas objek tersebut. Untuk mengesan Objek kita boleh menggunakan sensor penggunaan seperti sensor IR dan sensor Ultrasonik.
Dalam robot kami, kami telah menggunakan sensor AS sebagai sensor depan dan dua sensor IR untuk kiri dan kanan masing-masing. Robot akan bergerak ke hadapan apabila tidak ada objek yang ada di hadapannya. Jadi robot akan bergerak ke depan sehingga sensor Ultrasonik (AS) mengesan sebarang objek.
Apabila objek dikesan oleh sensor AS, sudah tiba masanya untuk mengubah arah robot. Kita boleh membelok ke kiri atau ke kanan, untuk menentukan arah putaran kita menggunakan bantuan sensor IR untuk memeriksa apakah ada objek yang terdapat di sebelah kiri atau kanan robot.
Sekiranya terdapat objek yang dikesan di bahagian depan dan kanan Robot, maka robot akan kembali dan membelok ke kiri. Kami membuat robot berjalan ke belakang untuk jarak tertentu agar tidak bertabrakan pada objek semasa membuat giliran.
Sekiranya terdapat objek yang dikesan di bahagian depan dan kiri Robot, maka robot akan kembali dan membelok ke kanan.
Sekiranya robot sampai di sudut bilik, ia akan merasakan objek ada di keempat-empatnya. Dalam kes ini kita harus menggerakkan robot ke belakang sehingga mana-mana bahagian menjadi bebas.
Kes lain yang mungkin adalah bahawa akan ada objek di depan tetapi mungkin tidak ada objek baik di sisi kiri atau di sisi kanan, dalam hal ini kita harus secara acak membalikkan arah mana pun.
Mudah-mudahan ini dapat memberikan idea kasar tentang bagaimana kerja penghalang Obstacle, sekarang mari kita lanjutkan dengan Circuit Diagram untuk membina bot ini dan menikmatinya dalam tindakan.
Rajah dan Penjelasan Litar:
Rajah litar lengkap robot penghalang halangan berdasarkan PIC ini ditunjukkan dalam gambar di atas. Seperti yang anda lihat, kami telah menggunakan dua sensor IR untuk mengesan objek di kiri dan kanan robot dan sensor Ultrasonik untuk mengukur jarak objek yang ada di hadapan robot. Kami juga telah menggunakan modul Pemacu Motor L293D untuk Memacu dua motor yang ada dalam projek ini. Ini hanyalah motor gear DC biasa untuk roda dan oleh itu dapat dihasilkan dengan sangat mudah. Jadual berikut akan membantu anda dalam hubungan.
S.No |
Bersambung dari |
Berhubung dengan |
1 |
Sensor IR Pin keluar |
RD2 (pin 21) |
2 |
Sensor IR Pin keluar keluar |
RD3 (pin 22) |
4 |
Motor 1 Saluran A pin |
RC4 (pin 23) |
5 |
Pin Motor 1 Saluran B |
RC5 (pin 25) |
6 |
Motor 2 Saluran A pin |
RC6 (pin 26) |
7 |
Pin Motor 2 Saluran B |
RC7 (pin 27) |
8 |
Pin Pencetus AS |
RB1 (pin 34) |
9 |
Pin Gema AS |
RB2 (pin 35) |
Modul Pemacu motor seperti L293D adalah wajib kerana jumlah arus yang diperlukan untuk menjalankan motor gear DC tidak boleh diperolehi oleh pin I / O mikrokontroler PIC. Sensor dan modul dikuasakan oleh bekalan + 5V yang dikawal oleh 7805. Modul pemandu motor boleh dihidupkan walaupun menggunakan + 12V, tetapi untuk projek ini saya hanya menggunakan + 5V yang tersedia.
Robot lengkap dikuasakan oleh Power bank dalam kes saya. Anda juga boleh menggunakan power bank biasa dan melalui bahagian regulator atau menggunakan litar di atas dan menggunakan bateri 9V atau 12V untuk Robot seperti yang ditunjukkan dalam rajah litar di atas. Setelah hubungan anda selesai, ia akan kelihatan seperti ini di bawah
Mengaturcara anda PIC Microcontroller:
Memprogram PIC anda untuk bekerja untuk Avoider Obstacle sangat mudah. Kita hanya perlu membaca nilai ketiga sensor ini dan menggerakkan Motor dengan sewajarnya. Dalam projek ini kami menggunakan sensor Ultrasonik. Kami telah belajar bagaimana menghubungkan antara ultrasonik dengan mikrokontroler PIC, jika anda baru di sini silakan kembali ke tutorial itu untuk memahami bagaimana sensor AS berfungsi dengan PIC, kerana saya akan melangkau perincian mengenainya di sini untuk mengelakkan pengulangan.
Program lengkap atau Robot ini diberikan di akhir halaman ini, saya telah menerangkan lebih jauh bahagian penting program di bawah ini.
Seperti yang kita ketahui semua program dimulakan dengan deklarasi pin Input dan Output. Di sini Empat pin modul Pemacu Motor dan pin Pemicu adalah pin Output, sementara pin Echo dan dua pin keluar IR akan dimasukkan. Kita harus menginisialisasi modul Pemasa 1 untuk menggunakannya dengan sensor Ultrasonik.
TRISD = 0x00; // PORTD dinyatakan sebagai output untuk antara muka LCD TRISB1 = 0; // Pin pencetus sensor AS dihantar sebagai pin output TRISB2 = 1; // Pin gema sensor AS ditetapkan sebagai pin input TRISB3 = 0; // RB3 adalah pin output untuk LED TRISD2 = 1; TRISD3 = 1; // Kedua-dua pin sensor IR dinyatakan sebagai input TRISC4 = 0; TRISC5 = 0; // Motor 1 pin dinyatakan sebagai output TRISC6 = 0; TRISC7 = 0; // Motor 2 pin dinyatakan sebagai output T1CON = 0x20;
Dalam program ini kita harus sering memeriksa jarak antara sensor dan objek, jadi kita telah membuat fungsi bernama calcul_distance () di mana kita akan mengukur jarak dengan kaedah yang dibincangkan dalam tutorial antara muka sensor AS. Kodnya ditunjukkan di bawah
void calcul_distance () // fungsi untuk mengira jarak AS {TMR1H = 0; TMR1L = 0; // kosongkan bit pemasa Trigger = 1; __delay_us (10); Pencetus = 0; sementara (Echo == 0); TMR1ON = 1; sementara (Echo == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); jarak = (0.0272 * masa_digunakan) / 2; }
Langkah seterusnya adalah membandingkan nilai sensor Ultrasonik dan sensor IR dan menggerakkan robot sesuai. Di sini Dalam program ini saya telah menggunakan nilai cm sebagai jarak kritikal di mana Robot harus mula membuat perubahan pada arah. Anda boleh menggunakan nilai pilihan anda. Sekiranya tidak ada objek, robot hanya bergerak ke hadapan
jika (jarak> 5) {RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 0; // Motor 2 ke hadapan}
Sekiranya objek dikesan, maka jaraknya akan berada di bawah cm. Dalam kes ini, kita mempertimbangkan nilai sensor Ultrasonik kiri dan kanan. Berdasarkan nilai ini, kami memutuskan untuk membelok ke kiri atau ke kanan. Kelewatan ms digunakan sehingga perubahan arah dapat dilihat.
jika (RD2 == 0 && RD3 == 1 && jarak <= 5) // Sensor kiri disekat {back_off (); RC4 = 1; RC5 = 1; // Motor 1 hentian RC6 = 1; RC7 = 0; // Motor 2 ke hadapan __delay_ms (500); } hitung_jarak (); jika (RD2 == 1 && RD3 == 0 && jarak <= 5) // Sensor kanan disekat {back_off (); RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 1; // Perhentian motor 2 __delay_ms (500); }
Kadang-kadang sensor Ultrasonik akan mengesan objek, tetapi tidak ada objek yang dapat dikesan oleh sensor IR. Dalam kes ini, robot berpusing ke kiri secara lalai. Anda juga boleh membuatnya membelok ke kanan atau secara rawak berdasarkan pilihan anda. Sekiranya terdapat objek di kedua-dua sisi maka kita membuatnya terbalik. Kod untuk melakukan perkara yang sama ditunjukkan di bawah.
hitung_jarak (); if (RD2 == 0 && RD3 == 0 && jarak <= 5) // Kedua-dua sensor terbuka {back_off (); RC4 = 0; RC5 = 1; // Motor 1 maju RC6 = 1; RC7 = 1; // Perhentian motor 2 __delay_ms (500); } hitung_jarak (); if (RD2 == 1 && RD3 == 1 && jarak <= 5) // Kedua-dua sensor disekat {back_off (); RC4 = 1; RC5 = 0; // Motor 1 RC6 terbalik = 1; RC7 = 1; // Perhentian motor 2 __delay_ms (1000); }
Obstacle Avoider Robot dalam Tindakan:
Kerja projek ini sangat menarik dan menyeronokkan untuk ditonton. Setelah selesai menggunakan Litar dan Kod anda, hidupkan Bot anda dan biarkan di atas tanah. Ia harus dapat mengenal pasti halangan dan menghindarinya dengan bijak. Tetapi, inilah bahagian yang menyeronokkan. Anda boleh mengubah suai kod dan membuatnya lebih banyak perkara seperti membuatnya tidak menjadi tangga, menjadikannya lebih bijak dengan menyimpan giliran berharga dan apa yang tidak?
Robot ini akan membantu anda memahami asas pengaturcaraan dan mengetahui bagaimana perkakasan sebenar akan bertindak balas terhadap kod anda. Selalu seronok memprogramkan robot ini dan melihat bagaimana kelakuannya untuk kod di dunia nyata.
Di sini kami telah menggunakan papan PIC perf yang sama yang kami buat untuk LED berkedip menggunakan mikrokontroler PIC dan menggunakan papan ini dalam projek lain dari PIC Tutorial Series.
Robot anda semestinya kelihatan serupa dengan yang ditunjukkan dalam gambar di atas. Selesai kerja projek ini ditunjukkan dalam video di bawah.
Harap anda memahami projek ini dan menikmati pembinaannya. Sekiranya anda mempunyai keraguan atau buntu, anda boleh menggunakan bahagian komen untuk menghantar soalan anda dan saya akan berusaha sebaik mungkin untuk menjawabnya.