Visningar: 164 Författare: Grace Publiceringstid: 2021-07-26 Ursprung: Plats
De HC-SR04 ultraljudssensor är en av de mest populära avståndsmätningsmodulerna för Arduino-projekt. Den används ofta i robotar för att undvika hinder, parkeringssensorer, nivådetektering, smarta papperskorgar, avståndsmätare och andra beröringsfria avkänningsapplikationer.
Modulen sänder ut 40kHz ultraljudsvågor genom en sändare. När ljudvågen möter ett föremål reflekteras den tillbaka till mottagaren. Genom att mäta ekotiden och använda ljudets hastighet kan Arduino beräkna avståndet mellan sensorn och objektet.
| Parameter | Värde |
| Typisk arbetsspänning | 5V DC |
| Statisk arbetsström | Mindre än 5mA på vissa modulversioner |
| Driftsfrekvens | 40kHz ultraljudsvåg |
| Detektionsavstånd | Vanligt område: 2cm till 400cm; vissa förstärkningsjusterade versioner kan stödja längre räckvidd. |
| Detekteringsvinkel | Vanligtvis inom 15 grader; vissa versioner med högre förstärkning kan nå cirka 30 grader. |
| Precision | Upp till ca 0,3 cm under lämpliga testförhållanden |
| Blind zon | Cirka 2 cm minsta mätavstånd |
HC-SR04 ultraljudsmodulen har fyra stift: VCC, TRIG, ECHO och GND. Arduino skickar en kort triggerpuls till TRIG-stiftet och läser sedan returpulsen från ECHO-stiftet.
| HC-SR04 Pin | Arduino-anslutning | Fungera |
| VCC | 5V | Strömförsörjning för ultraljudsmodulen. |
| TRIG | Digital stift 9 | Triggeringång. Arduino applicerar en puls på 10us för att börja mäta. |
| EKO | Digital stift 10 | Ekoutgång. Arduino läser av pulsbredd för att beräkna avstånd. |
| GND | GND | Jordförbindelse. |
HC-SR04 fungerar genom att mäta flygtiden. Arduino skickar en triggersignal på hög nivå på minst 10 mikrosekunder till TRIG-stiftet. Modulen skickar sedan automatiskt åtta 40kHz ultraljudspulser och väntar på det reflekterade ekot.
När den reflekterade ultraljudssignalen detekteras avger ECHO-stiftet en högnivåpuls. Varaktigheten för denna puls är ultraljudsvågens restid tur och retur.
Avstånd = Eko högnivåtid × Ljudhastighet / 2
I Arduino-kod är den vanliga förenklade formeln:
Avstånd i cm = varaktighet × 0,0343 / 2
Timingprocessen är enkel: Arduino håller TRIG låg en kort stund, skickar en 10us hög puls och återställer sedan TRIG till låg. HC-SR04 skickar en ultraljudskur och ställer in ECHO högt tills den reflekterade signalen kommer tillbaka eller mätningen tar slut.
För att undvika instabila avläsningar, lämna en kort fördröjning mellan mätningarna. En mätcykel på cirka 60ms används vanligtvis så att det föregående ultraljudsekot hinner försvinna innan nästa trigger.
Arduino pulseIn() -funktionen används för att mäta hur länge en digital pin förblir HÖG eller LÅG. För HC-SR04 använder Arduino pulseIn(echoPin, HIGH) för att läsa av högnivåpulsbredden från ECHO-stiftet.
| Syntax | Menande |
| pulseIn(stift, värde) | Läser varaktigheten av en HÖG eller LÅG puls. |
| pulseIn(stift, värde, timeout) | Läser pulsen med ett timeoutvärde i mikrosekunder. |
Det rekommenderas att använda en timeout. Om inget eko returneras kan funktionen sluta vänta och returnera 0 istället för att blockera programmet för länge.
Ledningarna är okomplicerade. Anslut VCC till 5V, GND till GND, TRIG till en Arduino digital utgångsstift och ECHO till en Arduino digital ingångsstift. Följande exempel använder Arduino Uno, TRIG på stift 9 och ECHO på stift 10.
Följande typiska Arduino-program skickar en 10us triggerpuls, läser av ECHO-pulsbredden, beräknar avstånd i centimeter och skriver ut resultatet i den seriella monitorn.
const int trigPin = 9; const int echoPin = 10; lång varaktighet; flytavståndCm; 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); duration = pulseIn(echoPin, HIGH, 30000); if (varaktighet == 0) { Serial.println('Utanom intervall'); } annat { avståndCm = varaktighet * 0,0343 / 2; Serial.print('Avstånd: '); Serial.print(distanceCm); Serial.println(' cm'); } delay(60); }
Om du ser avståndsvärden i den seriella monitorn fungerar HC-SR04 ultraljudssensorn och Arduino-ledningarna korrekt. Du kan sedan använda avståndsdata för hinderdetektering, robotrörelsekontroll, automatiska dörrar, parkeringspåminnelser eller vätskenivåprojekt.
Håll det uppmätta föremålet inom det rekommenderade avståndsintervallet och utanför den blinda zonen på 2 cm.
Använd en plan och solid målyta för bättre ultraljudsreflektion.
Undvik att mäta mjuka, vinklade, porösa eller ljudabsorberande material.
Använd en stabil 5V strömförsörjning och håll kablarna korta och säkra.
Lägg till en timeout till pulseIn() för att förhindra lång blockering när inget eko kommer tillbaka.
Genomsnittlig eller medianfiltrera flera avläsningar för att minska brus.
För högre noggrannhet, kompensera för temperatur eftersom ljudhastigheten ändras med lufttemperaturen.
| Ansökan | Hur HC-SR04 används |
| Robot för att undvika hinder | Upptäcker närliggande föremål och hjälper roboten att ändra riktning. |
| Parkeringsavståndssensor | Mäter avståndet mellan fordonet och ett hinder. |
| Detektering av vätskenivå | Mäter avståndet från sensorn till vätskeytan utan kontakt. |
| Smart papperskorg | Upptäcker en närliggande hand eller föremål och utlöser automatisk locköppning. |
För att använda en HC-SR04 ultraljudssensor med Arduino, anslut VCC till 5V, GND till GND, TRIG till ett digitalt utgångsstift och ECHO till ett digitalt ingångsstift. Skicka en 10us triggerpuls, läs ekotaktighet med pulseIn() och beräkna avståndet med formeln för flygtid.
HC-SR04 är billig, lätt att använda och lämplig för många Arduino avståndsmätningsprojekt. För bästa resultat, var uppmärksam på målyta, mätvinkel, blindzon, stabil effekt, timeouthantering och temperatureffekter.
Arduino skickar en 10us-puls till TRIG-stiftet. HC-SR04 sänder ut åtta 40 kHz ultraljudspulser och sätter ECHO-stiftet högt tills det reflekterade ljudet kommer tillbaka. Arduino mäter denna pulstid och beräknar avstånd.
Formeln är avstånd = varaktighet × ljudhastighet / 2. I centimeter är en vanlig Arduino-formel distansCm = varaktighet × 0,0343 / 2, där varaktigheten mäts i mikrosekunder.
Den uppmätta ekotiden är tiden fram och tillbaka från sensorn till objektet och tillbaka till sensorn. Att dividera med 2 ger envägsavståndet mellan sensorn och objektet.
Du kan använda de flesta Arduino digitala stift. I många exempel är TRIG ansluten till digital stift 9 och ECHO ansluten till digital stift 10. Koden måste matcha stiften som används i din kabeldragning.
Vanliga orsaker inkluderar lösa ledningar, instabil 5V-ström, fel TRIG- eller ECHO-stiftnummer, inget föremål inom räckvidd, vinklade målytor, mjuka material, blockerade sensorhuvuden eller ingen timeout i pulseIn()-funktionen.
Blindzonen är det minsta avståndet där modulen inte kan mäta tillförlitligt. För HC-SR04 är blindzonen vanligtvis cirka 2 cm. Objekt närmare än detta kan ge instabila avläsningar.
Ja, HC-SR04 kan användas för enkla beröringsfria vattennivåprojekt om sensorn är skyddad från fukt och monterad ovanför vätskeytan. För fuktiga, utomhus- eller industritankar rekommenderas en vattentät ultraljudssensor.
Använd en stabil strömförsörjning, håll sensorn vinkelrätt mot målet, undvik mjuka eller vinklade ytor, lägg till pulseIn timeout, gör flera avläsningar, använd medianfiltrering och låt cirka 60 ms mellan mätningarna.