Ultradźwiękowy czujnik odległości HC-SR04 2-200cm – Szczegóły na temat produktu i przykłady zastosowań

Czas czytania: 4 min.

HC-SR04 – ultradźwiękowy czujnik odległości, który umożliwia wykonywanie pomiaru odległości od obiektu poprzez wysyłanie i odbieranie fali ultradźwiękowej. To znakomity moduł do zastosowania w robotach jeżdżących – dzięki takiemu czujnikowi przeszkody na torze jazdy zostają odpowiednio szybko wykryte, aby robot zdążył je bezpiecznie ominąć. 

Czujnik ultradźwiękowy – zasada działania. Przetwornik ultradźwiękowy emituje określoną liczbę fal dźwiękowych, które są odbijane przez wykrywany obiekt. Po emisji impulsów czujnik przełącza się w tryb odbioru. Czas do pojawienia się echa jest proporcjonalny do odległości obiektu od przetwornika.
Ultrasonic distance sensor HC-SR04 2-200cm + mounting bracket
Ultradźwiękowy czujnik odległości HC-SR04 2-200cm z uchwytem montażowym.

Konstrukcja czujnika składa się ze sparowanych ze sobą elementów głównych – nadajnika i odbiornika, a także układu sterowania i generatora sygnału pomiarowego. Nadajnik wysyła sygnał ultradźwiękowy, który zostaje odbity od obiektu, względem którego jest mierzona odległość, a fala ultradźwiękowa powraca do odbiornika i podlega procesowi przetwarzania w celu obliczenia różnicy czasu, który mija od chwili wysłania sygnału pomiarowego, do chwili jego odebrania. Sygnał wyjściowy z czujnika może być przekazany do dalszego przetwarzania przez zewnętrzny mikrokontroler współpracujący w celu obliczenia odległości czujnika względem pobliskiego obiektu. HR-SR04 jest niedrogim czujnikiem, a przy tym odznacza się bardzo dobrą dokładnością pomiaru na poziomie ±0,3 cm. Czujnik może współpracować zarówno z płytkami Arduino, jak i Raspberry Pi, przy czym podłączając czujnik HC-SR04 do Raspberry Pi, należy skorzystać z konwertera poziomów logicznych, który obniża napięcie 5,0V z czujnika na poziom 3,3V, zgodny z wyprowadzeniami GPIO w Raspberry Pi.

Budowa i zasada działania ultradźwiękowego czujnika odległości

Moduł czujnika HC-SR04 ma cztery wyprowadzenia:

  • “Vcc” – wejście napięcia zasilającego 5V
  • “Trig” – wejście sygnału wyzwalającego cykl pomiarowy
  • “Echo” – wyjście sygnału odwzorowującego czas przemieszczania się fali ultradźwiękowej
  • “Gnd” – masa zasilania

Wyprowadzenia “Vcc” i “Gnd” muszą być podłączone do pinów zasilania napięciem 5V (“VCC”) i masy (“GND”) w Arduino, a wyprowadzenia “Trig” i “Echo” należy podłączyć do osobnych wyprowadzeń dwustanowych. Po podaniu na wejście “Trig” sygnału stanu wysokiego o czasie trwania wynoszącym 10µs wbudowany generator podaje na nadajnik czujnika sygnał ultradźwiękowy o częstotliwości 40kHz przez czas 200µs. Po zakończeniu wysyłania tego sygnału pin “Echo” zostaje przerzucony w stan wysoki i rozpoczyna się pomiar. Wyemitowana fala ultradźwiękowa jest wysyłana w powietrze i gdy napotka na drodze przeszkodę, zostaje odbita w stronę odbiornika wbudowanego w module czujnika. Zmierzony czas trwania stanu wysokiego na pinie “Echo” jest proporcjonalny do odległości czujnika od przeszkody. Cały cykl pomiarowy obrazują oscylogramy przedstawione na rys. 1.

Rys 1 – relacja między przebiegami czasowymi sygnałów czujnika HC-SR04

Aby obliczyć odległość pokonaną przez falę ultradźwiękową, trzeba wiedzieć, że prędkość dźwięku w powietrzu wynosi ok. 340 m/s, przy czym do naszych obliczeń użyjemy przeliczenia na 0,034cm/µs. Przykładowo, gdy przeszkoda jest umieszczona 10 cm od czujnika, wówczas czas trwania cyklu pomiarowego będzie trwał ok. 592µs. Czas zmierzony przez czujnik obejmuje wysłanie fali ultradźwiękowej oraz jej powrót do źródła, a więc dwukrotną odległość czujnika od punktu odbicia fali ultradźwiękowej. Z tego względu otrzymany wynik pomiaru należy podzielić przez 2. Obliczeń należy dokonać zgodnie z zależnościami (1.1) i (1.2).

Specyfikacja techniczna ultradźwiękowego czujnika odległości HC-SR04

  • Napięcie zasilania: 5V
  • Maksymalny pobór prądu: 20mA
  • Poziom logiczny stanu wysokiego: 5V
  • Poziom logiczny stanu niskiego: 0V
  • Zakres temperatury roboczej: -15 – +70°C
  • Kąt pomiaru: 30°
  • Kąt odbicia fali ultradźwiękowej: °15
  • Częstotliwość sygnału pomiarowego: 50kHz
  • Zakres pomiarowy czujnika: ±0,02 – 2,00m
  • Dokładność pomiaru: 0,003m
  • Wymiary czujnika: 45 x 20 x 15mm
