How does HC sr04 work?

Komplet Guide til HC-SR04 Ultralydssensoren

07/12/2006

Rating: 4.04 (11618 votes)

HC-SR04 ultralydssensoren er en af de mest populære og overkommelige sensorer til afstandsmåling i hobbyelektronikprojekter. Uanset om du bygger en robot, der skal undgå forhindringer, et parkeringsassistentsystem eller et interaktivt kunstværk, er denne sensor et fantastisk valg. Den er kendt for sin brugervenlighed, især i kombination med platforme som Arduino. I denne omfattende guide vil vi dykke ned i, hvordan HC-SR04 fungerer, dens tekniske specifikationer, og hvordan du nemt kan tilslutte den og programmere den med en Arduino. Vi vil dække alt fra de grundlæggende principper til konkrete kodeeksempler, så du kan komme i gang med dine egne projekter med det samme.

How does HC sr04 work?
kHz5.0 OPERATIONThe timing diagram HC SR04 is shown. To start measurement, Trig of SR04 must receive a pulse of high (5V) for at least 10us, this will initiate the sensor will transmit out 8 cycle of ultrasonic burst at 40kHz and wait for the reflec
Indholdsfortegnelse

Hvordan virker HC-SR04? Princippet om Sonar

Kernen i HC-SR04's funktionalitet er et princip, der kaldes sonar (Sound Navigation and Ranging), hvilket er den samme teknologi, som flagermus og ubåde bruger til at navigere. Sensoren bestemmer afstanden til et objekt ved at udsende og modtage lydbølger, som ligger uden for det menneskelige øres høreområde (ultralyd).

Processen kan opdeles i følgende trin:

  1. Udsendelse af signal: For at starte en måling skal sensorens 'Trig' (Trigger) pin modtage en kort puls på mindst 10 mikrosekunder (µs) fra en mikrocontroller som f.eks. en Arduino.
  2. Ultralydsbølge: Når trigger-pulsen er modtaget, udsender sensorens sender automatisk en byge af otte ultralydspulser ved en frekvens på 40 kHz. Disse lydbølger bevæger sig gennem luften med lydens hastighed.
  3. Refleksion: Hvis lydbølgerne rammer et objekt på deres vej, bliver de reflekteret tilbage mod sensoren.
  4. Modtagelse af ekko: Sensorens modtager ('Echo' pin) lytter efter det reflekterede signal. Når ekkoet opfanges, skifter 'Echo'-pinnen til et højt signal (HIGH).
  5. Tidsmåling: Den tid, 'Echo'-pinnen er HIGH, svarer præcist til den tid, det tog for lyden at rejse fra sensoren, ramme objektet og vende tilbage. Denne varighed måles af mikrocontrolleren.

Med denne tidsmåling kan vi beregne afstanden. Vi kender lydens hastighed i luften, som er ca. 343 meter i sekundet (eller 0,0343 centimeter pr. mikrosekund) ved stuetemperatur. Formlen ser således ud:

Afstand = (Lydens hastighed * Målt tid) / 2

Hvorfor dividerer vi med 2? Fordi den målte tid dækker rejsen både frem til objektet og tilbage igen. For at finde afstanden til objektet skal vi kun bruge tiden for den ene vej, og derfor halverer vi den samlede rejsetid.

Egenskaber og Tekniske Specifikationer

HC-SR04 er et lille modul, men det har imponerende specifikationer for sin prisklasse. Her er en oversigt over de vigtigste tekniske detaljer:

  • Strømforsyning: +5V DC
  • Hvilestrøm: <2mA
  • Arbejdsstrøm: 15mA
  • Effektiv Målevinkel: <15°
  • Måleområde: 2 cm – 400 cm (1 tomme – 13 fod)
  • Opløsning: 0,3 cm
  • Målingsvinkel (Total): Cirka 30°
  • Trigger Input Signal: 10µS TTL puls
  • Echo Output Signal: TTL puls, hvis varighed er proportional med afstanden
  • Dimensioner: 45mm x 20mm x 15mm

Pinout for HC-SR04

Sensoren har fire ben, som er tydeligt mærket. Det er vigtigt at forbinde dem korrekt for at sikre, at sensoren fungerer.

  • VCC: Tilsluttes til en 5V strømforsyning.
  • Trig: Trigger-pinden. Bruges til at sende startpulsen til sensoren. Dette er en input-pin for sensoren.
  • Echo: Echo-pinden. Returnerer en puls, hvis længde angiver rejsetiden for lyden. Dette er en output-pin fra sensoren.
  • GND: Ground (Stel). Tilsluttes til fælles stel med mikrocontrolleren.

Sådan bruges HC-SR04 med en Arduino

Nu hvor vi forstår teorien, lad os gå videre til praksis. Dette projekt viser, hvordan du kan måle afstand og vise resultatet i Arduinos serielle monitor. Det er et fremragende udgangspunkt for mere komplekse projekter.

Nødvendige Dele

  • Arduino UNO (eller en anden kompatibel model)
  • HC-SR04 Ultralydssensor
  • Et breadboard (fumlebræt)
  • Jumper-ledninger (han-til-hun eller han-til-han)

Forbindelsesdiagram

Forbindelserne er meget enkle. Følg diagrammet nedenfor for at koble din sensor til din Arduino.

HC-SR04 PinArduino Pin
VCC5V
TrigDigital Pin 11
EchoDigital Pin 12
GNDGND

Kodeeksempel 1: Standardmetoden uden bibliotek

Denne kode bruger Arduinos indbyggede funktioner til at styre sensoren og beregne afstanden. Kopier og upload følgende kode til din Arduino IDE.

How to use hc-sr04 ultrasonic sensor with Arduino board?
Upload the code to your Arduino board. Then, open the Serial Monitor at a baud rate of 115200. The distance to the nearest object is printed in the Serial Monitor window. In this post, we’ve shown you how the HC-SR04 ultrasonic sensor works and how you can use it with the Arduino board.
// Definerer pins til Trig og Echo const int trigPin = 11; const int echoPin = 12; // Variabler til at gemme varighed og afstand long duration; int cm; void setup() { // Starter seriel kommunikation for at vise resultater Serial.begin(9600); // Definerer pin-tilstande pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { // Sikrer at Trig-pinnen er lav før pulsen sendes digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sender en 10 mikrosekunders puls til Trig-pinnen digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Aflæser varigheden af ekko-pulsen duration = pulseIn(echoPin, HIGH); // Beregner afstanden i centimeter // Lydens hastighed er ca. 29.1 mikrosekunder pr. centimeter // Vi dividerer med 2, da lyden rejser frem og tilbage cm = (duration / 2) / 29.1; // Viser resultatet i den serielle monitor Serial.print("Afstand: "); Serial.print(cm); Serial.print(" cm"); Serial.println(); // Venter lidt før næste måling delay(500); }

Hvordan koden virker

Koden er ret ligetil. Først definerer vi, hvilke Arduino-pins der er forbundet til `trigPin` og `echoPin`. I `setup()`-funktionen initialiserer vi seriel kommunikation, så vi kan se outputtet på computeren, og vi definerer `trigPin` som en OUTPUT og `echoPin` som en INPUT.

I `loop()`-funktionen sker selve afstandsmåling. Vi starter med at sende en ren 10µs puls til `trigPin` for at aktivere sensoren. Herefter bruger vi funktionen `pulseIn(echoPin, HIGH)`. Denne funktion venter på, at `echoPin` går HIGH, starter en timer, og stopper timeren, når pinnen går LOW igen. Den returnerer varigheden af pulsen i mikrosekunder. Dette er vores `duration`-værdi. Til sidst konverterer vi denne varighed til en afstand i centimeter ved hjælp af formlen, vi diskuterede tidligere, og udskriver resultatet.

Kodeeksempel 2: Brug af NewPing-biblioteket

For at gøre koden endnu enklere og ofte mere pålidelig, kan du bruge et bibliotek kaldet `NewPing`. Dette bibliotek håndterer timingen og beregningerne for dig. Du skal først installere biblioteket via Arduino IDE's Library Manager.

#include <NewPing.h> #define TRIGGER_PIN 11 #define ECHO_PIN 12 #define MAX_DISTANCE 400 // Maksimal afstand i cm // Opretter en sensor-instans NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); } void loop() { delay(50); // Venter 50ms mellem målinger // Udfører en måling og får afstanden i cm unsigned int distance = sonar.ping_cm(); // Udskriver resultatet (0 betyder uden for rækkevidde) Serial.print("Afstand: "); Serial.print(distance); Serial.println(" cm"); }

Fordelen ved NewPing

Som du kan se, er koden med NewPing-biblioteket meget kortere. Biblioteket har indbyggede funktioner, der gør det nemt at udføre en måling (`sonar.ping_cm()`). Det indeholder også avancerede funktioner som f.eks. gennemsnitsberegning over flere målinger for at reducere støj, hvilket kan give mere stabile resultater.

Ofte Stillede Spørgsmål (FAQ)

Hvad er den maksimale og minimale afstand, HC-SR04 kan måle?
Sensoren er specificeret til at måle afstande mellem 2 cm og 400 cm (4 meter). Målinger under 2 cm eller over 4 meter er upålidelige.
Hvor præcis er sensoren?
Producenten angiver en opløsning på 0,3 cm. I praksis kan præcisionen påvirkes af temperatur, luftfugtighed og overfladen på det objekt, der måles. Bløde eller vinklede overflader kan give unøjagtige aflæsninger, da de absorberer eller afbøjer lyden.
Kan sensoren bruges udendørs?
Den kan bruges udendørs, men ydeevnen kan blive påvirket af faktorer som vind (der kan forstyrre lydbølgerne) og stærkt sollys. Andre ultralydskilder i nærheden kan også forstyrre målingerne.
Hvad sker der, hvis der ikke er noget objekt inden for rækkevidde?
Hvis sensoren ikke modtager et ekko inden for en bestemt tidsramme (timeout), vil `pulseIn()`-funktionen returnere 0. Det samme gælder for `NewPing`-biblioteket, som også vil returnere 0, hvilket indikerer, at intet objekt blev fundet.
Hvorfor er sensorens synsfelt (FOV) formet som en kegle?
Ultralyden udsendes ikke i en lige linje, men spreder sig i en kegleform. Det betyder, at sensoren kan opdage objekter, der ikke er direkte foran den. Den effektive målevinkel er omkring 15-30 grader, så det første objekt, sensoren rammer inden for denne kegle, vil være det, der returnerer et ekko.

Afslutning

HC-SR04 ultralydssensoren er et kraftfuldt, men simpelt værktøj for enhver, der er interesseret i elektronik og robotik. Med en grundlæggende forståelse af dens sonar-princip og et par linjer kode i Arduino, kan du nemt integrere præcis afstandsmåling i dine projekter. Uanset om du bruger standardmetoden eller det praktiske NewPing-bibliotek, åbner denne sensor døren til en verden af interaktive og intelligente applikationer. Vi håber, denne guide har givet dig den viden og selvtillid, du har brug for til at komme i gang.

Hvis du vil læse andre artikler, der ligner Komplet Guide til HC-SR04 Ultralydssensoren, kan du besøge kategorien Sundhed.

Go up