US Sensor gibt nicht die korrekten Werten an

Hallo zusammen,

nach dem Ich “Roboter bauen mit Arduino” durchgespielt habe bastel Ich gerade an meinen eigenen Roboter.

Zur Hinderniserkennung möchte ich gerne einen US Sensor verwenden (HC-SR04 Klon von Makerfactory).

Ich mache gerade die ersten Tests und dabei ist mir aufgefallen, dass die Messwerte sehr schwanken, teilweise über 100 cm. Auch ist jeder zweite Messwert Null.

Hier ist der Sketch:

// Sketch Ansteuerung US Sensor

#include <NewPing.h>


// Definition Pins für Sensor  
int US_Trigger_Pin = 4;
int US_Echo_Pin = 2;


unsigned int Sensor_Value; 

NewPing US_Sensor(US_Trigger_Pin, US_Echo_Pin,500);



void setup() {
  Serial.begin(9600); 
  pinMode(US_Trigger_Pin, OUTPUT);
  pinMode(US_Echo_Pin, INPUT);
}

void loop() {
  Serial.println("Loop gestartet");
  Serial.print("Sensor ");
  Serial.println(US_Sensor.ping_cm());
  delay(300);
  Serial.println("Loop beendet");
}

Wo liegt der Fehler? Ich bin gerade etwas ratlos.

Gruss und vielen Dank,

Helge

(deleted)

Moin Peter,

google ist eigentlich immer meine erste Anlaufstelle. Ich habe auch verschiede Ursachen oder Lösungen gefunden, welche ich entweder nicht verstanden habe, oder umpraktikable fand.

Ein Ansatz war, die Messwerte auf Ausreisser zu testen. Dazu habe ich aber eine zu starke Fluktuation.

Als mögliche Ursache wurde auch die Streuung des Echos genannt. Kann ich aber jetzt nicht wirklich vorstellen.

Ich habe noch folgendes Video auf YouTube gefunden:

Hier wurden Echopin und Triggerpin auf die analogen Eingänge gelegt. Das habe ich probiert, mit dem Ergebnis, dass der Sensor in Rauch aufgegangen ist. Damit habe ich auch mein erstes Bauteil zerstört.

Ich würde aber gerne verstehen warum das passiert ist? Es kam mir schon etwas komisch vor beide Pins auf die Eingange zulegen.

Bleib auch Du gesund.

Gruss,

Helge

Schick uns mal den link zur Bibliothek die Du verwendest.

Hast Du versucht den Sensor direkt ansteuerst?

zB Ultrasonic Sensor HC-SR04 with Arduino Tutorial - Arduino Project Hub oder Ultrasonic Sensor HC-SR04 and Arduino Tutorial - HowToMechatronics

Grüße Uwe

Hallo Uwe,

hier ist Link zu der GitHub Seite: GitHub - eliteio/Arduino_New_Ping: New Ping Library from http://playground.arduino.cc/Code/NewPing

Hier der Link zu der entsprechenden Arduino.cc Seite:

https://playground.arduino.cc/Code/NewPing/

Den Sensor habe Ich noch nicht versucht direkt anzusteuern. Werde ich aber machen, wenn die neuen Sensoren da sind.

Vielen Dank,

Helge

Hast du den Aufbau mal genau nach einem Beispiel der Library nachgebaut ?
Das wird sicher funktionieren, wenn du alles richtig gemacht hast.

Und du kannst auch analoge Pins verwenden, wenn diese richtig definiert werden.
Das kann deinen US-Sensor normal nicht gekillt haben. Da hast du sicher einen anderen Fehler gemacht.

Hallo Dieter,

in der Tat habe ich dies am Anfang probiert (Arduino Uno und Steckbrett), da waren die Werte am Anfang auch noch stabil.

Für den Roboter benutze ich einen Motor Shild (hatte Ich im Anfangspost unterschlagen, sorry). Als ich die Schaltung auf das Motor Shild transferiert habe, sind die seltsamen Sprünge aufgetreten. Allerdings, erst nach einiger Zeit.

