Modul s prodejním názvem HC-SR04 funguje jako ultrazvukový měřič vzdálenosti pro Arduino a další desky. Na desce samotné se nachází jeden ultrazvukový vysílač, jeden přijímač a dále integrované obvody, které zajišťují správnou funkci. Tento ultrazvukový měřič vzdálenosti se používá často u robotů a obecně tam, kde potřebujeme s poměrně velkou přesností zkoumat prostor před senzorem.

Tento modul umožňuje spolehlivou detekci v rozmezí 2 centimetrů až 4 metrů, nejpřesnější je však cca první 2 metry od modulu. Musíme také brát v potaz pracovní úhel detekce, který je okolo 15 stupňů. Dalším důležitým parametrem je také konstanta pro převod naměřené odezvy na vzdálenost.

Celá funkce tohoto modulu spočívá v tom, že pomocí Arduino desky sepneme vstup modulu Trig po dobu 5 mikrosekund, ultrazvukový vysílač vyšle vysokofrekvenční pulz a my poté čekáme na jeho zachycení ultrazvukovým přijímačem. Poté přečteme délku impulzu z výstupu modulu Echo a tu převedeme pomocí zmíněné konstanty na vzdálenost v centimetrech. Tato konstanta se počítá tak, že vezmeme rychlost zvuku při 20° C (343 m/s), podělíme ji 10 000, abychom dostali cm/us a poté ještě podělíme 2, protože naměřená vzdálenost odpovídá délce k překážce a zpět. Z obracené hodnoty výsledku dostaneme po zaokrouhlení číslo 58,31, kterým vždy vydělíme získaný čas. Pokud budete chtít měřit vzdálenost v jiné teplotě či dokonce atmosféře, budete si muset dohledat rychlost zvuku pro váš případ například pomocí fyzikálních tabulek.

Arduino měřič vzdálenosti ultrazvukový

Tento modul s ultrazvukovým měřičem vzdálenosti má celkem 4 propojovací piny. Připojíme VCC na napájecí napětí +5V, GND na zem, Trig na D4 a Echo na D5. Využít však můžeme samozřejmě i jiné datové piny.

Zapojení s ultrazvukovým měřičem vzdálenosti

Níže uvedený ukázkový kód obsahuje nejprve nastavení čísel pinů pro připojení modulu, dále inicializaci proměnných pro uložení dat a poté podprogram setup s nastavením směru připojených pinů a rychlosti sériové linky. V nekonečné smyčce loop pak vždy připojíme Trig na zem, poté pošleme po dobu 5 mikrosekund kladný pulz a znovu připojíme na zem. Následně na pinu Echo načteme délku pulzu odezvy a přes výše vypočtenou konstantu získáme vzdálenost v centimetrech a tu si vytiskneme po sériové lince.

// Arduino Měřič vzdálenosti ultrazvukový

// piny pro připojení Trig a Echo z modulu
int pTrig = 4;
int pEcho = 5;
// inicializace proměnných, do kterých se uloží data
long odezva, vzdalenost;
 
void setup() {
  // nastavení pinů modulu jako výstup a vstup
  pinMode(pTrig, OUTPUT);
  pinMode(pEcho, INPUT);
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);
}

void loop()
{
  // nastavíme na 2 mikrosekundy výstup na GND (pro jistotu)
  // poté nastavíme na 5 mikrosekund výstup rovný napájení
  // a poté opět na GND
  digitalWrite(pTrig, LOW);
  delayMicroseconds(2);
  digitalWrite(pTrig, HIGH);
  delayMicroseconds(5);
  digitalWrite(pTrig, LOW);
  // pomocí funkce pulseIn získáme následně
  // délku pulzu v mikrosekundách (us)
  odezva = pulseIn(pEcho, HIGH);
  // přepočet získaného času na vzdálenost v cm
  vzdalenost = odezva / 58.31;
  Serial.print("Vzdalenost je ");
  Serial.print(vzdalenost);
  Serial.println(" cm.");
  // pauza 0.5 s pro přehledné čtení
  delay(500);
}

Jako výsledek tedy dostáváme například tento výpis:

Vzdalenost je 8 cm.
Vzdalenost je 55 cm.
Vzdalenost je 58 cm.
Vzdalenost je 18 cm.
Vzdalenost je 3271 cm.
Vzdalenost je 3 cm.
Vzdalenost je 3247 cm.
Vzdalenost je 4 cm.

Jak jsem již zmínil v úvodu, tento modul není příliš přesný u vzdáleností větších jak 2 metry a může se stát, že při velké vzdálenosti dostaneme hned po sobě informaci o velké a malé vzdálenosti, jak si můžete všimnout na konci ukázky výpisu. S tímto jevem je tedy nutné počítat a případně ho programově ošetřit.

Seznam použitých komponent:

http://arduino-shop.cz/arduino/846-arduino-meric-vzdalenosti-ultrazvukovy.html

http://arduino-shop.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://arduino-shop.cz/arduino/844-arduino-nepajive-pole.html

http://arduino-shop.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html

FB gp tw

Další podobné články