Entfernungsmessung mit Ultraschall

  • Danke für die Antworten bisher.


    Ich habe die gleiche Beobachtung wie PinQin, nämlich dass die Messwerte bei Verwendung von sonic.c mit pigpio anscheinend stark variieren und nicht korrekt sind. Die ultrasonic.py Variante scheint hingegen richtig zu messen (bei exakt gleichem Setup/Verkabelung etc.). Unten die Ergebnisse von zwei Messungen (kurze/lange Distanz)


    sonic.c:
    distance is 347 mm
    distance is 209 mm
    distance is 346 mm
    distance is 172 mm
    distance is 418 mm
    distance is 361 mm
    distance is 349 mm
    distance is 341 mm
    distance is 336 mm



    ultrasonic.py:
    Measured Distance = 35.2 cm
    Measured Distance = 34.2 cm
    Measured Distance = 35.1 cm
    Measured Distance = 34.9 cm
    Measured Distance = 34.7 cm
    Measured Distance = 34.6 cm
    Measured Distance = 34.5 cm
    Measured Distance = 35.1 cm
    Measured Distance = 34.9 cm
    Measured Distance = 34.8 cm
    Measured Distance = 35.1 cm
    Measured Distance = 35.0 cm
    Measured Distance = 35.0 cm




    sonic.c:
    distance is -670 mm
    distance is -335 mm
    distance is -671 mm
    distance is -342 mm
    distance is -668 mm
    distance is -334 mm
    distance is -168 mm
    distance is -674 mm
    distance is -349 mm
    distance is -671 mm
    distance is -341 mm
    distance is -495 mm
    distance is -349 mm
    distance is -668 mm
    distance is -333 mm
    distance is -170 mm
    distance is -664 mm
    distance is -498 mm
    distance is -660 mm
    distance is -351 mm
    distance is -671 mm
    distance is -350 mm
    distance is -670 mm


    ultrasonic.py:
    Measured Distance = 219.4 cm
    Measured Distance = 217.2 cm
    Measured Distance = 216.8 cm
    Measured Distance = 218.9 cm
    Measured Distance = 218.2 cm
    Measured Distance = 217.7 cm
    Measured Distance = 218.6 cm
    Measured Distance = 218.5 cm
    Measured Distance = 218.4 cm
    Measured Distance = 217.7 cm
    Measured Distance = 217.4 cm
    Measured Distance = 221.1 cm
    Measured Distance = 218.6 cm
    Measured Distance = 211.9 cm


    Seltsam vor allem, dass bei der langen Distanz sonic.c negative Werte ausgibt. Mache ich etwas falsch oder liegt das evtl. an der höheren Messhäufigkeit von sonic.c?

  • Hi,


    dieses sonic.c ist lediglich als Beispiel gedacht, keinesfalls als Anwendung, wie die von Dir verwendete ultrasonic.py.
    Wie das schlussendlich gemessen und/oder ausgegeben wird, bleibt jedem selbst überlassen.
    Dir Idee ist, mal ein wenig transparent zu machen, ob und wie ein Ultraschall-Sensor angesprochen bzw. ausgelesen wird. Das gilt übrigens für alle Beispielcodes, die ich zu irgendwelchen Tuts dazu gepackt habe.


    cheers,
    -ds-

  • Ich würde gerne diese Sensoren verwenden. Aber die werden mit nur zwei statt vier Kabeln angeschlossen. Ich müsste die irgendwie ans RPi anbinden.
    Sehe ich das richtig, dass im ersten Post die gleichen Sensoren verwendet werden, nur mit einer Zusatzplatte?

  • Hi,


    nö, wie kommst du darauf, dass ich da die gleichen wie Deine verwendet habe?
    Deine Dinger sind vollkommen anders. Hast Du Dir allein schon mal die Daten angeschaut:

    Quote


    1. Rate Voltage: 12V
    2. Operating Voltage Range: 9~16V
    3. Rate Current: 20~200mA
    ...


    Ohne Datenblatt wird das vermutlich eh nix ...


    cu,
    -ds-

  • Ja, diese Daten habe ich mir angeschaut. Und die anderen Sensoren vom Eingangspost.
    Wenn ich das richtig erkenne, sind auf dem kleinen Board auch nur zwei normale Ultraschallsensoren vorhanden, die auch nur über zwei Pins angeschlossen sind.
    Aber die Spannungen scheinen nun doch völlig anders zu sein...

  • Hi Leute,


    wir haben hier ein Problem unzwar versuchen wir mit der Software wiringpi mit den Ultraschallsensor Messungen durchzuführen. Nur Leider kompiliert es nicht richtig und gibt Fehler raus (ERROR STRAY...). Das Programm haben wir von hier aus der Anleitung. Hat jemand eine Beispielprogrammierung für wiringpi?


    Ist es normal wenn wir an Trigger und GND 5V potential anliegen haben? Es ist nur an Vcc die 5V und an Gnd 0V angeschlossen.

  • meistens steht da error stay 343 in programm und viele hitereinander nur mit anderen Zahlen.
    Das zeigt auf einige Zeilen, die rot makiert sind, die eigentlich korrekt programmiert sind.
    Wäre am besten, wenn ein Beispielprogramm vorhanden ist und einer es posten könnte.

    Edited once, last by popito20 ().

  • Hallo erstmal und danke für die Anleitung! :)


    Ist es eigentlich wichtig, dass die Widerstände genau die angegebenen Werte haben?
    Ich hab zwar 330 Ohm Widerstände und noch diverse andere, aber einen 470er hab ich leider nicht und komme auch nicht drauf ohne 5 verschiedene zu kombinieren.
    Ist es schlimm, wenn ich statt dem 470er einen stärkeren Widerstand nehme?


    Danke schonmal!


    lg
    axolotl

  • Hi,


    zunächst mal ist es nicht sinnvoll, wenn Du Dich an einen Thread hängst, der schon seit längerem als erledigt markiert ist. Da geht eine Frage schnell mal unter.
    Also beim Nächstenmal: bitte einen neuen Thread aufmachen ...


    Der 470R ist Bestandteil eines Spannungsteilers ... den solltest Du nicht ändern. Wenn schon, dann müsstest Du beide Widerstände ändern, und zwar so, dass das Verhältnis ungefähr 1,5 ist.
    Also beispielsweise 700R (anstelle des 330R) und 1k (anstelle des 470R).
    Wichtig ist dabei zudem, dass der kleinere der beiden auf den GPIO geht (sonst ist der Signalpegel zu niedrig).


    cu,
    -ds-

  • Ok, werde ich mir für das nächste Mal merken. :)
    Und vielen Dank für die Antwort, das hilft mir auf jeden Fall!


    lg
    axolotl


  • BTW: Handy ins Wasser gefallen -> aufschrauben -> in reinen Alkohol legen -> nach ein paar Minuten rausholen, trocknen lassen -> soll angeblich super funktionieren, weil der Alkohol das Wasser verdrängt ;)


    Cool - auf die Idee kam ich noch nicht, wenngleich ich wohl schon mal Alkohol in den Tank kippte, weil sich dort Wasser gesammelt hatte (insofern eine ähnliche Motivation). Alkohol und Wasser besitzen keine Mischungslücke, womit sich Alk sehr gut zum "auswaschen" eignet. Allerdings weis ich nicht, wieviel Kolophonium heutzutage in Handys rumgeistert. Dieses löst sich nämlich auch wunderbar in Alk und dann klebt das Handy womöglich hernach (und Tasten "isolieren"). Ungeachtet der Tatsache, daß ich auf den Alk nicht kam, hatte ich mein Handy 2 Wochen in Reis gebettet. Der entzieht mit der Zeit auch das Wasser...

  • Servus Keith,
    mal ganz abgesehen davon, dass ich gar keinen Joystick für den RPi ( bzw. für gar keinen Computer habe ) sehe ich da, diese Jahr zumindest, eher dunkelschwarz als grau ...
    Ich hab' einen ganzen Eimer voll Baustellen, die ich erst mal nach und nach abarbeiten muss, sonst ersauf ich eines Tages noch in Projekt-Fragmenten.
    Aber vielleicht in 2016 ;) ... mal sehen ...


    cu,
    -ds-

  • Hallo dreamshader


    da ich dein Code für das eventuelle Nutzen in meinem Projekt unter die Lupe nehme, ist mir etwas aufgefallen.


    Dein Programm funktioniert auch ohne

    C
    #include <time.h>
    #include <sys/time.h>

    und die 3 Zeile

    Code
        gpioWrite(24, 1); /* sets gpio24 high */
        gpioDelay(10);
        gpioWrite(24, 0); /* sets gpio24 high */----->WOBEI HIER HAST DU DICH VERSCHRIEBEN ODER?sollte hier Low sein?

    könnte man sie damit zusammen fassen

    Code
    gpioTrigger(24,10,1);

    ich hoffe dass ich mich mit meine Anfänger Mund nicht verquatsche und du es so aus andere Gründe geschrieben hast...

    :)


    bis bald

    Grüße aus Berlin,


    Golpe





  • Nett ... ja ja ... das denke ich ist ein typischer copy/paste Fehler ...

    Das mit dem Zusammenfassen ist ok, nur glaube ich, der unbedarfte Leser dann die Logik dahinter nicht versteht, wenn er sich nicht mit der Lib beschäftigt hat ;)

    Ausserdem bin ich mir nicht sicher, ob die Funktion seinerzeit (Juli 2013, also vor ca. 5 Jahren) schon existiert hat :)

    cu,

    -ds-