Ultradźwiękowy czujnik odległości Pololu
Gravity URM09 - ultrasonic distance sensor 2-500cm sensor analog - DFRobot SEN0307

Ultradźwiękowe czujniki odległości

Przykładowy kod programu w środowisku Arduino IDE

Aby zrealizować przykładowy program na Arduino do obsługi czujnika HC-SR04, w pierwszej kolejności należy przypisać odpowiednie wyprowadzenia, do których są podłączone piny czujnika “Trig” i “Echo”. W przykładowym programie przyjęto, że piny czujnika są połączone z wyprowadzeniami Arduino o numerach odpowiednio 5 i 6 – są to wyprowadzenia dwustanowe. Następnie definiujemy zmienne określające parametry pomiaru, tj. czas trwania cyklu pomiarowego (zmienna typu “long”) oraz zmierzoną odległość czujnika od obiektu (zmienna typu “int”). Pin nr 5 (“Trig”) jest określony jako wyjście, a pin nr 6 (“Echo”) jako wejście. W celu podglądu wyniku pomiaru wprowadzamy uruchomienie transmisji danych przez interfejs UART za pomocą instrukcji Serial.begin(). Na początku każdego cyklu pomiarowego pin “Trig” jest ustawiany w stan logiczny niski. Po odczekaniu 2 mikrosekund pin “Trig” jest przerzucany w stan logiczny wysoki na czas 10µs, po czym ponownie jest zerowany. Wówczas pin “Echo” zostaje przerzucony w stan wysoki, co jest równoznaczne z wysłaniem fali ultradźwiękowej i rozpoczęciem cyklu pomiarowego. 

Czas trwania cyklu pomiarowego jest odmierzany za pomocą funkcji pulseIn() – w omawianym przypadku funkcja ta wykonuje pomiar czasu trwania stanu wysokiego na pinie “Echo”. Po zakończeniu cyklu pomiarowego zmierzony czas trwania impulsu “czaspomiaru” jest podstawiany do wzoru w następnej linijce kodu – w ten sposób zostaje obliczona wartość zmiennej “odległość”, która obrazuje rzeczywistą odległość czujnika od obiektu. Obliczony wynik jest wysyłany do komputera, a jego wartość zostaje wyświetlona w monitorze portu szeregowego. Kolejny pomiar jest wykonywany w taki sam sposób w pętli.

Kod programu

/*
*Program obsługujący ultradźwiękowy czujnik odległości HC-SR04
*/

// Przypisanie pinów funkcyjnych czujnika do ponumerowanych wyprowadzeń Arduino
const int Trig = 5;
const int Echo = 6;

// Definiowanie zmiennych określających parametry pomiaru
long czaspomiaru; // Czas trwania cyklu pomiarowego
int odleglosc; // Zmierzona odległość czujnika od obiektu

// Ustawienie funkcji sprzętowych
void setup() {
  pinMode(Trig, OUTPUT); // Ustawienie pinu Trig jako wyjście
  pinMode(Echo, INPUT); // Ustawienie pinu Echo jako wejście

  Serial.begin(9600); // Uruchomienie transmisji danych przez interfejs UART; Prędkość transmisji: 9600 bitów na sekundę
}

void loop() {
  digitalWrite(Trig, LOW); // Wyzerowanie pinu sygnału Trigger
  delay(0.002); // odczekanie 2 mikrosekund

  digitalWrite(Trig, HIGH); // Ustawienie pinu sygnału Trigger w stan wysoki
  delay(0.010); // odczekanie 10 mikrosekund

  digitalWrite(Trig, LOW); // Ustawienie pinu sygnału Trigger w stan wysoki - start pomiaru

  czaspomiaru = pulseIn(Echo, HIGH); //pomiar czasu trwania impulsu (stanu wysokiego) na pinie Echo
  odleglosc = czaspomiaru*0.034/2; // Obliczanie odległości czujnika od obiektu

  // Wyświetlanie wartości zmierzonej odległości obiektu od czujnika w oknie monitora portu szeregowego

  Serial.print("Odleglosc zmierzona: ");
  Serial.println(odleglosc);
}

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 4.2 / 5. Liczba głosów: 5

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Grzegorz Galuba

Grzegorz Galuba

GG nie ma czasu na gadu-gadu - jest zawsze na bieżąco z nowościami z oferty, wybiera tylko najlepsze i dba, aby pojawiały się na czas. Jego rozległa wiedza o specyfikacjach technicznych produktów to nieocenione wsparcie dla całej ekipy. Do pracy przyjeżdża rowerem i już najwyższa pora, aby wszyscy zaczęli brać z niego przykład. Oaza spokoju.

Zobacz więcej:

Julia Salamon

Porównanie drukarek żywicznych Elegoo

Zastanawiasz się, którą drukarkę żywiczną Elegoo wybrać do swoich projektów? W tym artykule porównujemy najpopularniejsze modele tej marki, zwracając uwagę na jakość wydruku, prędkość, rozdzielczość czy pole robocze.

Julia Salamon

Porównanie drukarek żywicznych Elegoo

Zastanawiasz się, którą drukarkę żywiczną Elegoo wybrać do swoich projektów? W tym artykule porównujemy najpopularniejsze modele tej marki, zwracając uwagę na jakość wydruku, prędkość, rozdzielczość czy pole robocze.

Masz pytanie techniczne?
Napisz komentarz lub zapytaj na zaprzyjaźnionym forum o elektronice.

Dodaj komentarz

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

Ze względów bezpieczeństwa wymagane jest korzystanie z usługi Google reCAPTCHA, która podlega Polityce prywatności i Warunkom użytkowania.