HC-SR04: ultrasonik sensör hakkında her şey

HC-SR04 Sensör

Bazen gerekli Mesafeleri ölçün ve bunun için emrinizde birkaç sensör var. Zaten bir makale hakkında konuşmak için bir makale ayırdık. VL52L0X gibi yüksek hassasiyetli mesafe sensörü. Bu sensör ToF tipindeydi ve lazeri sayesinde çok hassas ölçümlere dayanıyordu. Ancak hassasiyet sizin için o kadar önemli değilse ve mesafeleri düşük bir fiyata ölçmenize olanak tanıyan bir şey istiyorsanız, parmaklarınızın ucunda HC-SR04 var.

Söz konusu HC-SR04 mesafe sensörü, mesafe ultrason ile ölçülür. Sistem, VL52L0X'in optik yöntemine benzer. Yani yayılır, sıçrama olur ve alınır ancak bu durumda lazer veya IR olmak yerine ultrasondur. Elektronik, robotik veya amatör yapımcı konusunda tutkuluysanız, robotlar için engel algılama sistemleri, varlık sensörleri vb. Gibi çok sayıda DIY projesi için kullanabilirsiniz.

HC-SR04 nedir?

Önceki paragraflarda daha önce yorum yaptığım gibi, bu çok açık. HC-SR04, ultrasona dayalı düşük hassasiyetli bir mesafe sensörüdür. Prensip olarak genellikle bunun için kullanılmasa da, mesafeleri basit ve hızlı bir şekilde ölçmeye olanak tanır. Çoğu zaman, sensörün tepkisi ile ilişkili diğer mekanizmalar yoluyla engelleri tespit etmek ve bunlardan kaçınmak için bir dönüştürücü olarak kullanılır.

Görünüşü HC-SR04 çok ayırt edici ve kolayca tanınabilir. Ek olarak, Arduino başlangıç ​​kitlerinde oldukça popüler bir üründür ve çok sayıda proje için gereklidir. Bu modülün entegre ettiği ultrason cihazları olan iki "göze" sahip olduğu için kolayca tanımlanabilir. Bunlardan biri ultrason yayıcı, diğeri ise alıcıdır. 40 Khz frekansında çalışır, bu nedenle insanlar tarafından duyulamaz.

Ultrasonik sensörün prensipleri

Başlangıç Derinliğini ölçmek için bir kuyuya bir taş attığınızda kullanılan simülasyona dayanmaktadır.. Taşı atarsınız ve dibe düşmesi ne kadar sürer. Sonra geçen süre için hız hesaplamaları yaparsınız ve taşın kat ettiği mesafeyi elde edersiniz. Ama bu durumda sensör sizsiniz.

ESP8266
İlgili makale:
ESP8266: Arduino için WIFI modülü

HC-SR04'te, verici ultrason yayar ve alıcı tarafından yakalanacakları şekilde bir nesneden veya engelden sıçradığında. The devre gerekli hesaplamaları yapacak mesafeyi belirlemek için bu yankının Yunuslar, balinalar veya yarasalar gibi bazı hayvanların engelleri, avları vb. Bulmak için kullandıkları sistemi biliyorsanız, bu size tanıdık gelebilir.

Darbenin gönderilmesinden bu yana yanıt alınana kadar geçen süreyi sayarak, zaman ve dolayısıyla mesafe doğru bir şekilde belirlenebilir. Bunu hatırla [Uzay = hız süresi] ancak HC-SR04 söz konusu olduğunda, bu miktarı / 2'ye bölmelisiniz, çünkü ultrasonun çıkıp uzayda seyahat ettiği zamandan engele çarpana ve geri dönüş yoluna kadar geçen süre ölçülmüştür, bu nedenle yaklaşık olarak olacaktır. bunun yarısı ...

Pinout ve veri sayfaları

Elde ettiğiniz modelin tüm verilerini görmek için en iyi şeyin veri sayfasını bul üreticinin betonu. Örneğin, burada bir Sparkfun veri sayfası, ancak PDF'de çok daha fazlası var. Ancak, HC-SR04'ün en önemli teknik verileri şunlardır:

  • Elektriksel bağlantı: Güç (Vcc), tetik (Tetik), alıcı (Echo) ve toprak (GND) için 4 pim. Tetik, sensörün ne zaman etkinleştirilmesi gerektiğini (ultrason başlatıldığında) gösterir ve böylece alıcı sinyali aldığında geçen süreyi bilmek mümkün olacaktır.
  • besleme: 5 V
  • Ultrason frekansı: 40 Khz, insan kulağı yalnızca 20Hz ile 20Khz arasında işitebilir. 20Hz'nin (infrasound) altındaki ve 20Khz'nin (ultrason) üzerindeki her şey algılanmayacaktır.
  • Tüketim (bekleme): <2mA
  • Tüketim çalışıyor: 15mA
  • Etkili açı: <15º, nesnelerin açılarına bağlı olarak daha iyi veya daha kötü sonuçlar elde edebilirsiniz.
  • Ölçülen mesafe: 2 cm'den 400 cm'ye kadar, 250 cm'den itibaren çözünürlük çok iyi olmayacak.
  • Orta çözünürlük: Gerçek mesafe ile ölçüm arasında 0.3 cm'lik fark, bu nedenle lazer gibi yüksek doğrulukta kabul edilmese de, ölçümler çoğu uygulama için oldukça kabul edilebilir.
  • fiyat: yaklaşık 0,65 € 'dan başlayan fiyatlarla

Arduino ile entegrasyon

Arduino ile HC-SR04

Daha Arduino ya bağlamak daha kolay olamazdı. GND'yi, Arduino 5v güç kaynağı ile Vcc ve projeniz için seçilen giriş / çıkışlarla HC-SR04'ün diğer iki pini gibi işaretlenmiş Arduino'nuzun ilgili çıkışına bağlamaktan sorumlu olmanız gerekir. Üst Fritzing şemasında bunun basit olduğunu görebilirsiniz ...

Tek bir düşünceniz olmalı, kaplanın düzgün bir şekilde etkinleşmesi için en az 10 mikrosaniyelik bir elektrik darbesi alması gerekir. Önceden, DÜŞÜK değerde olduğundan emin olmalısınız.

Gelince Arduino IDE için kod, başka bileşenlerle herhangi bir kitaplık veya benzeri bir şey kullanmak zorunda değilsiniz. Sadece mesafeyi hesaplamak için bir formül hazırlayın ve çok az şey yapın ... Elbette, projenizin HC-SR04 sensörünün ölçümüne yanıt olarak bir şeyler yapmasını istiyorsanız, ihtiyacınız olan kodu eklemeniz gerekecektir. Örneğin, konsolda basitçe ölçümleri görüntülemek yerine, servo motorların engelden kaçınmak için belirli mesafeler boyunca bir yönde veya başka yönde hareket etmesini veya bir motorun durması, yakınlık algıladığında etkinleştirilmesi vb. .

 Programlama hakkında daha fazla bilgi: Arduino Kılavuzu (Ücretsiz PDF)

Örneğin, bunu görebilirsiniz temel olarak kullanılacak temel kod:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


Bir yorum bırak seninkini

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Jose dijo

    Açıklamayı çok faydalı ve basit buldum.