ich habe gerade ein Problem mit HC-SR04 Sensoren. Ich habe drei Stück an meinem diymoore Motor Shield verbaut. Die beiden Sensoren sr04vR und sr04vL funktionieren bis auf 3cm Abstand so wie sie sollen. Wenn ich meine Hand direkt vor die Sensoren halte, sollten diese meines erachtens zwar 0 cm anzeigen, aber für mein Projekt passen die 3cm Genauigkeit auch.
Der hintere IR macht mir allerdings Probleme. Er spring willkürlich im Stillstand (nichts vor dem Sensor) um mehrere Zentimeter hin und her. Auf eine Entfernung zwischen 30 und 15 cm misst er relativ genau.
Wenn ich meine Hand oder Gegenstand näher als 15cm hin bewege, zeigt er mir meißt kontant einen sehr hohen Wert von 2118 cm an.
Was ich schon versucht habe:
Anderen Sensor genommen. Bereits zwei weitere. Immer das selbe Spiel.
Pins geändert. Keine Lösung.
Gitter vor den Senoren durchgepustet.
Das sind keine IR-Sensoren, sondern Ultraschall-Sensoren.
Die erzeugen einen Ultraschall der sich auch über die Befestigung am Gehäuse fortpflanzen kann.
Daher sollte man auf die Befestigung besonders achten.
Auch müssen zwischen den einzelnen Auswertungen Pausen eingelegt werden, da die Sensoren sich sonst gegenseitig beeinflussen.
danke für die Richtigstellung. Leider immer noch das selbe Problem. Befestig war er mit Heißkleber. Hat nicht funktioniert. Hab den einen Sensor dann wieder abgemacht.
Pausen habe ich eingebaut, von 1ms bis einer Sekunde. Keine Änderung. Was ich nicht verstehe ist, wenn ich die Hand direkt davor halte, dass er diese hohen Werte auswirft.
Du solltest das nach und nach aufbauen.
Erst einen Sensor, wenn der gut geht, den zweiten....usw.
Mit Pausen dazwischen, die sehe ich in deinem Sketch nicht.
Ich denke (nicht verifiziert), daß die Lib eh blockierend arbeitet - somit wären Pausen, sofern nicht mit einem TimeOut gearbeitet wird, nicht zielführend.
Das entnehme ich der Zuweisung in die Variablen mit der Methode .Distance.
Hast Du Mal versucht, die Reihenfolge der Sensoren abzuändern?
Wandert dann der Fehler?
a) eine andere Library, bei mir funktioniert die NewPing.h sehr gut. die kommt mit einem "MultiSensor" Beispiel: NewPing3Sensors. In dem Beispielsketch siehst du ein delay(50) zwischen den Abfragen
b) in meiner konkreten Anwendung mit 5 Sensoren für meinen robot, frage ich pro Loop durchgang nur einen Sensor ab, nicht blockierend nach Muster BlinkWithoutDelay mit 30ms Intervall zur Absicherung. Die restliche Zeit tut der Sketch ohnehin auch etwas, da brauch ich kein dediziertes delay und das funktioniert auch sehr gut.
@HotSystems: ich habe die Sensoren nacheinander aufgebaut und beim letzte funktioniert es nicht.
Die Pausen waren in meinem Sketch des ersten Beitrag noch nicht drin. Hab ich dann nach deinem Vorschlag eingebaut. Hat leider aber nichts gebracht.
@noiasca: Hab mir die Library mal installiert und den Beispiel Sketch hochgeladen. Das Problem hat sich gebessert. Es erscheinen sehr viele korrekte Messungen, aber ca 40% der Messungen bring er mir eine 0.
Warum auch immer.
Denke kann aber erst mal mit den Werten leben, da ich bisher nur rumexperimentiere und lernen will, also noch kein Projekt, bei dem es auf jeden Millimeter ankommt.
Dann liegt's irgendwie am Sensor - vll. ein Kondensator in Dessen Nähe defekt?
KA, aber irgendwas muß sich Da ab Sensor bis zum Arduino von den funktionierenden Sensoren unterscheiden.