norr@manorshi.com         +86-519-89185720
1
Centrum Wiadomości

Jak używać czujnika ultradźwiękowego z Arduino?

Wyświetlenia: 164     Autor: Grace Czas publikacji: 2021-07-26 Pochodzenie: Strona

przycisk udostępniania na Facebooku
przycisk udostępniania na Twitterze
przycisk udostępniania linii
przycisk udostępniania wechata
przycisk udostępniania na LinkedIn
przycisk udostępniania na Pintereście
przycisk udostępniania WhatsApp
przycisk udostępniania kakao
przycisk udostępniania Snapchata
przycisk udostępniania telegramu
udostępnij ten przycisk udostępniania

Jak używać czujnika ultradźwiękowego z Arduino: przewodnik HC-SR04

The Czujnik ultradźwiękowy HC-SR04 to jeden z najpopularniejszych modułów pomiaru odległości w projektach Arduino. Jest szeroko stosowany w robotach unikających przeszkód, czujnikach parkowania, wykrywaniu poziomu, inteligentnych koszach na śmieci, miernikach odległości i innych zastosowaniach wykorzystujących czujniki bezdotykowe.

Moduł emituje fale ultradźwiękowe o częstotliwości 40 kHz poprzez nadajnik. Kiedy fala dźwiękowa napotyka obiekt, odbija się z powrotem do odbiornika. Mierząc czas echa i wykorzystując prędkość dźwięku, Arduino może obliczyć odległość między czujnikiem a obiektem.

Moduł czujnika ultradźwiękowego HC-SR04 do pomiaru odległości Arduino

Główne parametry techniczne HC-SR04

Parametr Wartość
Typowe napięcie robocze 5 V prądu stałego
Statyczny prąd roboczy Mniej niż 5 mA w niektórych wersjach modułów
Częstotliwość robocza Fala ultradźwiękowa 40 kHz
Odległość wykrywania Typowy zakres: 2 cm do 400 cm; niektóre wersje z regulacją wzmocnienia mogą obsługiwać większy zasięg.
Kąt detekcji Zwykle w granicach 15 stopni; niektóre wersje z większym wzmocnieniem mogą osiągnąć około 30 stopni.
Precyzja Do około 0,3 cm w odpowiednich warunkach testowych
Strefa niewidomych Minimalna odległość pomiarowa około 2 cm

Opis styków HC-SR04

Moduł ultradźwiękowy HC-SR04 posiada cztery piny: VCC, TRIG, ECHO i GND. Arduino wysyła krótki impuls wyzwalający na pin TRIG, następnie odczytuje impuls powrotny z pinu ECHO.

Sworzeń HC-SR04 Połączenie Arduino Funkcjonować
VCC 5 V Zasilanie modułu ultradźwiękowego.
WYMUSKANY Cyfrowy pin 9 Wejście wyzwalające. Arduino stosuje impuls 10us, aby rozpocząć ustalanie zakresu.
ECHO Cyfrowy pin 10 Wyjście echa. Arduino odczytuje szerokość impulsu, aby obliczyć odległość.
GND GND Połączenie uziemiające.

Pinout czujnika ultradźwiękowego HC-SR04 VCC TRIG ECHO GND

Zasada działania czujnika ultradźwiękowego HC-SR04

HC-SR04 działa na zasadzie pomiaru czasu przelotu. Arduino wysyła sygnał wyzwalający wysokiego poziomu trwający co najmniej 10 mikrosekund do pinu TRIG. Moduł następnie automatycznie wysyła osiem impulsów ultradźwiękowych o częstotliwości 40 kHz i czeka na odbite echo.

Po wykryciu odbitego sygnału ultradźwiękowego, pin ECHO wysyła impuls o wysokim poziomie. Czas trwania tego impulsu to czas podróży fali ultradźwiękowej w obie strony.

Odległość = czas wysokiego poziomu echa × prędkość dźwięku / 2

W kodzie Arduino popularną uproszczoną formułą jest:

Odległość w cm = czas trwania × 0,0343 / 2

Zasada działania modułu ultradźwiękowego czasu lotu HC-SR04

Schemat rozrządu modułu ultradźwiękowego HC-SR04

Proces pomiaru czasu jest prosty: Arduino utrzymuje przez chwilę TRIG na niskim poziomie, wysyła wysoki impuls o wartości 10 us, a następnie przywraca TRIG na niski poziom. HC-SR04 wysyła impuls ultradźwiękowy i ustawia ECHO na wysokim poziomie do momentu powrotu odbitego sygnału lub upłynięcia czasu pomiaru.

