Messung zwischen 2 HC SR04 Ultraschallsensoren

Guten Tag zusammen,

mein Name ist Peter und ich würde gerne die Entfernung zwischen zwei Ultraschallsensoren messen. Der oben bereits genannte Sensor kann ja bereits alleine durch das Reflektieren des Signals die Entfernung messen. Ich würde nun gerne wissen, ob es möglich ist zwischen zwei Sensoren die Entfernung zu messen. Dazu habe ich bei einem den Trigger angeschlossen bei dem anderen nur Echo.
Ich stelle mir das so vor:
Sensor 1 schickt ein Signal über Trigger ab.
Sensor 2 misst die Zeit bis das Signal ankommt über Echo.

Stehen die zwei Sensoren nun gegenüber sollte so eine Abstandsmessung möglich sein…

bei mir jedoch wird hauptsächlich der Abstand 0 gemessen.
Ist vielleicht mein Grundgedanke falsch? Kann ich die Sensoren einfach unnabhängig voneinander ansprechen? Kann es sein, dass dadurch, dass es zu keiner Reflektion kommt keine Streuung und somit sehr genau “gezielt” werden muss?

int pingPin = 13;
int inPin = 12;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  long duration, inches, cm;

  pinMode(pingPin,OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);

  pinMode(inPin, INPUT);
  duration=pulseIn(inPin, HIGH);

  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);

  Serial.println(cm, DEC);

  delay(100);
}


long microsecondsToInches(long microseconds)
{
  return microseconds / 74;
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29;
}

Über eine Antwort würde ich mich sehr freuen.
PS: Eine Abstandsmessung mit nur einem Sensor für die er auch vorgesehen ist klappt ohne Probleme
Ich verwende eine Arduino Uno.

Ist vielleicht mein Grundgedanke falsch? [/quote]

Ja.

Nur ein Sensor, der zuerst ein Ping aussendet, kann anschließend auch ein Echo empfangen, weil die Funkion intern so verdrahtet ist: Sobald der Ping getriggert und gesendet wurde, geht der Sensor auf Echo-Empfang. Oder im Umkehrschluss: Wird an einem Sensor kein Ping getriggert und gesendet, geht dieser Sensor auch NICHT auf Echo-Empfang.

Warum willst du es mit 2 Sensoren machen, wenn es doch mit einem funktiert?

Dein Vorhaben wird so nicht funktionieren, da der 2. Sensor ja dann nichts davon weiß, wenn du beim ersten den Ping gesendet hast. Denn dazwischen wird ja die Zeit gemessen und daraus die Entfernung berechnet.

Ok, jurs war schneller.

Gibts eine Möglichkeit wie ich das umgehen kann? Bzw wie ich trotzdem die Entfernung zwischen zwei Sensoren messen kann?

Zum Beispiel: Ich lasse Sensor 1 ein Signal senden und speicher mithilfe der Funktion micros() die momentane Zeit in einer Variablen ab. Über Sensor 2 Speicher ich in einer zweiten Variablen die Zeit ab sobald der ein Signal empfängt. Über die Zeitdifferenz kann ich dann rückwirkend den Weg berechnen. Oder wie kann ich Echo ein Signal empfangen lassen ohne über Trigger eins zu senden? Dachte der Sensor besteht sozusagen aus einem Microphon und einem Lautsprecher.

Zwei Sensoren damit ich über eine größere Entfernung messen kann. Der Sensor ist ja für ungefähr 3 Meter rum ausgelegt, dass heißt dass das Signal selber über 6 Meter geht (da Reflektion) wenn ich direkt zwischen zwei Sensoren messe erhoffe ich mir über eine größere Entfernung messen zu können.

Danke für die Antwort

Kalle88: Gibts eine Möglichkeit wie ich das umgehen kann? Bzw wie ich trotzdem die Entfernung zwischen zwei Sensoren messen kann?

Zum Beispiel: Ich lasse Sensor 1 ein Signal senden und speicher mithilfe der Funktion micros() die momentane Zeit in einer Variablen ab. Über Sensor 2 Speicher ich in einer zweiten Variablen die Zeit ab sobald der ein Signal empfängt. Über die Zeitdifferenz kann ich dann rückwirkend den Weg berechnen.

Danke für die Antwort

Ich verstehe den Sinn deines Vorhabens nicht. Es wird aber so nicht funktionieren, siehe Post von jurs und von mir.

Hab ich noch hinzugeschriebe bzw korrigiert scheinbar zuspät. Ok wenn das so nicht funktioniert gibt es eine andere Möglichkeit? Wie würdet ihr das machen? lg und danke für eure Hilfe

Ich könnte ja zB den jeweils nicht benutzen Teil des jeweiligen Sensors abkleben...also sprich beide Sensoren ansprechen wie vorgesehen aber einmal das Micro und einmal den Lautsprecher abkleben...muss aber doch eine elegantere Lösung geben?

Hallo Peter, der HC-SR04 hat zwei Hörnchen, einen zum Senden (Transmit) und einen zum Empfangen (Receive). Meine Idee:

  • R1 und T2 zukleben
  • beide gleichzeitig triggern
  • Meßergebnis von Ultraschallsensor 2 auswerten

Versuch macht klug :)

Bitte berichte, ob das funktioniert.

:D sehr geil hatte gerade die selbe Idee :D ok ich werde es mal versuchen danke

Kalle88:
Gibts eine Möglichkeit wie ich das umgehen kann? Bzw wie ich trotzdem die Entfernung zwischen zwei Sensoren messen kann?

Du könntest versuchen, beide Sensoren gleichzeitig zu triggern und den Ping gegenseitig aufeinander zu zu senden, also ein Sensor pingt direkt auf den anderen und umgekehrt.

Und dann in der Zeit-/Entfernungsformel zur Berechnung des Abstands nicht die Echo Strecke (Schall hin und zurück) ansetzen, sondern nur die Entfernung " zwischen den Sensoren".

Der Abstand der Sensoren in Deinem Aufbau soll deutlich über 6 Meter betragen, oder?

Also der Abstand soll varrieren können. Ich würde gerne zwischen 2 und 10 Metern messen können. Ich habe nun den Transmiter von Sender 2 abgeklebt und scheinbar funktioniert es. Beide Sensoren waren um die 70 cm voneinander entfernt manchmal gibt er mir jedoch 2,5 Meter oder einen anderen zu großen Abstand aus aber meistens stimmt es.
Beide sich gegeneinander ein Signal zuschicken würde ich gerne vermeiden, sollte ein Gegenstand in der Nähe sein könnte an diesem das Signal reflektiert werden und somit falsch interpretiert werden.
Also zB: Sender1 schickt ein Signal auf Empfänger 2 und empfängt das Signal von Sender 2. Wird nun das Signal von Sender 1 an einem Gegenstand zurückreflektiert könnte das Micro von Sender 1 das reflektierte Signal als ein Signal von Sender 2 interpretieren.