HC-SR04 Senzor
Tento program slouží na měření vzdálenost pomocí ultrazvukového modulu HC-SR04. Jedná se o kompaktní modul o velikosti velikosti cca 44x20mm, který je již samostatně funkční a není již potřeba připojovat další součástky.
Použitý hardware
IODA
HC-SR04
piezo
LED
nepájivé kontaktní pole
Schematické zapojení
Zapojení konektorů Senzoru:
5V Supply
Trigger Pulse Input
Echo Pulse Output
GND.
Trigger: spouštěcí signál impuls TTL(5V) >10us
Echo: výstupní signál TTL(5V) -> vzdálenost[cm] = doba_Echo[us] * 0.017315

Funkce
Ultrazvukový snímač vyvolává vysokofrekvenční zvukové vlny a zachytáva echo, které je získane odrazem od překážky. V programu se počíta časový interval mezi vyslaným a přijmutým signálem čím lze určit vzdálenost od objektu.
Code
Na začátu programu je potřeba definovat všechny pořebné proměnné a piny na které je připojený hardware.
#include "byzance.h"
Serial pc(SERIAL_TX, SERIAL_RX);
DigitalOut trigger(X02);
DigitalIn echo(X03);
Timer sonar;
int correction = 0;
int i;
void init(){
pc.baud(115200);
}
void loop(){
float distance = 0;
float i=0;
sonar.reset();
sonar.start();
while (echo==2) {};
sonar.stop();
trigger = 1;
sonar.reset();
wait_us(10.0);
trigger = 0;
while (echo==0) {};
sonar.start();
while (echo==1) {};
sonar.stop();
distance = (sonar.read_us())*0.017315;
pc.printf("%f",distance);
pc.printf("\n");
wait(0.2);
}
Po vyslání impulsu do modulu program počká na zpětné odeslání pulzu od modulu, kdy funkce Timer s názvem sonar nám vrátí potřebný počet mikrosekund.
sonar.reset();
sonar.start();
while (echo==2) {};
sonar.stop();
trigger = 1;
sonar.reset();
wait_us(10.0);
trigger = 0;
while (echo==0) {};
sonar.start();
while (echo==1) {};
sonar.stop();
S tímto číslem můžeme dále pracovat. Vezmeme v úvahu rychlost zvuku 346,3 m*s-1 a to při teplotě suchého vzduchu 25°C. To znamená, že za 1mikrosekundu urazí v metrech 346,3/1000000 což je 0,0003463 metru. Převedo na cm to je 0,03463cm/mikrosekundu. Vzhledem k tomu, že signál jde od čidla k předmětu, kde se odrazí a zase zpět, musíme tuto vzdálenost ještě vydělit číslem 2. Výsledek je takový že se vzdálenost bude rovnat počtem mikrosekund násobených číslem 0,017315. Výsledek zašleme na seriový port a uložíme ho do proměnné distance.
distance = (sonar.read_us())*0.017315;
Načtená hodnota se vypíše na seriovou linku
pc.printf("%f",distance);
Last updated