Ultraschallmodul

Raspberry Pi

Hier zeige ich euch wie ihr ein Low-Cost Ultraschallmodul an euer Raspberry Pi anschließen könnt.
Den Sensor habe ich für 3€ bei Ebay ersteigert.

-> Die Schaltung:

Die Beschaltung des Ultraschallmoduls sieht wie folgt aus:

Ultraschallmodul

Das Modul kann auch mit 3,3V betrieben werden. Dadurch spart ihr euch zwar den Spannungsteiler, büßt aber einiges an Reichweite ein (sie beträgt dann nur noch etwa 40cm).
Der Spannungsteiler dient dazu um die 5V Pegel des Ultraschallmoduls auf 2,5V herunter zu teilen, da das Raspberry Pi nur maximal 3,3V als Eingangsspannung verträgt.

-> Das Programm:

Um eine Messung auszulösen muss die Triggerleitung 10µs ein High-Signal führen.
Anschließend sendet das Modul acht 40kHz Impulse aus und wenn sie reflektiert werden, wird der Echo-Pin auf High gezogen.
Aus der High-Level Zeit vom Echo Pin kann anschließend nach folgender Formel die Entfernung berechnet werden:

Entfernung in cm: s
High-Level Zeit: t
Schallgeschwindigkeit: v

Latex formula
Als erstes löst das Programm mit folgenden Zeilen eine Messung aus:

Dazu wird der Trigger Pin als erstes auf Low gezogen und kurz gewartet. Dies stellt sicher das der Pin einen Low-Pegel führt und das Modul dies auch richtig erkennt.
Anschließend wird er auf High gezogen und es wird 10µs gewartet.
Die sleep-Funktion ist bei kleinen Zeitintervallen nicht sonderlich genau, aber für diese Anwendung ist das egal, da es sich bei den 10µs nur um eine Minimalzeit handelt.
Nach den 10µs wird der Pin wieder auf High gezogen.
Jetzt fängt das Programm an die Zeit zu messen.
Dafür wird erst gewartet bis der Echo Pin einen High-Pegel führt:

Sobald ein High-Pegel anliegt, wird mittels

die Startzeit in der Variable Start gespeichert.
Anschließend wird gewartet bis der Echo Pin einen Low-Pegel führt:

Sobald dies eintritt, wird mit

die Stopzeit gespeichert.
Jetzt kann das Programm die Zeit des High-Signals berechnen. Dafür bilde ich die Differenz der beiden Zeiten:

Mit dieser Zeit kann das Programm nach der oben gegebenen Formel den Abstand berechnen.
Dies geschieht in diesen Zeilen:

Mit der letzte Zeile wird das Ergebnis auf zwei Nachkommastellen gerundet und anschließend wird die Entfernung in der Konsole ausgegeben:

Ultraschall Ausgabe

Danke an Pinsel120866 aus dem Roboternetz für die Idee mit dem Ultraschallmodul und die ersten Codevorlagen :)

 

Dokumentation:

 

-> Zurück zu den Basteleien mit dem Raspberry Pi

22 thoughts on “Ultraschallmodul
    • Hey,

      wenn du das Modul mit 5V betreibst, kann es gut hinkommen das es 4m weit reicht. Hab es bisher nur immer bis etwa 3m beobachten können, da in der Entfernung meist immer was stand :)

      Gruß
      Daniel

  1. Danke, für die Antwort.
    Habe mir so ein Modul mal bestellt.
    Ich kann das ganze ja auch als Erkennungsgerät verwenden?
    Möchte mit dem Modul nur feststellen ob sich jemand über eine bestimmte Stelle bewegt und dann eine Funktion ausführen, danach soll wieder gewartet werden bis jemand die Stelle überquert und die Funktion erneut ausgeführt wird.
    Gruß

  2. Hallo Daniel, mein Modul ist jetzt da. Funktioniert soweit auch super. Nur mit deinem Skript löst es ja alle Sekunde aus und gibt die Entfernung des nächsten Gegenstand an. Hast du einen Tipp wie ich das ganze als „Lichtschranke“ verwenden kann? Sprich nur auslöst wenn eine Große Abweichung ist bzw. wenn jemand durchläuft?
    Gruß

    • Das Auslösen habe ich jetzt so hin bekommen, das wenn unter einer Wert unter einer bestimmten Entfernung ist dieser auslöst.
      Klappt soweit super.
      Nur alle ca. 15-30 Sekunden kommt ein „falscher Wert“.
      Vielleicht wäre für mein Vorhaben doch eine Lichtschranke besser geeignet, da muss ich noch ein bisschen spielen.

      • Hey,

        schön das es klappt.
        Das mit dem falschen Wert kann ich mir nicht erklären…. . Betreibst du das Modul mit 5V?
        Generell hast du recht, für so ein Vorhaben ist eine Lichtschranke praktischer.

        Gruß
        Daniel

        • Ja betreibe es mit 5 V und habe leider immer mal wieder ein paar falsche Werte.
          Hast du schon mal was mit einer Lichtschranke gemacht, bzw. kannst du das eine Hardware empfehlen?
          Gruß

          • Hey,

            nein mit einer Lichtschranke habe ich noch nicht gearbeitet. Aber das ist eigentlich nicht mehr als die Abfrage nach einem Taster. Dafür nimmst du dann die Interrupts und fertig :)

            Gruß
            Daniel

  3. Hallo Daniel, vielen Dank für deine ausführliche Erklärung zum Thema Ultraschallsensor. Weißt du vielleicht wie ich den Abstandswert aus der Variablen „Entfernung“ entnehmen kann, eventuell in eine DB schreiben oder Datei und diese an meinen Webserver senden kann.

    Ich würde die Ausgabe aus dem Pythonscript gerne auf meiner Homepage anzeigen lassen.

    Danke dir

  4. Hi,
    vielen Dank für deinen Artikel ich möchte den Ultraschallsensor ebenfalls nutzen, jedoch würden mir die 40 cm vollkommen ausreichen. Ich habe den ganzen Spaß jetzt mit 3,3Volt betrieben und habe lediglich einmal ganz kurz eine Entfernung ausgegeben bekommen, mag das am falschen Voltparameter liegen oder könnte das eine andere Ursache haben?
    mfg
    Andy

    • Hey,

      das kann gut sein, dass der Chip bei 3,3V Mist macht.
      Betreibe ihn einfach mit 5V und benutz einen Spannungsteiler für den IO und dann sollte alles funktionieren :)

      Gruß
      Daniel

  5. Vielen Dank für die Anleitung und das Python Skript, hat mir eine Menge Arbeit abgenommen. Jedoch kann ich sehr empfehlen die Schallgeschwindigkeit auf die entsprechende Temperatur anzupassen, diese hier für 0°C liefert bei 20°C auf 20 cm schon um fast 1 cm verfälschte Werte.

    • Hey Dustin,

      danke für den Hinweis.
      Ja da hast du recht. Wenn man die Möglichkeit hat die Schallgeschwindigkeit korrekt zu erfassen (z.B. mit einem Temperatursensor) sollte man dies tun :)

      Gruß
      Daniel

  6. Hey,

    das schaut ja relativ leicht aus. Habe allerdings eine Frage: Kann man auch mehrere Ultraschall Sensoren am Pi betreiben? Beispielsweise 4?

    Das Problem dabei wäre ja, dass nur 2x 5V Pins am Pi sind – wenn man allerdings alle Sensoren nacheinander prüfen lässt, könnte man doch alle Sensoren an einem Pin mit 5V anschließen, oder?

    • Hallo Alex,

      du kannst alle vier Sensoren über die 5V versorgen, das sollte kein Problem darstellen.
      Den Trigger und den Signalpin eines jeden Sensors musst du dann aber an einen anderen IO legen.
      Prinzipiell sollte der Betrieb von vier Sensoren somit möglich sein.

      Gruß
      Daniel

  7. Hallo Kampi,
    danke für die Anleitung. Ich hab das genau so nachgebaut, und es funktioniert hervorragend bis zu einem Abstand von etwa 80-90 cm. Danach passt es gar nicht mehr. Ich bekomme für Abstände oberhalb 1 m maximal 110 cm ausgewertet.
    ‚Ne Idee, woran das liegen könnte?
    Grüße
    Halli

    • Hallo Halli,

      betreibst du das Modul mit 3,3V? Weil dann ist es stark eingeschränkt.
      Für die „volle“ Reichweite (auch im Nahbereich) solltest du das Modul mit 5V betreiben und die Pins die VOM Modul ZUM Raspberry Pi gehen durch einen Spannungsteiler aus zwei gleich großen Widerstände auf einen 2,5V Pegel runter teilen.

      Gruß
      Daniel

      • Hallo Kampi,
        ja, mit 5 Volt (Pin 2 vom Raspi). Ich hab’s exakt nach der Schaltung im Bild oben aufgebaut, also Spannungsteiler mit zwei 10k-Widerständen, Echo von zwischen den Widerständen zu einem GPIO, Trigger direkt auf einen zweiten GPIO.
        Vielleicht ein „Montags“-Sensor?

        • mmh was natürlich auch sein kann, dass die Zeiten, die der Raspberry Pi für die Berechnung verwendet, ungenau sind und dadurch die Berechnung falsch ist.

    • Hallo Klaus,

      das weiß ich nicht, da ich nicht weiß wie der Triggereingang des Moduls intern aufgebaut ist.
      Ich würde aber einfach mal nein sagen bzw. probier es aus ;)

      Gruß
      Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.