Dilihat: 164 Penulis: Grace Waktu Publikasi: 26-07-2021 Asal: Lokasi
Itu Sensor ultrasonik HC-SR04 adalah salah satu modul pengukuran jarak paling populer untuk proyek Arduino. Ini banyak digunakan dalam robot penghindar rintangan, sensor parkir, deteksi level, tempat sampah pintar, pengukur jarak, dan aplikasi penginderaan non-kontak lainnya.
Modul ini memancarkan gelombang ultrasonik 40kHz melalui pemancar. Ketika gelombang suara bertemu dengan suatu benda, gelombang suara tersebut dipantulkan kembali ke penerima. Dengan mengukur waktu gema dan menggunakan kecepatan suara, Arduino dapat menghitung jarak antara sensor dan objek.
| Parameter | Nilai |
| Tegangan kerja tipikal | 5VDC |
| Arus kerja statis | Kurang dari 5mA pada beberapa versi modul |
| Frekuensi operasi | Gelombang ultrasonik 40kHz |
| Jarak deteksi | Kisaran umum: 2cm hingga 400cm; beberapa versi yang disesuaikan dengan penguatan mungkin mendukung jangkauan yang lebih jauh. |
| Sudut deteksi | Biasanya dalam 15 derajat; beberapa versi dengan penguatan lebih tinggi bisa mencapai sekitar 30 derajat. |
| Presisi | Hingga sekitar 0,3 cm dalam kondisi pengujian yang sesuai |
| Zona buta | Jarak pengukuran minimum sekitar 2cm |
Modul ultrasonik HC-SR04 memiliki empat pin: VCC, TRIG, ECHO, dan GND. Arduino mengirimkan pulsa pemicu pendek ke pin TRIG, kemudian membaca pulsa balik dari pin ECHO.
| Pin HC-SR04 | Koneksi Arduino | Fungsi |
| VCC | 5V | Catu daya untuk modul ultrasonik. |
| TRIGONOMETRI | Pin digital 9 | Masukan pemicu. Arduino menerapkan pulsa 10us untuk memulai jangkauan. |
| GEMA | Pin digital 10 | Keluaran gema. Arduino membaca lebar pulsa untuk menghitung jarak. |
| GND | GND | Koneksi darat. |
HC-SR04 bekerja berdasarkan pengukuran waktu penerbangan. Arduino mengirimkan sinyal pemicu tingkat tinggi minimal 10 mikrodetik ke pin TRIG. Modul kemudian secara otomatis mengirimkan delapan pulsa ultrasonik 40kHz dan menunggu gema yang dipantulkan.
Ketika sinyal ultrasonik yang dipantulkan terdeteksi, pin ECHO mengeluarkan pulsa tingkat tinggi. Durasi pulsa ini adalah waktu tempuh pulang pergi gelombang ultrasonik.
Jarak = Gema waktu tingkat tinggi × Kecepatan suara / 2
Dalam kode Arduino, rumus umum yang disederhanakan adalah:
Jarak dalam cm = durasi × 0,0343 / 2
Proses pengaturan waktunya sederhana: Arduino menjaga TRIG tetap rendah sebentar, mengirimkan pulsa tinggi 10us, lalu mengembalikan TRIG ke rendah. HC-SR04 mengirimkan ledakan ultrasonik dan menyetel ECHO tinggi hingga sinyal yang dipantulkan kembali atau waktu pengukuran habis.
Untuk menghindari pembacaan yang tidak stabil, berikan jeda singkat di antara pengukuran. Siklus pengukuran sekitar 60 ms biasanya digunakan sehingga gema ultrasonik sebelumnya memiliki waktu untuk menghilang sebelum pemicu berikutnya.
Fungsi Arduino pulseIn() digunakan untuk mengukur berapa lama pin digital tetap HIGH atau LOW. Untuk HC-SR04, Arduino menggunakan pulseIn(echoPin, HIGH) untuk membaca lebar pulsa tingkat tinggi dari pin ECHO.
| Sintaksis | Arti |
| pulseIn(pin, nilai) | Membaca durasi pulsa HIGH atau LOW. |
| pulseIn(pin, nilai, batas waktu) | Membaca pulsa dengan nilai batas waktu dalam mikrodetik. |
Disarankan menggunakan batas waktu. Jika tidak ada gema yang dikembalikan, fungsi tersebut dapat berhenti menunggu dan mengembalikan 0 alih-alih memblokir program terlalu lama.
Pengkabelannya mudah. Hubungkan VCC ke 5V, GND ke GND, TRIG ke pin output digital Arduino, dan ECHO ke pin input digital Arduino. Contoh berikut menggunakan Arduino Uno, TRIG pada pin 9, dan ECHO pada pin 10.
Program khas Arduino berikut mengirimkan pulsa pemicu 10us, membaca lebar pulsa ECHO, menghitung jarak dalam sentimeter, dan mencetak hasilnya di Serial Monitor.
const int trigPin = 9; const int echoPin = 10; durasi lama; jarak pelampungCm; batal pengaturan() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.mulai(9600); } void loop() { digitalWrite(trigPin, RENDAH); penundaanMikrodetik(2); digitalWrite(trigPin, TINGGI); penundaanMikrodetik(10); digitalWrite(trigPin, RENDAH); durasi = pulseIn(echoPin, TINGGI, 30000); if (durasi == 0) { Serial.println('Di luar jangkauan'); } else { distanceCm = durasi * 0,0343 / 2; Serial.print('Jarak: '); Serial.print(jarakCm); Serial.println(' cm'); } penundaan(60); }
Jika Anda melihat nilai jarak di Serial Monitor, sensor ultrasonik HC-SR04 dan kabel Arduino berfungsi dengan benar. Anda kemudian dapat menggunakan data jarak untuk mendeteksi rintangan, mengontrol pergerakan robot, pintu otomatis, pengingat parkir, atau proyek level cairan.
Jaga objek yang diukur dalam rentang jarak yang disarankan dan di luar zona buta 2cm.
Gunakan permukaan target yang datar dan padat untuk refleksi ultrasonik yang lebih baik.
Hindari mengukur bahan yang lembut, bersudut, berpori, atau menyerap suara.
Gunakan catu daya 5V yang stabil dan jaga agar kabel tetap pendek dan aman.
Tambahkan batas waktu ke pulseIn() untuk mencegah pemblokiran lama ketika tidak ada gema yang kembali.
Rata-rata atau median-filter beberapa pembacaan untuk mengurangi noise.
Untuk akurasi yang lebih tinggi, kompensasikan suhu karena kecepatan suara berubah seiring suhu udara.
| Aplikasi | Bagaimana HC-SR04 Digunakan |
| Robot penghindar rintangan | Mendeteksi objek di sekitar dan membantu robot mengubah arah. |
| Sensor jarak parkir | Mengukur jarak antara kendaraan dan rintangan. |
| Deteksi level cairan | Mengukur jarak dari sensor ke permukaan cairan tanpa kontak. |
| Tempat sampah pintar | Mendeteksi tangan atau benda di dekatnya dan memicu pembukaan tutup otomatis. |
Untuk menggunakan sensor ultrasonik HC-SR04 dengan Arduino, sambungkan VCC ke 5V, GND ke GND, TRIG ke pin output digital, dan ECHO ke pin input digital. Kirim pulsa pemicu 10us, baca durasi gema dengan pulseIn(), dan hitung jarak dengan rumus waktu penerbangan.
HC-SR04 tidak mahal, mudah digunakan, dan cocok untuk banyak proyek pengukuran jarak Arduino. Untuk hasil terbaik, perhatikan permukaan target, sudut pengukuran, zona buta, daya stabil, penanganan batas waktu, dan efek suhu.
Arduino mengirimkan pulsa 10us ke pin TRIG. HC-SR04 memancarkan delapan pulsa ultrasonik 40kHz dan menyetel pin ECHO tinggi hingga suara yang dipantulkan kembali. Arduino mengukur waktu pulsa ini dan menghitung jarak.
Rumusnya adalah jarak = durasi × kecepatan suara / 2. Dalam sentimeter, rumus umum Arduino adalah jarakCm = durasi × 0,0343 / 2, dimana durasi diukur dalam mikrodetik.
Waktu gema yang diukur adalah waktu bolak-balik dari sensor ke objek dan kembali ke sensor. Membaginya dengan 2 menghasilkan jarak satu arah antara sensor dan objek.
Anda dapat menggunakan sebagian besar pin digital Arduino. Dalam banyak contoh, TRIG terhubung ke pin digital 9 dan ECHO terhubung ke pin digital 10. Kode harus cocok dengan pin yang digunakan pada kabel Anda.
Penyebab umum termasuk kabel longgar, daya 5V tidak stabil, nomor pin TRIG atau ECHO salah, tidak ada objek dalam jangkauan, permukaan target miring, bahan lembut, kepala sensor tersumbat, atau tidak ada batas waktu dalam fungsi pulseIn().
Zona buta adalah jarak minimum dimana modul tidak dapat mengukur dengan andal. Untuk HC-SR04, zona buta biasanya sekitar 2cm. Objek yang lebih dekat dari ini dapat menghasilkan pembacaan yang tidak stabil.
Ya, HC-SR04 dapat digunakan untuk proyek ketinggian air non-kontak sederhana jika sensor terlindung dari kelembapan dan dipasang di atas permukaan cairan. Untuk tangki lembab, luar ruangan, atau industri, disarankan menggunakan sensor ultrasonik tahan air.
Gunakan catu daya yang stabil, jaga agar sensor tetap tegak lurus terhadap target, hindari permukaan lunak atau miring, tambahkan batas waktu pulseIn, lakukan beberapa pembacaan, gunakan pemfilteran median, dan beri jarak sekitar 60ms antar pengukuran.