HC-SR04
ID: 41
Kategorie: Module
Menge: 0
Position:

Ultradźwiękowy czujnik odległości 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.

 

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.

Program

  1. int Trig = 2;   // Numer pinu wyzwolenia
  2. int Echo = 3;   // Numer pinu odpowiedzi
  3. int Red = 4;    // Numer pinu - dioda czerwona
  4. int Green = 5;  // Numer Pinu - dioda zielona
  5.  
  6. long EchoTime;  // Czas trwania sygnału ECHO
  7. int  Distance;  // Odległość w centymetrach
  8. int  MaximumRange = 200; // Maksymalna odległość
  9. int  MinimumRange = 2;   // Minimalna odległość
  10.  
  11. void setup()
  12. {
  13.   // Inicjalizacja portu szeregowego
  14.   Serial.begin(9600);
  15.  
  16.   // Konfiguracja pinów
  17.   pinMode(Trig, OUTPUT);
  18.   pinMode(Echo, INPUT);
  19.   pinMode(Red, OUTPUT);
  20.   pinMode(Green, OUTPUT);
  21.  
  22. }
  23.  
  24. void loop()
  25. {
  26.   // Ustawiamy TRIG w stan niski na 2us
  27.   digitalWrite(Trig, LOW);
  28.   delayMicroseconds(2);
  29.  
  30.   // Ustawiamy TRIG w stan wysoki na 10us
  31.   digitalWrite(Trig, HIGH);
  32.   delayMicroseconds(10);
  33.  
  34.   // Ustawiamy TRIG w stan niski - rozpoczynamy pomiar
  35.   digitalWrite(Trig, LOW);
  36.  
  37.   // Odczytujamy czas trwania stanu wysokiego na pinie ECHO
  38.   EchoTime = pulseIn(Echo, HIGH);
  39.  
  40.   // Obliczamy odległość
  41.   Distance = EchoTime / 58;
  42.  
  43.   // Sprawdzamy zakres pomiarowy
  44.   if (Distance >= MaximumRange || Distance <= MinimumRange)
  45.   {
  46.     Serial.println("Poza zakresem");  
  47.   } else  
  48.   {
  49.     // Jeśli poniżej 11cm zapalamy diodę czerwoną
  50.     // Jeśli powyżej 10cm zapalamy diodę zieloną
  51.     if (Distance < 11)
  52.     {
  53.       digitalWrite(Red, HIGH);      
  54.       digitalWrite(Green, LOW);
  55.     } else
  56.     {
  57.       digitalWrite(Red, LOW);      
  58.       digitalWrite(Green, HIGH);
  59.     }    
  60.        
  61.     Serial.print("Odleglosc: ");
  62.     Serial.println(Distance);
  63.   }
  64.  
  65.   // Opóźnienie kolejnego pomiaru
  66.   delay(100);
  67. }

Uruchomienie

Materiały dodatkowe

Karta katalogowa HC-SR04.pdf