Aby uniknąć niestabilnych odczytów, należy pozostawić krótkie opóźnienie pomiędzy pomiarami. Powszechnie stosowany jest cykl pomiarowy trwający około 60 ms, dzięki czemu poprzednie echo ultradźwiękowe ma czas na zaniknięcie przed kolejnym wyzwoleniem.

Podstawy programowania Arduino: funkcja PulseIn

Funkcja Arduino PulsIn() służy do pomiaru czasu, przez jaki pin cyfrowy pozostaje WYSOKI lub NISKI. W przypadku HC-SR04 Arduino wykorzystuje impulsIn(echoPin, HIGH) do odczytu szerokości impulsu wysokiego poziomu z pinu ECHO.

Składnia Oznaczający
impulsIn(pin, wartość) Odczytuje czas trwania WYSOKIEGO lub NISKIEGO impulsu.
impulsIn(pin, wartość, limit czasu) Odczytuje impuls z wartością limitu czasu w mikrosekundach.

Zalecane jest użycie limitu czasu. Jeśli echo nie zostanie zwrócone, funkcja może przestać czekać i zwrócić 0, zamiast blokować program na zbyt długi czas.

Płytka Arduino współpracująca z ultradźwiękowym czujnikiem odległości HC-SR04

Jak podłączyć czujnik ultradźwiękowy HC-SR04 do Arduino

Okablowanie jest proste. Podłącz VCC do 5 V, GND do GND, TRIG do cyfrowego pinu wyjściowego Arduino i ECHO do cyfrowego pinu wejściowego Arduino. W poniższym przykładzie zastosowano Arduino Uno, TRIG na pinie 9 i ECHO na pinie 10.

Schemat podłączenia płytki prototypowej Arduino Uno dla czujnika ultradźwiękowego HC-SR04

Kod Arduino czujnika ultradźwiękowego HC-SR04

Poniższy typowy program Arduino wysyła impuls wyzwalający o długości 10 us, odczytuje szerokość impulsu ECHO, oblicza odległość w centymetrach i drukuje wynik w monitorze szeregowym.

const int trigPin = 9; stała int echoPin = 10; długi czas trwania; odległość pływakaCm; void setup() { pinMode(trigPin, WYJŚCIE);   tryb pin(echoPin, WEJŚCIE);   Serial.begin(9600); } void pętla() { digitalWrite(trigPin, LOW);   opóźnienieMikrosekundy(2);   digitalWrite(trigPin, WYSOKI);   opóźnienieMikrosekundy(10);   digitalWrite(trigPin, LOW);   czas trwania = impulsIn(echoPin, WYSOKI, 30000);   if (czas trwania == 0) { Serial.println(„Poza zakresem”);   } else { odległośćCm = czas trwania * 0,0343 / 2;     Serial.print('Odległość: ');     Serial.print(odległośćCm);     Serial.println(cm);   } opóźnienie(60); }

Jeśli widzisz wartości odległości na monitorze szeregowym, czujnik ultradźwiękowy HC-SR04 i okablowanie Arduino działają poprawnie. Dane dotyczące odległości można następnie wykorzystać do wykrywania przeszkód, sterowania ruchem robota, automatycznych drzwi, przypomnień o parkowaniu lub projektów dotyczących poziomu cieczy.

Program do pomiaru odległości czujnika ultradźwiękowego Arduino HC-SR04

Jak poprawić dokładność pomiaru HC-SR04

  • Trzymaj mierzony obiekt w zalecanym zakresie odległości i poza 2cm martwą strefą.

  • Aby uzyskać lepsze odbicie ultradźwiękowe, użyj płaskiej i solidnej powierzchni docelowej.

  • Unikaj pomiaru materiałów miękkich, zakrzywionych, porowatych lub dźwiękochłonnych.

  • Użyj stabilnego źródła zasilania 5 V, a okablowanie powinno być krótkie i bezpieczne.

  • Dodaj limit czasu do pulsIn(), aby zapobiec długiemu blokowaniu, gdy nie powraca żadne echo.

  • Filtruj średnią lub medianę kilku odczytów, aby zredukować szum.

  • Aby uzyskać większą dokładność, skompensuj temperaturę, ponieważ prędkość dźwięku zmienia się wraz z temperaturą powietrza.

