HC-SR04 ultrasonik sensör, 40 kHz'lik bir ses dalgası gönderip yankının geri dönme süresini ölçerek yaklaşık 2 cm ile 4 m arasındaki mesafeleri ölçer. Arduino TRIG pinine 10 mikrosaniyelik bir darbe gönderir, ECHO pininden gelen darbenin süresini pulseIn() ile ölçer; mesafe (cm) yaklaşık süre (µs) / 58 formülüyle hesaplanır. Su, toz ve dış ortam için su geçirmez ultrasonik sensörler kullanılır.
Engelden kaçan robotlar, park sensörleri, su deposu seviye ölçerleri ve temassız mesafe ölçüm cihazlarının çoğunda aynı prensip kullanılır: ses dalgası gönder, yankısını dinle. HC-SR04 bu işi yapan en popüler ve en ucuz sensördür. Bu rehberde ultrasonik sensörün nasıl çalıştığını, Arduino ile nasıl bağlandığını ve ölçüm hatalarının nasıl azaltılacağını anlatıyoruz.
HC-SR04 ultrasonik sensör nedir?
HC-SR04, insan kulağının duyamayacağı 40 kHz frekansta ses dalgası gönderen bir verici ve geri dönen yankıyı algılayan bir alıcıdan oluşan mesafe sensörüdür. 5V ile çalışır ve tipik olarak 2 cm ile 400 cm arasındaki mesafeleri, yaklaşık 15 derecelik bir koni içinde ölçer.
Ultrasonik sensör nasıl çalışır?
Sensör kısa bir ses darbesi gönderir; darbe bir engele çarpıp geri döner ve sensör gidiş-dönüş süresini ölçer. Sesin havadaki hızı bilindiği için mesafe bu süreden hesaplanır. Ses havada yaklaşık 343 m/s (20°C'de), yani 0,0343 cm/µs hızla ilerler. Ölçülen süre gidiş ve dönüşü kapsadığı için ikiye bölünür:
Mesafe (cm) = süre (µs) × 0,0343 / 2 ≈ süre (µs) / 58
HC-SR04 pinleri ve Arduino bağlantısı
| Pin | Görevi | Arduino bağlantısı |
|---|---|---|
| VCC | Besleme (5V) | 5V |
| TRIG | Ölçümü başlatır | D9 |
| ECHO | Yankı süresi kadar HIGH olur | D10 |
| GND | Toprak | GND |
ESP32 ve 3,3V kartlar için uyarı: HC-SR04'ün ECHO çıkışı 5V'tur. 3,3V'luk bir kartın girişine doğrudan bağlamayın; araya bir gerilim bölücü (ör. 1 kΩ ve 2 kΩ) koyun ya da 3,3V uyumlu bir sensör kullanın.
Arduino ile mesafe nasıl ölçülür?
- TRIG pinini OUTPUT, ECHO pinini INPUT olarak tanımlayın.
- TRIG pinini 2 µs LOW yapın, ardından 10 µs HIGH yapıp tekrar LOW'a çekin. Bu darbe ölçümü başlatır.
- ECHO pinindeki HIGH darbenin süresini pulseIn(echoPin, HIGH, 30000) ile mikrosaniye olarak ölçün; son parametre, yankı gelmezse beklemenin üst sınırıdır.
- Mesafeyi süre / 58 ile santimetreye çevirin.
- Ölçümler arasında en az 60 ms bekleyin; önceki darbenin yankıları sönmeden yeni ölçüm yapılmamalıdır.
Ölçülen mesafeye göre bir motoru durdurmak ya da bir röleyi çalıştırmak için DC motor ve röle modülü rehberlerimize bakabilirsiniz.
Ölçüm hataları nasıl azaltılır?
- Ortalama alın: Birkaç ölçümün ortalamasını ya da ortancasını (medyan) kullanın; tek tük hatalı değerler elenir.
- Hedef yüzeyi: Yumuşak (kumaş, sünger), çok küçük ya da eğik yüzeyler sesi iyi yansıtmaz; ölçüm kararsızlaşır.
- Sıcaklık: Ses hızı sıcaklıkla değişir. Hassas ölçüm için bir sıcaklık sensörüyle ses hızını düzeltebilirsiniz; bkz. sıcaklık sensörleri rehberi.
- Birden fazla sensör: Aynı anda çalışan sensörler birbirinin yankısını algılayabilir; sırayla tetikleyin.
- Montaj: Sensörü sağlam ve düz monte edin; ör. HC-SR04 sensör tutucu.
Su geçirmez ultrasonik sensör ne zaman gerekir?
HC-SR04 açık yapılıdır ve su, nem ve toza dayanıklı değildir; su deposu, dış ortam ve araç uygulamalarında kapalı gövdeli su geçirmez sensörler kullanılır. Bu sensörlerin bir kısmı HC-SR04 ile aynı şekilde (TRIG/ECHO) çalışır, bir kısmı ise ölçümü PWM ya da seri port (UART) üzerinden verir. Örnekler: RCWL-1670 su geçirmez ultrasonik sensör, 400 cm, RCWL-1655, DYP-A02YY PWM çıkışlı ve DYP-A02YY UART çıkışlı. Su geçirmez sensörlerin en kısa ölçüm mesafesi genellikle daha uzundur; ürün bilgisinden kontrol edin.
Sık sorulan sorular
HC-SR04 kaç metreye kadar ölçer?
Tipik ölçüm aralığı yaklaşık 2 cm ile 4 m arasıdır. Uygulamada güvenilir ölçüm mesafesi hedefin boyutuna ve yüzeyine bağlıdır; büyük ve sert yüzeyler daha uzaktan ölçülür.
HC-SR04 sürekli 0 ya da sabit değer gösteriyor, neden?
Bağlantılar, TRIG/ECHO pinlerinin yer değiştirmesi ya da yetersiz besleme bu soruna yol açar. Ayrıca hedef sensörün ölçüm aralığının dışındaysa ya da yankı dönmüyorsa pulseIn() 0 döndürür.
Ultrasonik sensör su seviyesi ölçer mi?
Evet, sensör depo kapağına yerleştirilip su yüzeyine olan mesafe ölçülerek seviye hesaplanabilir. Depodaki nem nedeniyle su geçirmez bir ultrasonik sensör kullanılmalıdır.
Ultrasonik sensör camı algılar mı?
Cam sert bir yüzey olduğu için ses dalgasını genellikle yansıtır ve algılanır. Kızılötesi sensörlerin zorlandığı cam ve şeffaf yüzeylerde ultrasonik sensör bu açıdan avantajlıdır.
HC-SR04 ile ESP32 kullanılır mı?
Kullanılır, ancak ECHO çıkışı 5V olduğu için ESP32 girişine gerilim bölücü ile bağlanmalıdır. Sensör 5V ile beslenir.
Özet
- HC-SR04, 40 kHz ses darbesinin yankı süresiyle mesafe ölçer.
- Mesafe (cm) ≈ süre (µs) / 58.
- TRIG'e 10 µs darbe, ECHO süresi pulseIn() ile ölçülür.
- 3,3V kartlarda ECHO için gerilim bölücü gerekir.
- Su ve dış ortam için su geçirmez ultrasonik sensörler kullanılır.