Czujnik ultradźwiękowy odległości HC-SR04

Czujnik ultradźwiękowy odległości HC-SR04

Jest to najpopularniejszy czujnik do pomiaru odległości wykorzystywany w projektach Arduino do odległości kilku metrów. Czujnik ten działa w taki sposób, że wysyłania krótki impulsu ultradźwiękowy i odbiera ten sam impuls kiedy on powróci odbijając się od napotkanej przeszkody. Za pomocą Arduino na podstawie czasu jaki upłynął od momentu wysłania impulsu ultradźwiękowego do jego odebrania i znając prędkość z jaką porusza się dźwięk można policzyć przebytą przez ten impuls odległość w przestrzeni.

Parametry czujnika

  • napięcie zasilania: 5 V

  • średni pobór prądu: 15 mA

  • zakres pomiarowy: 2-200 cm (niektóre modele nawet do 400cm)

  • częstotliwość pracy: 40 kHz

  • wymiary: 45 x 20 x 15 mm

Zasada działania

Aby w pełni wykorzystać możliwości czujnika należy wygenerować impuls trwający 10us na pinie TRIG czujnika, który spowoduje wygenerowanie impulsu ultradźwiękowego, a następnie należy czekać aż pin ECHO przejdzie w stan wysoki. Od momentu kiedy na pinie ECHO pojawił się stan wysoki należy zacząć odmierzać czas trwania tego stanu, aż do momentu kiedy ten pin znowu zmieni swój stan na niski. Czas trwania stanu wysokiego na pinie ECHO odpowiada czasowi jaki upłynął od momentu wysłania impulsu ultradźwiękowego do jego powrotu do czujnika czyli sytuacji kiedy ten impuls pokonał drogę od czujnika do przeszkody dwa razy czyli tam i z powrotem.

Odległość jaką pokonał dźwięk można policzyć na podstawie zmierzonego czasu następującym wzorem:

gdzie:

czas trwania stanu wysokiego - to zmierzony czas przez jaki na pinie ECHO utrzymywał się stan wysoki

prędkość dźwięku - to prędkość dźwięku rozchodzącego się w powietrzu w temperaturze 15°C czyli 340 m/s

Dla uproszczenia można przyjąć, że fala dźwiękowa pokonuje 1cm w ciągu 29us, a dzieląc zmierzony czas trwania stanu wysokiego na pinie ECHO przez dwukrotność tej wartości to odległość w centymetrach możemy obliczyć z takiego uproszczonego wzoru:

Skąd ta wartość 58us we wzorze? Ponieważ pamiętajmy, że czujnik podaje nam sygnał wysoki przez czas przebycia dźwięku tam i z powrotem czyli dźwięk pokonuje drogę dwa razy stąd też czas trwania stanu wysokiego musimy podzielić przez dwukrotność czasu w jakim dźwięk pokona drogę 1cm czyli 2 x 29us.

Przykładowy program Arduino IDE

Jako przykład podaję najprostszą wersję programu, za pomocą którego Arduino obliczy odległość przebytą przez impuls ultradźwiękowy wysłany i odebrany przez czujnik HC-SR04 i wyśle obliczoną wartość przez port szeregowy. Przy okazji przykład ten pokazuje jak z Arduino można odbierać dane z portu szeregowego na komputerze.

Schemat podłączenia