Ultraschallmodule / Alternativen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Guten Morgen Forum,
    ich habe nach wie vor einige Probleme mit einem Ultraschallmodul.
    Ich verwende ein HC-SR04 Ultrasonic Modul und bin mit meinem Latein am Ende. Ich hoffe ihr habt noch ein paar Ideen oder Ansätze.

    Was soll passieren?
    Das Modul steht im freien Raum, zum nächsten Gegenstand sind ca. 3-5m abstand.
    Sobald der Ultraschallsensor zwischen 0m und 1,5m unterbrochen wird. Soll ein LED Signal erleuchten für 2 Sekunden und danach der ganze Prozess von vorne starten.
    Die Software läuft soweit. Der Hardware Aufbau steht und ist funktionsfähig.
    Das ganze sieht etwa so aus:

    Ihr fragt euch jetzt wohl, wo mein Problem liegt:
    Mein Problem liegt darin das wenn ich mit einem Skript einfach nur die Entfernungen ausgebe, erhalte ich 98% richtige Werte. Sprich wenn niemand durchläuft oder nichts dazwischen steht eine Zahl zwischen 400cm und 500cm. Aber die andere 2 % sind enorme Abweichung (z.B. Werte zwischen 10cm und 300cm).

    Okay dachte ich mir, so viele "falsche" Unterbrechungen wird es nicht geben, ich möchte ja eh nur ein Signal wenn eine Unterbrechung unter 150cm erfolgt. Also Skript dementsprechend angepasst.

    Das Ergebnis ist nur leider nicht zufriedenstellend. Es gibt durch das so schnelle durchlaufen der Schleife alle 1-2 Minuten "falsch" Auslöser. Die Zeitwerte müssen so kurz sein, sonst würde die Genauigkeit der Anlage darunter leiden.
    Am Ende soll jemand durch den Sensor rennen können und das LED Signal erscheinen.

    Den Sensor habe ich schon ausgetauscht, mit anderen HC-SR04 Modulen habe ich das selbe Problem.

    Hat jemand eine Idee oder einen Vorschlag wie ich das Problem in den Griff bekommen kann? Bzw. denkt ihr ein teuerer und hochwertiger Ultraschallsensor bringt hier Verbesserung oder würdet ihr in diesem Fall komplett von Ultraschall abraten?

    Schon mal danke, an alle die bis hier her gelesen haben.


  • Ich hab das Modul (auch billiges China-2€-Teil) und das läuft auf ein paar Zentimeter genau!
    Ich hab allerdings beim anschließen nicht einfach die Pins an den PI angeschlossen wie das in vielen Anleitungen zu finden ist. Das lief bei mir nicht gescheit.
    so wie hier beschrieben: http://www.gtkdb.de/index_36_2272.html

    Genau so habe ich es auch angeschlossen. Mit dem Spannungsteiler habe ich bereits gespielt und da verschiedene Widerstände versucht. Ändert alles nichts.
    Wenn du das Skript oben von mir laufen lässt und in ca. 3m Entfernung nichts stehen hast, hast du da keine Aussetzer <2-3m?

  • Es ist vielleicht nicht unbedingt die einfachste Lösung, aber man könnte zusätzlich einfach einen Mikrocontroller verwenden, der die eigentlichte Auswertung der Sensordaten übernimmt. Dieser könnte dann die Ergebnisse z.B. über I²C abrufbar machen. So müsste der Raspberry Pi sich nur um die I²C Kommunikation kümmern. Man könnte auch mehrere Sensoren auf diese Weise anschließen, die sich gegenseitig kontrollieren, etc.

  • Ich habe so ein Ultraschallteil an einem Arduino laufen, läuft äußerst zuverlässig.

    Was ich beobachtet habe: Wenn der Reflektor (also der Gegenstand/Person ...) den Schall nicht direkt zurück wirft sondern ablenkt, kommen unsinnige oder gar keine Messungen zustande.
    Das passiert schon, wenn die man mit der Hand den Strahl zur Decke lenkt (ja! das geht!)... der US-Geber hat ca. 15° Öffnungswinkel, das ist nicht allzu viel...

    Du könntest es z.B. so machen: Du misst Bursts: also 5 Mal kurz hintereinander. Danach bildest du den Median - der ist dann das Ergebnis.

    Vielleicht ist das Warten per while-loop auch nicht so optimal: Wenn auf dem Raspi CPU-technisch noch mehr los ist, kann das u.U. leichte Verzögerungen bei der Abfrage verursachen...


  • Du könntest es z.B. so machen: Du misst Bursts: also 5 Mal kurz hintereinander. Danach bildest du den Median - der ist dann das Ergebnis.

    Vielleicht ist das Warten per while-loop auch nicht so optimal: Wenn auf dem Raspi CPU-technisch noch mehr los ist, kann das u.U. leichte Verzögerungen bei der Abfrage verursachen...

    Ich denke CPU Probleme gibt es da keine Probleme. Habe das mal überwacht, sieht soweit sauber aus.
    Mein erster Gedanke war das es evtl. an der Qualität liegt, ist nun mal ein zwei Euro Produkt, das dieses keine 1000%ig Genauigkeit lieft ist ja gut möglich.

    Zum Thema Bursts: wie meinst du das bzw. wie würdest du das anstellen?
    Und wichtig ist halt wenn jemand schnell durch rennt muss auch diese Unterbrechung registriert werden.

  • Zum Thema Bursts: wie meinst du das bzw. wie würdest du das anstellen?
    Und wichtig ist halt wenn jemand schnell durch rennt muss auch diese Unterbrechung registriert werden.

    Naja, was heisst rennt (wie schnell, wie lange ist er im Erfassungsbereich?
    Wie groß ist der Erfassungsbereich und bewegt sich der "jemand" im "rechten" winkel zum Strahl? Vermutlich ja...

    Bei mir (Arduino) sieht das so aus:

    Ist bei dem Arduino insofern einfach(er), weil man da den PWM-Teil als Input verwenden kann (vielleicht steigst du ja um :lol:) ==> loops ist bei mir "10"

    In deinem Code ist ja noch eine Wartezeit drin (25ms), wenn du die rausnimmst, wird permanent mit maximalen Durchsatz gemessen.

    Median ist eine selbstgeschriebene Methode...

    BTW: Ist eine Reflex-Lichtschranke in deinem Anwendungsfall nicht vielleicht günstiger? Mit US ist das eventuell zu langsam...

  • Die Ultraschallentfernungsmesser sind - zumindest mir - als nicht besonders zuverlässig bekannt, insbesondere wenn man wie in Deinem Fall eine schnell wechselnde Umgebung messen möchte.

    Der Handwerker misst zuverlässig mit Laser, die Ultraschallgeräte gab's zuletzt zum Spottpreis, das sagt alles. ;)

    Gruß, mmi

  • Hab mal geschaut was angeschlossen hab:
    R1: braun, grün, braun, gold => 150 Ohm
    R2: gelb, lila, braun, gold => 470 Ohm
    und damit bekomme ich eigentlich Werte die in nem einstelligen Zentimeterbereich sind. Man muss halt bedenken das durch den Winkel ggf. auch seitlich Schall zurück geworfen wird.
    Vllt doch Aufbau-Fehler? oder läuft den auf dem Pi noch anderes, durch den Auslastung kann ja die Ausführungszeit ggf. langsamer sein.

  • [font="Helvetica"]@Zentris:[/font]
    [font="Helvetica"]Es soll sich um eine kleine Sportanlage handeln. Im Umkreis von 3m - 4m steht und ist nichts. Also nur wenn jemand durch rennt, sprintet soll ausgelöst und das LED Signal gegeben werden.[/font]
    [font="Helvetica"]Da ich das ganze bisher immer allein getestet habe kann ich ausschließen das sich sonst irgendwelche Bewegungen in der Umgebung abspielen.[/font]

    [font="Helvetica"][font="Helvetica"]Mit Arduino habe ich bisher noch nicht gearbeitet.[/font]
    [font="Helvetica"]Dein Vorschlag zu einer Reflex-Lichtschranke zu greifen wäre interessant. Gibt es da ein Model das du empfehlen kannst? Bei vielen Bewegungsmelder ist ja das „Problem“ das diese nur alle 20 Sekunden auslösen können, das wäre mir zu wenig.[/font]
    [/font]

    [font="Helvetica"][font="Helvetica"][font="Helvetica"]@mmi:[/font]
    [/font][/font]
    [font="Helvetica"][font="Helvetica"][font="Helvetica"]Da kann ich dir zustimmen. Die Genauigkeit ist leider nicht so gut. Hier mal ein Auszug wenn ich alle 0,05 Sekunden den Wert ausgeben. [/font][/font][/font]

    [font="Helvetica"][font="Helvetica"][font="Helvetica"]@Paddy65305:[/font][/font][/font]
    [font="Helvetica"]Verkabelung, Aufbau und Software habe ich überprüft. Auf verschiedene Widerstände benutzt und zwei Ultraschallsensoren.[/font]

    [font="Helvetica"]Das Problem ist ja nicht die Genauigkeit wenn ich alle Sekunde eine Messung mache ist die auch super genau. Aber wenn ich alle 0,05 Sekunden eine Messung machen, habe ich mehrere ausreißer.[/font]
    [font="Helvetica"][font="Helvetica"][font="Helvetica"][font="Helvetica"]CPU Last habe ich mir angesehen das Skript verbraucht zwar 17% - 19% der CPU Last aber da ist eigentlich noch genug Platz nach oben.[/font]
    [/font][/font][/font]

  • und an einer unsauberen Versorgungsspannung kann es nicht liegen ?

    bei TSOP wird immer ein Filter vor der VCC empfohlen:
    http://www.mikrocontroller.net/attachment/126277/TSOP1736.jpg

    aber der Vorwiderstand zur VCC und der Kondensator richtet sich nach der Stromaufnahme, das wird vermutlich nicht 1:1 übernommen werden können.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • @mmi: Jap, diesen Thread habe ich bereits komplett durch....

    jar: würde ich eigentlich ausschließen. Habe das ganze an zwei Raspberrys versucht, an verschiedenen GPIO's, mit verschiedenen Spannungsteiler. Also habe bereits alles getauscht, geändert und versucht.

    Zum Thema Reflexionslichtschranke, habe ich als günstigste diese hier gefunden:
    http://www.conrad.de/ce/de/product/…ef=searchDetail
    Wobei 52 € auch nicht wirklich billig sind....

  • Ohne dass ich jemals schon sowas gebaut habe, aber eine Reflex-Lichtschranke stelle ich mir im Eigenbau recht simple vor:

    Mal als grober Anriss:
    Als Lichtquelle würde ich eine Laserdiode aus einem x-beliebigen Laserpointer nehmen. Damit der nicht überhitzt im Dauerbetrieb, würde ich den pulsen (1:10, Zycluszeit 0.1sec.).

    Als Reflektor einfach ein Reflektor aus der "Grabbelkiste", Größe nach Geschmack/räumliche Gegebenheiten.

    Als Empfänger ein simpler Fototransistor/Diode, was die Kiste hergibt, ggf. klimafest verpackt, ggf. mit Transistor/Mosfet als (einstelbarer wegen der Empfindlichkeit) Verstärker/SchwellwertSchalter, damit ein ausreichender Pegenhub für den RasPi entsteht.

    Das Ganze kann man dann durch den Laser auch über mehrere Meter betreiben, das Positionieren ist vermutlich etwas fummelig, kein Plan... sollte aber beherrschbar sein.

    Der RP pulst nun über einen GPIO-Pin den Laser (über eine Treiberstufe mit Transistor/Mosfet) und erwartet (sofort) einen Antwortimpuls auf einem anderen Pin, bleibt der aus, wurde die Reflexion verhindert/abgelenkt.

    Wenn man mehr Programmierarbeit reinsteckt geht da sicher noch mehr, aber für den geplanten Anwendungsfall sollte das schon reichen.

  • Zentris:
    Danke für die ausführliche Beschreibung. Darauf komme ich evtl. zurück.
    Im ersten Schritt werde ich versuchen, mit dem Ultraschall zu prüfen ob er bei einer "Durchquerung" zwei mal messen kann, somit könnte ich prüfen ob zwei Messungen nach einander unterbrochen wurden, wenn ja LED Signal auslösen, wenn nein gehe von einer Fehlmessung aus. Das ganze werde ich demnächst mal testen, das wäre die einfachste und günstigste Lösung.
    Sobald ich zum testen gekommen bin werde ich mich hier noch mal melden.
    Schon mal danke für die ganzen Anregungen und Tipps!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!