logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Poprawny odczyt odległości z czujnika HC-SR04 2-200cm.

antoniv10 24 Sty 2021 18:31 528 3
REKLAMA
  • #1 19207206
    antoniv10
    Poziom 3  
    Witam, chcę wykorzystać czujnik odległości HC-SR04 2-200cm w swoim projekcie. Po tym co wyczytałem w dokumentacji mój zamysł na program wygląda tak: konfiguruję timer, który generuje przerwanie co 10us i ustawia stan wysoki na pinie podłączonym do pinu Trig czujnika, potem robię stosowne obliczenia aby uzyskać dystans i wyświetlam go na LCD. I tutaj nie do końca rozumiem działania pinu Echo, gdy czujnik wykryje, że fala do niego wróciła to generuje na pinie Echo stan wysoki i mam zmierzyć ile trwa ten stan? Jeżeli tak to jak mam to zrobić?
  • REKLAMA
  • #2 19207274
    BlueDraco
    Specjalista - Mikrokontrolery
    Łatwo znajdziesz mnóstwo tekstów na temat tego czujnika. Przeczytaj, przejrzyj przykłady programów i zrób. Masz naprawdę mnóstwo informacji na ten temat, wystarczy chcieć po nią sięgnąć.
  • REKLAMA
  • #3 19210497
    Konto nie istnieje
    Poziom 1  
  • #4 19218178
    ...KUBA...
    Poziom 25  
    Tak to wygląda:
    Poprawny odczyt odległości z czujnika HC-SR04 2-200cm.
    I tak jak wspominałeś, Twoim zadaniem jest zmierzyć czas trwania sygnału wyjściowego z czujnika - czyli na linii ECHO. Będziesz miał czas trwania przebytej przez falę drogi- jak kolega wyżej wspomniał fala wykonała dwukrotność drogi czujnik-przeszkoda: od czujnika do przeszkody i od przeszkody do czujnika, co musisz uwzględnić podczas obliczeń, prędkość dżwięku znasz, przekształcasz wzór na prędkość tak aby wynikiem była droga i masz zmierzoną odległość.
    Ale rozumiem, że docelowym pytaniem było jak dokonać pomiaru czasu trwania impulsu?
    Tutaj masz jak wygląda to w arduino ale kluczowa magia dzieje się w funkcji countPulseASM zaimplementowanej w asemblerze ;)
    https://github.com/arduino/ArduinoCore-avr/bl...bed8a1ad44d049cb/cores/arduino/wiring_pulse.c

    Ja bym Echo podłączył pod zewnętrzne przerwanie na zbocze narastające i opadające i w przerwaniu sprawdzał stan pinu wysoki/niski i mierzył czas pomiędzy ich wystąpieniami.
REKLAMA