Arduino: Ultrahangos Range Finder HC-SR04. Ultrahangos rangeFinder HC-SR04 - mérőberendezések - ultrahangos távolságmérő szerszámok mikrokontrollerrel saját kezével
Bruno Gavand.
A projekt, amelyben az ultrahangos érzékelő egyszerű és olcsó megoldása a távolság mérésére a Társaság mikrokontroller PIC1677A mikrokontroller, de a felhasználók alapján történik forrás Más mikrokontrollerekhez igazítható. Az érzékelő beágyazható egyéni fejlesztésekbe és eszközökbe: jelenlét detektorok, robotok, parkoló rendszerek, távolságmérő eszközök stb.
Megkülönböztető tulajdonságok:
- kis számú külső alkatrész;
- kódméret 200 bájt;
- munkatávolságok tartománya: 30 cm - 200 cm;
- mérési pontosság ± 1 cm;
- jelzés a mérési határértékek elhagyásakor.
Mint tudod, a levegő hangsebessége körülbelül 340 m / s. Így az ultrahangos érzékelő elve 40 kHz-es frekvenciájú ultrahangos impulzust küld, és nyomon követi a visszavert jelet (ECHO). Természetesen a hallható hang, de az ultrahangos érzékelő képes meghatározni a visszavert impulzust. Következésképpen, az impulzus és a visszavert ultrahangjel időtartamának ismerete, a távolságot kaphatjuk. Kétre oszlik, a távolság az ultrahangos érzékelőtől az első akadályra kerülünk, ahonnan a jel tükröződik.
A készülék piezokeramikus ultrahangos emitter MA40B8S és egy piezokeramikus ultrahangos érzékelő MA40B8R nyitott típus. A fő paraméterek az alábbi táblázatban jelennek meg.
Eszköz | Célja | Frekvencia | Fókusz Grad. |
Kapacitás, Pf |
Vidék érzékelés M. |
Bejárat feszültség, Max, B. |
MA40B8S. | Kibocsátó | 40 kHz | 50 (szimmetrikus) | 2000 | 0.2 … 6 | 40 |
MA40B8R | Érzékelő | 40 kHz | 50 (szimmetrikus) | 2000 | 0.2 … 6 | — |
A teszteléshez egy vállalat debug platformot alkalmaztak.
A felhasználó azonban használhatja mikrokontroller képamely legalább egy csatorna ADC és egy PWM csatorna van.
Az ultrahangos érzékelő koncepciója
A radiátorot a BD135 tranzisztor vezérli. Az 1N4007 diódát a tranzisztor védelmére használják a fordított feszültségről. A tranzisztor és a rezonáns lánc használata miatt, amely képződik párhuzamos befogadás Az emitter által alkotott L1 330 μH-os kondenzátor, az emitter tápfeszültsége körülbelül 20 V lesz, amely 200 cm-ig terjedő detektálási tartományt biztosít. Érdemes megjegyezni, hogy az emitter közvetlenül vezérelhető a mikrokontroller kimenetéből , de ebben az esetben a távolságtartomány nem haladja meg az 50 cm-t.
Az érzékelő közvetlenül az ADC mikrokontrollerhez van csatlakoztatva (PIC16F877A - 1. csatorna 1 ADC), az érzékelővel párhuzamosan az ütközéshez szükséges ellenállás szükséges az impedancia megegyezéséhez.
A kezdethez ultrahangos lendületet kell küldeni. A 40 kHz frekvenciájú jel könnyen előállítható mikrokontroller hardverrel. Az érzékelőtől származó visszavert jel az ADC-be lép, az ADC-engedély 4 mV, ami elegendő ahhoz, hogy elolvassa az adatokat az érzékelőből, és a további komponensekre nincs szükség.
Az ultrahangos érzékelő által benyújtott tábla megjelenése
Ez az érzékelő a legegyszerűbb megoldás, ezért számos hátránya van: egy ultrahangos vevőkészülék kis rezgése helytelen méréshez vezethet. Mivel az elküldött impulzus nem modulált, és nem kódolt, az idegen ultrahangos frekvenciaforrások befolyásolhatják a mérést, és mindez hibás eredményekhez vezethet (a méréseken túlmutató kimenet).
Feliratok a képen:
ultrahangos burst - ultrahangos impulzus;
Mechanikus echo (szoftver által eltávolított) - mechanikus echo (szoftverszoftver);
A távoli objektum által visszaverődő ultrahangos hullám egy ultrahangos hullám, amely tükröződik a távoli objektumból.
Oszcilloszkóposztály Ár: Vízszintesen - 1 ms / ügy, függőlegesen - 5 MV / eset.
A mechanikus visszhangot programosan kizárják a késedelem bevezetésével. A visszavert hullám, amelynek amplitúdója körülbelül 40 mV-ot kapunk 9,5 ms után egy küldött impulzus után. Tekintettel arra, hogy a hangsebesség 340 m / s, kapunk:
0,0095 / 2 × 340 \u003d 1,615 m.
A valóságban - a szoba mennyezete a 172 cm-es érzékelőtől távol volt, az LCD kijelzőn debugok Megjelenik a 170 cm érték.
Letöltések
Forráskód a projekthez a mikrokontroller PIC16F877A (Compiler Mikroc) -
Néhány megjegyzés:Az ultrahangos rangsorfinder létrehozásához szükséges összes elemet a chipidype-ban értékesítik, körülbelül 500-900R-nak fizetnek (nem emlékszem pontosan - pontosan - sok pénz volt, nem számított :-). (test, squeakers, egyéb csatlakozók)
Néhány megjegyzés az ultrahang tartománykereső rendszerén:
1. A cookie-k bármilyen, a különböző feladatok jobb különböző ... a feladatomhoz - annál inkább a méretek jobbak, az 50 szög.
2. Megpróbálhat csak egy viszonylag drága AD822-et használni, és az olcsóbb szálak összehasonlító helyén (egyszerűen nem volt semmi más)
3. A MEGA-ban 40 kilohertz létrehozásához használhat egy időzítőt, ezért fel kell vennie egy másik rezonátort. (Csak 16 és 12 voltam. Ezek nem alkalmasak)
4. A levegőben lévő hangsebesség valójában a hőmérséklettől függ - ha a pontosság nagyon fontos (nem érdekel), akkor fontolja meg
5. MEGJEGYZÉS, HOGY A KÉSZÜLÉKEK KÉSZÜLÉKÉBEN - A Sakes nem érinti a műanyagot - az egyik személy azt mondta, hogy amikor mega-tuning ( ez a rendszer Képes és erre) A kénből a mikrofonhoz való hangot az esetre továbbítják, jobb, ha meg kell újítani
6. A MEGA ON C (ERESZABÁLLAPOT) legegyszerűbb firmwaresének példája megtekinthető
7. A programozó jobb az STK200 / 300 használatához, az Avreal - a szoftver és a rendszer apróra vágható
8. Az elme a firmware-ben nyomon követnie kell a "csomag" kezdetét és végét, a példában, csak a kezdet (pontosság növekszik kifejezetten) .. Befejezhetem.
9. A jelenet szereti a 40 kHz-t - egy kicsit az irányba egyáltalán nem ... valószínűleg az igazság a kézikönyvben írják ezt a rezonant :-)
10. A ponapihan tranzisztorok radiátorának diagramjában - több volt, mint 12 - Velkom - azt mondta, hogy hangosabban (számít). Három oknál fogva nem tette meg: az első 24 volt, meg kell találni valahol máshol, a második jelenlegi verzióban, amikor felállítja a rhizisztort, így látja a falat 4 méterre, azaz. Nem vagyok ott, ahol tapasztalhatom, és nincs szükség. Nos, a harmadik oka ugyanaz, amit ugyanaz a személy azt mondta, hogy a tétek hajlamosak meghalni ezen a feszültségen
11. ÁLTALÁNOS TANÁCS: Megtalálhatja az összes ellenállást és kondenzátort a tápegység nem működő egységében az ATX számítógépről (ők minden valahol 1/8 gyapjú) - Pénztakarékos!
12. A Hibás vélemény, hogy a HeartBe által közzétett ultrahangot valahogy hallgathatja Sobami-t és más teremtményeket, rosszul befolyásolja őket: a kutyám éjszaka jött, és a sajtolás előtt esett.
13. Továbbá - így csak az üzenettel - Mega és más 8bites vezérlők az ATMLA-tól - tökéletesen üldözik .. A bal 16 munka helyett a bal 16 munkahelyen van, normálisan.
14. A fenti R5 eltávolításakor a Kila (10, 50, 100) nagyon nagy nyereség lesz, és valószínűleg szükségük lesz egy kürtre, de a mérések tartománya nagymértékben nő.
15. Ahelyett, hogy megszünteti a ruporokat (nagy R5), lásd fent, frissítheti a firmware-t, hogy nem várna egy hasznos jelre a kezdeti pillanatban. De akkor lehetetlen a távolságok körülbelül 10 cm és kevesebb távolságra mérni.
A Tanácsnak való megjegyzése 8 - Sárga jelezte az MK ultrahangos távolságmérő megszakításának pillanatát a recepción, valójában ugyanazon pillanatra korlátozható, várjon egy kicsit, és tegye a következő mérést, a következő csomagot Az impulzus - és a repülési idő időpontja az első küldött impulzusból származó idő (vagy az utóbbi nem fontos) az első elfogadott.
A második opció piros - pontosabban van jelölve - mivel az impulzusok csomagja általában nem teljes mértékben elért (lehet, hogy nem az első három vagy utolsó impulzus), a kép szerint egyértelmű, hogy "lapított" A szélek körül, bár az impulzusok tökéletes téglalapja elment - így: a pont az, hogy a csomag közepén maradjon a helyén, annak ellenére, hogy a szélek már nem lehet komparátor. Tehát a pontosság több .. (Milmeters kell gondolkodnia) attól függ, hogy figyelembe vették-e az ultrahangos távolságmérő firmware-jét a középső vagy csak a csomag kezdete, amikor visszaállt.
Az ultrahangos Arduino távérzékelők nagyon igények a robotos projektekben, mivel viszonylagos egyszerűsége, elegendő pontosság és rendelkezésre állása miatt. Használhatók olyan eszközökként, amelyek segítenek az akadályok körüli keresztkéréshez, a tételek méretét, szimulálja a szoba térképét, és jelezze az objektumok közelítését vagy eltávolítását. Az ilyen eszköz egyik gyakori változata egy távérzékelő, amelynek kialakítása egy Ultrahangos RangeFinder HC SR04. Ebben a cikkben megismerjük a távérzékelő elvét, több lehetőséget vállalunk az Arduino-fizetésekhez, az interakciós rendszerhez és a vázlatokhoz való csatlakozáshoz.
Az a képesség, ultrahangos érzékelő, hogy meghatározza azt a távolságot, hogy az objektum alapul Sonar elve - küldésével ultrahang nyaláb, és megszerzésére annak reflexió késéssel, határozza meg a készülék, amely tárgyak jelenlétét, és a távolság a számukra. A vevő által generált ultrahangos jelek, amelyek tükröződnek az akadályból, visszatérünk egy bizonyos ideig. Ez az időintervallum, amely jellemzővé válik, hogy segítsen meghatározni az objektum távollétét.
Figyelem! Mivel a működés elvét ultrahangon alapul, ez az érzékelő nem alkalmas a hangelnyelő objektumok távolságának meghatározására. A mérések optimális lapos sima felületű tárgyak.
Érzékelő Leírás HC SR04
Az Arduino távérzékelő érintés nélküli típusú eszköz, és nagy pontosságú mérést és stabilitást biztosít. A mérési távolság tartománya 2-400 cm. Nem rendelkezik jelentős hatással az elektromágneses sugárzás és a napenergia. A HC SR04 Arduino modul tartalmaz egy vevőt és távadót is.
Az ultrahangos HC SR04 rangurefinder ilyen műszaki paraméterekkel rendelkezik:
- Tápfeszültség 5V;
- T OKA - 15 mA munka paraméter;
- Az aktuális teljesítmény passzív állapotban< 2 мА;
- Panorámás szög - 15 °;
- Érzékszervi felbontás - 0,3 cm;
- Mérési szög - 30 °;
- Pulzusszélesség - 10-6 s.
Az érzékelő négy kimenettel van felszerelve (standard 2, 54 mm):
- Pozitív típusú - + 5V hatalom érintkezése;
- Trig (t) - a kimeneti jel kimenet;
- Echo (r) - kimeneti jel kimenet;
- GND - Visszavonás "Föld".
Hol lehet vásárolni egy SR04 modul az Arduino
A távolságérzékelő meglehetősen közös komponens, és könnyen megtalálható az online áruházakban. A legolcsóbb lehetőségek (40-60 rubel / darab) hagyományosan a jól ismert helyen.
HC-SR04 távérzékelő modul Arduino számára | Az ultrahangos HC-SR04 érzékelő másik lehetősége megbízható beszállítóban |
SR05 Ultrahangos HC-SR05 Távérzékelők (javított funkciók) | HC-SR05 HY-SRF05 modul UNO R3 MEGA2560 számára megbízható beszállító miatt |
Az Arduino-val való kölcsönhatás rendszere
Adatok beszerzése érdekében ilyen intézkedéseket kell végrehajtania:
- Adja meg a kimeneti trig pulzust 10 micros időtartamával;
- Az ARDUINO-hoz csatlakoztatott Ultrahangos Rannellor HC SR04-ben a 40 kHz-es frekvenciájú 8 impulzusos jelkonverzió átalakul, amelyet az emitteren keresztül továbbítanak;
- Amikor az impulzusok elérik az akadályt, akkor befolyásolják, és az R vevő elfogadja, amely biztosítja a bemeneti jel jelenlétét az ECHO kimeneten;
- A vezérlő oldalán a fogadott jelet a formulák segítségével le kell fordítani a távolságra.
Ha az impulzus szélességét 58.2-ig osztjuk meg, centiméterben kapunk adatokat, amikor 148-mal oszlik meg.
Csatlakoztassa a HC SR04-et az Arduino-hoz
Csatlakoztassa az ultrahangos távoli érzékelőt aRDUINO panel. nagyon egyszerű. A kapcsolat diagramja az ábrán látható.
A GND kimenet csatlakoztatása az Arduino-táblán, csatlakoztassa az 5V-os tápkutyát. A trig és az echo kimenetek az Arduino-hoz csatlakoznak a digitális csapokhoz. Csatlakozási lehetőség merész táblával:
Könyvtár a HC SR04 használatához
A HC SR04 távérzékelővel való munkavégzés megkönnyítése az ARDUINO-n található, az új könyvtárat használhatja. Nincs probléma a ping hozzáféréssel, és új funkciókat ad hozzá.
A könyvtár jellemzői a következők:
- A különböző ultrahangos érzékelőkkel való együttműködés képessége;
- Lehet dolgozni egy távérzékelővel csak egy PIN-kódban;
- Az echo ping hiányában 1 másodpercig nem lag;
- A könnyű hibajavítás érdekében beépített digitális szűrő van;
- A maximális pontos számítási távolság.
Letöltés Bibilot News
Pontosságmérési távolság HC SR04 érzékelővel
Az érzékelő pontossága több tényezőtől függ:
- levegő hőmérséklete és páratartalma;
- távolságok az objektumhoz;
- az érzékelőhöz képest (a sugárzási diagram szerint);
- az érzékelő modul elemeinek minőségi teljesítménye.
Az ultrahangos érzékelő működésének elvének alapja a levegőben szaporodó akusztikus hullámok tükröződésének jelensége. De ahogyan a fizika során ismert, a levegőben lévő hangszaporodás sebessége a levegő tulajdonságaitól függ (elsősorban a hőmérsékleten). Az érzékelő, a kibocsátóhullámok és a visszatérés előtti mérési idő nem ismeri fel, hogy melyik környezetben terjednek és átlagértéket vesznek ki a számításokhoz. Valódi körülmények között a léghőmérséklet-tényező miatt a HC-SR04 hibás 1-3-5 cm.
Az objektum távolsági tényezője fontos, mert A szomszédos tárgyakról való visszaverődés valószínűsége növekszik, és a jel maga is elhalványul a távolból.
A pontosság javítása érdekében helyesen kell elküldeni az érzékelőt: tegye azt, hogy a téma a sugárzási táblázat kúpjába kerüljön. Egyszerűen tegye, a "szem" HC-SR04 közvetlenül a témára kell néznie.
A hibák és a mérési hibák csökkentése érdekében a következő műveleteket általában elvégzik:
- az értékek átlagolódnak (többször mérjük, eltávolítjuk a töréseket, majd megtaláljuk az átlagot);
- az érzékelők segítségével (például,), a hőmérsékletet meghatározzák, és korrekciós együtthatókat készítenek;
- az érzékelő a szervomotorra van felszerelve, amellyel "forgatjuk a fejet" a sugárzási diagram balra vagy jobbra történő mozgatásával.
Példák a távoli érzékelő használatára
Tekintsünk egy példát egy egyszerű projektre az Arduino UNO kártyával és a HC SR04 távérzékelővel. A vázlatban megkapjuk a távolság értékét az elemekhez, és megjelenítjük őket a Port Monitorban a közegben Arduino IDE. Könnyedén megváltoztathatja a vázlatot és a kapcsolódási sémát, hogy az érzékelő jelzi az elem közelítését vagy távollétét.
Az érzékelő csatlakoztatása Arduino-hoz
Vázlat írásakor a következő lehetőség az érzékelő kapcsolatának meghatározásához használta:
- VCC: + 5V
- Trig - 12 pin
- Echo - 11 PIN
- Föld (GND) - Föld (GND)
Minta vázlata
Elkezdjük dolgozni az érzékelővel azonnal a relatív komplex opcióból - külső könyvtárak használata nélkül.
Ebben a vázlatban végezzük el az ilyen intézkedések sorrendjét:
- Rövid impulzus (2-5 mikroszekundum) Fordítja a távérzékelőt az echolocation üzemmódba, amelyben 40 kHz frekvenciájú ultrahangos hullámokat küldünk a környező térre.
- Várjuk, amíg az érzékelő elemzi a visszavert jeleket, és a késleltetés meghatározza a távolságot.
- A távolságértéket kapjuk. Ehhez várunk, amíg a HC SR04 visszhangzik az ECHO-val. Meghatározzuk az impulzus időtartamot az impulzus funkcióval, amely visszaadja az időt, mielőtt megváltoztatná a jel szintjét (a mi esetünkben, amíg az impulzus hátramenet megjelenik).
- Miután megkaptuk az időt, a centiméterek közötti távolságra fordítjuk azáltal, hogy az értéket az állandó értékre osztjuk (az SR04 érzékelő számára, ez 29.1 a jel "ott", akár a "vissza" jel, amely 58.2 .
Ha a távolságérzékelő nem olvasja el a jelet, akkor a kimeneti jelátalakítás soha nem fogja elfogadni a rövid impulzus értéket - alacsony. Mivel néhány érzékelő, a késleltetési idő a gyártótól függően változik, ajánlott a megadott vázlatok használata, hogy manuálisan állítsa be értékét (a ciklus elején).
Ha a távolság több mint 3 méter, ahol a HC SR04 rosszul dolgozik, akkor a késleltetési idő jobb, ha több mint 20 ms, azaz. 25 vagy 30 ms.
#Define pin_trig 12 #define pin_echo 11 hosszú időtartam, cm; Void Setup () (// inicializálja a serial.begin serial.begin (9600) interakciót; 2-5 mikroszekundum impulzus időtartama. Digitalwrite (PIN_TRIG, LOW); DELECTMICROSECONDS (5); Digitalwrite (PIN_TRIG, HIGH); / Kiállítás magas szint Jel, körülbelül 10 microseconds várakozásra vár. Ezen a ponton az érzékelő 40 kHz frekvenciájú jeleket küld. DelingMicRoseConds (10); Digitalwrite (PIN_TRIG, Alacsony); // az echolocator akusztikus jelének késleltetési ideje. Időtartam \u003d impulzus (pin_echo, magas); // most továbbra is átalakítani az időt a távolságra a CM \u003d (időtartam / 2) / 29.1; Serial.print ("távolság az objektumhoz:"); Serial.print (cm); Serial.println ("lásd"); // késleltetés a késedelem helyes működéséhez (250); )
Vázlat az új könyvtár segítségével
Most nézzük meg a Sketch verziót az újindulatú könyvtár segítségével. A kód jelentősen kitört, mert Minden korábban leírt művelet rejtve van a könyvtárban. Mindaz, amit meg kell tennie, hogy újindulatú osztály objektumot hozzon létre egy PIN-kód megadásával, amellyel a távérzékelőt csatlakoztatjuk és objektum-módszereket használunk. Példánkban a ping_cm () használatára van szükség centiméter távolság eléréséhez.
#Inlude.
Példa egy Ultrahangos Rangerfinder HC SR04 csatlakoztatására egy PIN-kóddal
A HC-SR04 csatlakoztatása az Arduino-hoz egy PIN-kód segítségével hajtható végre. Ez az opció hasznos, ha nagy projektet dolgozol, és nincs szabad csapok. A Csatlakozáshoz csak a TRIGA ECHO névjegyek között kell telepítenie a 2.2K minősítésével, és csatlakoztassa az Arduino-val való kapcsolatot.
#Inlude.
Rövid következtetések
Az ultrahangos távolsági érzékelők meglehetősen egyetemesek és pontosak, ami lehetővé teszi számukra, hogy a legtöbb amatőr projekthez használják. A cikk a rendkívül népszerű HC SR04 érzékelőt írja le, amely könnyen csatlakoztatható az Arduino-tábla (ehhez azonnal két szabad csapot kell biztosítania, de van egy kapcsolat opció és egy PIN-kód). Számos érzékelő van az érzékelővel való együttműködéshez. ingyenes könyvtárak (A cikk csak az egyiket írja le, újdonságot), de nélkülük is - a belső érzékelővezérlővel való interakció algoritmusa meglehetősen egyszerű, megmutattuk ebben a cikkben.
Alapuló saját tapasztalatAzt állíthatjuk, hogy a HC-SR04 érzékelő egy centiméteren belüli pontosságot mutat 10 cm-ről 2 m távolságra. Rövidebb és hosszú távolságok, erős interferencia lehetséges, ami erősen függ a környező elemektől és a felhasználási módtól. De a legtöbb esetben a HC-SR04 tökéletesen megzavarja munkáját.
HC-SR04 Az egyik leggyakoribb és legolcsóbb robotikus kereső. Lehetővé teszi, hogy mérje meg a távolságokat 2 cm-től 4m-ig (talán több), 0,3-1 cm-es tisztességes pontossággal. Kijáratnál digitális jel, amelynek időtartama arányos az akadályoktól való távolsággal.
Ultrahangos távolságmérő
Ezt az érzékelőt már régóta vásárolták, és szinte elfelejtették a dobozában. De ugyanabban a projekten belül eltávolították a fehér fényt, és a megismertetés alapján, és a voltmérő díja meglehetősen kompakt tartományos kereső.
Ultrahang Ranger HC-SR04
Érzékelő jellemzői:
Táplálkozás - 5V.
Aktuális fogyasztású - kevesebb, mint 2ma
Hatékony megtekintési szög - 15g
Mért távolság - 2 cm - 5m
Pontosság - 3mm
Az érzékelő dokumentációjából
A HC-SR04 működés elve
Működés elve
A modulnak 4 kimenete van, amelyek közül kettő étkezés - föld és + 5V, és két további adat. A modul felmérése a következő módon történik: az impulzust 10 μs időtartamával küldjük el. A tartományosító 8 ultrahangos 40 kHz-es impulzus parcellát generál. Amely, amely a legtöbb felületről tükrözi, térjen vissza, ha nem hallanak az úton. Közvetlenül a jelzés indítása után elkezdünk várni egy válaszjel egy visszhang kimenettel, 150μs-tól 25 ms-ig terjedő időtartamra, ami arányos az objektum távolságával. Pontosabban, az érzékelőtől az akadályoktól és hátra. Ha nincs válasz (az érzékelő nem hallja az echo-t) - akkor a jel visszatér 38 ms hosszúra. Az objektum (akadályok) távolsága a következő egyszerű képlet alapján kerül kiszámításra:
Ha: L a távolság centiméterben az objektumhoz, és F az impulzus hossza az ECHO kimenetén.
Ajánlott felmérési idő az érzékelő 50 ms vagy 20Hz.
A modul első tesztjei egy digitális oszcilloszkóp segítségével végeztek, amely a modulból és a kézikönyvben válaszolt, gyorsan lezárja a + táplálkozás indítását, megpróbálta megkapni a 10 MX impulzust. Fél eseten kiderült [:)].
Tervezés
Az érzékelő közös anóddal van csatlakoztatva, egy kicsit módosított, hogy dolgozzon vele (eltávolította a felesleges osztó kondenzátorral és hozzáadott kimenetet az RA3-tól). A Voltmeter - PIC16888 5 verziójától mikrokontrollert alkalmaztunk, egy rangsoros firmware-rel.
Ultrahangos HC-SR04 Távolsági érzékelő (és hasonló modulok) ultrahangos hullámokat használhat az objektum távolságának meghatározásához.
Általánosságban elmondható, hogy meg kell találnunk a távolságot az objektumhoz, mert maga az érzékelő egyszerűen figyelembe veszi azt az időt, amely eljut, hogy elkapja a visszhangot a rájuk küldött hanghullámokból. Ez így történik:
- A modul hanghullámokat küld, ugyanakkor táplálja a feszültséget egy speciális IDU visszhangba.
- A modul elkapja a visszavert jelet, és eltávolítja a feszültséget a PIN-kódból.
Ez minden, ami ultrahangos rangsorot tesz. Meg tudjuk határozni a távolságot, mert tudjuk, hogy mennyi időt vesz igénybe a hangból, hogy az utazást a modulról és vissza (azáltal, hogy mennyi ideig tartott a PIN-visszhang feszültség alatt), valamint ismerjük a hangsebességet a levegő. De nem fogunk sokat menni a részletekre, és hagyjuk, hogy Arduino végezze el az összes számítást.
By the way, annak ellenére, hogy az ultrahangos érzékelők működésének elvét ugyanaz, nem mindegyikük ugyanazt a kimenetet eredményezi az IDU visszhangon lévő feszültségnek. Tehát, ha van egy modul, mint a HC-S04, akkor figyeljen a negyedik lépésre, ahol leírják lehetséges problémák, és ellenőrizze, talán a modul a listában van. Ha nincs ott, akkor foglalkoznia kell sajátoddal.
1. lépés: Vasszerelvény a saját kezével
A szerelvény nagyon egyszerű (összegyűjti mindent a feszültségből):
- Pár 5V az Arduino-tól VCC PIN-vel a modulon
- Csatlakoztassa a GND-t az Arduino-ről GND-vel a modulon
- Csatlakoztassa a 7 digitális pólót az Arduino-on a modullal
- Párosít digitális modul 8 az ARDUINO-on PIN-ECHO-val a modulon
2. lépés: A HC-SR04 modul programozása
A program eredményeinek megtekintéséhez soros monitorot kell futtatnia az Arduino-n. Ha nem ismeri ezt a funkciót, most itt az ideje megnyitni, és többet megtudhat róla - ez egy nagyszerű dolog, ami segít a kód hibakeresésére. Az Arduino interfészen nézze meg a jobb sarkot, ott talál egy gombot, amely fut a soros monitoron, úgy néz ki, mint egy nagyító, kattintson rá, és a monitor megnyílik (vagy válassza az Eszközök / soros monitor lehetőséget, vagy nyomja meg a Ctrl + gombot Shift + M).
Itt van egy vázlat munkaprogram:
// elején vázlat az aruino -
// meghatározza a konstansokat (a konstansok nem változnak, és ha megpróbálják felülbírálni őket, forduljon a fordítás során)
CONST INT triggerpin \u003d 7; // állandóan létrehozza a "triggerpin" nevet, és hozzárendeli a 7 digitális pólót
CONST INT ECHOPIN \u003d 8; // állandóvá teszi az "Echopin" nevet, és előírja a digitális 8 csapot
// A változók meghatározása (változók változhatnak és általában változhatnak a program során, tartalmazhatnak számított értékeket)
int Időtartam \u003d 0; // létrehoz egy "Időtartam" nevű változót az impulzus által visszaküldött érték tárolásához, kezdetben az érték "0" értékre van állítva
Int távolság \u003d 0; // létrehoz egy változót az érzékelő előtt található objektum távolságaként számított érték tárolására, kezdetben az érték "0"
Void Setup () // Ebben a részben konfigurálhatja a programhoz szükséges díjat és más paramétereket.
{
Serial.begin (9600); // inicializálja a következetes kommunikációt az USB-n keresztül az Arduino és a számítógép között, szükségünk lesz rá
// meghatározza a PINS módjait
Pinmode (triggerpin, kimenet); // "triggerpin" lesz használva a kimenetre, a PIN-kódot a "Határozza meg a változók" szakaszokban
Pinmode (echopin, bemenet); // "echopin" kerül felhasználásra, hogy belépjen, a PIN-kódot a "Határozza meg a változók" szakaszban
) // befejezési beállítás
// mindent, amit fentebb írtak, a program csak egyszer olvassa el - indítás vagy visszaállítás esetén (reset)
Void Loop () // A hitelrész programkódja olvasható és megismétlődik, amíg a tápfeszültség ki van kapcsolva, vagy nem fog visszaállítani
{
Digitalwrite (triggerpin, magas); // az ultrahangos hullámok táplálása a HC-SR04 modulból
Késedelem (5); // kis szünet, szükség van arra, hogy a modulfunkció helyes legyen (csökkentheti ezt az értéket, a többi programom 1-es értéken működik)
Digitalwrite (triggerpin, alacsony); // leállítja a HC-SR04 modulból származó ultrahangos hullámokat
Időtartam \u003d impulzus (echopin, magas); // Különleges funkció, amely lehetővé teszi, hogy meghatározzák az időtartam időtartamát, amelyben a végső visszhang feszültségét a legutóbbi befejezett ultrahangos takarmány-ciklusban szállították
Késedelem (10); // ismét egy kis szünet. A stabilitáshoz szükséges, túl rövid szünet nem ad eredményt
Távolság \u003d (időtartam / 2) / 58; // Transzformációs időtartam a távolságra (az "Időtartam" értékre kerül, 2-re oszlik, majd ezt az értéket 58 ** -kal osztja el ** Centiméterekhez
Késedelem (500); // Egy másik szünet a stabilitáshoz - játszhat az értékkel, de elronthatja a program munkáját, ezért az 500-at alapértelmezés szerint használja
Serial.print (távolság); // elküldi a távolság kiszámított értékét a soros monitorhoz
Serial.println ("cm"); // hozzáadja a "cm" szót a távolságérték után, és fordítja a kocsit a soros monitoron az új sorba
Serial.println (); // hozzáad egy üres karakterláncot a soros monitoron (az egyszerű olvasáshoz)
) // ciklus vége
_________________________________________________
Tehát, miután elolvastam az utasításokat, rájöttem, hogy a program vázlata nem felel meg az egyszerűség megértésének megértéséhez. Ezért ugyanazt a vázlatot írom, könnyű megjegyzésekkel.
// hc-sc04 ultrahangos távolsági érzékelő modul
CONST INT triggerpin \u003d 7; // trigger 7
CONST INT ECHOPIN \u003d 8; // echo 8
int Időtartam \u003d 0; // tárolja az értéket az impulzusból
Int távolság \u003d 0; // tárolja a számított távolság értékét
Void Setup ()
{
Serial.begin (9600);
Pinmode (triggerpin, kimenet); // meghatározza a PASS módokat
Pinmode (echopin, bemenet);
}
Void hurok ()
{
Digitalwrite (triggerpin, magas); // ultrahang küldése
Késedelem (5); // A szükséges parancs konfigurálva van (de nem alacsonyabb, mint 10 mmloscts)
Digitalwrite (triggerpin, alacsony); // modul leállítja az ultrahangot
Időtartam \u003d impulzus (echopin, magas); // meghatározza, hogy mennyi ideig szolgált a feszültség a PIN ECHO-hoz
Késedelem (10); // a szükséges parancs konfigurálva van, de tiszta
Távolság \u003d (időtartam / 2) / 58; // tollal a távolság a CC-ben az objektumhoz
Késedelem (500); // A stabilitás szüneteltetése, a csökkenés megszakíthatja a program menetét, jobb, ha az
Serial.print (távolság); // elküldi a soros monitoron tárolt aktuális értéket
Serial.println ("cm"); // a távolság után azonnal megjeleníti a "cm" szót
Serial.println (); // létrehoz egy üres karakterláncot a soros monitorban (az egyszerű olvasáshoz)
}
Az utasításokhoz fájlokat is alkalmazok.ino
Fájlok
- HCSR04BAREBONES.INO - Ez a fájl nagyon kommentált, és tartalmaz néhány információt a HC-SR04 modulról, valamint egy összeszerelési információra.
- Barboeslight.ino - modul kis mennyiség Hozzászólások
Itt van a tanácsom. Tudom, hogy a kód működik, de mielőtt a fájlokat az utasításhoz csatolná, mindent átírok, és a soros monitor folyamatosan megmutatta a "0 cm" -t. A probléma az égett modulban volt, és a helyettesítése korrigálta a helyzetet.
Nézd meg, hogyan reagál a program, ha úgy dönt, hogy a késleltetési parancsok értékével játszik. Tapasztalt módon azt találtam, hogy a késleltetési értékek csökkenése vagy a 0-ra való egyenlőség a programot egy nem működő államnak vezetheti.
Miután konfigurálta az eszközt, minden korlátozott a képzeletedre. Ellenőrizheti, hogy a rögzített objektumok ugyanolyan távolságban vannak, és mozdulatlanul maradnak. Akkor használja a monitort, hogy értesítést kapjon, hogy néhány tárgy elhalad az érzékelő, stb
A rendszert arra használták fel, hogy felhasználhassuk, hogy megállapítsuk, hogy az összes objektum az érzékelőn túl van távolítva 60 cm-nél nagyobb távolságra. A projekt három diódát és egy csapást használt. Ha minden elem további 60 cm, zöld dióda égett. Ha valami 60 cm-nél kisebb, zöld dióda gáz, és a piros világít. Ha az objektum egy ideig közel maradt, akkor a második piros dióda világít, és a csikorgás elkezdett szüntelni. Amikor az objektumot 60 cm-en eltávolították, a lelkek összenyomódtak, a vörös diódák Gasley voltak, és a zöld újra világít. Nem akadályozta meg az összes hamis riasztást, de a legtöbb esetben dolgozott, amikor egy madár vagy kíváncsi fehérje repült az érzékelő felett.
4. lépés: Híres problémák
Ha az ultrahangos modulod modelljét ezen a ponton látja, akkor az alábbi levél. Remélem, megtalálja a problémát, és eldöntheti.
- US-105.
- Dyp-me007tx
US-105 modul
Az Ultrahangos US-105 modul a GPIO kimenetet használja a PIN ECHO-hoz, amely más számításokat jelent a távolság meghatározásához. Ha a GPIO-t visszahúzza az Echo-hoz, a PIN-kódot a feszültség alatt nem tartják a hullám alatt. Ehelyett, ha tükröződő ultrahangot kapunk, egy adott feszültséget a visszhangsejthez szállít, amely arányos az ultrahangos hullám által megkövetelt idővel, hogy menjen és visszatérjen az érzékelőhöz. Ezzel a modultal ez a kód működik:
// Oltrahangos modul kódja US-105 UNIDNED INT ECHOPIN \u003d 2; unsigned int trigpin \u003d 3; aláíratlan hosszú idő_echo_us \u003d 0; // len_mm_x100 \u003d hossz * 100 unsigned hosszú len_mm_x100 \u003d 0; aláíratlan hosszú len_integer \u003d 0; // unsigned int str_fraction \u003d 0; Void Setup () (serial.begin (9600); Pinmode (echopin, bemenet); Pinmode (trigpin, kimenet);) Void Loop () (digitalwrite (trigpin (trigpin, magas); DelingMicroseConds (50); Digitalwrite (Trigpin, Alacsony); ; Time_echo_us \u003d impulzus (echopin, magas); ha ((time_echo_us 1)) (len_mm_x100 \u003d (time_echo_us * 34) / 2; len_integer \u003d len_mm_x100 / 100; len_frakcionum \u003d len_mm_x100% 100; serial.print ("tartomány:"); Serial.print (len_integer, dec); serial.print ("."); Ha (Len_Fraction)< 10) Serial.print("0"); Serial.print(Len_Fraction, DEC); Serial.println("mm"); delay(1000); } // Конец программы