FORUM

Ultradźwiękowy czujnik odległości HC-SR04

WitekR
Posty: 33
https://www.oferia.pl/wykonawca/meble-kuchenne-warszawa/1240988
Rejestracja: 24 lip 2021, 2:11
Kontakt:

Ultradźwiękowy czujnik odległości HC-SR04

Post autor: WitekR »

Ultradźwiękowy czujnik odległości HC-SR04

HC-SR04
HC-SR04 to czujnik ultradźwiękowy działający w zakresie od 2 do 200 cm, zasilany napięciem 5V. Mierzony za jego pomocą czas trwania sygnału wejściowego, jest proporcjonalny do mierzonej odległości. Typowy pobór prądu podczas pomiaru wynosi około 15mA.

Posiada cztery piny, dwa zasilające oraz dwa do wyzwolenia i odczytania pomiaru.
hc-sr04.jpg
hc-sr04.jpg (7.06 KiB) Przejrzano 1399 razy
Aby rozpocząć pomiar odległości należy podać na pin TRIG impuls napięciowy w stanie wysokim 5V przez czas 10μs, następnie dokonywany jest pomiar odległości przy pomocy fali ultradźwiękowej o częstotliwości 40kHz, która odbijając się od napotkanej przeszkody, wraca do czujnika. Kiedy pomiar zostanie wykonany, na pin ECHO wystawiany jest sygnał, którego czas trwania zależy od odległości znajdującej się od przeszkody.

Pierwszą metodę pomiaru opisuje prosta zależność, w której mierzony jest czas (T1) w sekundach od momentu wyzwolenia sygnału na TRIG do momentu pojawienia się odpowiedzi na pinie ECHO:

odległość = (T1 * prędkość rozchodzenia się dźwieku) / 2

Interesuje nas prędkość rozchodzenia się dźwięku w powietrzu, a więc 340 m/s:

odległość [m] = ( T1 [s] * 340 [m/s] ) / 2

HC-SR04 posiada jednak opcję, która pozwoli nam na określenie odległości od przeszkody na podstawie czasu trawania sygnału ECHO (T2) mierzoną w mikrosekundach. Łatwo policzyć więc, że fala dźwiękowa pokonuje jeden centymetr w czasie 29us, a więc ułatwiając sobie powyższą zależność, otrzymamy wzór i wynik w centymetrach:

odległość [cm] = T2 [us] / 58

Jeśli interesuje nas wynik w calach, powyższy wzór będzie wyglądał następująco:

odległość [inch] = T2 [us] / 148

Schemat połączeń.
Oprócz podłączenia czujnika do Arduino, wykorzytamy jeszcze dwie diody LED (czerwoną i zieloną) do sygnalizacji dystansu poniżej i powyżej 10cm.
hc-sr06.jpg
hc-sr06.jpg (8.59 KiB) Przejrzano 1397 razy
Kod:

Kod: Zaznacz cały

int Trig = 2;   // Numer pinu wyzwolenia
int Echo = 3;   // Numer pinu odpowiedzi
int Red = 4;    // Numer pinu - dioda czerwona
int Green = 5;  // Numer Pinu - dioda zielona
 
long EchoTime;  // Czas trwania sygnału ECHO
int  Distance;  // Odległość w centymetrach
int  MaximumRange = 200; // Maksymalna odległość
int  MinimumRange = 2;   // Minimalna odległość
 
void setup()
{
  // Inicjalizacja portu szeregowego
  Serial.begin(9600);
 
  // Konfiguracja pinów
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
  pinMode(Red, OUTPUT);
  pinMode(Green, OUTPUT);
 
}
 
void loop()
{
  // Ustawiamy TRIG w stan niski na 2us
  digitalWrite(Trig, LOW);
  delayMicroseconds(2);
 
  // Ustawiamy TRIG w stan wysoki na 10us
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);
 
  // Ustawiamy TRIG w stan niski - rozpoczynamy pomiar
  digitalWrite(Trig, LOW);
 
  // Odczytujamy czas trwania stanu wysokiego na pinie ECHO
  EchoTime = pulseIn(Echo, HIGH);
 
  // Obliczamy odległość
  Distance = EchoTime / 58;
 
  // Sprawdzamy zakres pomiarowy
  if (Distance >= MaximumRange || Distance <= MinimumRange)
  {
    Serial.println("Poza zakresem");  
  } else  
  {
    // Jeśli poniżej 11cm zapalamy diodę czerwoną
    // Jeśli powyżej 10cm zapalamy diodę zieloną
    if (Distance < 11)
    {
      digitalWrite(Red, HIGH);      
      digitalWrite(Green, LOW);
    } else
    {
      digitalWrite(Red, LOW);      
      digitalWrite(Green, HIGH);
    }    
      
    Serial.print("Odleglosc: ");
    Serial.println(Distance);
  }
 
  // Opóźnienie kolejnego pomiaru
  delay(100);
}
Ostateczny wygląd
hc-sr04-photo.jpg
hc-sr04-photo.jpg (15.8 KiB) Przejrzano 1394 razy
Terminal
hc-sr04-serial.jpg
hc-sr04-serial.jpg (12.25 KiB) Przejrzano 1393 razy

Wróć do „3. Ultradźwiękowy czujnik odległości HC-SR04”