Ich denke auch es ist das Beste nochmal bei Null anzufangen, und das Bauteil etwas besser kennen zulernen.

Bzgl. der Analogeneingänge, bin Ich mir ziemlich sicher, keinen Fehler gemacht zuhaben. Ausser, dass ich das Arduino Board nicht von der Spannung genommen habe, als ich die Verbindungen gesetzt habe. Werde Ich in der Zukunft nicht mehr tuen.

Der Rauch ist auch sofort auf getreten.

Gruss und vielen Dank,

Helge

helge_1978:
.....
Für den Roboter benutze ich einen Motor Shild (hatte Ich im Anfangspost unterschlagen, sorry). Als ich die Schaltung auf das Motor Shild transferiert habe, sind die seltsamen Sprünge aufgetreten. Allerdings, erst nach einiger Zeit.

Das hört sich nach Spannungsschwankungen an.
Du solltest mal die Spannung am Uno messen.

Bzgl. der Analogeneingänge, bin Ich mir ziemlich sicher, keinen Fehler gemacht zuhaben. Ausser, dass ich das Arduino Board nicht von der Spannung genommen habe, als ich die Verbindungen gesetzt habe. Werde Ich in der Zukunft nicht mehr tuen.

Wenn da ein Kabel falsch gesteckt oder kurz berührt wird, geht das schnell und man ist sich keines Fehlers bewusst.

helge_1978:
Den Sensor habe Ich noch nicht versucht direkt anzusteuern. Werde ich aber machen, wenn die neuen Sensoren da sind.

Dann solltest du das im Anhang lesen. Die Funktionsweise des Sensors wird im Netz oft falsch erklärt, was dann dazu führt, dass Beispielsketches manchmal unnötig kompliziert sind. Ich selbst habe solche Teile in einem Robbi erfolgreich im Einsatz, allerdings mit eigener Auswertung. Zu der von dir verwendeten Library kann ich daher spontan keine Hilfe geben.

Achja: In Ecken rein gezielt oder in zu kleinen Kisten, Gehäusen oder Tanks verwendet liefert ein US Sensor schlechte Werte. Zum Testen immer gerade auf eine glatte Wand zielen. Werte zwischen 20cm und 2m werden normal gut erkannt. Jeder zweite Messwert 0 klingt nach systematischem Fehler im Sketch/der Library.
Was ist die 500 in newPing? Was passiert wenn du delay(300) weglässt?

HC-SR04_2.pdf (129 KB)

Hallo zusammen,

vielen Dank für die vielen hilfreichen Hinweisen. WOW!

Sobald die neuen Sensoren da sind, werde ich weiter basteln. Zuerst werde ich es ohne die Library versuchen.

Was ist die 500 in newPing? Was passiert wenn du delay(300) weglässt?

Die 500 bedeuten die maximale Distanz, welche der Sensor messen soll. Bei grösseren Messwerten wird der Wert 0 zurückgegeben.

Ich habe mit verschiedenen delays und auch ohne probiert. Aber die Ergebnisse haben dennoch geschwankt.

Das hört sich nach Spannungsschwankungen an. Du solltest mal die Spannung am Uno messen.

Da ist ein guter Punkt. Ich habe die Eingangsspannung am MotorShild gemessen (Ort der Messungen siehe angehängte Foto). Es war auch eine externe Spannungsquelle angeschlossen.

Oder meinst du die Spannung an den Pins des Sensors?

Gruss und vielen Dank,

Helge

Hier ist noch das Foto.

Leider kann ich gerade keine Bilder hochladen. Bei dem MotorShild habe ich die Spannung an den beiden Schrauben gemessen, an denen die externe Spannungsquelle fixiert wird.

Die Spannung solltest du im Betrieb messen und dann am Arduino bzw. auch am US-Sensor.
Die sollte schon stabile 5 Volt ergeben. Am besten mit einem Oszi messen.