Operácie

Ultrazvukový radar s HC-SR04: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
StudentMIPS (diskusia | príspevky)
Riadok 17: Riadok 17:


== Analýza  a opis riešenia ==
== Analýza  a opis riešenia ==
Zariadenie je určené na meranie vzdialenosti prekážky pomocou ultrazvukového senzora HC-SR04. Ako riadiaca jednotka bola použitá vývojová doska Arduino Uno s mikrokontrolérom ATmega328P. Arduino zabezpečuje vyslanie spúšťacieho impulzu pre senzor, meranie dĺžky prijatého impulzu a následný výpočet vzdialenosti v centimetroch. Výsledok merania sa zobrazuje cez sériovú linku v počítači.
Zariadenie je určené na meranie vzdialenosti prekážky pomocou ultrazvukového senzora HC-SR04. Ako riadiaca jednotka bola použitá vývojová doska Arduino Uno s mikrokontrolérom ATmega328P. Arduino zabezpečuje ovládanie senzora, spracovanie nameraného časového impulzu a následný výpočet vzdialenosti v centimetroch. Výsledok merania sa zobrazuje cez sériovú linku v počítači.


Senzor HC-SR04 má štyri vývody: VCC, TRIG, ECHO a GND. Vývod VCC je pripojený na napájanie 5 V, vývod GND na zem. Vývod TRIG slúži na spustenie merania a je pripojený na digitálny výstup Arduina. Vývod ECHO je pripojený na digitálny vstup Arduina a jeho dĺžka impulzu zodpovedá času, za ktorý sa ultrazvukový signál odrazí od prekážky a vráti späť k senzoru.
Senzor HC-SR04 má štyri vývody: VCC, TRIG, ECHO a GND. Vývod VCC je pripojený na napájanie 5 V a vývod GND na zem. Vývod TRIG je pripojený na digitálny výstup Arduina a slúži na spustenie merania. Vývod ECHO je pripojený na digitálny vstup Arduina a prenáša časový impulz, ktorý sa ďalej spracúva v programe.
 
Pri riešení bol využitý časovač Timer1 mikrokontroléra ATmega328P. Timer1 slúži na presné meranie dĺžky impulzu na výstupe ECHO. Nameraná hodnota sa následne prepočíta na vzdialenosť v centimetroch a vypíše sa cez sériovú linku do terminálu v počítači.
=== Princíp merania ===
=== Princíp merania ===
Po privedení spúšťacieho impulzu na vstup TRIG začne senzor HC-SR04 meranie vzdialenosti. Senzor vyšle krátky ultrazvukový signál smerom k prekážke. Na výstupe ECHO sa vytvorí impulz, ktorého dĺžka zodpovedá času letu ultrazvukového signálu od senzora k prekážke a späť. Arduino túto dĺžku impulzu odmeria a zo známej rýchlosti šírenia zvuku vypočíta vzdialenosť. Keďže zvuk prejde dráhu tam aj späť, pri výpočte sa nameraný čas delí dvomi.
Meranie sa začne krátkym spúšťacím impulzom na pine TRIG. Tento impulz má dĺžku približne 10 µs. Po jeho prijatí senzor vyšle ultrazvukový signál a čaká na jeho odraz od prekážky. Počas tohto čakania nastaví výstup ECHO do logickej 1. Keď sa odrazený signál vráti späť, ECHO sa nastaví do logickej 0. Program preto meria čas medzi nábežnou a zostupnou hranou ECHO impulzu.
 
=== Výpočet vzdialenosti ===
=== Výpočet vzdialenosti ===
Ako sme už vyššie spomínali, meranie vzdialenosti je založené na meraní času, za ktorý sa ultrazvukový signál dostane od senzora k prekážke a po odraze späť k senzoru. Senzor HC-SR04 teda nemeria priamo vzdialenosť, ale čas trvania impulzu na výstupe ECHO.
Ako sme už vyššie spomínali, meranie vzdialenosti je založené na meraní času, za ktorý sa ultrazvukový signál dostane od senzora k prekážke a po odraze späť k senzoru. Senzor HC-SR04 teda nemeria priamo vzdialenosť, ale čas trvania impulzu na výstupe ECHO.

Verzia z 06:33, 4. jún 2026

Záverečný projekt predmetu MIPS / LS2026 - Werner Federmayer


Zadanie

Úlohou projektu bolo navrhnúť a naprogramovať ultrazvukový merač vzdialenosti s použitím senzora HC-SR04 a vývojovej dosky Arduino. Program má zabezpečiť vyslanie spúšťacieho impulzu na pin TRIG, odmeranie dĺžky impulzu na pine ECHO a následný výpočet vzdialenosti v centimetroch. Nameraná vzdialenosť sa zobrazuje cez sériovú linku.

Bloková schéma zariadenia na meranie vzdialenosti pomocou ultrazvukového senzora HC-SR04.


Literatúra:


Analýza a opis riešenia

Zariadenie je určené na meranie vzdialenosti prekážky pomocou ultrazvukového senzora HC-SR04. Ako riadiaca jednotka bola použitá vývojová doska Arduino Uno s mikrokontrolérom ATmega328P. Arduino zabezpečuje ovládanie senzora, spracovanie nameraného časového impulzu a následný výpočet vzdialenosti v centimetroch. Výsledok merania sa zobrazuje cez sériovú linku v počítači.

Senzor HC-SR04 má štyri vývody: VCC, TRIG, ECHO a GND. Vývod VCC je pripojený na napájanie 5 V a vývod GND na zem. Vývod TRIG je pripojený na digitálny výstup Arduina a slúži na spustenie merania. Vývod ECHO je pripojený na digitálny vstup Arduina a prenáša časový impulz, ktorý sa ďalej spracúva v programe.

Pri riešení bol využitý časovač Timer1 mikrokontroléra ATmega328P. Timer1 slúži na presné meranie dĺžky impulzu na výstupe ECHO. Nameraná hodnota sa následne prepočíta na vzdialenosť v centimetroch a vypíše sa cez sériovú linku do terminálu v počítači.

Princíp merania

Meranie sa začne krátkym spúšťacím impulzom na pine TRIG. Tento impulz má dĺžku približne 10 µs. Po jeho prijatí senzor vyšle ultrazvukový signál a čaká na jeho odraz od prekážky. Počas tohto čakania nastaví výstup ECHO do logickej 1. Keď sa odrazený signál vráti späť, ECHO sa nastaví do logickej 0. Program preto meria čas medzi nábežnou a zostupnou hranou ECHO impulzu.

Výpočet vzdialenosti

Ako sme už vyššie spomínali, meranie vzdialenosti je založené na meraní času, za ktorý sa ultrazvukový signál dostane od senzora k prekážke a po odraze späť k senzoru. Senzor HC-SR04 teda nemeria priamo vzdialenosť, ale čas trvania impulzu na výstupe ECHO.

Rýchlosť zvuku vo vzduchu je približne v = 343 m/s pri izbovej teplote. Túto hodnotu môžeme previesť na centimetre za mikrosekundu:

343 m/s = 34300 cm/s = 0,0343 cm/μs

Nakoľko celková dráha predstavuje cestu od senzora k prekážke aj späť. Skutočná vzdialenosť prekážky od senzora je preto iba polovica tejto dráhy:

​d = v * t / 2

Po dosadení rýchlosti zvuku v jednotkách cm/µs dostaneme:

d = (0,0343 · t) / 2

po úprave:

d = t / 58

kde t je čas impulzu ECHO v mikrosekundách a d je vzdialenosť v centimetroch.

V programe sa dĺžka impulzu Echo nemeria priamo v mikrosekundách, ale pomocou časovača ako počet tickov. Pri frekvencii mikrokontroléra 16 MHz a nastavenej preddeličke časovača 8 má jeden tick časovača dĺžku 0,5 µs. Ak označíme počet nameraných tikov ako N, potom čas impulzu je:

t = N * 0,5 μs

Po dosadení času vyjadreného pomocou počtu tikov dostaneme:

d = N * 0,5 / 58 = N / 116

Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami... Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu.

Celkový pohľad na zariadenie.

Schéma zapojenia

Na schéme zapojenia je znázornené pripojenie ultrazvukového senzora HC-SR04 k vývojovej doske Arduino Uno. Senzor je napájaný z 5 V výstupu Arduina a jeho vývod GND je pripojený na spoločnú zem. Vývod TRIG je pripojený na digitálny pin D9 a vývod ECHO je pripojený na digitálny pin D8. V programe je pin D9 nastavený ako výstup a pin D8 ako vstup.


Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

Schéma zapojenia.

Algoritmus a program

Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...


#include <avr/io.h>

int main(void)
{
  unsigned int measuredValue;

  while (1)
  {
    /*  relax  */  
  }

  return(0);
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Aplikácia.

Video:

Čo by som urobil inak

Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.


Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.