ArduinoUltrasonic Sensor

De HC-SR24 is een ultrasoon track sensor. Ultrasoon klinkt heel mooi en flashy, maar daar merk je niets van. Sterker genoeg er gaan geen LEDjes branden en er zijn geen geluidjes. De resultaten zijn echter wel weer handig om afstanden te meten.



ArduinoStuur en ontvang

Op het bordje zit een zender (Transmitter), deze stuurt heel snel 8x achter elkaar 40KHz ultrasoon golfjes (geluidgolven). En gaat dan staan te kijken wat er terug komt.

De verzonden golven verplaatsen zich van de zender af, totdat ze ergens tegenop botsen, dan kaatsen ze weer terug. De ontvanger (Receiver) ziet dan dat er golven binnenkomen en zal de teller laten stoppen.

Op het bordje zitten 2 grote zilverkleurige cilinders, ernaast staat een T voor de Transmitter en een R voor de Receiver.



ArduinoActies

De snelheid van het ultrasone golfje is 29,1 millicentimeter per second. Dat is de snelheid door de lucht. Wat we allemaal gaan doen:

  • Versturen
  • Signaal heen versturen ------>
  • Botsen
  • Signaal komt terug gestuiterd <------
  • Ontvangen
  • Tijdsmeting stoppen

Dat lijkt heel veel werk. Gelukkig gaat het signaal heel snel en zijn ook de componenten snel, dus het gaat allemaal vliegensvlug.



ArduinoRekenvoorbeeld

Een voorbeeldberekening waarbij het totale signaal 4 seconden onderweg is. We gaan straks een Arduino functie gebruiken die de duur terug geeft in milliseconden. Dus hier in het voorbeeld ga ik meteen uit van milliseonden. En 4 seconden is 4000 milliseconden. Gewoon met duizend vermedigvuldigen dus.

duration      = 4000 miliseconden

totalDistance = duration / 29.1
totalDistance =     4000 / 29,1 = 137,457
   
singleDistance = totalDistance / 2;  
singleDistance =       137,457 / 2 = 68,73 cm

De duration is de tijd die de golfjes onderweg zijn. De totalDistance is de totale afstand die de golfjes in die tijd hebben afgelegd. En omdat de golfjes heen en weer gaan moeten we de singleDistance berekenen door de totaleDistance door 2 te delen, om te zien hoe ver het object is waartegen de golfjes zijn gebotst.

Het aansluiten van het bordje is erg gemakkelijk. Er zit een pin in om te starten en een pin om de meting uit te lezen. De power en GND spreken voor zichzelf.

  VCC   5V power
  Trig  Starter (trigger)
  Echo  Ontvangst
  GND   Aarde
+


ArduinoBreadboard


ArduinoSource code
/*
  Distance calculator

  (C) copyright www.punthooft.nl 2019
*/

// Constants
const int pinTrig = 2;    // Trigger
const int pinEcho = 3;    // Echo

// Variables
long duration;
float totalDistance;
float singleDistance;
long inches;

// Setup function runs once when powerup the board and on reset 
void setup() {

  //Serial Port begin
  Serial.begin (9600);

  //Define inputs and outputs
  pinMode(pinTrig, OUTPUT);   // Trigger
  pinMode(pinEcho, INPUT);    // Response
}


// The loop function runs over and over again forever
void loop() {

   // Sensor starts when triggered, the trigger signal is a HIGH pulse of 10+ microseconds
  
   // Prepare the channel by first giving a LOW pulse
   digitalWrite(pinTrig, LOW);
   delayMicroseconds(5);

   // Now send the trigger
   digitalWrite(pinTrig, HIGH);
   delayMicroseconds(10);
   digitalWrite(pinTrig, LOW);
 
   // Reads a pulse (either HIGH or LOW) on a pin. 
   // The pulseIn function will wait for the pin to go from LOW to HIGH, 
   // At that moment, the timer will start, ending at the next switch. 
   duration = pulseIn(pinEcho, HIGH); // Milliseconds
   
   // Convert the time into a distance in cm
   totalDistance = duration / 29.1;     // Divide by 29.1
   singleDistance = totalDistance / 2;  // Forward and back

   Serial.print(duration);
   Serial.print("msec .  ");
   Serial.print(singleDistance);
   Serial.print("cm");
   Serial.println();

   delay(500);
}



Copyright 2019 www.punthooft.nl
We do not collect cookies for advertisement. Your data is never send to third parties.