Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Opis czujnika ultradźwiękowego HC-SR04 - recenzja

grala1 09 Lut 2018 02:35 2181 3
  • Witam wszystkich.
    Dzisiaj postaram się opisać Wam czujnik HC-SR04 zwany też ultradźwiękowym miernikiem odległości. Za pomocą tego czujnika możemy dokonywać „bezdotykowego” pomiaru odległości pomiędzy czujnikiem a przeszkodą. Zasilanie czujnika to 5V, pobór prądu – możemy wyróżnić dwa stany czujnika: bierny – do 2mA – czujnik czeka na sygnał do wykonania pomiaru, aktywny – 15mA – czujnik dokonuje pomiaru odległości, dokładność pomiaru 0,3cm, kąt pomiaru 30°. Częstotliwość pracy – 40kHz, minimalny zasięg 2cm, maksymalny zasięg 400cm. Wymiary czujnika: 45x20x15mm należy jednak wziąć pod uwagę, że do płytki czujnika mamy dolutowaną czteropinową listwę goldpin, więc wymiary razem z nią to 45x26x18mm.
    Pomiar prądu wykonany przeze mnie to 3,5mA w stanie biernym i 6,5mA w stanie aktywnym.

    Opis czujnika ultradźwiękowego HC-SR04 - recenzjaOpis czujnika ultradźwiękowego HC-SR04 - recenzja

    Ceny czujnika z wysyłką zaczynają się na polskich portalach aukcyjnych od ok. 7,5zł, zaś na chińskich stronach możemy zakupić ten czujnik w cenie od ok. $0,75. Do czujnika można zakupić różnego rodzaju obudowy czy też uchwyty.
    Czujnik posiada cztery wyprowadzenia: VCC – zasilanie, Trig – sygnał wejściowy rozpoczynający pomiaru, Echo – jest to wyjście, na którym pojawia się sygnał prostokątny, którego czas trwania zależy od zmierzonej odległości, Gnd – masa.

    Zasada działania czujnika. Na wejście Trig podajemy pojedynczy sygnał prostokątny o czasie trwania nie krótszym niż 10uS, po czym następuje wysłanie przez czujnik 8 krótkich fal ultradźwiękowych o częstotliwości 40kHz, które napotykając na przeszkodę, odbijają się od niej i wracają do czujnika. Kiedy pomiar zostanie dokonany, na wyjściu Echo pojawia się pojedynczy sygnał prostokątny, którego czas trwania zależy od odległości pomiędzy czujnikiem a przeszkodą. W dokumentacji możemy znaleźć informację, że odległość między czujnikiem a przeszkodą można wyliczyć z zależności:
    S[cm]=t[us]/58
    Dla wyznaczenia odległości w calach otrzymany czas należy podzielić przez 148.
    Producent zaleca, aby powierzchnia, od której będą odbijały się fale dźwiękowe, miała co najmniej 0,5m2 i aby była to gładka powierzchnia, w przeciwnym razie może mieć to wpływ na wynik pomiaru. W dokumentacji możemy znaleźć również zalecenie, by do czujnika jako pierwsza została podłączona masa przed VCC. Jeżeli po podaniu sygnału na wejście Trig, obiekt będzie znajdował się poza zasięgiem czujnika, to na wyjściu Echo pojawi się sygnał o długości 38ms.





    Poniżej przedstawiam pomiary kilku odległości:

    10cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 0,575ms=575us, wynik 575/58=9,91cm

    20cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 1,173ms=1173us, wynik 1173/58=20,22cm

    40cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 2,389ms=2389us, wynik 2389/58=41,18cm

    50cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 2,9ms=2900us, wynik 2900/58=50cm

    198cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 11,58ms=11580us, wynik 11580/58=199,65cm

    315cm:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas trwania sygnału: 18,4ms=18400us, wynik 18400/58=317,24cm

    Należy wziąć pod uwagę, że te pomiary były dokonywane w domu, a nie w żadnym laboratorium, więc mogą być pomyłki w ustawieniu przeszkody w danej odległości od czujnika, a co ważne - czujnik mógł być nieustawiony pod kątem 90° do przeszkody.
    Chodziło tu raczej o sprawdzenie działania czujnika, a nie o badanie jego dokładności zadeklarowanej przez producenta.
    Z ciekawości postanowiłem sprawdzić, co się stanie, gdy na wejście Trig zamiast pojedynczego sygnału podamy przebieg prostokątny o częstotliwości 50kHz i wypełnieniu 50%, czyli nasz stan wysoki będzie miał 10us.
    Wygląda to tak:

    Opis czujnika ultradźwiękowego HC-SR04 - recenzja

    Widać, że na wyjściu Echo pojawia nam się nie pojedynczy sygnał, a ciąg sygnałów, gdzie czas trwania stanu wysokiego w tym przypadku to 11,53ms, co daje nam odległość 198,79cm przy odległości czujnika od przeszkody 198cm.
    Jak widać - można by było w ten sposób dokonywać ciągłego pomiaru odległości.
    Postanowiłem sprawdzić, co się stanie, gdy czasy na wejściu Trig zmienimy na krótszy niż zaleca producent lub na jeszcze dłuższe, ale przy podawaniu tam pojedynczego sygnału prostokątnego na wejściu.

    Czas na wejściu 5us:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas na wyjściu 11,51ms co daje nam 198,44cm

    Czas na wejściu 20us:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas na wyjściu 11,53 co daje nam 198,79cm

    Czas na wejściu 50us:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas na wyjściu 11,51ms co daje nam 198,44cm

    Czas na wejściu 100us:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas na wyjściu 11,58 co daje nam 199,65cm

    Czas na wejściu 1ms:
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Czas na wyjściu 11,56 co daje nam 199,31cm

    Tutaj przy tej samej odległości podanie sygnału prostokątnego o częstotliwości 5kHz i wypełnieniu 50%.
    Opis czujnika ultradźwiękowego HC-SR04 - recenzja
    Wynik to 11,56ms co daje nam 199,31cm

    Jak widać - zmiana czasu trwania sygnału Trig czy też podanie tam przebiegu prostokątnego nie ma raczej wpływu na zmianę wyniku pomiaru badanej odległości, choć producent w dokumentacji zaleca podawać sygnał o długości nie mniejszej niż 10us.
    Muszę przyznać, że wcześniej myślałem, że ten czujnik jest trudniejszy w obsłudze, ale jak widać - jest on dość prosty i dosyć łatwo można za jego pomocą dokonywać pomiarów odległości.
    W sieci można znaleźć przykłady użycia tego czujnika z Arduino czy też programy w C lub Bascom.
    Do wykonania pomiarów wykorzystałem 8-kanałowy analizator Saleae.
    W załączniku dokumentacja czujnika.


    Fajne!
  • #2 12 Lut 2018 19:39
    Zubiik
    Poziom 11  

    Sprawdzałeś co z czujnikiem dzieje się ki9edy nie dostaje echa? Mam u siebie kilka sztuk które kiedy sygnał nie nadejdzie zawieszają się .

  • #3 12 Lut 2018 23:46
    grala1
    Specjalista grupy V.A.G.

    Tego nie sprawdzałem. Musiałbym wyjść z tym na dwór a bateria w laptopie już nie trzyma najlepiej. Może w weekend mi się uda to sprawdzić.

  • #4 13 Lut 2018 01:46
    rb401
    Poziom 31  

    grala1 napisał:
    czy też podanie tam przebiegu prostokątnego nie ma raczej wpływu na zmianę wyniku pomiaru badanej odległości


    Ten Twój eksperyment z podaniem gęstego prostokąta jest moim zdaniem bardzo ciekawy z pewnego względu.
    Zarysowuje się tu możliwość, by w takim trybie użyć tego czujnika jako czysto analogowego (PWM) po dodaniu prostego filtru RC na sygnale Echo. Np. w sytuacjach kiedy nie opłaca się używać uC lub jest do dyspozycji tylko jakieś wejście analogowe. Wystarczył by tylko byle generatorek, nawet bez specjalnego wymogu co do stabilności częstotliwości itp. .
    Nie jest tylko jasne czy czas "martwy" między odpowiedziami na Echo (który na Twoich wykresach ma gdzieś 0,5ms)) można tu traktować jako stały. Jeśli by tak było, to dla odległości rzędu kilkadziesiąt centymetrów, PWM miało by duży zakres zmian współczynnika wypełnienia i przez to łatwe by było do stosowania nawet w bardzo prostych układach typu np. przerzutnik schmitta plus element wykonawczy itp. zachowując w miarę dobrą dokładność i powtarzalność.
    Ale jest jeszcze ta kwestia zawieszania, jak tu kolega Zubiik sygnalizuje.

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo