Pandangan: 164 Pengarang: Grace Masa Terbit: 2021-07-26 Asal: tapak
The Sensor ultrasonik HC-SR04 ialah salah satu modul pengukuran jarak yang paling popular untuk projek Arduino. Ia digunakan secara meluas dalam robot pengelakan halangan, penderia tempat letak kereta, pengesanan aras, tong sampah pintar, meter jarak dan aplikasi pengesan bukan hubungan yang lain.
Modul ini memancarkan gelombang ultrasonik 40kHz melalui pemancar. Apabila gelombang bunyi bertemu dengan objek, ia memantul kembali kepada penerima. Dengan mengukur masa gema dan menggunakan kelajuan bunyi, Arduino boleh mengira jarak antara sensor dan objek.
| Parameter | Nilai |
| Voltan kerja biasa | 5V DC |
| Arus kerja statik | Kurang daripada 5mA pada beberapa versi modul |
| Kekerapan operasi | Gelombang ultrasonik 40kHz |
| Jarak pengesanan | Julat biasa: 2cm hingga 400cm; sesetengah versi pelarasan keuntungan mungkin menyokong julat yang lebih panjang. |
| Sudut pengesanan | Biasanya dalam 15 darjah; sesetengah versi dengan keuntungan yang lebih tinggi mungkin mencapai kira-kira 30 darjah. |
| Ketepatan | Sehingga kira-kira 0.3cm di bawah keadaan ujian yang sesuai |
| Zon buta | Kira-kira 2cm jarak ukur minimum |
Modul ultrasonik HC-SR04 mempunyai empat pin: VCC, TRIG, ECHO, dan GND. Arduino menghantar nadi pencetus pendek ke pin TRIG, kemudian membaca nadi kembali dari pin ECHO.
| Pin HC-SR04 | Sambungan Arduino | Fungsi |
| VCC | 5V | Bekalan kuasa untuk modul ultrasonik. |
| TRIG | Pin digital 9 | Input pencetus. Arduino menggunakan nadi 10us untuk memulakan julat. |
| ECHO | Pin digital 10 | Keluaran gema. Arduino membaca lebar nadi untuk mengira jarak. |
| GND | GND | Sambungan tanah. |
HC-SR04 berfungsi mengikut ukuran masa penerbangan. Arduino menghantar isyarat pencetus tahap tinggi sekurang-kurangnya 10 mikrosaat ke pin TRIG. Modul kemudian secara automatik menghantar lapan denyutan ultrasonik 40kHz dan menunggu gema yang dipantulkan.
Apabila isyarat ultrasonik yang dipantulkan dikesan, pin ECHO mengeluarkan nadi peringkat tinggi. Tempoh nadi ini ialah masa perjalanan pergi balik gelombang ultrasonik.
Jarak = Gema masa aras tinggi × Kelajuan bunyi / 2
Dalam kod Arduino, formula ringkas yang biasa ialah:
Jarak dalam cm = tempoh × 0.0343 / 2
Proses pemasaan adalah mudah: Arduino mengekalkan TRIG rendah secara ringkas, menghantar nadi tinggi 10us, kemudian mengembalikan TRIG kepada rendah. HC-SR04 menghantar letupan ultrasonik dan menetapkan ECHO tinggi sehingga isyarat yang dipantulkan kembali atau masa pengukuran tamat.
Untuk mengelakkan bacaan tidak stabil, tinggalkan kelewatan yang singkat antara pengukuran. Kitaran pengukuran kira-kira 60ms biasanya digunakan supaya gema ultrasonik sebelumnya mempunyai masa untuk hilang sebelum pencetus seterusnya.
Fungsi Arduino pulseIn() digunakan untuk mengukur berapa lama pin digital kekal TINGGI atau RENDAH. Untuk HC-SR04, Arduino menggunakan pulseIn(echoPin, HIGH) untuk membaca lebar nadi peringkat tinggi daripada pin ECHO.
| Sintaks | Maknanya |
| pulseIn(pin, nilai) | Membaca tempoh nadi TINGGI atau RENDAH. |
| pulseIn(pin, nilai, tamat masa) | Membaca nadi dengan nilai tamat masa dalam mikrosaat. |
Menggunakan tamat masa adalah disyorkan. Jika tiada gema dikembalikan, fungsi boleh berhenti menunggu dan mengembalikan 0 dan bukannya menyekat program terlalu lama.
Pendawaian adalah mudah. Sambungkan 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 Arduino biasa berikut menghantar nadi pencetus 10us, membaca lebar denyut ECHO, mengira jarak dalam sentimeter, dan mencetak hasilnya dalam Monitor Bersiri.
const int trigPin = 9; const int echoPin = 10; tempoh yang panjang; jarak apunganCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); kelewatanMikrosaat(2); digitalWrite(trigPin, HIGH); kelewatanMikrosaat(10); digitalWrite(trigPin, LOW); tempoh = pulseIn(echoPin, HIGH, 30000); if (tempoh == 0) { Serial.println('Di luar julat'); } lain { jarakCm = tempoh * 0.0343 / 2; Serial.print('Jarak: '); Serial.print(jarakCm); Serial.println(' cm'); } kelewatan(60); }
Jika anda melihat nilai jarak dalam Monitor Bersiri, sensor ultrasonik HC-SR04 dan pendawaian Arduino berfungsi dengan betul. Anda kemudian boleh menggunakan data jarak untuk pengesanan halangan, kawalan pergerakan robot, pintu automatik, peringatan tempat letak kereta atau projek tahap cecair.
Pastikan objek yang diukur dalam julat jarak yang disyorkan dan di luar zon buta 2cm.
Gunakan permukaan sasaran yang rata dan pepejal untuk pantulan ultrasonik yang lebih baik.
Elakkan mengukur bahan lembut, bersudut, berliang atau menyerap bunyi.
Gunakan bekalan kuasa 5V yang stabil dan pastikan pendawaian pendek dan selamat.
Tambahkan tamat masa pada pulseIn() untuk mengelakkan sekatan lama apabila tiada gema kembali.
Purata atau median-tapis beberapa bacaan untuk mengurangkan bunyi.
Untuk ketepatan yang lebih tinggi, beri pampasan untuk suhu kerana kelajuan bunyi berubah mengikut suhu udara.
| Permohonan | Bagaimana HC-SR04 Digunakan |
| Robot mengelak halangan | Mengesan objek berdekatan dan membantu robot menukar arah. |
| Sensor jarak letak kereta | Mengukur jarak antara kenderaan dengan halangan. |
| Pengesanan paras cecair | Mengukur jarak dari sensor ke permukaan cecair tanpa sentuhan. |
| Tong sampah pintar | Mengesan tangan atau objek berdekatan dan mencetuskan pembukaan penutup automatik. |
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. Hantar nadi pencetus 10us, baca tempoh gema dengan pulseIn(), dan hitung jarak dengan formula masa penerbangan.
HC-SR04 adalah murah, mudah digunakan dan sesuai untuk banyak projek pengukuran jarak Arduino. Untuk hasil terbaik, beri perhatian kepada permukaan sasaran, sudut pengukur, zon buta, kuasa stabil, pengendalian tamat masa dan kesan suhu.
Arduino menghantar nadi 10us ke pin TRIG. HC-SR04 memancarkan lapan denyutan ultrasonik 40kHz dan menetapkan pin ECHO tinggi sehingga bunyi yang dipantulkan kembali. Arduino mengukur masa nadi ini dan mengira jarak.
Formulanya ialah jarak = tempoh × kelajuan bunyi / 2. Dalam sentimeter, formula Arduino biasa ialah jarakCm = tempoh × 0.0343 / 2, di mana tempoh diukur dalam mikrosaat.
Masa gema yang diukur ialah masa pergi balik dari sensor ke objek dan kembali ke sensor. Membahagi dengan 2 memberikan jarak sehala antara penderia dan objek.
Anda boleh menggunakan kebanyakan pin digital Arduino. Dalam banyak contoh, TRIG disambungkan ke pin digital 9 dan ECHO disambungkan ke pin digital 10. Kod mesti sepadan dengan pin yang digunakan dalam pendawaian anda.
Punca biasa termasuk pendawaian longgar, kuasa 5V yang tidak stabil, nombor pin TRIG atau ECHO yang salah, tiada objek dalam julat, permukaan sasaran bersudut, bahan lembut, kepala sensor terhalang atau tiada masa tamat dalam fungsi pulseIn().
Zon buta ialah jarak minimum di mana modul tidak dapat mengukur dengan pasti. Untuk HC-SR04, zon buta biasanya kira-kira 2cm. Objek yang lebih dekat daripada ini mungkin menghasilkan bacaan yang tidak stabil.
Ya, HC-SR04 boleh digunakan untuk projek paras air tanpa sentuhan yang mudah jika penderia dilindungi daripada kelembapan dan dipasang di atas permukaan cecair. Untuk tangki lembap, luar atau industri, penderia ultrasonik kalis air disyorkan.
Gunakan bekalan kuasa yang stabil, pastikan penderia berserenjang dengan sasaran, elakkan permukaan lembut atau bersudut, tambah nadiDalam tamat masa, ambil berbilang bacaan, gunakan penapisan median dan biarkan kira-kira 60ms antara ukuran.