HC-SR04: wszystko o czujniku ultradźwiękowym

Czujnik HC-SR04

Czasami jest to konieczne Zmierz odległości a do tego masz do dyspozycji kilka czujników. Poświęciliśmy już artykuł, aby porozmawiać o bardzo precyzyjny czujnik odległości, taki jak VL52L0X. Czujnik ten był typu ToF i został oparty na bardzo precyzyjnych pomiarach dzięki laserowi. Ale jeśli precyzja nie jest dla Ciebie tak ważna i chcesz czegoś, co pozwala mierzyć odległości po niskiej cenie, inna możliwość, że masz na wyciągnięcie ręki to HC-SR04.

W przypadku Czujnik odległości HC-SR04, odległość mierzona jest za pomocą ultradźwięków. System jest podobny do metody optycznej VL52L0X. Oznacza to, że jest emitowany, następuje odbicie i jest odbierany, ale w tym przypadku zamiast być laserem lub podczerwienią, jest to ultradźwięki. Jeśli pasjonujesz się elektroniką, robotyką lub twórcą amatorskim, możesz go wykorzystać do wielu projektów DIY, takich jak systemy wykrywania przeszkód dla robotów, czujniki obecności itp.

Co to jest HC-SR04?

Cóż, to oczywiste, jak już skomentowałem w poprzednich akapitach, HC-SR04 to niskoprecyzyjny czujnik odległości oparty na ultradźwiękach. Dzięki niemu pozwala w prosty i szybki sposób mierzyć odległości, choć w zasadzie zwykle nie jest do tego używany. Najczęściej służy jako przetwornik do wykrywania przeszkód i omijania ich poprzez inne mechanizmy związane z odpowiedzią czujnika.

Wygląd HC-SR04 jest bardzo charakterystyczny i łatwo rozpoznawalny. Ponadto jest to bardzo popularna pozycja w zestawach startowych Arduino i niezbędna w wielu projektach. Można go łatwo zidentyfikować, ponieważ ma dwoje „oczu”, które w rzeczywistości są urządzeniami ultradźwiękowymi, które integruje ten moduł. Jeden z nich to nadajnik ultradźwięków, a drugi odbiornik. Pracuje z częstotliwością 40 kHz, dlatego jest niesłyszalny dla ludzi.

Zasady czujnika ultradźwiękowego

Zasada, w której Opiera się na symulacji tego używanego podczas wrzucania kamienia do studni w celu zmierzenia jej głębokości. Rzucasz kamieniem i ile czasu zajmuje opadnięcie na dno. Następnie obliczasz prędkość dla upływającego czasu i uzyskujesz odległość, jaką przebył kamień. Ale w takim przypadku czujnik to ty.

Podobne artykuł:
ESP8266: moduł WIFI dla Arduino

W HC-SR04 emiter będzie emitował ultradźwięki, a gdy odbiją się od obiektu lub przeszkody na drodze, zostaną przechwycone przez odbiornik. Plik obwód wykona niezbędne obliczenia tego echa, aby określić odległość. Może to być również znane, jeśli znasz system, którego niektóre zwierzęta, takie jak delfiny, wieloryby lub nietoperze, używają do lokalizowania przeszkód, zdobyczy itp.

Licząc czas od wysłania impulsu do odebrania odpowiedzi, można dokładnie określić czas, a tym samym odległość. Zapamietaj to [Przestrzeń = prędkość czas] ale w przypadku HC-SR04 trzeba tę ilość podzielić przez / 2, ponieważ czas został zmierzony od chwili, gdy ultradźwięki wyjdą i podróżują w kosmosie, aż uderzą w przeszkodę i drogę powrotną, więc będzie to w przybliżeniu połowa tego ...

Pinout i arkusze danych

Wiesz już, że najlepsze jest, aby zobaczyć pełne dane pozyskanego modelu znajdź arkusz danych beton producenta. Na przykład tutaj jest Arkusz danych Sparkfun, ale jest o wiele więcej dostępnych w formacie PDF. Oto jednak najważniejsze dane techniczne HC-SR04:

  • Wyprowadzenia: 4 piny do zasilania (Vcc), wyzwalacza (wyzwalacz), odbiornika (echo) i masy (GND). Wyzwalacz wskazuje, kiedy czujnik powinien zostać aktywowany (kiedy uruchomione zostanie ultradźwięki), dzięki czemu będzie można poznać czas, jaki upłynął, gdy odbiornik otrzyma sygnał.
  • karmienie: 5 V.
  • Częstotliwość ultradźwięków: 40 kHz, ludzkie ucho słyszy tylko od 20 Hz do 20 kHz. Wszystko poniżej 20 Hz (infradźwięki) i powyżej 20 kHz (ultradźwięki) nie będzie zauważalne.
  • Zużycie (czuwanie): <2mA
  • Konsumpcja działa: 15 mA
  • Efektywny kąt: <15º, w zależności od kątów nachylenia obiektów można uzyskać lepsze lub gorsze wyniki.
  • Zmierzona odległość: od 2 cm do 400 cm, chociaż od 250 cm rozdzielczość nie będzie zbyt dobra.
  • Średnia rozdzielczość: Różnica 0.3 cm między rzeczywistą odległością a pomiarem, więc pomimo tego, że nie jest uważana za bardzo dokładną, jak laser, pomiary są całkiem akceptowalne w większości zastosowań.
  • cena: od około 0,65 €

Integracja z Arduino

HC-SR04 z Arduino

do podłączenie go do Arduino nie może być prostsze. Musisz tylko odpowiadać za podłączenie GND do odpowiedniego wyjścia twojego Arduino oznaczonego jako takie, Vcc z zasilaczem Arduino 5v i pozostałe dwa piny HC-SR04 z wejściami / wyjściami wybranymi dla twojego projektu. Widać, że w górnym schemacie Fritzing jest to proste ...

Wystarczy wziąć pod uwagę, że tygrysek musi otrzymać impuls elektryczny o długości co najmniej 10 mikrosekund, aby mógł się prawidłowo aktywować. Wcześniej musisz upewnić się, że ma wartość NISKĄ.

Jeśli chodzi kod dla Arduino IDE, nie musisz używać żadnej biblioteki ani niczego podobnego z innymi komponentami. Po prostu utwórz wzór na obliczenie odległości i nic więcej ... Oczywiście, jeśli chcesz, aby Twój projekt zrobił coś w odpowiedzi na pomiar czujnika HC-SR04, będziesz musiał dodać potrzebny kod. Na przykład, zamiast po prostu wyświetlać pomiary na konsoli, możesz sprawić, by serwomotory poruszały się w jednym lub drugim kierunku na określone odległości, aby ominąć przeszkodę lub aby silnik się zatrzymał, alarm był aktywowany po wykryciu bliskości itp. .

 Więcej informacji o programowaniu: Podręcznik Arduino (bezpłatny PDF)

Na przykład możesz to zobaczyć podstawowy kod do wykorzystania jako podstawa:

//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;
}

 


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

Komentarz, zostaw swój

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Jose powiedział

    Wyjaśnienie okazało się bardzo przydatne i proste.