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:

 

int Trig = 2;  //pin 2 Arduino połączony z pinem Trigger czujnika
int Echo = 3;  //pin 3 Arduino połączony z pinem Echo czujnika
int CM;        //odległość w cm
long CZAS;     //długość powrotnego impulsu w uS
 
void setup()
{
  Serial.begin(9600);                        //inicjalizaja monitora szeregowego
  pinMode(Trig, OUTPUT);                     //ustawienie pinu 2 w Arduino jako wyjście
  pinMode(Echo, INPUT);                      //ustawienie pinu 3 w Arduino jako wejście
   
  Serial.println("Test czujnika odleglosci");
}
  
void loop()
{
  pomiar_odleglosci();              //pomiar odległości
  Serial.print("Odleglosc: ");      //wyświetlanie wyników na ekranie w pętli co 200 ms
  Serial.print(CM);
  Serial.println(" cm");
  delay(200);
}
  
void pomiar_odleglosci ()
{
  digitalWrite(Trig, LOW);        //ustawienie stanu wysokiego na 2 uS - impuls inicjalizujacy - patrz dokumentacja
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH);       //ustawienie stanu wysokiego na 10 uS - impuls inicjalizujacy - patrz dokumentacja
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);
  digitalWrite(Echo, HIGH); 
  CZAS = pulseIn(Echo, HIGH);
  CM = CZAS / 58;                //szerokość odbitego impulsu w uS podzielone przez 58 to odleglosc w cm - patrz dokumentacja
}

 

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!