Ultrazvukový snímač a Arduino Nano
Ultrazvukový senzor HC-SR04 používa sonar na určenie vzdialenosti k objektu. Tento snímač číta od 2 cm do 400 cm s presnosťou 0,3 cm, čo je dobré pre väčšinu amatérskych projektov.
Ultrazvukový senzor HC-SRO4

Popis :
- Napájanie: +5V DC
- Pokojový prúd: < 2mA
- Pracovný prúd: 15mA
- Efektívny uhol: <15°
- Dosahová vzdialenosť: 2 cm – 400 cm
- Rozlíšenie: 0,3 cm
- Uhol merania: 30 stupňov
- Spúšťací vstup Šírka impulzu: 10uS TTL impulz
- Výstupný signál ozveny: impulz TTL úmerný rozsahu vzdialenosti
- Rozmery: 45 x 20 x 15 mm
Ultrazvukový senzor používa sonar na určenie vzdialenosti od objektu.
- 1. Ultrazvukový vysielač (trig pin) vydáva vysokofrekvenčný zvuk (40 kHz).
- 2. Zvuk sa šíri vzduchom. Ak nájde predmet, odrazí sa späť do modulu.
- 3. Ultrazvukový prijímač (echo pin) prijíma odrazený zvuk (echo).
Čas medzi vysielaním a príjmom signálu nám umožňuje vypočítať vzdialenosť k objektu. Je to možné, pretože poznáme rýchlosť zvuku vo vzduchu. podľa vzorca :
vzdialenosť k objektu = ((rýchlosť zvuku vo vzduchu)*čas)/2
Rýchlosť zvuku vo vzduchu pri 20ºC (68ºF) = 343 m/s
Piny ultrazvukového snímača HC-SR04
VCC | Tento pin Napája senzor (+5V) |
Trig | Toto je spúšťací vstupný pin |
Echo | Výstupný pin ozveny |
GND | GND (zem) |
V tomto projekte ultrazvukový senzor číta a zapisuje vzdialenosť k objektu na sériovom monitore.Cieľom tohto projektu je pomôcť vám pochopiť, ako tento senzor funguje. Potom by ste mali byť schopní použiť tento príklad vo svojich vlastných projektoch.
Čo budeme potrebovať :
- Arduino Nano
- Senzor (HC-SR04)
- Nepájivé kontaktné pole
- Prepojovacie vodiče
Schéma zapojenia

- GND → GND
- VCC → 5V
- Trig → pin D11
- Echo → pin D9
Kód :
/*
Ultrasonic senzor Piny:
VCC: +5V(DC)
Trig : Trigger (Vstup) - Pin 11
Echo: Echo (Výstup) - Pin 9
GND: GND
*/
int trigPin = 11; // Trigger
int echoPin = 9; // Echo
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Senzor sa spúšťa impulzom HIGH s dĺžkou 10 alebo viac mikrosekúnd.
//Predtým urobte krátky NÍZKY pulz, aby ste zaistili čistý VYSOKÝ pulz:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Čítanie signálu zo snímača: VYSOKÝ impulz, ktorého
// trvanie je čas (v mikrosekundách) od odoslania
// pingu na príjem jeho ozveny od objektu.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// Konvertovať čas na vzdialenosť
cm = (duration/2) / 29.1; // Vydeľte číslom 29,1 alebo vynásobte číslom 0,0343
inches = (duration/2) / 74; // Vydeľte číslom 74 alebo vynásobte číslom 0,0135
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
Ako to funguje ?
Najprv vytvoríte premenné pre spúšťač a kolík ozveny s názvom trigPin a echoPin. Spúšťací pin je pripojený k digitálnemu pinu 11 a pin ozveny je pripojený k pinu 9 :
int trigPin = 11;
int echoPin = 9;
Môžete tiež vytvoriť tri premenné typu long: trvanie a palce. Premenná trvania ukladá čas medzi vysielaním a príjmom signálu. Premenná cm uloží vzdialenosť v centimetroch a premenná palce uloží vzdialenosť v palcoch.
long duration, cm, inches;
V setup() inicializujte sériový port s prenosovou rýchlosťou 9600 a nastavte spúšťací kolík(pin) ako OUTPUT a kolík(pin) echo ako INPUT.
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
V slučke () spustite senzor odoslaním impulzu HIGH s dĺžkou 10 mikrosekúnd. Predtým však vydajte krátky NÍZKY pulz, aby ste sa uistili, že dostanete čistý VYSOKÝ pulz:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Na získanie času prechodu zvukovej vlny používame funkciu pulseIn():
duration = pulseIn(echoPin, HIGH);
Potom vypočítame vzdialenosť k objektu, berúc do úvahy rýchlosť zvuku:
vzdialenosť = (čas cesty/2) x rýchlosť zvuku
Rýchlosť zvuku je: 343 m/s = 0,0343 cm/us = 1/29,1 cm/us
Musíme vydeliť čas cesty 2, pretože musíme vziať do úvahy, že vlna bola odoslaná, zasiahla objekt a potom sa vrátila k senzoru.
cm = (trvanie/2) / 29,1;
palce = (trvanie/2) / 74;
Nakoniec vytlačíme výsledky v sériovom monitore:
Serial.print(inches);
Serial.print(“in, “);
Serial.print(cm);
Serial.print(“cm”);
Serial.println();
Pridaj komentár