Articles

Sådan bruger du en HC-SR04 Ultralyd Afstand Sensor med Arduino

HC-SR04 er en billig, nem at bruge ultralyd afstand sensor, med et interval på 2 til 400 cm. Det er almindeligt anvendt i hindring undgå robotter og automatisering projekter. I denne tutorial lærer du, hvordan sensoren fungerer, og hvordan du bruger den med Arduino.

jeg har inkluderet 5 eksempler med et ledningsdiagram og kode, så du kan begynde at eksperimentere med din sensor., Vi vil først se på et eksempel, der ikke bruger et Arduino-bibliotek. Dernæst vil jeg vise dig, hvordan du kan bruge ne .ping-biblioteket til at oprette en mere kompakt kode.

billige ultralydafstands- / nærhedsfølere er gode, men i nogle projekter har du muligvis brug for en vandtæt sensor som JSN-SR04T eller en IR-sensor, der ikke påvirkes af temperaturændringer.,on

20×4 character I2C LCD (optional) × 1 Amazon
AliExpress DHT11 sensor (optional) × 1 Amazon

Software

Arduino IDE

Makerguides.,com er deltager i Amazonas Services LLC Associates Program, en affiliate reklamer program designet til at give et middel til websteder for at tjene reklame gebyrer af reklamer og linke til produkter på Amazon.com.

Hvordan virker en ultralyds-afstand sensor arbejde?

ultralydssensorer fungerer ved at udsende lydbølger med en frekvens, der er for høj til, at et menneske kan høre. Disse lydbølger rejser gennem luften med lydens hastighed, omtrent 343 m / s., Hvis der er et objekt foran sensoren, bliver lydbølgerne reflekteret tilbage, og modtageren af ultralydssensoren registrerer dem. Ved at måle, hvor lang tid der er gået mellem afsendelse og modtagelse af lydbølgerne, kan afstanden mellem sensoren og objektet beregnes.

Ultralyd afstand sensorer, der arbejder princippet. Kilde: https://www.maxbotix.com/

Ved 20°C er lydens hastighed er ca 343 m/s eller 0.034 cm/µs., Lad os sige, at tiden mellem afsendelse og modtagelse af lydbølgerne er 2000 mikrosekunder. Hvis du multiplicerer lydens hastighed med det tidspunkt, hvor lydbølgerne rejste, får du den afstand, som lydbølgerne rejste.

afstand = hastighed id

men det er ikke det resultat, vi leder efter. Afstanden mellem sensoren og objektet er faktisk kun halvdelen af denne afstand, fordi lydbølgerne rejste fra sensoren til objektet og tilbage fra objektet til sensoren. Så du skal dele resultatet med to.,

Afstand (cm) = lydens Hastighed (cm/µs) x Tid (μs) / 2

Og så for eksempel bliver dette:

Afstand (cm) = 0.0343 (cm/µs) × 2000 (µs) / 2 = 34.3 cm

Temperatur afhængighed af hastigheden af lyd

lydens hastighed, faktisk i høj grad afhænger af temperaturen, og en langt mindre grad på fugtighed i luften. 0.6ikipedia oplyser, at lydens hastighed stiger med cirka 0, 6 m/s pr., For de fleste tilfælde ved 20°C kan du kun bruge 343 m/s, men hvis du ønsker at få mere nøjagtige målinger, kan du beregne lydens hastighed med følgende formel:

V (m/s) = 331.3 + (0.606 × T)

V = lydens Hastighed (m/s)
T = lufttemperatur (°C)

Denne formel ikke indeholde fugtighed, da dens effekt på hastigheden af lyd er kun meget små.

nedenfor kan du finde en vejledning om, hvordan du bruger en DHT11 temperatur-og fugtighedssensor til at kalibrere lydens hastighed og få en mere præcis afstandslæsning med HC-SR04.,

Sådan fungerer HC-SR04

på forsiden af HC-SR04-sensoren kan du finde to sølvcylindre (ultralydstransducere), den ene er senderen af lydbølgerne og den anden er modtageren. For at lade sensoren generere en sonic burst, skal du indstille Trig pin høj i mindst 10 µs. Sensoren skaber derefter en 8-cyklusudbrud af ultralyd ved 40 kh..

denne sonic burst bevæger sig med lydens hastighed og hopper tilbage og bliver modtaget af modtageren af sensoren. Ekko-pin udsender derefter den tid, lydbølgerne rejste i mikrosekunder.,

Du kan bruge funktionen pulseIn() i Arduino-koden til at læse pulsens længde fra ekko-pin ‘ en. Derefter kan du bruge formlen nævnt ovenfor til at beregne afstanden mellem sensoren og objektet.,ncy

40 kHz måleområde 2 – 400 cm Beslutning 3 mm Måling af vinkel 15 grader Trigger input signal 10 µs høj puls Pris Tjek pris

For mere information, kan du tjekke databladet nedenfor:

El – Tilslutning HC-SR04 til Arduino UNO

ledninger diagrammet nedenfor viser, hvordan du tilslutter HC-SR04 sensor til Arduino.,

