Articles

hogyan kell használni a HC-SR04 ultrahangos Távolságérzékelőt Arduino

a HC-SR04 egy olcsó, könnyen használható ultrahangos távolságérzékelő, 2-400 cm tartományban. Gyakran használják a robotok és automatizálási projektek akadálymentesítésében. Ebben az oktatóanyagban megtudhatja, hogyan működik az érzékelő, hogyan kell használni az Arduino-val.

5 példát tartalmaztam egy kapcsolási rajzzal és kóddal, hogy elkezdhess kísérletezni az érzékelővel., Először egy olyan példát fogunk megnézni, amely nem használ Arduino könyvtárat. Ezután megmutatom, hogyan használhatja az Újping könyvtárat egy kompaktabb kód létrehozásához.

az olcsó ultrahangos távolság / közelség érzékelők nagyszerűek, de egyes projektekben szükség lehet egy vízálló érzékelőre, például a JSN-SR04T-re vagy egy infravörös érzékelőre, amelyet nem befolyásol a hőmérsékletváltozás.,on

20×4 character I2C LCD (optional) × 1 Amazon
AliExpress DHT11 sensor (optional) × 1 Amazon

Software

Arduino IDE

Makerguides.,com egy résztvevő az Amazon-Szolgáltatások KFT Munkatársai Program, egy affiliate hirdetési program célja, hogy egy olyan helyeket keresni, hirdetési díjak a reklám -, illetve összekötő termékek Amazon.com.

Hogyan működik az ultrahangos távolság érzékelő munka?

az ultrahangos érzékelők úgy működnek, hogy hanghullámokat bocsátanak ki olyan frekvenciával, amely túl magas ahhoz, hogy az ember hallja. Ezek a hanghullámok körülbelül 343 m/s sebességgel haladnak a levegőben., Ha van egy tárgy az érzékelő előtt, akkor a hanghullámok visszaverődnek, az ultrahangos érzékelő vevője pedig észleli őket. A hanghullámok küldése és fogadása között eltelt idő mérésével kiszámítható az érzékelő és az objektum közötti távolság.

ultrahangos távolságérzékelők működési elve. Forrás: https://www.maxbotix.com/

20°C-on a hangsebesség nagyjából 343 m/s vagy 0,034 cm/µs., Tegyük fel, hogy a hanghullámok küldése és fogadása közötti idő 2000 mikroszekundum. Ha megsokszorozza a hangsebességet a megtett hanghullámok idejével, akkor megkapja azt a távolságot, amelyet a hanghullámok utaztak.

távolság = sebesség x idő

de nem ez az eredmény, amit keresünk. Az érzékelő és a tárgy közötti távolság valójában csak a fele ennek a távolságnak, mivel a hanghullámok az érzékelőtől az objektumig, majd vissza az objektumtól az érzékelőig terjedtek. Tehát meg kell osztania az eredményt kettővel.,

Távolság (cm) = hangsebesség (cm/µs) × Idő (µs) / 2

tehát a példa ez lesz:

Távolság (cm) = 0.0343 (cm/µs) × 2000 (µs) / 2 = 34.3 cm

Hőmérséklet-függése a hangsebesség

A hang sebessége valójában erősen függ a hőmérséklettől, valamint kisebb mértékben, a páratartalom, a levegő. A Wikipedia szerint a hang sebessége körülbelül 0,6 m/s / Celsius fokkal nő., A legtöbb esetben 20°C-nál tudod csak használni, 343 m/s, de ha azt szeretnénk, hogy minél több pontos adatokat, akkor lehet számolni a hang sebessége a következő képlet adja meg:

V (m/s) = 331.3 + (0.606 × T)

V = hang Sebessége (m/s)
T = Hőmérséklet (°C)

Ez a képlet nem tartalmazza a páratartalmat, mivel a hatás a sebesség, a hang, csak nagyon kicsi.

Az alábbiakban talál egy bemutatót arról, hogyan kell használni a DHT11 hőmérséklet-és páratartalom-érzékelőt a hangsebesség kalibrálásához, valamint pontosabb távolság-leolvasást a HC-SR04 segítségével.,

hogyan működik a HC-SR04

a HC-SR04 érzékelő elején két ezüst henger található (ultrahangos jelátalakítók), az egyik a hanghullámok adója, a másik a vevő. Annak érdekében, hogy az érzékelő hangrobbanást generáljon, a Trig csapot legalább 10 µs-ra magasra kell állítania. Az érzékelő ezután 8 ciklusú ultrahangot hoz létre 40 kHz-en.

Ez a hangrobbanás a hangsebességgel halad, visszapattan, és az érzékelő vevője fogadja. Az Echo pin ezután kiadja azt az időt, amikor a hanghullámok mikroszekundumban haladtak.,

használhatja a pulseIn() funkciót az Arduino kódban, hogy elolvassa az impulzus hosszát az Echo tűből. Ezután a fent említett képlet segítségével kiszámíthatja az érzékelő és az objektum közötti távolságot.,ncy

40 kHz Mérési tartomány 2 – 400 cm Felbontás 3 mm Mérési szög 15 fok Trigger bemeneti jelet 10 µs magas pulzus Költség Ellenőrizze ár

további információért tekintse meg az adatlapot az alábbi:

Vezeték – Összekötő HC-SR04, hogy Arduino UNO

A kapcsolási rajz mutatja meg, hogyan kell csatlakoztatni a HC-SR04 érzékelőt, hogy az Arduino.,

HC-SR04 a Arduino kapcsolási rajz

A kód alábbi példák használata a digitális pin 2 3 a ravaszt, echo pin kódot, illetve, de természetesen meg lehet változtatni, hogy ez bármilyen digitális pin akarsz.,C-SR04 Connections

HC-SR04 Arduino
VCC 5 V
Trig Pin 2
Echo Pin 3
GND GND

Example code for HC-SR04 with Arduino

Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Az Arduino IDE segítségével feltöltheti a következő példakódot az Arduino-ba. Ezután elmagyarázom neked, hogyan működik a kód.

hogyan működik a kód

először a trigger pin és az echo pin definiálva van. trigPinés EchoPin. A trigger pin a digital pin 2-hez, az echo pin pedig az Arduino digitális pin 3-hoz csatlakozik.

a#define utasítás egy név állandó értékének megadására szolgál., A fordító a program összeállításakor helyettesíti az állandó hivatkozásokat a meghatározott értékkel. Tehát mindenütt, ahol megemlíti a trigPin, a fordító a program összeállításakor a 2-es értékkel helyettesíti.

// Define Trig and Echo pin:#define trigPin 2#define echoPin 3

ezután két változót definiáltam: duration és distance. Az időtartam a hanghullámok küldése és fogadása közötti időt tárolja. A távolságváltozót a számított távolság tárolására használják.,

// Define variables:long duration;int distance;

a setup() – ban a trigpin kimenetként, az echoPin pedig bemenetként történő beállításával kezdődik. Ezután inicializálja a soros kommunikációt 9600 átviteli sebességgel. Később megjelenik a mért távolság a Soros monitoron, amely elérhető a Ctrl+Shift+M vagy eszközök > Soros Monitor. Ellenőrizze, hogy az átviteli sebesség 9600-ra van-e állítva a Soros monitoron.

a loop() – ban az érzékelőt úgy indítja el, hogy a trigPin magas értéket állít be 10 µs-re., Ne feledje, hogy a tiszta jel eléréséhez a trigPin törlésével kezdje el, ha 5 mikroszekundumra alacsonyra állítja.

ezután el kell olvasnia az echoPin által küldött impulzus hosszát. Ehhez a pulseIn() függvényt használom. Ez a funkció arra vár, hogy a pin menni, ALACSONY, MAGAS, időzítés elindul, majd megvárja a pin menni ALACSONY, megáll az időzítés.

ezután kiszámíthatja a távolságot a bemutató bevezetésében említett képlet segítségével.

végül a számított távolság a Soros monitoron van nyomtatva.,

példakód HC-SR04 Arduino és NewPing könyvtár

A Tim Eckel által írt NewPing könyvtár számos ultrahangos távolságérzékelővel használható. A könyvtár legújabb verziója letölthető itt bitbucket.org. előfordulhat, hogy az alábbi kód, amely a NewPing könyvtárat használja, sokkal rövidebb, mint a korábban használt kód. Ezen kívül, az Újping könyvtár nem tartalmaz néhány más szép funkciók. Ez lehetővé teszi, hogy állítsa be a maximális távolság olvasni, akkor nem lag egy teljes másodpercig, ha nincs visszhang érkezik, és van egy beépített medián szűrő.,

telepítheti a könyvtárat a Sketch > Könyvtár > Add.ZIP könyvtár az Arduino IDE.

a könyvtár tartalmaz néhány példát, amelyeket használhat, de módosítania kell őket, hogy megfeleljen a hardver beállításának. Az alábbiakban egy módosított példakódot tartalmaztam, amely ugyanazzal a huzalozási beállítással használható, mint korábban.

használhatja a distance = sonar.ping_cm() vagy distance = sonar.ping_in() is, amely a mért távolságot teljes centiméterben vagy hüvelykben adja vissza., Ezzel a funkcióval nem kell időtartammérést végezni, és kiszámolni a távolságot.

az ultrahangos érzékelők összekapcsolása 3 tűs módban

az Újping könyvtár megkönnyíti az ultrahangos érzékelőkkel való érintkezést, miközben csak 1 I / O pin-t használ. Ez hasznos lehet, ha nagyon kevés I/O csap áll rendelkezésre, vagy ha 3 tűs ultrahangos érzékelőt szeretne használni, mint például a Parallax Ping.

3 tűs beállítás (GND, 5V és SIG) létrehozásához mind a trigger pin-kódot, mind az echo pin-kódot az Arduino ugyanazon digitális pin-kódjához kell csatlakoztatnia., A kódban az egyetlen dolog, amit meg kell változtatnia, a 6-7 sor, amely ugyanazt a pin-kódot határozza meg mind a trigPin, mind az echoPin esetében. Például digitális pin 2.

//Define Trig and Echo pin#define trigPin 2#define echoPin 2

hogyan kell használni ping_median() digitális szűrő

a legfontosabb dolog, amit szeretek a NewPing könyvtár, hogy van egy beépített medián szűrő. Ez a szűrő nagymértékben javíthatja a HC-SR04 leolvasások pontosságát. A ping_median() függvény számos időtartammérést vesz igénybe egymás után, eldobja a tartományon kívüli értékeket, majd átlagolja a fennmaradó értékeket., Alapértelmezés szerint 5 leolvasást vesz igénybe, de megadhatja, hogy hány kell. Cserélje ki a 19-es vonalat az alábbi vonalakra.

int iterations = 5;duration = sonar.ping_median(iterations);

példakód HC-SR04 I2C LCD-vel és Arduino

a mért távolság megjelenítéséhez egy 2004-es vagy 1602-es I2C LCD-n csak annyit kell tennie, hogy a következő kapcsolatokat hozza létre, és töltse fel az alábbi kódot. A HC-SR04 érzékelő ugyanúgy csatlakozik, mint korábban.

HC-SR04 Arduino és I2C LCD kapcsolási rajzokkal.,

I2C LCD Connections

I2C LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., Egy Arduino UNO az R3 elrendezéssel (1.0 pinout), az SDA (data line) és az SCL (clock line) tűs fejlécekkel is rendelkezik az AREF pin közelében. További részletekért ellenőrizze az alábbi táblázatot.,f43445″>

Arduino Uno A4 A5 Arduino Nano A4 A5 Arduino Micro 2 3 Arduino Mega 2560 20 21 Arduino Leonardo 2 3 Arduino Due 20 21
I2C pin locations for different Arduino boards

The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Győződjön meg róla,hogy telepítve van ez a pontos könyvtár! Ez magában foglalja a vezetéket is.h könyvtár, amely lehetővé teszi az I2C eszközökkel való kommunikációt. Ennek a könyvtárnak előre telepítve kell lennie az Arduino IDE-vel.

