Open form

Pomiar odległości z wykorzystaniem Arduino i czujnika HC-SR04 lub US-015

Przedstawione czujniki umożliwiają pomiar odległości przy pomocy ultradźwięków. Czujnik wysyła falę, która po odbiciu od przeszkody wraca do niego. Obliczając czas między wysłaniem, a odebraniem impulsu jesteśmy w stanie określić odległość od obiektu.

 

Będziemy potrzebować następujące elementy:

 

Podłączenie czujnika z Arduino:

W celu obsługi czujnika z wykorzystaniem Arduino należy połączyć układ w następujący sposób:

 

Pin BH1750 Pin Arduino
VCC 5 V
GND GND
TRIG 2
ECHO

3

 

Schemat połączenie czujnika ultradźwiękowego z Arduino Uno.

Program do Arduino

W przykładzie został wykorzystany następujący kod:

 

  1. int Trig = 2; //pin 2 Arduino połączony z pinem Trigger czujnika
  2. int Echo = 3; //pin 3 Arduino połączony z pinem Echo czujnika
  3. int CM; //odległość w cm
  4. long CZAS; //długość powrotnego impulsu w uS
  5. void setup()
  6. {
  7. Serial.begin(9600); //inicjalizaja monitora szeregowego
  8. pinMode(Trig, OUTPUT); //ustawienie pinu 2 w Arduino jako wyjście
  9. pinMode(Echo, INPUT); //ustawienie pinu 3 w Arduino jako wejście
  10. Serial.println("Test czujnika odleglosci");
  11. }
  12. void loop()
  13. {
  14. pomiar_odleglosci(); //pomiar odległości
  15. Serial.print("Odleglosc: "); //wyświetlanie wyników na ekranie w pętli co 200 ms
  16. Serial.print(CM);
  17. Serial.println(" cm");
  18. delay(200);
  19. }
  20. void pomiar_odleglosci ()
  21. {
  22. digitalWrite(Trig, LOW); //ustawienie stanu wysokiego na 2 uS - impuls inicjalizujacy - patrz dokumentacja
  23. delayMicroseconds(2);
  24. digitalWrite(Trig, HIGH); //ustawienie stanu wysokiego na 10 uS - impuls inicjalizujacy - patrz dokumentacja
  25. delayMicroseconds(10);
  26. digitalWrite(Trig, LOW);
  27. digitalWrite(Echo, HIGH);
  28. CZAS = pulseIn(Echo, HIGH);
  29. CM = CZAS / 58; //szerokość odbitego impulsu w uS podzielone przez 58 to odleglosc w cm - patrz dokumentacja
  30. }

 

W celu obliczenia odległości od obiektu, czas odpowiedzi jest dzielony przez 58 (wg dokumentacji). Dlaczego akurat tyle? Ta wartość pochodzi ze wzoru:

 

CZAS / [1/(0.34 / 2 )/10]

 

  • wartość w nawiasie kwadratowym równa jest 58:
    • 0.34 - prędkość fali w m/ms (340 m/s) dzielona przez 2 (ponieważ fala przebyła drogę w dwie strony).
    • Dodatkowo wszystko dzielne przez 10, by zamienić milimetry na centymetry

 

Wynik programu możemy obejrzeć na monitorze szeregowym:

 

Zrzut ekranu szeregowego monitora.

zapraszamy do współpracy!