Typowe zastosowania projektów czujników ultradźwiękowych Arduino

Aplikacja Jak używany jest HC-SR04
Robot unikający przeszkód Wykrywa pobliskie obiekty i pomaga robotowi zmienić kierunek.
Czujnik odległości przy parkowaniu Mierzy odległość pomiędzy pojazdem a przeszkodą.
Detekcja poziomu cieczy Bezdotykowo mierzy odległość czujnika od powierzchni cieczy.
Inteligentny kosz na śmieci Wykrywa pobliską rękę lub przedmiot i uruchamia automatyczne otwarcie pokrywy.

Streszczenie

Aby użyć czujnika ultradźwiękowego HC-SR04 z Arduino, podłącz VCC do 5 V, GND do GND, TRIG do cyfrowego pinu wyjściowego i ECHO do cyfrowego pinu wejściowego. Wyślij impuls wyzwalający o długości 10 us, odczytaj czas trwania echa za pomocą pulsIn() i oblicz odległość za pomocą wzoru na czas przelotu.

HC-SR04 jest niedrogi, łatwy w obsłudze i nadaje się do wielu projektów pomiaru odległości Arduino. Aby uzyskać najlepsze wyniki, należy zwrócić uwagę na powierzchnię docelową, kąt pomiaru, strefę ślepą, stabilną moc, obsługę przekroczenia limitu czasu i wpływ temperatury.

Często zadawane pytania dotyczące czujnika ultradźwiękowego Arduino HC-SR04

Jak czujnik ultradźwiękowy HC-SR04 współpracuje z Arduino?

Arduino wysyła impuls 10us na pin TRIG. HC-SR04 emituje osiem impulsów ultradźwiękowych 40 kHz i ustawia pin ECHO na wysoki poziom, aż do powrotu odbitego dźwięku. Arduino mierzy czas tego impulsu i oblicza odległość.

Jaki jest wzór na odległość dla projektów Arduino HC-SR04?

Wzór to odległość = czas trwania × prędkość dźwięku / 2. W centymetrach popularną formułą Arduino jest odległośćCm = czas trwania × 0,0343 / 2, gdzie czas trwania mierzy się w mikrosekundach.

Dlaczego dzielimy wynik czujnika ultradźwiękowego przez 2?

Zmierzony czas echa to czas podróży w obie strony od czujnika do obiektu i z powrotem do czujnika. Dzielenie przez 2 daje jednokierunkową odległość między czujnikiem a obiektem.

Których pinów Arduino powinienem użyć dla TRIG i ECHO?

Można używać większości cyfrowych pinów Arduino. W wielu przykładach TRIG jest podłączony do cyfrowego styku 9, a ECHO jest podłączony do cyfrowego styku 10. Kod musi pasować do styków używanych w okablowaniu.

Dlaczego mój czujnik ultradźwiękowy HC-SR04 zwraca wartości zerowe lub losowe?

Typowe przyczyny to luźne okablowanie, niestabilne zasilanie 5 V, nieprawidłowe numery pinów TRIG lub ECHO, brak obiektu w zasięgu, pochylone powierzchnie celu, miękkie materiały, zablokowane głowice czujników lub brak limitu czasu w funkcji pulsIn().

Czym jest martwa strefa czujnika ultradźwiękowego HC-SR04?

Strefa ślepa to minimalna odległość, w której moduł nie może dokonać wiarygodnego pomiaru. W przypadku HC-SR04 martwa strefa wynosi zwykle około 2 cm. Obiekty znajdujące się bliżej niż ta mogą powodować niestabilne odczyty.

Czy HC-SR04 może mierzyć poziom wody za pomocą Arduino?

Tak, HC-SR04 można używać do prostych, bezdotykowych projektów pomiaru poziomu wody, jeśli czujnik jest chroniony przed wilgocią i zamontowany nad powierzchnią cieczy. W przypadku zbiorników wilgotnych, zewnętrznych lub przemysłowych zaleca się wodoodporny czujnik ultradźwiękowy.

Jak mogę zwiększyć stabilność odczytów czujnika ultradźwiękowego Arduino?

Użyj stabilnego źródła zasilania, trzymaj czujnik prostopadle do celu, unikaj miękkich lub pochylonych powierzchni, dodaj limit czasu impulsu, wykonaj wiele odczytów, użyj filtrowania mediany i pozostaw około 60 ms między pomiarami.

Spis treści