HC-SR04 med Arduino ledningsdiagram

kode eksempler nedenfor bruge digital pin 2 og 3 for at udløse og echo pin henholdsvis, men du kan selvfølgelig ændre dette til enhver digital pin-kode, du ønsker.,C-SR04 Connections

HC-SR04 Arduino
VCC 5 V
Trig Pin 2
Echo Pin 3
GND GND

Example code for HC-SR04 with Arduino

Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Du kan uploade følgende eksempelkode til din Arduino ved hjælp af Arduino IDE. Dernæst vil jeg forklare dig, hvordan koden fungerer.

Sådan fungerer koden

først defineres trigger pin og echo pin. Jeg kalder dem trigPin og EchoPin. Trigger pin er forbundet til digital pin 2 og echo pin til digital pin 3 på Arduino.

udsagnet#define bruges til at give et navn til en konstant værdi., Kompilatoren erstatter alle henvisninger til denne konstant med den definerede værdi, når programmet er kompileret. Så overalt du nævner trigPin, vil kompilatoren erstatte den med værdien 2, Når programmet er kompileret.

// Define Trig and Echo pin:#define trigPin 2#define echoPin 3

Næste jeg har defineret to variabler: duration og distance. Varighed gemmer tiden mellem afsendelse og modtagelse af lydbølgerne. Afstandsvariablen bruges til at gemme den beregnede afstand.,

// Define variables:long duration;int distance;

I setup(), kan du starte med at sætte trigPin som en output-og echoPin som input. Derefter initialiserer du seriel kommunikation med en baudhastighed på 9600. Senere viser du den målte afstand i den serielle skærm, som du kan få adgang til med Ctrl+Shift+M eller Tools > seriel skærm. Sørg for, at baudhastigheden også er indstillet til 9600 i den serielle skærm.

i loop() udløser du sensoren ved at indstille trigPin høj for 10 µs., Bemærk, at for at få et rent signal starter du med at rydde trigPin ved at indstille det lavt i 5 mikrosekunder.

Dernæst skal du læse længden af pulsen sendt af echoPin. Jeg bruger funktionen pulseIn() til dette. Denne funktion venter på, at stiften går fra lav til høj, starter timingen, venter derefter på, at stiften går lav og stopper timingen.

derefter kan du beregne afstanden ved hjælp af formlen nævnt i introduktionen af denne tutorial.

endelig udskrives den beregnede afstand i den serielle skærm.,

Eksempel kode HC-SR04 med Arduino og NewPing bibliotek

NewPing bibliotek skrevet af Tim Eckel kan bruges med mange ultralyd afstand sensorer. Den nyeste version af dette bibliotek kan downloades her på bitbucket.org. Du vil måske bemærke, at koden nedenfor, som bruger NewPing bibliotek, er meget kortere end den kode, vi har brugt før. Derudover indeholder ne .ping-biblioteket nogle andre gode funktioner. Det giver dig mulighed for at indstille en maksimal afstand til at læse, det vil ikke halte i et helt sekund, når der ikke modtages noget ekko, og det har et indbygget medianfilter.,

Du kan installere biblioteket ved at gå til Sketch > Include Library > Tilføj .ZIPIP bibliotek i Arduino IDE.

biblioteket indeholder nogle eksempler, som du kan bruge, men du bliver nødt til at ændre dem, så de passer til din hard .areopsætning. Jeg har inkluderet en ændret eksempelkode nedenfor, der kan bruges med den samme ledningsopsætning som før.

Du kan også bruge distance = sonar.ping_cm() eller distance = sonar.ping_in(), som returnerer den målte afstand i hele centimeter eller tommer., Med denne funktion behøver du ikke tage en varighedsmåling og beregne afstanden.

Interfacing ultralydssensorer i 3 pin-tilstand

ne .ping-biblioteket gør det også nemt at interface med ultralydssensorer, mens du kun bruger 1 I / O-pin. Dette kan være praktisk, hvis du har meget få i/O-stifter til rådighed, eller hvis du vil bruge en 3-pin ultralydssensor som Paralla.Ping.

for at oprette en 3-pin-opsætning (GND, 5V og SIG) skal du tilslutte både trigger pin og echo pin til den samme digitale pin på Arduino., I koden er det eneste, du skal ændre, linje 6-7 og definere den samme pin for både trigPin og echoPin. For eksempel digital pin 2.

//Define Trig and Echo pin#define trigPin 2#define echoPin 2

Sådan bruges ping_median() digitalt filter

det vigtigste, jeg kan lide ved ne .ping-biblioteket, er, at det har et indbygget medianfilter. Dette filter kan i høj grad forbedre nøjagtigheden af dine HC-SR04 aflæsninger. Funktionen ping_median() tager mange varighedsmålinger i træk, smider aflæsningerne uden for rækkevidde og gennemsnit derefter de resterende., Som standard vil det tage 5 aflæsninger, men du kan angive, hvor mange det skal tage. Udskift linje 19 med nedenstående linjer.

int iterations = 5;duration = sonar.ping_median(iterations);

Eksempel kode HC-SR04 med I2C LCD-og Arduino

for At få vist den målte afstand på en 2004 eller 1602 I2C LCD, alt hvad du skal gøre, er at gøre følgende tilslutninger og uploade koden nedenfor. HC-SR04 sensoren er tilsluttet på samme måde som før.

HC-SR04 med Arduino og I2C LCD-ledningsdiagram.,

I2C LCD Connections

I2C LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., En Arduino UNO med R3 layout (1.0 pinout), har også SDA (data line) og SCL (ur linje) pin overskrifter tæt på AREF pin. Tjek nedenstående tabel for flere detaljer.,f43445″>

Arduino Uno A4 A5 Arduino Nano A4 A5 Arduino Micro 2 3 Arduino Mega 2560 20 21 Arduino Leonardo 2 3 Arduino Due 20 21
I2C pin locations for different Arduino boards

The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Sørg for, at du har netop dette bibliotek installeret! Det omfatter også ledningen.h bibliotek, som giver dig mulighed for at kommunikere med I2C-enheder. Dette bibliotek skal leveres forudinstalleret med Arduino IDE.

Hvis du vil lære mere om, hvordan du styrer en I2C LCD med Arduino, kan du tjekke den fulde tutorial her.

  • Sådan styres et tegn I2C LCD med Arduino

Bemærk, at jeg brugte en 20 4 4 LCD-skærm. Hvis du har en anden størrelse LCD (16 2 2 er også almindelig), skal du ændre linje 20 til LiquidCrystal_I2C lcd(0x27,16,2);., Hvis din LCD ikke har standard I2C-adressen, 0 .27, skal du tjekke den komplette I2C-tutorial, hvor jeg forklarer, hvordan du kan finde ud af, hvad adressen er.

eksempelkode HC-SR04 med DHT11 temperatursensor og Arduino

som tidligere nævnt afhænger lydens hastighed stærkt af lufttemperaturen. Hvis du vil måle lange afstande (3-4 m), kan det være en god ide at tilføje en DHT11 eller DHT22 temperatur-og fugtighedssensor til din opsætning. Dette giver dig mulighed for at kalibrere lydens hastighed i realtid og derved øge nøjagtigheden af dine målinger.,

tilføjelse af en DHT11-sensor er virkelig enkel. Ledningsdiagrammet nedenfor viser dig, hvilke forbindelser du skal oprette. Bemærk, at jeg bruger en DHT11 med et breakout bord, så jeg behøver kun at wireire op 3 stifter. Sørg for at kontrollere sensorens etiket, rækkefølgen af stifterne kan være forskellig afhængigt af producenten. HC-SR04 sensoren er tilsluttet på samme måde som før.

HC-SR04 med Arduino og DHT11 ledningsdiagram.,

DHT11 Connections

DHT11 Arduino
VCC (+) 5 V
Signal (s) Pin 4
GND (-) GND

The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Dette bibliotek fungerer kun, hvis du også har adafruit_sensor-biblioteket installeret, som også er tilgængeligt på GitHub. Du kan også downloade de to biblioteker ved at klikke på knapperne nedenfor:

Du kan klikke på-knappen i øverste højre hjørne af feltet code for at kopiere denne kode.

Eksempel kode HC-SR04 med DHT11 og I2C LCD –

HC-SR04 med Arduino, DHT11 og I2C LCD-ledningsdiagram.

– koden nedenfor, kan bruges til at kombinere alle 3 ovenstående eksempler., Det viser både temperaturen, lydens hastighed og den målte afstand på LCD ‘ et.

HC-SR04 dimensioner

nedenfor kan du finde dimensionerne på HC-SR04 ultralydssensor. Jeg har bemærket, at der er nogle små forskelle mellem producenterne, så jeg anbefaler dobbeltkontrol mod din egen sensor.

HC-SR04 Dimensioner

HC-SR04 CAD

jeg har oprettet en grundlæggende CAD-tegninger af HC-SR04 ultrasonic sensor, som du kan downloade nedenfor.,

konklusion

i denne artikel har jeg vist dig, hvordan HC-SR04 ultralydsafstandssensoren fungerer, og hvordan du kan bruge den med Arduino. Jeg håber du fandt det nyttigt og informativt. Hvis du gjorde det, kan du dele det med en ven, der også kan lide elektronik!

personligt projekt: for et par måneder siden byggede jeg en interaktiv væginstallation med nogle venner. Vi brugte omkring 30 ultralydsafstandssensorer til at registrere folk, der gik foran væggen. Væggen inkluderede lys og lydeffekter, der ændrede sig afhængigt af hvor langt væk folk stod.,

Foto: Guus Schoonewille

jeg ville elske at vide, hvilke projekter du har planer om at bygge (eller har allerede bygget) med HC-SR04 afstand sensor. Hvis du har spørgsmål, forslag, eller hvis du tror, at ting mangler i denne tutorial, bedes du efterlade en kommentar nedenunder.