Bu yazımızda HC-SR04 ultrasonik telemetre-sonarı Arduino'ya bağlayacağız.
Gerekli
- -Arduino;
- - ultrasonik sensör HC-SR04;
- - bağlantı kabloları.
Talimatlar
Aşama 1
HC-SR04 ultrasonik telemetrenin hareketi ekolokasyon ilkesine dayanmaktadır. Uzaya ses darbeleri yayar ve bir engelden yansıyan bir sinyal alır. Nesneye olan mesafe, ses dalgasının engele ve geriye doğru yayılma süresi ile belirlenir.
Ses dalgası, telemetrenin TRIG ayağına en az 10 mikrosaniyelik bir pozitif darbe uygulanarak tetiklenir. Darbe biter bitmez, telemetre önündeki boşluğa 40 kHz frekanslı bir ses darbesi patlaması yayar. Aynı zamanda, yansıyan sinyalin gecikme süresini belirleme algoritması başlatılır ve telemetrenin ECHO ayağında mantıksal bir birim belirir. Sensör yansıyan sinyali algılar algılamaz, ECHO pininde bir mantık sıfırı belirir. Bu sinyalin süresi (şekilde "Eko gecikmesi") nesneye olan mesafeyi belirler.
HC-SR04 telemetrenin mesafe ölçüm aralığı - 0,3 cm çözünürlükle 4 metreye kadar Gözlem açısı - 30 derece, etkili açı - 15 derece. Bekleme modunda akım tüketimi, çalışma sırasında 2 mA - 15 mA.
Adım 2
Ultrasonik telemetrenin güç kaynağı +5 V voltaj ile gerçekleştirilir. Diğer iki pin Arduino'nun herhangi bir dijital portuna bağlanır, 11 ve 12'ye bağlayacağız.
Aşama 3
Şimdi engele olan mesafeyi belirleyen ve seri porta çıktısını veren bir kroki yazalım. İlk olarak, TRIG ve ECHO pinlerinin numaralarını belirledik - bunlar pin 12 ve 11'dir. Ardından tetikleyiciyi çıktı olarak ve yankıyı girdi olarak bildiririz. Seri bağlantı noktasını 9600 baud'da başlatıyoruz. Döngünün her tekrarında (), mesafeyi okur ve porta göndeririz.
getEchoTiming () işlevi, bir tetik darbesi üretir. Sadece, bir ses paketinin telemetre tarafından uzaya radyasyonun başlaması için bir tetikleyici olan 10 mikrosaniyelik bir darbe akımı yaratır. Sonra ses dalgasının iletiminin başlangıcından yankının gelişine kadar geçen süreyi hatırlar.
getDistance () işlevi, nesneye olan mesafeyi hesaplar. Okulun fizik dersinden, mesafenin zamanla çarpılan hıza eşit olduğunu hatırlıyoruz: S = V * t. Sesin havadaki hızı 340 m/s'dir, mikrosaniye cinsinden bildiğimiz süre "duratuion"dur. Zamanı saniye cinsinden almak için 1.000.000'a bölün. Ses, nesneye ve geriye doğru iki kat mesafe kat ettiğinden, mesafeyi ikiye bölmeniz gerekir. Böylece eskizde yazdığımız S = 34000 cm / sn * süre / 1.000.000 sn / 2 = 1.7 cm / sn / 100 cisme olan uzaklığı ortaya çıkıyor. Mikrodenetleyici çarpma işlemini bölmeden daha hızlı gerçekleştirir, bu yüzden "/ 100" yerine "* 0, 01" eşdeğerini koydum.
4. Adım
Ayrıca, bir ultrasonik telemetre ile çalışmak üzere birçok kitaplık yazılmıştır. Örneğin, bu: https://robocraft.ru/files/sensors/Ultrasonic/HC-SR04/ultrasonic-HC-SR04.zip. Kütüphane standart bir şekilde kurulur: indirin, Arduino IDE'nin bulunduğu klasörde bulunan kütüphaneler dizinine açın. Bundan sonra kütüphane kullanılabilir.
Kütüphaneyi kurduktan sonra yeni bir eskiz yazalım. Çalışmasının sonucu aynı - seri bağlantı noktası monitörü nesneye olan mesafeyi santimetre olarak gösteriyor. Çizimde float dist_cm = ultrasonic. Ranging (INC) yazarsanız, mesafe inç olarak görüntülenecektir.
Adım 5
Böylece, HC-SR04 ultrasonik telemetreyi Arduino'ya bağladık ve ondan iki farklı şekilde veri aldık: özel bir kütüphane kullanarak ve olmadan.
Kütüphaneyi kullanmanın avantajı, kod miktarının önemli ölçüde azalması ve programın okunabilirliğinin iyileştirilmesi, cihazın inceliklerini araştırmak zorunda kalmamanız ve hemen kullanabilirsiniz. Ancak bu aynı zamanda dezavantajdır: cihazın nasıl çalıştığını ve içinde hangi işlemlerin gerçekleştiğini daha az anlıyorsunuz. Her durumda, hangi yöntemi kullanacağınız size kalmış.