Parallax Ping))) maximale Entfernung zu kurz?

Hallo,
ich habe einen Parallax Ping)))-Entfernungssensor an meinen Arduino angeschlossen(GND an Arduino-Pin 2, +5V an Pin 3, Signal an Pin 4)und messe Entfernungen mit dem folgenden Programm:

void setup () {
  Serial.begin(115200);
  pinMode (2,OUTPUT);
  pinMode(3,OUTPUT);
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
}
void loop () {
  
  pinMode(4,OUTPUT);
  digitalWrite(4,LOW);
  delayMicroseconds(2);
  digitalWrite(4,HIGH);
  delayMicroseconds(5);
  digitalWrite(4,LOW);
  pinMode (4,INPUT);
  delayMicroseconds(750);
  double duration = pulseIn(4,HIGH);
  double cm = microsecondstocentimeters(duration);
  Serial.print(duration);
  Serial.print("  microseconds,    ");
  Serial.print(cm);
  Serial.print("  cm");
  Serial.println();
  delay(500);
}

double microsecondstocentimeters(double duration) {
  if(duration != -1){
    return duration / 29 / 2;
  }else{
    return -1;}
}

Merkwürdig ist aber, dass die ausgegebenen Entfernungen maximal ca. 25 cm lang sind, auch wenn ein Objekt vor dem Sensor weiter weg liegt. Ist vor dem Sensor kein Objekt, werden ebenfalls etwa 25 cm ausgegeben. Bei kleineren Entfernungen funktioniert der Sensor einwandfrei.
Laut Datenblatt von Parallax sollen aber Entfernungen bis 3 Meter messbar sein.

Ich habe den Signalpin zusätzlich an ein Oszilloskop angeschlossen, dabei zeigte sich, dass der “Ergebnisimpuls” nach der Holdoff-Zeit ab einer Entfernung von 25 cm nicht mehr länger wird.

Was mache ich falsch?

Jan

Ping Library for Arduino: http://www.arduino.cc/playground/Code/Ping

Ping Ultrasonic Range Finder: http://www.arduino.cc/en/Tutorial/Ping

Hallo Megaionstorm, danke für die Antwort. Ich habe sowohl die Library (mit dem dazugehörigen Beispiel )als auch das Ping)))-Tutorial ausprobiert, leider besteht auch hier (in beiden Fällen) das von mir beschriebene Problem, es werden nie mehr als 25 cm angezeigt.

Frage an andere Ping)))-Sensor-Besitzer hier im Forum: Wie sind eure Erfahrungen? Sind bei euch größere Entfernungen messbar? Wenn ja, könnte es vielleicht sein, dass ich da ein kaputtes Exemplar gekauft habe?

Jan

Falls sich das Problem nicht lösen lassen sollte dann erst mal den Händler kontaktieren und das Ding gegen ein neues umtauschen !

Hast Du den Sensor gemoddet, also modifiziert ?

Ich hab auch so ein Ding. Werde es am Wochenende mal ausprobieren…

Hab das auch mal ausprobiert :)

Funktioniert bei mir problemlos mit der Bibliothek aus dem Playground und der beiligenden Beispieldatei.

Obacht:

Wenn du das Ding z.B. auf ein Breadboard steckst, dann kommen nur so kurze Werte raus! Die Ausbreitung ist wohl kegelförmig, nicht linear. Dementsprechend misst du die Entfernung, wo der Kegel dein Breadboard erreicht :)

Stecke es also wirklich an den Rand von nem Bradboard (mit Richtung der Sensoren nach außen), und dann schiebe das ganz ran an die Tischkante.

In dem Fall den Sensor auf den unteren oder oberen Rand des Breadboards stecken und das Board selber direkt an die Tischkante legen ! Dann hat der Sensor auch auf einem Steckbrett freie Sicht !

Hab es jetzt auch mal ausprobiert. Funktioniert einwandfrei von 4cm bis 3,5m. Ist sogar recht genau. Hab den Code von http://www.arduino.cc/en/Tutorial/Ping genommen.