Megtekintések: 164 Szerző: Grace Megjelenés ideje: 2021-07-26 Eredet: Telek
A A HC-SR04 ultrahangos érzékelő az egyik legnépszerűbb távolságmérő modul az Arduino projektekhez. Széles körben használják akadályelkerülő robotokban, parkolóérzékelőkben, szintérzékelésben, intelligens szemeteskukában, távolságmérőben és egyéb érintésmentes érzékelő alkalmazásokban.
A modul 40 kHz-es ultrahanghullámokat bocsát ki egy adón keresztül. Amikor a hanghullám találkozik egy tárggyal, visszaverődik a vevő felé. A visszhangidő mérésével és a hangsebesség használatával az Arduino ki tudja számítani az érzékelő és a tárgy közötti távolságot.
| Paraméter | Érték |
| Tipikus üzemi feszültség | 5V DC |
| Statikus üzemi áram | Egyes modulverzióknál kevesebb, mint 5 mA |
| Működési frekvencia | 40 kHz-es ultrahanghullám |
| Érzékelési távolság | Általános tartomány: 2-400 cm; egyes erősítéssel beállított változatok támogathatják a hosszabb hatótávolságot. |
| Érzékelési szög | Általában 15 fokon belül; egyes verziók nagyobb erősítéssel elérhetik a 30 fokot. |
| Pontosság | Kb. 0,3 cm-ig megfelelő vizsgálati körülmények között |
| Vakzóna | Körülbelül 2 cm minimális mérési távolság |
A HC-SR04 ultrahangos modulnak négy érintkezője van: VCC, TRIG, ECHO és GND. Az Arduino egy rövid trigger impulzust küld a TRIG lábnak, majd kiolvassa a visszatérő impulzust az ECHO lábról.
| HC-SR04 tű | Arduino kapcsolat | Funkció |
| VCC | 5V | Tápegység az ultrahangos modulhoz. |
| KERÉKKÖTŐ | Digitális tű 9 | Trigger bemenet. Az Arduino 10 us impulzust alkalmaz a távolság mérésének megkezdéséhez. |
| VISSZHANG | Digitális tű 10 | Echo kimenet. Az Arduino beolvassa az impulzusszélességet a távolság kiszámításához. |
| GND | GND | Föld csatlakozás. |
A HC-SR04 repülési idő mérésével működik. Az Arduino legalább 10 mikromásodperces magas szintű trigger jelet küld a TRIG tűnek. A modul ezután automatikusan nyolc 40 kHz-es ultrahang impulzust küld, és várja a visszavert visszhangot.
A visszavert ultrahangjel észlelésekor az ECHO érintkező magas szintű impulzust ad ki. Ennek az impulzusnak az időtartama az ultrahanghullám oda-vissza utazási ideje.
Távolság = Echo magas szintű idő × hangsebesség / 2
Az Arduino kódban a közös egyszerűsített képlet a következő:
Távolság cm-ben = időtartam × 0,0343 / 2
Az időzítési folyamat egyszerű: az Arduino rövid ideig alacsonyan tartja a TRIG-et, 10 us magas impulzust küld, majd visszaállítja a TRIG-et alacsonyra. A HC-SR04 ultrahang sorozatot küld, és magasra állítja az ECHO-t mindaddig, amíg a visszavert jel vissza nem tér, vagy a mérési időt nem hagyja abba.
Az instabil leolvasás elkerülése érdekében hagyjon rövid késleltetést a mérések között. Általában körülbelül 60 ms-os mérési ciklust használnak, így az előző ultrahang visszhangnak van ideje eltűnni a következő trigger előtt.
Az Arduino pulseIn() függvény annak mérésére szolgál, hogy egy digitális tű mennyi ideig marad HIGH vagy LOW. A HC-SR04 esetében az Arduino a pulseIn(echoPin, HIGH) segítségével olvassa ki a magas szintű impulzusszélességet az ECHO érintkezőből.
| Szintaxis | Jelentése |
| pulseIn(tű, érték) | Kiolvassa a HIGH vagy LOW impulzus időtartamát. |
| pulseIn(tű, érték, időtúllépés) | Kiolvassa az impulzust egy időtúllépési értékkel mikroszekundumban. |
Időkorlát használata javasolt. Ha nem ad vissza visszhangot, a függvény leállíthatja a várakozást, és 0-t adhat vissza ahelyett, hogy túl sokáig blokkolná a programot.
A vezetékezés egyszerű. Csatlakoztassa a VCC-t az 5V-hoz, a GND-t a GND-hez, a TRIG-et egy Arduino digitális kimeneti érintkezőhöz és az ECHO-t egy Arduino digitális bemeneti érintkezőhöz. A következő példa az Arduino Uno-t, a TRIG-et a 9-es érintkezőn és az ECHO-t a 10-es érintkezőn használja.
A következő tipikus Arduino program 10us trigger impulzust küld, leolvassa az ECHO impulzusszélességet, kiszámítja a távolságot centiméterben, és kinyomtatja az eredményt a soros monitoron.
const int trigPin = 9; const int echoPin = 10; hosszú időtartam; lebegési távolságCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); késleltetésMikroszekundum(2); digitalWrite(trigPin, HIGH); késleltetésMikroszekundum(10); digitalWrite(trigPin, LOW); időtartam = pulseIn(echoPin, HIGH, 30000); if (duration == 0) { Serial.println('Tartományon kívül'); } else { távolságCm = időtartam * 0,0343 / 2; Serial.print('Távolság: '); Serial.print(távolságCm); Serial.println(' cm'); } késleltetés(60); }
Ha távolságértékeket lát a soros monitoron, akkor a HC-SR04 ultrahangos érzékelő és az Arduino kábelezés megfelelően működik. Ezután használhatja a távolságadatokat akadályérzékeléshez, robot mozgásvezérléséhez, automatikus ajtókhoz, parkolási emlékeztetőkhöz vagy folyadékszint-projektekhez.
Tartsa a mért tárgyat az ajánlott távolságtartományon belül és a 2 cm-es vak zónán kívül.
Használjon sík és szilárd célfelületet a jobb ultrahangvisszaverődés érdekében.
Kerülje a puha, ferde, porózus vagy hangelnyelő anyagok mérését.
Használjon stabil 5 V-os tápegységet, és tartsa röviden és biztonságosan a vezetékeket.
Adjon hozzá időtúllépést a pulseIn()-hez, hogy megakadályozza a hosszú blokkolást, amikor nem tér vissza visszhang.
A zaj csökkentése érdekében több leolvasást átlagoljon vagy szűrjön ki.
A nagyobb pontosság érdekében kompenzálja a hőmérsékletet, mert a hangsebesség a levegő hőmérsékletével változik.
| Alkalmazás | A HC-SR04 használata |
| Akadálykerülő robot | Érzékeli a közeli tárgyakat, és segíti a robotot irányváltásban. |
| Parkolási távolság érzékelő | Méri a távolságot a jármű és az akadály között. |
| Folyadékszint érzékelés | Érintkezés nélkül méri az érzékelő és a folyadék felület közötti távolságot. |
| Intelligens szemetes | Érzékel egy közeli kezet vagy tárgyat, és elindítja a fedél automatikus kinyitását. |
Ha HC-SR04 ultrahangos érzékelőt szeretne használni Arduino-val, csatlakoztassa a VCC-t az 5 V-hoz, a GND-t a GND-hez, a TRIG-et egy digitális kimeneti érintkezőhöz és az ECHO-t egy digitális bemeneti érintkezőhöz. Küldjön egy 10 us trigger impulzust, olvassa le a visszhang időtartamát a pulseIn() segítségével, és számítsa ki a távolságot a repülési idő képlettel.
A HC-SR04 olcsó, könnyen használható, és számos Arduino távolságmérési projekthez alkalmas. A legjobb eredmény érdekében ügyeljen a célfelületre, a mérési szögre, a vak zónára, a stabil teljesítményre, az időtúllépés kezelésére és a hőmérsékleti hatásokra.
Az Arduino 10us-os impulzust küld a TRIG tűnek. A HC-SR04 nyolc 40 kHz-es ultrahang impulzust bocsát ki, és az ECHO tűt magasra állítja, amíg a visszavert hang vissza nem tér. Az Arduino méri ezt az impulzusidőt és kiszámítja a távolságot.
A képlet a távolság = időtartam × hangsebesség / 2. Centiméterben az Arduino általános képlete a távolságCm = időtartam × 0,0343 / 2, ahol az időtartamot mikroszekundumban mérik.
A mért visszhangidő az érzékelőtől a tárgyig és vissza az érzékelőhöz való oda-vissza út ideje. 2-vel osztva megadja az érzékelő és a tárgy közötti egyirányú távolságot.
A legtöbb Arduino digitális tűt használhatja. Sok példában a TRIG a 9-es digitális érintkezőhöz, az ECHO pedig a 10-es digitális érintkezőhöz csatlakozik. A kódnak meg kell egyeznie a kábelezésben használt érintkezőkkel.
A gyakori okok közé tartozik a meglazult vezetékezés, az instabil 5 V-os tápellátás, a hibás TRIG vagy ECHO érintkezőszámok, a hatótávolságon belüli tárgy hiánya, a ferde célfelületek, a puha anyagok, az érzékelőfejek blokkolása, vagy a pulseIn() függvény időtúllépése.
A vak zóna az a minimális távolság, ahol a modul nem tud megbízhatóan mérni. A HC-SR04 esetében a vak zóna általában körülbelül 2 cm. Az ennél közelebb lévő tárgyak instabil leolvasást eredményezhetnek.
Igen, a HC-SR04 használható egyszerű, érintésmentes vízszint-projektekhez, ha az érzékelő nedvességtől védett és a folyadék felülete fölé van szerelve. Nedves, kültéri vagy ipari tartályokhoz vízálló ultrahangos érzékelő használata javasolt.
Használjon stabil tápegységet, tartsa az érzékelőt merőlegesen a célpontra, kerülje a puha vagy ferde felületeket, adjon hozzá pulseIn időtúllépést, vegyen le többszöri leolvasást, használjon medián szűrést, és hagyjon körülbelül 60 ms-ot a mérések között.