Ebben a cikkben az HC-SR04 ultrahangos távolságérzékelővel foglalkozunk. A szenzor használata viszonylag egyszerű, mivel nem igényel külön könyvtárakat, és a fejlesztőpanelhez való csatlakoztatáshoz mindössze két vezetékre van szükség.
-
Teszttábla HC-SR04 érzékelőkhöz2 245Ft (ÁFA nélkül 1 768Ft ) -
Tartó ultrahangos szenzorokhoz HC-SR04290Ft (ÁFA nélkül 228Ft ) -
HC-SR04 Ultrahangos távolságérzékelő645Ft (ÁFA nélkül 508Ft )
A működés elve
Az HC-SR04 ultrahangos modul két beépített ultrahangos átalakítót (transzducert) tartalmaz – egy adót és egy vevőt. A modul négyszögjelet generál az adó számára, amely kb. 40 kHz frekvenciájú ultrahangot bocsát ki. Az emberi fül legfeljebb 20 kHz-ig képes hangokat érzékelni, így ez a hang számunkra nem hallható. Az ultrahang a levegőben terjed, és ha akadályba ütközik, visszaverődik a modul felé. A másik, vevőként működő átalakító érzékeli a visszatérő ultrahangot, és az áramkör ezt logikai 1-es jellé alakítja a kimeneten. A hang oda-vissza megtett idejéből kiszámítható az akadály távolsága.

További részletekért ajánlott áttanulmányozni a modul adatlapját.
Az ultrahang kibocsátását a TRIG láb segítségével indítjuk, majd figyeljük, mennyi idő után érkezik vissza a jel a ECHO lábra.
Program és bekötés
Ahogy korábban is említettük, a működéshez nincs szükség külön könyvtárakra, csak egy kis matematikára.
A szenzor vezérléséhez két vezeték szükséges az alábbi bekötés szerint:

A kód:
//tento kód nám zabezpečí odmeranie vzdialenosti a zároveň ju vypíšeme na seriálový monitor
int triggerPin = 11; // Trigger pin
int echoPin = 12; // Echo pin
long trvanie;
int vzdialenosť;
void setup() {
Serial.begin(9600); //inicializácia komunikácie s PC
pinMode(triggerPin, OUTPUT); //definovanie pinu ako výstup
pinMode(echoPin, INPUT); //definovanie pinu ako vstup
}
void loop() {
// na veľmi krátky čas 10 mikrosekúnd spustíme ultrazvuk
digitalWrite(triggerPin, LOW);
delayMicroseconds(5);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
trvanie = pulseIn(echoPin, HIGH); //funkcia pulseIn() nám počká kým na pine echoPin bude signál a vráti nám hodnotu v mikrosekundách
// konverzia času na vzdialenosť
vzdialenost = trvanie * 0.0343 / 2;
Serial.print(vzdialenost); //výpis vzdialenosti
Serial.print("cm"); //výpis
Serial.println(); //prázdny riadok pre medzeru
delay(250); //chvíĺu medzi meraniami počkáme, konkrétne 250 milisekúnd
}A képlet magyarázata [távolság = időtartam × 0.0343 / 2]
Ahogy korábban említettük, a modul úgy működik, hogy elindítja az ultrahangot, majd megvárja, amíg a jel visszatér a levegőn keresztül. Először tehát az utazási időt megszorozzuk a hangsebességgel a levegőben, ami 343 méter másodpercenként. A mért idő azonban mikroszekundumban van megadva, ezért ezt át kell váltani: 343 m/s = 0,000343 méter mikroszekundumonként.Mivel a végeredményt centiméterben szeretnénk megkapni, megszorozzuk 100-zal: 0,000343 × 100 = 0.0343
Ezután ne felejtsük el, hogy a jel oda-vissza megtette az utat, tehát az eredményt még kettővel osztjuk, mivel minket csak az „oda” irányú távolság érdekel.
További olvasnivaló és források
- https://sk.wikipedia.org/wiki/R%C3%BDchlos%C5%A5_zvuku
- https://www.makerguides.com/wp-content/uploads/2019/02/HCSR04-Datasheet.pdf
- https://www.arduinoplatform.com/detecting-distance-with-hc-sr04-sensor/
- http://electronoobs.com/eng_arduino_tut80.php
