Project 5 Ultrasone Sensor

1.Beschrijving

image-20250509085643931

De HC-SR04 ultrasone sensor gebruikt sonar om de afstand tot een object te bepalen, zoals vleermuizen dat doen. Het biedt uitstekende contactloze afstandsdetectie met hoge nauwkeurigheid en stabiele metingen in een gebruiksvriendelijk pakket. Het wordt geleverd met een ultrasone zender- en ontvangermodules.

Img

De HC-SR04 of ultrasone sensor wordt gebruikt in een breed scala aan elektronica projecten voor het creëren van obstakeldetectie en afstandsmeettoepassingen, evenals diverse andere toepassingen. Hier hebben we een eenvoudige methode gebracht om de afstand te meten met Arduino en een ultrasone sensor en hoe je de ultrasone sensor met Arduino gebruikt.

2.Specificatie

  • Werkspanning :+5V DC

  • Ruststroom : <2mA

  • Werkstroom: 15mA

  • Effectieve hoek: <15°

  • Afstandsbereik : 2cm – 300 cm

  • Nauwkeurigheid : 0.3 cm

  • Meethoek: 30 graden

  • Trigger ingang pulsbreedte: 10uS

image-20250509085705309

3.Componenten

Development Board *1

8833 Motor Driver *1

Rode LED Module*1

Ultrasone Sensor*1

img

img

img

image-20250509085643931

4P Dupont Draad*1

USB Kabel*1

3P Dupont Draad*1

image-20250509143737972

img

img

4.Werkingprincipe

Zoals op de bovenstaande afbeelding te zien is, lijkt het op twee ogen. Eén is de zendkant, de ander is de ontvangkant.

De ultrasone module zal ultrasone golven uitzenden na het triggeren van een signaal. Wanneer de ultrasone golven het object tegenkomen en worden teruggekaatst, geeft de module een echo signaal af, zodat het de afstand tot het object kan bepalen aan de hand van het tijdsverschil tussen het trigger signaal en het echo signaal.

De t is de tijd dat het uitgezonden signaal het obstakel ontmoet en terugkeert. En de voortplantingssnelheid van geluid in de lucht is ongeveer 343m/s, en afstand = snelheid * tijd. Echter, de ultrasone golf wordt uitgezonden en komt terug, wat 2 keer de afstand is. Daarom moet het gedeeld worden door 2, de afstand gemeten door ultrasone golf = (snelheid * tijd)/2.

Gebruiksmethode en schema van ultrasone module:

  1. Gebruik de GPIO pin om een hoog signaal van minstens 10μs te geven aan de Trig pin van SR04, waarmee het getriggerd kan worden om afstand te detecteren.

  2. Na het triggeren zal de module automatisch acht 40KHz ultrasone pulsen uitzenden en detecteren of er een signaal terugkomt. Deze stap wordt automatisch door de module uitgevoerd.

  3. Als het signaal terugkomt, zal de Echo pin een hoog niveau afgeven, en de duur van het hoge niveau is de tijd vanaf het uitzenden van de ultrasone golf tot de terugkeer.

image-20250509143833078

Schema van ultrasone sensor:

image-20250509154035287

5.Aansluitschema

image-20250509154107103

VCC, Trig, Echo en Gnd van de ultrasone sensor zijn verbonden met 5V(V), D12, D13 en Gnd(G)

6.Testcode

//***************************************************************************
/*
 keyestudio 4wd BT Car
 lesson 5.1
 Ultrasonic Sensor
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;
void setup() {
  //Seriële poort starten
  Serial.begin (9600);
  //Definieer ingangen en uitgangen
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // De sensor wordt geactiveerd door een HIGH-puls van 10 microseconden of langer.
  // Geef vooraf een korte LOW-puls om een schone HIGH-puls te garanderen:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
   // Lees het signaal van de sensor: een HIGH-puls waarvan de
  // duur de tijd is (in microseconden) vanaf het verzenden
  // van de ping tot de ontvangst van de echo van een object.
  duration = pulseIn(echoPin, HIGH);
   // Zet de tijd om in een afstand
  cm = (duration/2) / 29.1;     // Delen door 29.1 of vermenigvuldigen met 0.0343
  inches = (duration/2) / 74;   // Delen door 74 of vermenigvuldigen met 0.0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
}
//***************************************************************************

7.Testresultaat

Na het succesvol uploaden van de code naar de V4.0 board, verbind de bedrading volgens het bedradingsschema, en sluit vervolgens de computer via een USB-kabel aan om de board van stroom te voorzien. Na het inschakelen, open de seriële monitor en stel de baudrate in op 9600.

De gedetecteerde afstand wordt weergegeven, en de eenheden zijn cm en inch. Houd de ultrasonic sensor met de hand tegen, dan wordt de weergegeven afstand kleiner.

image-20250509154147537

8.Codeuitleg

int trigPin- deze pin is gedefinieerd om ultrasone golven te verzenden, meestal output.

int echoPin - deze is gedefinieerd als de pin voor ontvangst, meestal input.

cm = (duration/2) / 29.1-

inches = (duration/2) / 74-

We kunnen de afstand berekenen met de volgende formule:

afstand = (reistijd/2) x geluidssnelheid

De geluidssnelheid is: 343m/s = 0.0343 cm/us = 1/29.1 cm/us

Of in inches: 13503.9in/s = 0.0135in/us = 1/74in/us

We moeten de reistijd delen door 2 omdat we rekening moeten houden met het feit dat de golf werd verzonden, het object raakte en vervolgens terugkeerde naar de sensor.

9.Uitbreidingspraktijk

We hebben zojuist de afstand gemeten die door de ultrasonic wordt weergegeven. Wat dacht je ervan om de LED te besturen met de gemeten afstand? Laten we het proberen en een LED-lichtmodule aansluiten op pin D9.

image-20250509154232505

//*****************************************************************
/*
 keyestudio 4wd BT Car
 les 5.2
 Ultrasonic LED
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;

void setup() {
  Serial.begin (9600);  // Seriële poort starten
  pinMode(trigPin, OUTPUT);  // Definieer inputs en outputs
  pinMode(echoPin, INPUT);
}

void loop() 
{
  // De sensor wordt geactiveerd door een HIGH-puls van 10 microseconden of langer.
  // Geef vooraf een korte LOW-puls om een schone HIGH-puls te garanderen:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Lees het signaal van de sensor: een HIGH-puls waarvan de
  // duur de tijd is (in microseconden) vanaf het verzenden
  // van de ping tot de ontvangst van de echo van een object.
  duration = pulseIn(echoPin, HIGH);
  // Zet de tijd om in een afstand
  cm = (duration/2) / 29.1;     // Delen door 29.1 of vermenigvuldigen met 0.0343
  inches = (duration/2) / 74;   // Delen door 74 of vermenigvuldigen met 0.0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
  if (cm>=2 && cm<=10)
  {
    Serial.println("HIGH");
    digitalWrite(9, HIGH);
  }
  else
  {
    Serial.println("LOW");
    digitalWrite(9, LOW);
  }
}
//*****************************************************************

Na het succesvol uploaden van de code naar de V4.0 board, verbind de bedrading volgens het bedradingsschema, en sluit vervolgens de computer via een USB-kabel aan om de board van stroom te voorzien. Na het inschakelen, blokkeer de ultrasonic sensor met de hand (de afstand is tussen 2-10cm), en controleer of de LED aan gaat.