- Bahan yang Diperlukan:
- Rajah Litar:
- Bagaimana modul HC-SR04 berfungsi:
- Mengukur jarak antara dua sensor Ultrasonik (HC-SR04):
- Program untuk Sensor Pemancar:
- Program untuk Sensor Penerima:
- Bekerja:
- Idea Peningkatan - menentukur sensor menggunakan jarak yang diketahui:
Sensor ultrasonik (HC-SR04) biasanya digunakan untuk mencari jarak objek dari satu titik tertentu. Sudah cukup mudah untuk melakukan ini dengan Arduino dan kodanya juga cukup mudah. Tetapi dalam artikel ini kita akan mencuba sesuatu yang berbeza dengan sensor HC-SR04 yang popular ini. Kami akan cuba mengira jarak antara dua sensor Ultrasonik, iaitu satu sensor akan bertindak sebagai pemancar dan sensor lain bertindak sebagai penerima. Dengan melakukan ini, kita dapat mengesan lokasi satu pemancar menggunakan banyak penerima ultrasonik, penjejakan ini disebut triangulasi dan dapat digunakan untuk pengikut koper robot dok automatik dan aplikasi serupa lainnya. Mencari jarak antara dua sensor AS mungkin merupakan tugas yang agak mudah tetapi saya menghadapi beberapa cabaran yang dibincangkan dalam projek ini.
Teknik yang dibincangkan dalam artikel ini tidak tepat dan mungkin tidak berguna dalam sistem sebenar tanpa pengubahsuaian. Semasa dokumentasi ini, saya tidak menjumpai sesiapa yang mendapat hasil yang hampir sama dengan keputusan saya, jadi saya telah berkongsi pandangan saya tentang bagaimana saya berjaya sehingga orang yang mencuba ini tidak perlu mencipta semula roda tersebut.
Bahan yang Diperlukan:
- Arduino (2Nos) - Mana-mana model
- Modul HCSR04 (2Nos)
Rajah Litar:
Walaupun kita akan menjadikan satu sensor AS (Ultrasonik) berfungsi sebagai pemancar dan yang lain sebagai penerima, ia wajib menyambungkan keempat-empat pin sensor dengan Arduino. Mengapa kita mesti? Lebih banyak perkara akan dibincangkan kemudian, tetapi buat masa ini gambarajah litar akan seperti berikut
Seperti yang anda lihat, gambarajah litar untuk kedua-dua Pemancar dan penerima sama. Periksa juga: Arduino Ultrasonic Sensor Interfacing
Bagaimana modul HC-SR04 berfungsi:
Sebelum kita melangkah lebih jauh, mari kita fahami bagaimana sensor HC-SR04 berfungsi. Diagram timing di bawah akan membantu kita memahami cara kerja.
Sensor mempunyai dua pin Trigger dan Echo yang digunakan untuk mengukur jarak seperti yang ditunjukkan dalam rajah pemasaan. Mula-mula untuk memulakan pengukuran kita harus mengirim gelombang Ultrasonik dari pemancar, ini dapat dilakukan dengan menetapkan pin pemicu tinggi untuk 10uS. Sebaik sahaja ini dilakukan, pin pemancar akan menghantar 8 gelombang sonik gelombang AS. Gelombang AS ini akan memukul objek melantun kembali dan akan diterima oleh penerima.
Di sini rajah masa menunjukkan bahawa apabila penerima menerima gelombang, ia akan menjadikan pin Echo menjadi tinggi untuk jangka masa yang sama dengan masa yang diperlukan untuk gelombang bergerak dari sensor AS dan mencapai kembali ke sensor. Ini gambar rajah pemasaan nampaknya tidak menjadi kenyataan.
Saya menutup bahagian Tx (pemancar) sensor saya dan memeriksa apakah nadi Echo semakin tinggi, dan ya, ia benar-benar tinggi. Ini bermaksud bahawa denyut Echo tidak menunggu gelombang AS (ultrasonik) diterima olehnya. Sebaik sahaja ia menghantar gelombang AS, ia akan menjadi tinggi dan tetap tinggi sehingga gelombang itu kembali. Jadi gambarajah masa yang betul mestilah seperti yang ditunjukkan di bawah ini (Maaf kerana kemahiran menulis saya yang lemah)
Menjadikan HC-SR04 anda berfungsi sebagai Pemancar sahaja:
Cukup tepat untuk membuat HC-SR04 berfungsi sebagai pemancar sahaja. Seperti yang ditunjukkan dalam rajah masa, anda harus menyatakan pin Pemicu sebagai pin output dan membuatnya tetap tinggi selama 10 Mikrodetik. Ini akan memulakan pecah gelombang Ultrasonik. Oleh itu, setiap kali kita ingin menghantar gelombang, kita hanya perlu mengawal pin pemicu sensor Pemancar, yang mana kodnya diberikan di bawah.
Menjadikan HC-SR04 anda berfungsi sebagai Penerima sahaja:
Seperti yang ditunjukkan dalam rajah masa, kita tidak dapat mengendalikan kenaikan pin Echo kerana berkaitan dengan pin pemicu. Jadi tidak mungkin kita menjadikan HC-SR04 berfungsi sebagai penerima sahaja. Tetapi kita dapat menggunakan hack, dengan hanya menutupi bagian Transmitter sensor dengan pita (seperti yang ditunjukkan pada gambar di bawah) atau topi gelombang AS tidak dapat melarikan diri di luar casing Transmitter dan pin Echo tidak akan terpengaruh oleh gelombang AS ini.
Sekarang untuk menjadikan pin gema menjadi tinggi, kita hanya perlu menarik pin pemicu dummy ini selama 10 Mikrodetik. Setelah sensor Penerima ini mendapat gelombang AS yang dipancarkan oleh sensor Pemancar, pin echo akan menjadi rendah.
Mengukur jarak antara dua sensor Ultrasonik (HC-SR04):
Sejauh ini kita telah memahami bagaimana menjadikan satu sensor berfungsi sebagai pemancar dan sensor yang lain berfungsi sebagai penerima. Sekarang, kita harus menghantar gelombang ultrasonik dari sensor pemancar dan menerimanya dengan sensor penerima dan periksa masa yang diperlukan untuk gelombang bergerak dari pemancar ke bunyi penerima mudah kan? Tetapi sayangnya!, Kami mempunyai masalah di sini dan ini tidak akan berjaya.
Modul Pemancar dan modul Penerima berjauhan dan apabila modul penerima menerima gelombang AS dari modul pemancar, ia tidak akan tahu bila pemancar menghantar gelombang tertentu ini. Tanpa mengetahui masa mula, kita tidak dapat mengira masa yang diambil dan jaraknya. Untuk menyelesaikan masalah ini, denyut Echo dari modul penerima mesti dibuat dengan tinggi apabila modul Transmitter telah menghantar gelombang AS. Dengan kata lain, modul Pemancar dan modul penerima harus mencetuskan pada masa yang sama. Ini dapat dicapai dengan kaedah berikut.
Dalam rajah di atas, Tx mewakili sensor Pemancar dan Rx mewakili sensor Penerima. Seperti yang ditunjukkan sensor Transmitter akan dibuat untuk menghantar gelombang AS pada kelewatan yang diketahui secara berkala, ini semua harus dilakukan.
Dalam sensor Penerima, kita mesti membuat pin pemicu menjadi tinggi tepat ketika pin pemancar naik tinggi. Oleh itu pada mulanya kita secara acak menjadikan Pencetus Penerima menjadi tinggi dan akan tetap tinggi sehingga pin gema menjadi rendah. Pin gema ini akan menjadi rendah hanya apabila menerima gelombang AS dari pemancar. Sehingga begitu rendah, kita dapat menganggap bahawa sensor Pemancar baru saja dipicu. Sekarang, dengan anggapan ini sebaik sahaja gema menjadi rendah, kita boleh menunggu kelewatan yang diketahui dan kemudian mencetuskan pencetus penerima. Ini sebahagiannya akan menyegerakkan pencetus kedua Pemancar dan penerima dan oleh itu anda boleh membaca tempoh nadi gema segera menggunakan pulseIn () dan mengira jaraknya.
Program untuk Sensor Pemancar:
Program lengkap untuk modul pemancar terdapat di bahagian bawah halaman. Ia tidak lain kecuali mencetuskan sensor pemancar pada selang masa berkala.
digitalWrite (trigPin, TINGGI); kelewatanMikrodetik (10); digitalWrite (trigPin, RENDAH);
Untuk mencetuskan sensor, kita mesti membuat pin pemicu agar tetap tinggi selama 10uS. Kod untuk melakukan perkara yang sama ditunjukkan di atas
Program untuk Sensor Penerima:
Di sensor penerima, kami telah menutupi mata pemancar sensor untuk menjadikannya palsu seperti yang telah dibincangkan sebelumnya. Sekarang kita boleh menggunakan teknik yang disebutkan di atas untuk mengukur jarak antara dua sensor. Program lengkap diberikan di bahagian bawah halaman ini. Beberapa garis penting dijelaskan di bawah
Pencetus_US (); sementara (digitalRead (echoPin) == TINGGI); kelewatanMikrodetik (10); Pencetus_US (); tempoh = pulseIn (echoPin, TINGGI);
Pada mulanya kami memicu sensor AS dengan menggunakan fungsi Trigger_US () dan kemudian menunggu sehingga pin gema tetap tinggi menggunakan gelung sementara. Setelah semakin rendah kita menunggu tempoh yang telah ditentukan, jangka masa ini antara 10 hingga 30 mikrodetik yang dapat ditentukan menggunakan percubaan dan kesilapan (Atau anda boleh menggunakan idea improvisasi yang diberikan di bawah). Selepas kelewatan ini, cetuskan AS lagi menggunakan fungsi yang sama dan kemudian gunakan fungsi pulseIn () untuk mengira jangka masa gelombang.
Sekarang dengan menggunakan formula lama yang sama kita dapat mengira jarak seperti di bawah
jarak = jangka masa * 0.034;
Bekerja:
Buat sambungan seperti yang dijelaskan dalam program. Tutup bahagian Tx sensor penerima seperti yang ditunjukkan dalam gambar. Kemudian muat naik kod Pemancar dan kod penerima yang masing-masing diberikan kepada pemancar dan penerima Arduino. Buka monitor bersiri modul penerima dan anda harus melihat jarak antara dua modul yang ditunjukkan seperti yang ditunjukkan dalam video di bawah.
Catatan: Kaedah ini hanyalah ideologi dan mungkin tidak tepat atau memuaskan. Walau bagaimanapun, anda boleh mencuba idea improvisasi di bawah untuk mendapatkan hasil yang lebih baik.
Idea Peningkatan - menentukur sensor menggunakan jarak yang diketahui:
Kaedah yang dijelaskan sejauh ini nampaknya memuaskan, namun ia cukup untuk projek saya. Walau bagaimanapun, saya juga ingin berkongsi kelemahan kaedah ini dan cara mengatasinya. Satu kelemahan utama kaedah ini ialah kita menganggap bahawa pin Echo penerima jatuh rendah sebaik sahaja sensor Transmitter menghantar gelombang AS yang tidak benar kerana gelombang akan mengambil sedikit masa untuk bergerak dari pemancar ke penerima. Oleh itu, Pencetus pemancar dan pencetus penerima tidak akan diselaraskan dengan sempurna.
Untuk mengatasi ini, kita dapat mengkalibrasi sensor menggunakan jarak tahu pada mulanya. Sekiranya jaraknya diketahui, kita akan mengetahui masa yang diperlukan untuk gelombang AS sampai ke penerima dari pemancar. Mari kita simpan masa ini sebagai Del (D) seperti gambar di bawah.
Sekarang kita akan mengetahui dengan tepat berapa lama kita harus menjadikan pin Pemicu Penerima ke tinggi untuk menyegerakkan dengan pencetus Pemancar. Tempoh ini dapat dikira dengan Known Delay (t) - Del (D). Saya tidak dapat menguji idea ini kerana keterbatasan masa jadi saya tidak pasti sejauh mana tepatnya ia berfungsi. Oleh itu, sekiranya anda mencubanya, beritahu saya hasilnya melalui bahagian komen.