Ultrazvukový modul pro měření vzdálenosti obsahuje měřící senzor HY-SRF05. Tento modul umožňuje komunikaci s Arduinem pomocí dvou datových vodičů a pracuje na napájecím napětí 5 V. Co se týká proudového odběru, tak v klidu odebírá modul okolo 2 mA, zatímco při měření se můžeme dostat špičkově až na 40 mA. Měřící senzor funguje na principu vysílání a zpětné detekce signálu na frekvenci 40 kHz a tento typ pracuje s měřícím rozsahem 2 cm až cca 4,5 m. Z vlastního měření pak mohu potvrdit, že v rozsahu 3 cm až 2 m funguje modul velice přesně. Ale na větší vzdálenost už musíme počítat s tím, že nám může vzniknout zkreslení díky měřící úhlu cca 45 stupňů.

Ultrazvukový měřič vzdálenosti HY-SRF05

Pro úspěšné propojení měřícího modulu HY-SRF05 s Arduinem stačí propojit celkem čtyři vodiče. Propojíme VCC s 5 V Arduina, Trig s pinem D3, Echo s pinem D4 a GND se zemí Arduina. Co se týká datových pinů Trig a Echo, lze využít také jiné volné piny, ale je nutné tuto volbu také provést na začátku programu.

Schéma zapojení Ultrazvukového měřiče vzdálenosti HY-SRF05

Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu NewPing, návod, jak na to, je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, nastavení propojovacích pinů a definování maximální měřené vzdálenosti, která je v tomto případě 450 cm. V dalším kroku provedeme inicializaci měřícího modulu z knihovny a v podprogramu setup zahájíme komunikaci po sériové lince.
Na začátku nekonečné smyčky loop načteme do nové proměnné data o vzdálenosti mezi senzorem a předmětem. Poté po krátké pauze zkontrolujeme pomocí funkce if hodnotu načtené proměnné. Pokud je tato hodnota větší než nula, máme v měřícím rozsahu nějaký předmět, a proto v následujícím kódu provedeme pomocí funkce for změření vzdálenosti pětkrát po sobě. Přičemž při každém měření uložíme výsledek do pomocné proměnné a pro získání průměru za posledních pět měření následně vydělíme naměřený součet pětkou. Poté už jen vytiskneme informace po sériové lince. Pokud by ale začáteční kontrola zjistila v proměnné hodnotu nula, jedná se o měření mimo měřící rozsah či špatné zapojení senzoru, a proto pouze vytiskneme informaci po sériové lince a po pauze půl vteřiny přejdeme na nové měření.

// Ultrazvukový modul HY-SRF05 pro měření vzdálenosti

// připojení potřebné knihovny
#include <NewPing.h>
// nastavení propojovacích pinů
#define pinTrigger    3
#define pinEcho       4
#define maxVzdalenost 450
// inicializace měřícího modulu z knihovny
NewPing sonar(pinTrigger, pinEcho, maxVzdalenost);

void setup() {
  // zahájení komunikace po sériové lince
  Serial.begin(9600);
}

void loop() {
  // načtení vzdálenosti v centimetrech do vytvořené proměnné vzdalenost
  int vzdalenost = sonar.ping_cm();
  // pauza před dalším měřením
  delay(50);
  // pokud byla detekována vzdálenost větší než 0,
  // provedeme další měření
  if (vzdalenost > 0) {
    vzdalenost = 0;
    // pro získání stabilnějších výsledků provedeme 5 měření
    // a výsledky budeme přičítat do proměnné vzdalenost
    for (int i = 0; i < 5; i++) {
      vzdalenost += sonar.ping_cm();
      delay(50);
    }
    // v proměnné vzdálenost máme součet posledních 5 měření
    // a musíme tedy provést dělení 5 pro získání průměru
    vzdalenost = vzdalenost / 5;
    // vytištění informací po sériové lince
    Serial.print("Vzdalenost mezi senzorem a predmetem je ");
    Serial.print(vzdalenost);
    Serial.println(" cm.");
  }
  // pokud byla detekována vzdálenost 0, je předmět mimo měřící rozsah,
  // tedy příliš blízko nebo naopak daleko
  else {
    Serial.println("Vzdalenost mezi senzorem a predmetem je mimo merici rozsah.");
    delay(500);
  }
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem vzdálenosti HY-SRF05 dostaneme například tento výsledek:

Vzdalenost mezi senzorem a predmetem je 24 cm.
Vzdalenost mezi senzorem a predmetem je 20 cm.
Vzdalenost mezi senzorem a predmetem je 16 cm.
Vzdalenost mezi senzorem a predmetem je 13 cm.
Vzdalenost mezi senzorem a predmetem je 10 cm.
Vzdalenost mezi senzorem a predmetem je 9 cm.
Vzdalenost mezi senzorem a predmetem je 7 cm.
Vzdalenost mezi senzorem a predmetem je 3 cm.

Ultrazvukový modul pro měření vzdálenosti je praktickým měřícím modulem, který může najít vhodné uplatnění v projektech, kde nám jde o detekci předmětů či měření vzdálenosti. Může tedy nalézt uplatnění v projektech s vlastním zabezpečením, detekcí prostoru pro roboty či jako parkovací senzor. Jako malá nevýhoda pak může být minimální detekovatelná vzdálenost 2-3 cm nebo poměrně velký detekční úhel.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html

https://dratek.cz/arduino/1735-meric-vzdalenosti-ultrazvukovy-5pin-hy-srf05-pro-arduino-1502180852.html

FB tw

Další podobné články