Ha többet szeretne megtudni az I2C LCD vezérléséről az Arduino segítségével, Itt megtekintheti a teljes bemutatót.

  • hogyan lehet irányítani egy karaktert I2C LCD Arduino

vegye figyelembe, hogy 20 x 4 LCD kijelzőt használtam. Ha van egy másik méretű LCD (16 x 2 is gyakori) meg kell változtatni vonal 20 LiquidCrystal_I2C lcd(0x27,16,2);., Ha az LCD nem rendelkezik az alapértelmezett I2C címmel, 0x27, nézd meg a teljes I2C bemutatót, ahol elmagyarázom, hogyan lehet megtudni, mi a cím.

HC-SR04 példakód DHT11 hőmérsékletérzékelővel és Arduino

mint korábban említettük, a hang sebessége erősen függ a levegő hőmérsékletétől. Ha nagy távolságokat (3-4 m) szeretne mérni, jó ötlet lehet DHT11 vagy DHT22 hőmérséklet-és nedvességérzékelőt hozzáadni a beállításhoz. Ez lehetővé teszi a hangsebesség valós időben történő kalibrálását, ezáltal növelve a mérések pontosságát.,

DHT11 érzékelő hozzáadása nagyon egyszerű. Az alábbi kapcsolási rajz megmutatja, hogy mely csatlakozásokat kell elvégeznie. Vegye figyelembe, hogy DHT11-et használok egy kitörési táblával, tehát csak 3 csapot kell bekötnöm. Ügyeljen arra, hogy ellenőrizze az érzékelő címkéjét, a csapok sorrendje a gyártótól függően eltérő lehet. A HC-SR04 érzékelő ugyanúgy csatlakozik, mint korábban.

HC-SR04 Arduino és DHT11 kapcsolási rajzokkal.,

DHT11 Connections

DHT11 Arduino
VCC (+) 5 V
Signal (s) Pin 4
GND (-) GND

The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Ez a könyvtár csak akkor működik, ha telepítve van az Adafruit_Sensor könyvtár is, amely szintén elérhető a GitHub-on. A két könyvtárat az alábbi gombokra kattintva is letöltheti:

a kód mező jobb felső sarkában található gombra kattintva másolhatja a kódot.

HC-SR04 példakód DHT11 és I2C LCD

HC-SR04 Arduino, DHT11 és I2C LCD kapcsolási rajzokkal.

az alábbi kód a fenti 3 példa kombinálására használható., Megjeleníti mind a hőmérsékletet, a hangsebességet, mind a mért távolságot az LCD-n.

HC-SR04 méretek

Az alábbiakban megtalálhatja a HC-SR04 ultrahangos érzékelő méreteit. Észrevettem, hogy vannak kis különbségek a gyártók között, ezért azt javaslom, hogy duplán ellenőrizze a saját érzékelőjét.

HC-SR04 méretek

HC-SR04 CAD

létrehoztam a HC-SR04 ultrahangos érzékelő alapvető CAD rajzait hogy lehet letölteni az alábbiakban.,

következtetés

ebben a cikkben megmutattam, hogyan működik a HC-SR04 ultrahangos távolságérzékelő, és hogyan lehet használni az Arduino-val. Remélem hasznosnak és informatívnak találta. Ha igen, kérjük, ossza meg egy barátjával, aki szintén szereti az elektronikát!

személyes projekt: néhány hónappal ezelőtt egy interaktív faltelepítést építettem néhány barátommal. Körülbelül 30 ultrahangos távolságérzékelőt használtunk a fal előtt sétáló emberek észlelésére. A falon fények és hanghatások voltak, amelyek attól függően változtak, hogy milyen messze álltak az emberek.,

fotó: Guus Schoonewille

szeretném tudni, hogy milyen projekteket tervez (vagy már épített) a HC-SR04 távolságérzékelővel. Ha bármilyen kérdése, javaslata van, vagy ha úgy gondolja, hogy a dolgok hiányoznak ebben a bemutatóban, kérjük, hagyjon megjegyzést alább.