from pathlib import Path html = r''' Arduino ile Ev Yapımı Ultrasonik Mesafe Sensörü

Arduino ile Ev Yapımı Ultrasonik Mesafe Sensörü

Bu içerik, hazır HC-SR04 mantığını temel alarak ev yapımı bir ultrasonik mesafe sensörünün nasıl geliştirilebileceğini adım adım anlatan özgün Türkçe bir blog düzenlemesidir. Amaç, tetik darbesi, 40 kHz ultrasonik yayın, yankı algılama ve mesafe hesabı sürecini anlaşılır hale getirmektir.

Kategori: Arduino • Sensörler • Elektronik Projeler

Ultrasonik mesafe ölçümü basit görünür ama işin elektroniği dikkat ister. Sistemde verici transdüser kısa bir ultrasonik darbe üretir, bu ses bir yüzeye çarparak geri döner, alıcı transdüser de bu dönüşü yakalar. Gönderilen darbe ile alınan yankı arasındaki süre ölçülür ve ses hızına göre mesafe hesaplanır.

Temel mantık: Ölçtüğünüz süre, ses dalgasının gidiş ve dönüş toplam süresidir. Bu yüzden hesapta süre ikiye bölünür.
Mesafe (cm) = [ Gecikme süresi (mikrosaniye) / 1.000.000 / 2 ] × 34.000

Örneğin ölçülen gecikme 588 µs ise sonuç yaklaşık 10 cm olur. Yani işin özü, zaman ölçümünü doğru yapmak ve alıcı tarafta yankıyı temiz biçimde ayıklamaktır.

1. Hazır modülü anlamak: HC-SR04 nasıl çalışıyor?

Ev yapımı sisteme geçmeden önce, piyasadaki klasik ultrasonik modülü anlamak şart. HC-SR04 benzeri modüllerde dört temel pin bulunur: VCC, Trig, Echo ve GND. Tetik pinine kısa bir darbe verildiğinde modül yaklaşık 40 kHz civarında kısa bir ses paketi üretir. Bu ses bir nesneden geri döndüğünde modül Echo çıkışında mesafeyle ilişkili genişlikte bir darbe oluşturur.

HC-SR04 ultrasonik sensör modülü
Hazır modülün ön ve arka yapısı. Verici ve alıcı dönüştürücüler aynı kart üzerinde yer alır.
HC-SR04 test bağlantısı ve osiloskop gözlemi
Hazır modülün test düzeni. Osiloskopta gönderilen 40 kHz paket ile alınan yankının zaman farkı gözlenebilir.

Tetik ve yankı ilişkisi

Hazır modül davranışı kabaca şöyledir: Önce tetik darbesi alınır, çok kısa bir gecikmenin ardından 8 çevrimlik 40 kHz ultrasonik yayın yapılır. Ardından Echo pini aktif olur. Geri dönen ses algılandığında Echo pasif hale gelir. Böylece Echo pininde oluşan darbenin genişliği doğrudan mesafe bilgisini temsil eder.

Trigger TX RX Echo zaman diyagramı
Trigger, TX dalgası, RX dalgası ve Echo sinyalinin birbirine göre zaman ilişkisi.

2. Ev yapımı modül tasarımı

Bu projede amaç, hazır modülün mantığını sıfırdan kurmak. Bunun için iki ultrasonik dönüştürücü, bir işlemsel yükselteç katı, sürücü bölümü ve mikrodenetleyici kontrolü gerekir. Alıcı tarafta küçük yankı sinyalini yükseltmek, verici tarafta ise güçlü bir sürüş elde etmek kritik önemdedir.

Kullanılan yaklaşım

  • Bir dönüştürücü verici, diğeri alıcı olarak kullanılır.
  • Mikrodenetleyici tetik sinyalini alır ve vericiye 40 kHz’lik kısa bir paket uygular.
  • Alıcı tarafta op-amp katı yankıyı yükseltir.
  • Yeterli seviyeye ulaşan yankı, Echo mantığına dönüştürülür.
  • Sistemin amacı hazır sensör gibi davranan bir tetik ve yankı arayüzü oluşturmaktır.
Ev yapımı ultrasonik sensör şeması
Ev yapımı ultrasonik sensörün şematik yapısı. Alıcı tarafta yükseltme, verici tarafta daha güçlü sürüş hedeflenir.

Neden MAX232 kullanılıyor?

Bu tasarımın dikkat çeken noktalarından biri sürücü bölümünde MAX232 benzeri bir seviye dönüştürücü yaklaşımının kullanılmasıdır. Bunun nedeni, verici ultrasonik dönüştürücüye daha yüksek tepe-tepe gerilim uygulanarak menzilin artırılabilmesidir. Kısacası düşük seviyeli bir dijital işaret, sürücü katında daha etkili bir ultrasonik uyarıya dönüştürülür.

3. PCB yerleşimi ve fiziksel kurulum

Devre ekmek tahtasında doğrulandıktan sonra kalıcı karta taşınır. Verici ve alıcı birimlerin fiziksel ayrımı, istenmeyen doğrudan kuplajı azaltmak açısından faydalıdır. Ayrıca op-amp katında yer alan ayar potansiyometreleriyle eşik seviyeleri dikkatle ayarlanmalıdır. Amaç, alıcı tarafta sahte tetiklemeleri azaltırken gerçek yankıyı net biçimde algılamaktır.

Ev yapımı ultrasonik sensör PCB
Devrenin gerçek kart üzerindeki görünümü. Alıcı ve verici bölümleri ayrı konumlandırılmıştır.
Pratik not: Alıcı kazancı gereğinden fazla açılırsa ortam gürültüsü veya doğrudan kuplaj yanlış yankı gibi algılanabilir. Bu yüzden pot ayarı, projedeki en kritik kalibrasyon noktalarından biridir.

4. Yazılım mantığı

Kontrol yazılımı temelde dört işi yapar:

  • Tetik girişini izlemek
  • Kısa gecikmeden sonra 40 kHz burst üretmek
  • Echo çıkışını aktif hale getirmek
  • Yankı algılandığında Echo sinyalini sonlandırmak

Buradaki kritik detay, vericinin sürekli değil sadece kısa süreli bir paket üretmesidir. Böylece sistem hem hazır modüllere benzer davranır hem de mesafe hesabı için net bir zaman penceresi oluşturur.

Ölçüm sırası: 1) Trigger darbesi algılanır 2) Kısa bekleme uygulanır 3) 8 çevrim civarında 40 kHz burst üretilir 4) Echo çıkışı HIGH yapılır 5) Yankı algılanınca Echo LOW yapılır

Bu mantık, ikinci bir Arduino veya başka bir kontrol kartı tarafından standart ultrasonik sensör gibi okunabilecek bir arayüz üretir.

5. Test düzeni

Son aşamada ev yapımı modül, ikinci bir Arduino ile test edilir. Bu ikinci kart sadece tetik darbesi gönderir, Echo genişliğini ölçer ve sonucu ekranda gösterir. Böylece asıl modülün hazır bir ultrasonik sensör gibi çalışıp çalışmadığı kolayca doğrulanır.

LCD ile ultrasonik sensör test bağlantısı
İkinci Arduino ve I2C LCD ile yapılan test bağlantısı. Echo darbe süresi ölçülerek mesafe hesaplanır.

Testte kullanılan hesap

duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2;

Burada pulseIn() Echo pininin HIGH kaldığı süreyi mikrosaniye cinsinden verir. Bu değer sesin toplam gidiş-dönüş süresidir. O yüzden sonuç yine ikiye bölünür.

Sonuç

Bu proje, ultrasonik mesafe sensörlerinin çalışma prensibini yalnızca kullanmakla kalmayıp gerçekten anlamak isteyenler için çok öğretici bir örnektir. Hazır modülün iç mantığını söküp kendi verici, alıcı ve işleme katınızı kurduğunuzda hem analog tarafta hem de zamanlama tarafında ciddi bir deneyim kazanırsınız.

Hazır modül kullanmak hızlıdır. Ama işin özünü öğrenmek istiyorsanız, bu tarz bir devre sizi doğrudan sinyal işleme, yükseltme, eşikleme ve zaman tabanlı ölçüm mantığının içine sokar.

''' path = Path('/mnt/data/electronoobs_ultrasonik_mesafe_sensoru_tr.html') path.write_text(html, encoding='utf-8') print(f"Yazıldı: {path}")