Katselukerrat: 164 Tekijä: Grace Julkaisuaika: 2021-07-26 Alkuperä: Sivusto
The HC-SR04 ultraäänianturi on yksi suosituimmista Arduino-projektien etäisyysmittausmoduuleista. Sitä käytetään laajalti esteen välttämisroboteissa, pysäköintiantureissa, tasontunnistuksessa, älykkäissä roska-astioissa, etäisyysmittareissa ja muissa kosketuksettomissa tunnistussovelluksissa.
Moduuli lähettää 40 kHz ultraääniaaltoja lähettimen kautta. Kun ääniaalto kohtaa kohteen, se heijastuu takaisin vastaanottimeen. Mittaamalla kaikuaikaa ja käyttämällä äänen nopeutta Arduino voi laskea anturin ja kohteen välisen etäisyyden.
| Parametri | Arvo |
| Tyypillinen käyttöjännite | 5V DC |
| Staattinen työvirta | Alle 5 mA joissakin moduuliversioissa |
| Toimintataajuus | 40 kHz ultraääniaalto |
| Havaintoetäisyys | Yleinen alue: 2cm - 400cm; Jotkut vahvistuksella säädetyt versiot voivat tukea pidempää kantamaa. |
| Havaintokulma | Yleensä 15 asteen sisällä; jotkin versiot suuremmalla vahvistuksella voivat nousta noin 30 asteeseen. |
| Tarkkuus | Jopa noin 0,3 cm sopivissa testiolosuhteissa |
| Sokea alue | Minimimittausetäisyys noin 2 cm |
Ultraäänimoduulissa HC-SR04 on neljä nastaa: VCC, TRIG, ECHO ja GND. Arduino lähettää lyhyen laukaisupulssin TRIG-nastalle ja lukee sitten paluupulssin ECHO-nastasta.
| HC-SR04 Pin | Arduino-yhteys | Toiminto |
| VCC | 5V | Ultraäänimoduulin virtalähde. |
| TRIG | Digitaalinen pin 9 | Liipaisusyöttö. Arduino käyttää 10 us pulssia aloittaakseen mittauksen. |
| KAIKU | Digitaalinen pin 10 | Kaikulähtö. Arduino lukee pulssin leveyden etäisyyden laskemiseksi. |
| GND | GND | Maadoitusliitäntä. |
HC-SR04 toimii lentoajan mittauksella. Arduino lähettää vähintään 10 mikrosekunnin korkean tason liipaisusignaalin TRIG-nastalle. Moduuli lähettää sitten automaattisesti kahdeksan 40 kHz ultraäänipulssia ja odottaa heijastuvaa kaikua.
Kun heijastettu ultraäänisignaali havaitaan, ECHO-nasta lähettää korkean tason pulssin. Tämän pulssin kesto on ultraääniaallon edestakaisen matka-aika.
Etäisyys = Kaiun korkean tason aika × Äänen nopeus / 2
Arduino-koodissa yleinen yksinkertaistettu kaava on:
Etäisyys cm = kesto × 0,0343 / 2
Ajoitusprosessi on yksinkertainen: Arduino pitää TRIG:n matalana hetken, lähettää 10 us korkean pulssin ja palauttaa sitten TRIGin matalalle. HC-SR04 lähettää ultraäänipurskeen ja asettaa ECHO:n korkeaksi, kunnes heijastunut signaali palaa tai mittaus aikakatkaisee.
Epävakaiden lukemien välttämiseksi jätä mittausten väliin lyhyt viive. Yleisesti käytetään noin 60 ms mittausjaksoa, joten edellinen ultraäänikaiku ehtii kadota ennen seuraavaa laukaisua.
Arduino pulseIn() -funktiota käytetään mittaamaan kuinka kauan digitaalinen nasta pysyy HIGH tai LOW. HC-SR04:lle Arduino käyttää pulseIn(echoPin, HIGH) -toimintoa lukeakseen korkean tason pulssin leveyden ECHO-nastasta.
| Syntaksi | Merkitys |
| pulseIn(pin, arvo) | Lukee HIGH- tai LOW-pulssin keston. |
| pulseIn(pin, arvo, aikakatkaisu) | Lukee pulssin aikakatkaisuarvolla mikrosekunteina. |
Aikakatkaisun käyttäminen on suositeltavaa. Jos kaikua ei palauteta, toiminto voi lopettaa odottamisen ja palauttaa 0:n sen sijaan, että se estäisi ohjelman liian pitkäksi ajaksi.
Johdotus on suoraviivainen. Yhdistä VCC 5V:iin, GND GND:hen, TRIG Arduinon digitaaliseen lähtönastaan ja ECHO Arduinon digitaaliseen tulonastan. Seuraavassa esimerkissä käytetään Arduino Unoa, TRIG nastassa 9 ja ECHO nastassa 10.
Seuraava tyypillinen Arduino-ohjelma lähettää 10us:n liipaisupulssin, lukee ECHO-pulssin leveyden, laskee etäisyyden senttimetreinä ja tulostaa tuloksen Serial Monitoriin.
const int trigPin = 9; const int echoPin = 10; pitkä kesto; kelluntaetäisyysCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); viiveMikrosekuntia(2); digitalWrite(trigPin, KORKEA); viiveMikrosekuntia(10); digitalWrite(trigPin, LOW); kesto = pulseIn(echoPin, KORKEA, 30000); if (kesto == 0) { Serial.println('Out of range'); } else { etäisyysCm = kesto * 0,0343 / 2; Serial.print('Etäisyys: '); Serial.print(etäisyysCm); Serial.println(' cm'); } viive(60); }
Jos näet etäisyysarvot sarjanäytössä, HC-SR04-ultraäänianturi ja Arduino-johdotus toimivat oikein. Tämän jälkeen voit käyttää etäisyystietoja esteiden havaitsemiseen, robotin liikkeen ohjaukseen, automaattioviin, pysäköintimuistutuksiin tai nestetason projekteihin.
Pidä mitattu kohde suositellun etäisyyden sisällä ja 2 cm sokean alueen ulkopuolella.
Käytä tasaista ja kiinteää kohdepintaa parantaaksesi ultraääniheijastusta.
Vältä pehmeiden, vinossa olevien, huokoisten tai ääntä vaimentavien materiaalien mittaamista.
Käytä vakaata 5 V virtalähdettä ja pidä johdot lyhyinä ja turvallisena.
Lisää aikakatkaisu kohtaan pulseIn() estääksesi pitkän eston, kun kaikua ei palaa.
Keskiarvo tai mediaanisuodata useita lukemia vähentääksesi melua.
Suuremman tarkkuuden saamiseksi kompensoi lämpötila, koska äänen nopeus muuttuu ilman lämpötilan mukaan.
| Sovellus | Kuinka HC-SR04:ää käytetään |
| Esteitä välttävä robotti | Tunnistaa lähellä olevat kohteet ja auttaa robottia muuttamaan suuntaa. |
| Pysäköintietäisyysanturi | Mittaa etäisyyden ajoneuvon ja esteen välillä. |
| Nesteen tason tunnistus | Mittaa etäisyyden anturista nestepintaan ilman kosketusta. |
| Älykäs roskakori | Tunnistaa lähellä olevan käden tai esineen ja käynnistää automaattisen kannen avaamisen. |
Jos haluat käyttää HC-SR04-ultraäänianturia Arduinon kanssa, liitä VCC 5 V:iin, GND GND:hen, TRIG digitaaliseen lähtönastaan ja ECHO digitaaliseen tulonastan. Lähetä 10 us liipaisupulssi, lue kaiun kesto komennolla pulseIn() ja laske etäisyys lentoaikakaavalla.
HC-SR04 on edullinen, helppokäyttöinen ja sopii moniin Arduino-etäisyyden mittausprojekteihin. Saat parhaat tulokset kiinnittämällä huomiota kohteen pintaan, mittauskulmaan, sokeaan vyöhykkeeseen, vakaaseen tehoon, aikakatkaisun käsittelyyn ja lämpötilavaikutuksiin.
Arduino lähettää 10us pulssin TRIG-nastalle. HC-SR04 lähettää kahdeksan 40 kHz ultraäänipulssia ja asettaa ECHO-nastan korkealle, kunnes heijastunut ääni palaa. Arduino mittaa tämän pulssiajan ja laskee etäisyyden.
Kaava on etäisyys = kesto × äänen nopeus / 2. Senttimetreinä yleinen Arduino-kaava on etäisyysCm = kesto × 0,0343 / 2, jossa kesto mitataan mikrosekunteina.
Mitattu kaikuaika on edestakainen aika anturista kohteeseen ja takaisin anturiin. Jakamalla kahdella saadaan yksisuuntainen etäisyys anturin ja kohteen välillä.
Voit käyttää useimpia Arduinon digitaalisia nastoja. Monissa esimerkeissä TRIG on kytketty digitaaliseen nastaan 9 ja ECHO on kytketty digitaaliseen nastaan 10. Koodin on vastattava johdotuksessa käytettyjä nastoja.
Yleisiä syitä ovat löysä johdotus, epävakaa 5 V:n virransyöttö, väärät TRIG- tai ECHO-nastanumerot, ei esinettä kantamalla, kulmassa olevat kohdepinnat, pehmeät materiaalit, tukkeutuneet anturipäät tai pulseIn()-toiminnon aikakatkaisu puuttuminen.
Sokea vyöhyke on pienin etäisyys, jota moduuli ei voi mitata luotettavasti. HC-SR04:lle sokea alue on yleensä noin 2 cm. Tätä lähempänä olevat esineet voivat tuottaa epävakaita lukemia.
Kyllä, HC-SR04:ää voidaan käyttää yksinkertaisiin kosketuksettomiin vedenkorkeusprojekteihin, jos anturi on suojattu kosteudelta ja asennettu nestepinnan yläpuolelle. Kosteissa, ulkotiloissa tai teollisuussäiliöissä suositellaan vedenpitävää ultraäänianturia.
Käytä vakaata virtalähdettä, pidä anturi kohtisuorassa kohteeseen nähden, vältä pehmeitä tai vinoja pintoja, lisää pulseIn-aikakatkaisu, ota useita lukemia, käytä mediaanisuodatusta ja jätä mittausten väliin noin 60 ms.