27. októbra 2021 Návod – ultrazvukový senzor HC-SR04

Návod – ultrazvukový senzor HC-SR04

V nasledujúcom článku sa povenujeme ultrazvukovému senzoru vzdialenosti HC-SR04. Používanie senzora je pomerne jednoduché, nakoľko nepotrebujeme žiadne knižnice a na pripojenie k vývojovej doske stačia 2 kábliky.

Princíp fungovania

Ultrazvukový modul HC-SR04 má na doske zabudované 2 kusy ultrazvukových transducerov. Jedná sa o vysielací a prijímací ultrazvukový reproduktor. Modul generuje štvorcový signál pre vysielací transducer, ktorý generuje ultrazvuk približne s frekvenciou 40KHz. Ľudské ucho počuje zvukové signály len do frekvencie 20KHz, takže pre nás je zvuk nepočuteľný. Tento ultrazvuk cestuje priestorom a v prípade, že sa v blízkosti nachádza prekážka, odrazí sa od nej naspäť smerom k modulu. Druhý prijímací transducer ultrazvuk deteguje a pomocou zabudovaných komponentov na doske sa ultrazvuk interpretuje na elektrický signál logickej 1 na výstupe. Podľa toho, ako dlho zvuku trvalo cestovanie priestorom vieme odhadnúť, v akej vzdialenosti sa prekážka nachádza.

Detecting distance with HC-SR04 sensor - Arduino Platform

Pre viac informácií odporúčame preštudovať datasheet.

Spustenie ultrazvuku vieme ovládať pomocou pinu TRIG a následne teda sledujeme, za aký čas sa nám objaví signál na pine ECHO.

Program a zapojenie

Ako bolo spomínané vyššie, na správne fungovanie nepotrebujeme žiadne knižnice, stačí nám trošku matematiky.

Pre ovládanie senzora použijeme 2 kábliky podľa zapojenia:

HC SR04

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
}

Vysvetlenie vzorca [vzdialenost = trvanie * 0.0343 / 2;]

Ako sme spomínali vyššie, modul funguje tak, že spustí ultrazvuk a čaká, kým sa nám signál vráti cez priestor naspäť. Najskôr teda vynásobíme trvanie tohto cestovania rýchlosťou zvuku vo vzduchu, teda 343 metrov za sekundu. My však máme nameraný časv mikrosekundách, takže keď to premeníme je to 0.000343 metrov za mikrosekundu. Okrem toho potrebujeme centimetre takže *100 = 0.0343.

Potom myslime na to, že signál vlastne cestoval tam a späť, takže ešte musíme vydeliť výsledok dvomi (my chceme len vzdialenosť cesty “tam”).

Ďalšie čítanie a zdroje

  • 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

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *