Formel für Ultraschall mit HC-SR04

Hallöchen,

ich habe jetzt schon einige Foren und Beiträge durch, aber nirgends eine Erklärung gefunden, die ich nachvollzeiehen kann

Es geht um die Formel, bzw. Berechnung des Abstandes zu einem Gegenstand mittels Ultraschall.
Kann mir vielleicht mal jemand verständlich erklären, wie das genau funktioniert?
Welchen Wert gibt mir die Methode "pulseIn" genau heraus?
Ich habe gelesen, dass es die Zeit vom Senden, bis zum Empfangen des Signals in us sei.
Wieso rechne ich nicht mit der Formel s = (v*t) / 2 ?
Schall breitet sich mit 2,9 us/mm aus. (343m/s)
Denn wenn ich diese verwende und sie so bilde s = Empfangsdauer * 2,9 / 2, ist mein Ergebnis um Faktor 10 zu groß.

Es dreht sich um folgenden Sketch!

int Trigger = 8 ;
int Echo = 9 ;
int LED = 10 ;

long mm, Empfangsdauer ;

void setup ()

{
  
  Serial.begin (9600) ;
  pinMode (Trigger, OUTPUT) ;
  pinMode (Echo, INPUT) ;
  pinMode (LED, OUTPUT) ;

}


void loop ()

{
  digitalWrite (Trigger, LOW) ;
  delayMicroseconds (2) ;
  digitalWrite (Trigger, HIGH) ;
  delayMicroseconds (5) ;
  digitalWrite (Trigger, LOW) ;
  
  Empfangsdauer = pulseIn (Echo, HIGH) ;
  
  
  mm = (Empfangsdauer / 2.9) / 2 ;
  
  if (mm <= 150)
    {
      digitalWrite (LED, HIGH) ;
    }
  else
    {
       digitalWrite (LED, LOW) ;
    }
    
  Serial.print (mm) ;
  Serial.print ("  mm, ") ;
  Serial.println (Empfangsdauer) ;
  
  
  delay (100) ;
  
  
 

}

Vielen Dank schonmal im Vorraus! :slight_smile:

wenn ich mich nicht verrechnet habe gilt doch:
343 m/s in mm/µs umrechnen

1 m = 1000 mm
1s = 1.000.000 µs

343 m/s * 1000 mm / 1.000.000 µs = 0,343 mm/µs

du rechnest mit 2,9 statt 0,3 das ist der Faktor 10

Die 10 kommt von den centi in den cm weil die Ausgabe nicht in mm sondern in cm erfolgt.

Pulsein gibt die Zeit in mS eines High (oder LOW) Signals aus. Der Schall braucht eien gewisse Zeit zum Hindernis und zurück.

grüße Uwe

Der Kehrwert von 0,343 mm/µs sind Aljonators 2,9 µs/mm

Aber wenn man den nimmt, muss man natürlich (t / 2,9) rechnen um aus µs mm zu machen. Und dann nochmal /2 für die Entfernung statt der Gesamtstrecke des Schalls.

Ha, ja da lag mein Fehler :cold_sweat: :cold_sweat:

Hätte mir eigentlich auffallen müssen, denn wenn ich auf dem Bruchstrich 2x us als Einheit stehen habe, kann nachher kein mm als Einheit rauskommen! XD XD

Vielen Dank für die schnelle Antwort! :slight_smile: Ohje, manchmal sieht man den Wald vor lauter Bäumen nicht! :~

Jetzt verstehe ich auch die Werte, die mir pulseIn() herausgibt, wenn ich nämlich mit 0,343 mm/us rechne, braucht der Schall bei 100mm Entfernung 583 us um vom Sender zum Gegenstand und von da aus wieder zum Empfänger zurückzukommen! :slight_smile:

Vielen Dank, mir ist sehr geholfen! :slight_smile: