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.