- Bahan yang Dibutuhkan:
- Diagram Sirkuit:
- Bagaimana sebenarnya modul HC-SR04 bekerja:
- Mengukur jarak antara dua sensor Ultrasonik (HC-SR04):
- Program untuk Sensor Pemancar:
- Program untuk Sensor Penerima:
- Kerja:
- Ide yang Ditingkatkan - mengkalibrasi sensor menggunakan jarak yang diketahui:
Sensor ultrasonik (HC-SR04) biasanya digunakan untuk mencari jarak suatu benda dari satu titik tertentu. Sangat mudah untuk melakukan ini dengan Arduino dan kodenya juga cukup sederhana. Namun dalam artikel ini kita akan mencoba sesuatu yang berbeda dengan sensor HC-SR04 yang populer ini. Kami akan mencoba menghitung jarak antara dua sensor ultrasonik yaitu, satu sensor berfungsi sebagai pemancar dan satu sensor berfungsi sebagai penerima. Dengan melakukan ini kita dapat melacak lokasi dari satu pemancar menggunakan banyak penerima ultrasonik pelacakan ini disebut triangulasi dan dapat digunakan untuk pengikut bagasi robot docking otomatis dan aplikasi serupa lainnya. Menemukan jarak antara dua sensor AS mungkin terdengar tugas yang cukup sederhana tetapi saya menghadapi beberapa tantangan yang dibahas dalam proyek ini.
Teknik yang dibahas dalam artikel ini tidak cukup akurat dan mungkin tidak berguna dalam sistem nyata mana pun tanpa modifikasi. Selama dokumentasi ini, saya tidak menemukan siapa pun yang mendapatkan hasil sedekat saya jadi saya baru saja membagikan pandangan saya tentang bagaimana saya membuatnya berfungsi sehingga orang yang mencoba ini tidak perlu menemukan kembali roda.
Bahan yang Dibutuhkan:
- Arduino (2Nos) - Model apa saja
- Modul HCSR04 (2Nos)
Diagram Sirkuit:
Meskipun kita akan membuat satu sensor AS (Ultrasonik) untuk bekerja sebagai pemancar dan yang lainnya sebagai penerima, namun wajib menghubungkan keempat pin sensor dengan Arduino. Mengapa kita harus melakukannya? Lebih dari itu akan dibahas nanti, tetapi untuk saat ini diagram rangkaiannya adalah sebagai berikut
Seperti yang Anda lihat, diagram sirkuit untuk Transmitter dan receiver keduanya identik. Periksa juga: Antarmuka Sensor Ultrasonik Arduino
Bagaimana sebenarnya modul HC-SR04 bekerja:
Sebelum kita melangkah lebih jauh, mari kita pahami cara kerja sensor HC-SR04. Diagram waktu di bawah ini akan membantu kita memahami cara kerjanya.
Sensor ini memiliki dua pin Trigger dan Echo yang digunakan untuk mengukur jarak seperti yang ditunjukkan pada diagram waktu. Pertama untuk memulai pengukuran kita harus mengirim gelombang ultrasonik dari pemancar, ini dapat dilakukan dengan mengatur pin pemicu tinggi selama 10uS. Segera setelah ini dilakukan, pin pemancar akan mengirimkan 8 ledakan sonik gelombang AS. Gelombang AS ini akan menghantam benda yang dipantulkan kembali dan akan diterima oleh penerima.
Di sini diagram waktu menunjukkan bahwa setelah penerima menerima gelombang itu akan membuat pin Echo menjadi tinggi untuk durasi waktu yang sama dengan waktu yang dibutuhkan gelombang untuk melakukan perjalanan dari sensor AS dan mencapai kembali ke sensor. Ini diagram waktu tampaknya tidak menjadi kenyataan.
Saya menutupi bagian Tx (pemancar) dari sensor saya dan memeriksa apakah pulsa Echo tinggi, dan ya memang naik tinggi. Ini berarti pulsa Gema tidak menunggu gelombang AS (ultrasonik) diterima olehnya. Begitu ia mentransmisikan gelombang AS, ia menjadi tinggi dan tetap tinggi sampai gelombang kembali. Jadi diagram waktu yang benar harus seperti ini yang ditunjukkan di bawah ini (Maaf atas kemampuan menulis saya yang buruk)
Membuat HC-SR04 Anda berfungsi sebagai Transmitter saja:
Cukup mudah untuk membuat HC-SR04 berfungsi sebagai pemancar saja. Seperti yang ditunjukkan pada diagram waktu, Anda harus mendeklarasikan pin Pemicu sebagai pin keluaran dan membuatnya tetap tinggi selama 10 Mikrodetik. Ini akan memulai ledakan gelombang Ultrasonik. Jadi, setiap kali kami ingin mengirimkan gelombang, kami hanya perlu mengontrol pin pemicu dari sensor Transmitter, yang kodenya diberikan di bawah ini.
Membuat HC-SR04 Anda berfungsi sebagai Penerima saja:
Seperti yang ditunjukkan pada diagram waktu, kita tidak dapat mengontrol kenaikan pin Echo karena terkait dengan pin pemicu. Jadi tidak mungkin kami membuat HC-SR04 hanya berfungsi sebagai penerima. Tetapi kita dapat menggunakan hack, dengan hanya menutupi bagian Transmitter dari sensor dengan selotip (seperti yang ditunjukkan pada gambar di bawah) atau tutup gelombang AS tidak dapat keluar dari casing Transmitter-nya dan pin Echo tidak akan terpengaruh oleh gelombang AS ini.
Sekarang untuk membuat pin gema menjadi tinggi, kita hanya perlu menarik pin pemicu dummy ini tinggi-tinggi selama 10 Mikrodetik. Setelah sensor Receiver ini mendapatkan gelombang AS yang ditransmisikan oleh sensor Transmitter, pin gema akan menjadi rendah.
Mengukur jarak antara dua sensor Ultrasonik (HC-SR04):
Sejauh ini kita telah memahami bagaimana membuat satu sensor berfungsi sebagai pemancar dan sensor lainnya berfungsi sebagai penerima. Sekarang, kita harus mengirimkan gelombang ultrasonik dari sensor pemancar dan menerimanya dengan sensor penerima dan memeriksa waktu yang dibutuhkan untuk gelombang untuk bergerak dari pemancar ke penerima terdengar mudah bukan ?? Tapi sayangnya !, kami memiliki masalah di sini dan ini tidak akan berhasil.
Modul Pemancar dan modul Penerima berjauhan dan ketika modul penerima menerima gelombang AS dari modul pemancar, modul pemancar tidak akan tahu kapan pemancar mengirimkan gelombang khusus ini. Tanpa mengetahui waktu mulai kita tidak dapat menghitung waktu yang dibutuhkan dan dengan demikian jaraknya. Untuk mengatasi masalah ini, pulsa Gema dari modul penerima harus dibuat tinggi tepat ketika modul Pemancar telah mentransmisikan gelombang AS. Dengan kata lain, modul Transmitter dan modul receiver harus memicu pada saat yang bersamaan. Ini dapat dicapai dengan metode berikut.
Pada diagram di atas, Tx mewakili sensor Transmitter dan Rx mewakili sensor Receiver. Seperti yang ditunjukkan, sensor Pemancar akan dibuat untuk memancarkan gelombang AS pada penundaan yang diketahui secara berkala, hanya ini yang harus dilakukan.
Dalam sensor Receiver, kita harus membuat pin pemicu menjadi tinggi persis saat pin pemancar naik tinggi. Jadi awalnya kita secara acak membuat Pemicu Penerima menjadi tinggi yang akan dan tetap tinggi sampai pin gema menjadi rendah. Pin gema ini akan menjadi rendah hanya ketika menerima gelombang AS dari pemancar. Jadi, segera setelah turun kita dapat berasumsi bahwa sensor Transmitter baru saja terpicu. Sekarang, dengan asumsi ini segera setelah gema rendah kita bisa menunggu penundaan yang diketahui dan kemudian memicu pemicu penerima. Ini sebagian akan menyinkronkan pemicu dari Pemancar dan penerima dan karenanya Anda dapat membaca durasi pulsa gema langsung menggunakan pulseIn () dan menghitung jarak.
Program untuk Sensor Pemancar:
Program lengkap untuk modul pemancar dapat ditemukan di bagian bawah halaman. Itu tidak melakukan apa pun selain memicu sensor pemancar pada interval periodik.
digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW);
Untuk memicu sensor kita harus membuat pin pemicu tetap tinggi selama 10uS. Kode untuk melakukan hal yang sama ditunjukkan di atas
Program untuk Sensor Penerima:
Pada sensor penerima kita telah menutupi mata Pemancar dari sensor tersebut untuk membuatnya dummy seperti yang telah dibahas sebelumnya. Sekarang kita dapat menggunakan teknik yang disebutkan di atas untuk mengukur jarak antara dua sensor. Program lengkap diberikan di bagian bawah halaman ini. Beberapa baris penting dijelaskan di bawah ini
Trigger_US (); sementara (digitalRead (echoPin) == HIGH); delayMicroseconds (10); Trigger_US (); durasi = pulseIn (echoPin, HIGH);
Awalnya kami memicu sensor AS dengan menggunakan fungsi Trigger_US () dan kemudian menunggu sampai pin echo tetap tinggi menggunakan loop sementara. Setelah rendah, kami menunggu durasi yang telah ditentukan sebelumnya, durasi ini harus berada di antara 10 hingga 30 mikrodetik yang dapat ditentukan menggunakan trial and error (Atau Anda dapat menggunakan ide improvisasi yang diberikan di bawah). Setelah penundaan ini, picu AS lagi menggunakan fungsi yang sama dan kemudian gunakan fungsi pulseIn () untuk menghitung durasi gelombang.
Sekarang menggunakan rumus lama yang sama kita bisa menghitung jarak seperti di bawah ini
jarak = durasi * 0,034;
Kerja:
Buat koneksi seperti yang dijelaskan dalam program. Tutupi bagian Tx dari sensor penerima seperti yang ditunjukkan pada gambar. Kemudian unggah kode Pemancar dan kode penerima yang diberikan di bawah ini ke pemancar dan penerima Arduino masing-masing. Buka monitor serial dari modul receiver dan Anda akan melihat jarak antara dua modul yang ditampilkan seperti yang ditunjukkan pada video di bawah ini.
Catatan: Metode ini hanya sebuah ideologi dan mungkin tidak akurat atau memuaskan. Bagaimanapun Anda dapat mencoba ide improvisasi di bawah ini untuk mendapatkan hasil yang lebih baik.
Ide yang Ditingkatkan - mengkalibrasi sensor menggunakan jarak yang diketahui:
Metode yang dijelaskan sejauh ini anehnya tampaknya memuaskan, namun cukup untuk proyek saya. Namun saya juga ingin berbagi kekurangan dari metode ini dan cara mengatasinya. Salah satu kelemahan utama dari metode ini adalah kami mengasumsikan bahwa pin Echo pada penerima jatuh segera setelah sensor Transmitter mentransmisikan gelombang AS yang tidak benar karena gelombang akan membutuhkan waktu untuk melakukan perjalanan dari pemancar ke penerima. Oleh karena itu, Pemicu pemancar dan pemicu penerima tidak akan sinkron sempurna.
Untuk mengatasinya kita bisa mengkalibrasi sensor menggunakan jarak yang diketahui pada awalnya. Jika jarak diketahui kita akan tahu waktu yang dibutuhkan gelombang AS untuk mencapai penerima dari pemancar. Mari kita pertahankan waktu ini sebagai Del (D) seperti yang ditunjukkan di bawah ini.
Sekarang kita akan tahu persis setelah berapa lama kita harus membuat pin Pemicu Penerima menjadi tinggi untuk disinkronkan dengan pemicu Pemancar. Durasi ini dapat dihitung dengan Diketahui Delay (t) - Del (D). Saya tidak dapat menguji ide ini karena keterbatasan waktu, jadi saya tidak yakin seberapa akurat ide ini akan berhasil. Jadi jika Anda kebetulan mencobanya, beri tahu saya hasilnya melalui bagian komentar.