Visninger: 164 Forfatter: Grace Publiseringstid: 26-07-2021 Opprinnelse: nettsted
De HC-SR04 ultralydsensor er en av de mest populære avstandsmålingsmodulene for Arduino-prosjekter. Den er mye brukt i roboter som unngår hindringer, parkeringssensorer, nivådeteksjon, smarte søppelkasser, avstandsmålere og andre berøringsfrie applikasjoner.
Modulen sender ut 40kHz ultralydbølger gjennom en sender. Når lydbølgen møter et objekt, reflekteres den tilbake til mottakeren. Ved å måle ekkotiden og bruke lydhastigheten kan Arduino beregne avstanden mellom sensoren og objektet.
| Parameter | Verdi |
| Typisk arbeidsspenning | 5V DC |
| Statisk arbeidsstrøm | Mindre enn 5mA på enkelte modulversjoner |
| Driftsfrekvens | 40kHz ultralydbølge |
| Deteksjonsavstand | Felles rekkevidde: 2cm til 400cm; noen forsterkningsjusterte versjoner kan støtte lengre rekkevidde. |
| Deteksjonsvinkel | Vanligvis innenfor 15 grader; noen versjoner med høyere forsterkning kan nå rundt 30 grader. |
| Presisjon | Opptil ca. 0,3 cm under passende testforhold |
| Blindsone | Ca 2 cm minimum måleavstand |
HC-SR04 ultralydmodulen har fire pinner: VCC, TRIG, ECHO og GND. Arduino sender en kort triggerpuls til TRIG-pinnen, og leser deretter returpulsen fra ECHO-pinnen.
| HC-SR04 Pin | Arduino-tilkobling | Funksjon |
| VCC | 5V | Strømforsyning for ultralydmodulen. |
| TRIG | Digital pinne 9 | Triggerinngang. Arduino bruker en 10us-puls for å starte avstandsmåling. |
| EKKO | Digital pinne 10 | Ekkoutgang. Arduino leser pulsbredde for å beregne avstand. |
| GND | GND | Jordforbindelse. |
HC-SR04 fungerer ved måling av flytiden. Arduino sender et høynivå triggersignal på minst 10 mikrosekunder til TRIG-pinnen. Modulen sender da automatisk åtte 40kHz ultralydpulser og venter på det reflekterte ekkoet.
Når det reflekterte ultralydsignalet oppdages, sender ECHO-pinnen ut en høynivåpuls. Varigheten av denne pulsen er tur-retur-reisetiden for ultralydbølgen.
Avstand = Ekko på høyt nivå × lydhastighet / 2
I Arduino-kode er den vanlige forenklede formelen:
Avstand i cm = varighet × 0,0343 / 2
Tidsprosessen er enkel: Arduino holder TRIG lav kort, sender en 10us høy puls, og returnerer deretter TRIG til lav. HC-SR04 sender en ultrasonisk burst og setter ECHO høyt til det reflekterte signalet kommer tilbake eller målingen går ut.
For å unngå ustabile målinger, la en kort forsinkelse mellom målingene. En målesyklus på ca. 60 ms brukes vanligvis, slik at det forrige ultralydsekkoet har tid til å forsvinne før neste trigger.
Arduino pulseIn() -funksjonen brukes til å måle hvor lenge en digital pin forblir HØY eller LAV. For HC-SR04 bruker Arduino pulseIn(echoPin, HIGH) for å lese pulsbredden på høyt nivå fra ECHO-pinnen.
| Syntaks | Betydning |
| pulseIn(pin, verdi) | Leser varigheten av en HØY eller LAV puls. |
| pulseIn(pin, verdi, tidsavbrudd) | Leser pulsen med en timeout-verdi i mikrosekunder. |
Det anbefales å bruke en timeout. Hvis det ikke returneres noe ekko, kan funksjonen slutte å vente og returnere 0 i stedet for å blokkere programmet for lenge.
Kablingen er grei. Koble VCC til 5V, GND til GND, TRIG til en Arduino digital utgangspinne og ECHO til en Arduino digital inngangspinne. Følgende eksempel bruker Arduino Uno, TRIG på pinne 9 og ECHO på pinne 10.
Følgende typiske Arduino-program sender en 10us triggerpuls, leser ECHO-pulsbredden, beregner avstand i centimeter og skriver ut resultatet i seriemonitoren.
const int trigPin = 9; const int echoPin = 10; lang varighet; flyteavstandCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); varighet = pulsIn(echoPin, HIGH, 30000); if (varighet == 0) { Serial.println('Utenfor rekkevidde'); } annet { avstandCm = varighet * 0,0343 / 2; Serial.print('Avstand: '); Serial.print(distanceCm); Serial.println(' cm'); } delay(60); }
Hvis du ser avstandsverdier i den serielle monitoren, fungerer HC-SR04 ultralydsensoren og Arduino-kablingen som den skal. Du kan deretter bruke avstandsdataene til hindringsdeteksjon, robotbevegelseskontroll, automatiske dører, parkeringspåminnelser eller væskenivåprosjekter.
Hold det målte objektet innenfor anbefalt avstandsområde og utenfor blindsonen på 2 cm.
Bruk en flat og solid måloverflate for bedre ultralydrefleksjon.
Unngå å måle myke, vinklede, porøse eller lydabsorberende materialer.
Bruk en stabil 5V strømforsyning og hold ledningene korte og sikre.
Legg til et tidsavbrudd til pulseIn() for å forhindre lang blokkering når ingen ekko kommer tilbake.
Gjennomsnittlig eller median-filter flere målinger for å redusere støy.
For høyere nøyaktighet, kompenser for temperatur fordi lydhastigheten endres med lufttemperaturen.
| Søknad | Hvordan HC-SR04 brukes |
| Robot for å unngå hindringer | Oppdager objekter i nærheten og hjelper roboten med å endre retning. |
| Parkeringsavstandssensor | Måler avstanden mellom kjøretøyet og en hindring. |
| Deteksjon av væskenivå | Måler avstanden fra sensoren til væskeoverflaten uten kontakt. |
| Smart søppelbøtte | Oppdager en nærliggende hånd eller gjenstand og utløser automatisk åpning av lokket. |
For å bruke en HC-SR04 ultralydsensor med Arduino, koble VCC til 5V, GND til GND, TRIG til en digital utgangspinne og ECHO til en digital inngangspinne. Send en 10us triggerpuls, les ekkovarigheten med pulseIn(), og beregn avstanden med formelen for flytiden.
HC-SR04 er billig, enkel å bruke og egnet for mange Arduino-avstandsmålingsprosjekter. For best resultat, vær oppmerksom på måloverflate, målevinkel, blindsone, stabil kraft, timeout-håndtering og temperatureffekter.
Arduino sender en 10us-puls til TRIG-pinnen. HC-SR04 sender ut åtte 40 kHz ultralydpulser og setter ECHO-pinnen høyt til den reflekterte lyden kommer tilbake. Arduino måler denne pulstiden og beregner avstand.
Formelen er avstand = varighet × lydhastighet / 2. I centimeter er en vanlig Arduino-formel avstandCm = varighet × 0,0343 / 2, hvor varigheten måles i mikrosekunder.
Den målte ekkotiden er tur-retur-tiden fra sensoren til objektet og tilbake til sensoren. Deling på 2 gir enveisavstanden mellom sensoren og objektet.
Du kan bruke de fleste Arduino digitale pins. I mange eksempler er TRIG koblet til digital pin 9 og ECHO er koblet til digital pin 10. Koden må samsvare med pinnene som brukes i ledningene dine.
Vanlige årsaker inkluderer løse ledninger, ustabil 5V strøm, feil TRIG- eller ECHO-pinnumre, ingen gjenstander innen rekkevidde, vinklede måloverflater, myke materialer, blokkerte sensorhoder eller ingen tidsavbrudd i pulseIn()-funksjonen.
Blindsonen er minimumsavstanden der modulen ikke kan måle pålitelig. For HC-SR04 er blindsonen vanligvis ca. 2 cm. Objekter nærmere enn dette kan gi ustabile målinger.
Ja, HC-SR04 kan brukes til enkle berøringsfrie vannnivåprosjekter hvis sensoren er beskyttet mot fuktighet og montert over væskeoverflaten. For fuktige, utendørs eller industrielle tanker anbefales en vanntett ultralydsensor.
Bruk en stabil strømforsyning, hold sensoren vinkelrett på målet, unngå myke eller vinklede overflater, legg til pulseIn timeout, ta flere avlesninger, bruk medianfiltrering og la ca. 60 ms mellom målinger.