HC-SR04 Ultrasonik Sensör Nasıl Çalışır ve Arduino
Bir sonraki Arduino projenize, 13 fit (1fit = 0,3048metre) uzaklığa kadar olan nesnelerin menzilini bildirebilen bir HC-SR04 Ultrasonik Mesafe Sensörü ile bat güçleri verin. Robotunuzun duvara çarpmasını önlemeye çalışıyorsanız, bu gerçekten iyi bir bilgidir! Düşük güç tüketirler (pille çalışan cihazlar için uygundurlar), ucuzdurlar, arayüz oluşturmaları kolaydır ve hobiler arasında çılgınca popülerdirler. Ve bir bonus olarak, en son robotik icatınız için bir çift Wall-E Robot gözü gibi havalı görünüyor!
Ultrason nedir?
Ultrason, insan işitme duyusunun duyulabilir sınırından daha yüksek frekanslara sahip yüksek perdeli ses dalgalarıdır.
İnsan kulakları, saniyede yaklaşık 20 kez (derin bir gürleme sesi) saniyede yaklaşık 20.000 kez (tiz bir ıslık) arasında titreşen ses dalgalarını duyabilir. Bununla birlikte, ultrasonun 20.000 Hz'nin üzerinde bir frekansı vardır ve bu nedenle insanlar tarafından duyulamaz.
HC-SR04 Ultrasonik mesafe sensörü özünde iki ultrasonik dönüştürücüden oluşur . Biri, elektrik sinyalini 40 KHz ultrasonik ses darbelerine dönüştüren bir verici görevi görür. Alıcı, iletilen darbeleri dinler. Bunları alırsa, darbenin kat ettiği mesafeyi belirlemek için genişliği kullanılabilen bir çıkış darbesi üretir. Turta kadar basit!
Sensör küçüktür, herhangi bir robotik projede kullanımı kolaydır ve 3 mm hassasiyetle 2 cm ila 400 cm (yaklaşık bir inç ila 13 fit) arasında mükemmel temassız mesafe algılama sunar. 5 voltta çalıştığı için, doğrudan bir Arduino ya veya diğer 5V mantık mikrodenetleyicilere bağlanabilir.
Özellikleri :
HC-SR04 Ultrasonik Sensör Pin Çıkışı
Pinout'a bir göz atalım.
VCC Arduino üzerindeki 5V pinini bağladığımız HC-SR04 Ultrasonik mesafe sensörü için güç kaynağıdır.
Trig (Tetikleyici) pim, ultrasonik ses darbelerini tetiklemek için kullanılır.
Echopim, yansıyan sinyal alındığında bir darbe üretir. Darbenin uzunluğu, iletilen sinyalin tespit edilmesi için geçen süre ile orantılıdır.
GND Arduino'nun zeminine bağlanmalıdır.
HC-SR04 Ultrasonik Mesafe Sensörü Nasıl Çalışır?
Tetik pimine en az 10 µS (10 mikrosaniye) süreli bir darbe uygulandığında her şey başlar. Buna yanıt olarak sensör, 40 KHz'de sekiz darbeli bir ses patlaması iletir. Bu 8 darbeli model, cihazın "ultrasonik imzasını" benzersiz kılarak, alıcının iletilen modeli ortamdaki ultrasonik gürültüden ayırt etmesine olanak tanır.
Sekiz ultrasonik darbe, vericiden uzakta havada ilerler. Bu arada Yankı pimi, yankı geri sinyalinin başlangıcını oluşturmaya başlamak için YÜKSEK olur.Bu darbeler geri yansıtılmazsa, Yankı sinyali 38 mS (38 milisaniye) sonra zaman aşımına uğrayacak ve düşük seviyeye dönecektir. Bu nedenle 38 mS'lik bir darbe, sensörün menzili içinde hiçbir engel olmadığını gösterir.
Bu darbeler geri yansıtılırsa, sinyal alınır alınmaz Yankı pimi düşer. Bu, sinyalin alınması için geçen süreye bağlı olarak genişliği 150 µS ile 25 mS arasında değişen bir darbe üretir.
Alınan darbenin genişliği daha sonra yansıtılan nesneye olan mesafeyi hesaplamak için kullanılır. Bu basit mesafe-hız-zaman denklemi kullanılarak çözülebilir, lisede öğrendik. Unutursanız, mesafe, hız ve zaman denklemlerini hatırlamanın kolay bir yolu harfleri bir üçgene koymaktır.
Daha net hale getirmek için bir örnek alalım. Sensörün önünde bilinmeyen bir mesafede bir nesnemiz olduğunu ve Yankı pini üzerinde 500 µS genişliğinde bir darbe aldığımızı varsayalım. Şimdi nesnenin sensörden ne kadar uzakta olduğunu hesaplayalım. Aşağıdaki denklemi kullanacağız.
Mesafe = Hız x Zaman
Burada Zamanın değeri yani 500 µs var ve hızı biliyoruz. Ne hızımız var? Tabii ki ses hızı! 340 m / s. Mesafeyi hesaplamak için ses hızını cm / µs'ye çevirmeliyiz. "Mikrosaniye başına santimetre cinsinden ses hızı" için hızlı bir Google araması, bunun 0,034 cm / µs olduğunu söyleyecektir. Matematiği yapabilirsin, ama aramak daha kolay. Her neyse, bu bilgilerle mesafeyi hesaplayabiliriz!
Mesafe = 0,034 cm / µs x 500 µs
Ama bu yapılmadı! Nabzın, sinyalin gönderilmesi ve geri yansıtılması için geçen süreyi gösterdiğini unutmayın, böylece mesafeyi elde etmek için sonucunuzu ikiye bölmeniz gerekir.
Mesafe = (0,034 cm / µs x 500 µs) / 2
Mesafe = 8.5 cm
Artık nesnenin sensörden 8,5 santimetre uzakta olduğunu biliyoruz .
Artık HC-SR04 ultrasonik mesafe sensörünün nasıl çalıştığını tam olarak anladığımıza göre, onu Arduino'muza bağlamaya başlayabiliriz!
HC-SR04'ü Arduino'ya bağlamak oldukça kolaydır. Sensörü devre tahtanıza yerleştirerek başlayın. VCC pinini Arduino'daki 5V pinine bağlayın ve GND pinini Arduino'daki Ground pinine bağlayın.İşiniz bittiğinde, aşağıda gösterilen resme benzer bir şeye sahip olmalısınız.
Artık ultrasonik mesafe sensörümüzü bağladığımıza göre, bir kod yazma ve test etme zamanı.
Arduino Kodu - NewPing Kitaplığını Kullanma
Ultrasonik sensörü tetiklemek ve alınan sinyal darbe genişliğini manuel olarak ölçmek yerine özel bir kitaplık kullanacağız. Bunlardan epeyce mevcut, en çok yönlü olanı “ NewPing ” denen olandır .
Önce Bitbucket deposunu ziyaret ederek kitaplığı indirin veya zip dosyasını indirmek için bu düğmeyi tıklayın:
Kurmak için Arduino IDE'yi açın, Sketch> Include Library> Add .ZIP Library'ye gidin ve ardından indirdiğiniz NewPing ZIP dosyasını seçin. Bir kitaplık kurma konusunda daha fazla ayrıntıya ihtiyacınız varsa, bu Arduino Kitaplığı Kurma öğreticisini ziyaret edin.
NewPing kitaplığı oldukça gelişmiştir ve orijinal eskizimizin doğruluğunu önemli ölçüde geliştirmiştir. Aynı anda 15 ultrasonik sensöre kadar destekler ve doğrudan santimetre, inç veya zaman süresi cinsinden çıktı verebilir.
NewPing kitaplığını kullanmak için yeniden yazdığımız eskiz:
Yukarıdaki taslak basit ve iyi çalışıyor, ancak yalnızca bir santimetreye kadar bir çözünürlüğe sahip. Ondalık sayı değerlerini geri getirmek istiyorsanız, NewPing'i mesafe modu yerine süre modunda kullanabilirsiniz. Bu satırı değiştirmeniz gerekiyor
aşağıdaki çizgilerle
HC-SR04'ünüzün doğruluğunu bir sonraki seviyeye çıkarmak için, NewPing kitaplığında “yinelemeler” adı verilen başka bir işlev vardır. Yinelemek, bir şeyi birden fazla kez gözden geçirmek demektir ve yineleme modunun yaptığı da tam olarak budur. Tek bir yerine birçok süre ölçümü alır, geçersiz okumaları atar ve sonra kalanların ortalamasını alır. Varsayılan olarak 5 okuma alır, ancak gerçekte istediğiniz kadarını belirtebilirsiniz.
Temassız Mesafe Bulucu
Basit bir ultrasonik sensörün Gelişmiş Temassız Mesafe Bulucuya nasıl dönüştürülebileceğini göstermek için hızlı bir proje oluşturalım . Bu projede, nesneye olan mesafeyi alt satırdaki değerle grafik olarak temsil etmek üzere yatay bir çubuk görüntülemek için 16 × 2 Karakter LCD kullanacağız.
Daha sonra, aşağıda gösterildiği gibi LCD'ye bağlantı yapmamız gerekiyor.
Arduino Playground'u ziyaret ederek önce kitaplığı indirin.
Kitaplığı kurduktan sonra aşağıdaki taslağı deneyin.
Çıktı böyle görünüyor.
Kod Açıklaması:
Öncelikle LiquidCrystal kitaplığını her zamanki gibi kurmanız gerekir. Bundan sonra, yeni oluşturulmuş LiquidCrystal örneğiyle LcdBarGraph örneği oluşturabilirsiniz. LiquidCrystal'ın referansını LcdBarGraph'ın yapıcısına iletmelisiniz.
LcdBarGraph'ın kurucusu üç parametre daha alır. İkincisi, LCD'deki karakter sütunlarının sayısıdır (Bizim durumumuzda bu 16'dır). Son iki parametre isteğe bağlıdır ve çubuğun özel konumlandırılmasına izin verir.
Şimdi sensörden mesafeyi hesapladığımızda , bar grafiğini görüntülemek için drawValue (değer, maxValue) fonksiyonunu kullanabiliriz. Bu, 0 ile maxValue arasında bir değere sahip bir çubuk grafik çizer.
HC-SR04'ü 3 Hatlı Mod ile Arabirim
3-Wire Mode, iki yerine tek bir Arduino dijital I / O pinine tek bir bağlantıya ihtiyaç duyduğunuz bir şeydir. Bilmiyorsanız, harika paralaks ping))) sensör gibi yalnızca 3-Kablolu Modda çalışan birçok ultrasonik sensör vardır .
3-Kablolu modda tek I / O pini hem giriş hem de çıkış olarak kullanılır. Bu mümkündür çünkü hem giriş hem de çıkışın kullanıldığı bir zaman asla yoktur. Bir I / O pin gereksinimini ortadan kaldırarak, Arduino'muza bir bağlantı kaydedebilir ve başka bir şey için kullanabiliriz. Sınırlı sayıda I / O pinine sahip olan ATtiny85 gibi bir yonga kullanıldığında da yararlıdır.HC-SR04 sensörünü 3-Wire modunu kullanarak Arduino'ya nasıl bağlayabileceğiniz aşağıda açıklanmıştır.
Gördüğünüz gibi tek yapmanız gereken tetik ve ekoyu Arduino pin 9'a bağlamak. Çizimde yapmanız gereken tek farkın hem Tetik hem de Echo pin değerleri için pin 9'u tanımlamak olduğunu unutmayın. Eskizin geri kalanı aynı.
Doğruluk ve genel kullanışlılık açısından, HC-SR04 ultrasonik mesafe sensörü, özellikle diğer düşük maliyetli mesafe algılama sensörleriyle karşılaştırıldığında gerçekten harika. Bu, HC-SR04 sensörünün "her şeyi" ölçebildiği anlamına gelmez. Aşağıdaki şemalar, HC-SR04'ün ölçmek için tasarlanmadığı birkaç durumu gösterir:
a) Sensör ile nesne / engel arasındaki mesafe 13 fitten fazla.
b) Nesnenin yansıtıcı yüzeyi sığ bir açıyla vardır, böylece ses sensöre doğru geri yansımaz.
c) Nesne, sensöre yeterince ses yansıtamayacak kadar küçük. Ek olarak, HC-SR04 sensörünüz cihazınızın altına monte edilmişse, zeminden yansıyan sesi algılayabilirsiniz.
d) Sensörle deney yaparken, yumuşak, düzensiz yüzeylere sahip bazı nesnelerin (doldurulmuş hayvanlar gibi) sesi yansıtmak yerine emdiğini ve bu nedenle HC-SR04 sensörünün algılamasının zor olabileceğini keşfettik.
Sıcaklığın Mesafe Ölçümüne Etkisi
HC-SR04, izinsiz giriş algılama veya yakınlık alarmları gibi projelerimizin çoğu için makul ölçüde doğru olsa da; Ancak, dışarıda veya alışılmadık derecede sıcak veya soğuk bir ortamda kullanılacak bir cihaz tasarlamak isteyebileceğiniz zamanlar vardır. Durum buysa, havadaki ses hızının sıcaklık, hava basıncı ve neme göre değiştiğini hesaba katmak isteyebilirsiniz.
Ses faktörlerinin hızı HC-SR04 mesafe hesaplamamıza girdiğinden, bu bizim okumalarımızı etkileyebilir. Sıcaklık (° C) ve Nem zaten biliniyorsa, aşağıdaki formülü göz önünde bulundurun:
Ses hızı m / s = 331.4 + (0.606 * Sıcaklık) + (0.0124 * Nem)
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.