Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Ultraschall

Als Ultraschall bezeichnet man Schall mit Frequenzen oberhalb des menschlichen Hörfre-quenzbereichs. Er umfasst Frequenzen ab etwa 16 kHz bis zu 1 GHz. Oberhalb von 1 GHz spricht man von Hyperschall. Unterhalb der menschlichen Hörgrenze (unterhalb von ca. 20 Hz) spricht man vom Infraschall.

In Gasen und Flüssigkeiten breitet sich Ultraschall vorwiegend als Longitudinalwelle aus. Je nach Material eines Hindernisses wird Ultraschall an ihm reflektiert, in ihm absorbiert, gestreut oder er tritt durch das Material hindurch (transmittiert).

10 - Ultraschallsensor HC-SR04

Kurzinformationen

Kenndaten

  • Versorgungsspannung: 5 Volt
  • Stromaufnahme: < 2mA
  • Triggerung: über fallende Flanke (TTL-Pegel, >= 10µs); nach ca. 250µs wird ein 40kHz Burst-Signal ausgesendet (t = ca. 200µs); danach geht der Echo-Pin Ausgang auf H-Pegel und wartet auf das Rücklaufsignal. Sobald dies eintrifft, geht der Echo-Pin auf L-Pegel. Nach ca. 20ms kann die nächste Messung erfolgen. Trifft kein Echosignal ein, bleibt der Echo-Pin für ca. 200ms auf H-Pegel.
  • Messdistanz: 2 cm ... 300 cm
  • Messungen pro Sekunde: max. 50

Die Arbeitsweise des Sensors

Der Ultraschallsensor HC-SR04 sendet einen hochfrequenten Signalton aus und misst die Zeit t, bis das von einem Objekt reflektierte Signal wieder bei ihm eintrifft. Diese Zeitmessung ist abhängig von der Ausbreitungsgeschwindigkeit von Schall in Luft.

Abbildung 1 - Abstandsbestimmung mit einem Ultraschallsensor

Allgemein gilt, dass die Ausbreitungsgeschwindigkeit von Schall abhängig ist von der Temperatur T, der Luftfeuchtigkeit und der Luftqualität. Signifikant ist bei einer Abstandsberechnung aber nur der Einfluss der Lufttemperatur.

Die Ausbreitungsgeschwindigkeit von Schall erhöht sich pro Grad Celsius (°C) um 0,6 Meter pro Sekunde (m/s). Bei 0° C liegt sie bei 331,5 m/s. Mit der folgenden Formel lässt sich die Ausbreitungsgeschwindigkeit von Schall in Abhängigkeit von der Temperatur berechnen:

Formel 1 - Ausbreitungsgeschwindigkeit von Schall in Luft

In den folgenden beiden Beispielen wird die Ausbreitungsgeschwindigkeit von Schall bei 22,2° C und 25°C berechnet. Für T wird dazu der entsprechende Temperaturwert in Formel 1 eingesetzt.

Die Größe des prozentualen Fehlers berechnet sich:

Formel 2 - Prozentualer Fehler

Wenn die angenommene Raumtemperatur 22,2°C ist, die tatsächliche Temperatur aber bei 25°C liegt, beträgt der prozentuale Fehler 0,49%. Ein halbes Prozent bedeutet, dass das Objekt bei einer tatsächlichen Entfernung von 100 cm jetzt einen halben Zentimeter weiter entfernt erscheint.

Signallaufzeit erfassen

Übung 1

Material

  • 1x  Steckbrett mit Nullkraftsockel
  • 1x  HC-SR04
  • 1x  USB-UART Adapter
  • 1x  ATmega8A oder ähnlich
  • diverse Steckdrähte
  • 1x  Software BASCOM
  • 1x  Software CoolTerm
  • 1x  Brenner
  • 1x  USB Oszilloskop (optional)

Aufgaben

  • Baue die Schaltung nach der Schaltskizze auf dem Steckbrett auf.
  • Verbinde den USB-UART Adapter mit einem PC und starte das Programm CoolTerm.
  • Stelle den entsprechenden COM-Port und die Baudrate 9600 ein.
  • Starte das Programm BASCOM.
  • Übertrage das Programm hcsr04_1.bas in den Editor und speichere es ab.
  • Compiliere das Programm und brenne es in den ATmega-Baustein.
  • Setze den ATmega-Baustein in den Nullkraftsockel auf dem Steckbrett und schalte die Spannungsversorgung ein.
  • Im Terminalfenster von Coolterm sollten jetzt Zeitangaben erscheinen.

Schaltskizze

Das Programm hcsr04_1.bas

Signale mit dem Oszilloskop auswerten

Schaut man sich mit einem Oszilloskop die Signale an, kann man sowohl das Triggersignal erkennen, mit dem ein Messvorgang eingeleitet wird als auch das Laufzeitsignal, über das die Zeit für das hin- und rücklaufende Echosignal ermittelt wird.

Abbildung 2 - D0: Triggersignal von 10 µs Dauer aktiviert den Sensor. D1: nach ca. 250 µs wird ein Burst abgefeuert (Dauer ca. 200 µs) anschließend geht D1 auf HIGH.
Abbildung 3 - Das Signal an D1 bleibt so lange auf HIGH, bis das von einem Gegenstand reflektierte Echosignal zurückkommt. Dann geht D1 auf LOW. Ganz links bei D0 ist das Triggersignal als senkrechter Strich zu erkennen.

Die blaue obere Kurve D0 in den beiden Oszillogrammen zeigt die Signale am Controller-Anschluss PB.0 (TRIG), die rote untere Kurve D1 die am Controller-Anschluss PB.1 (ECHO).

Das Triggersignal zum Aktivieren des Sensors ist kurz (ca. 10 µs). Nach einer Pause von ca. 250µs sendet der HC-SR04 automatisch ein 40kHz Burstsignal (Ultraschallsignal) von 200µs Dauer. Anschließend wird der Echo-Ausgang am Sensor auf HIGH gesetzt und vom Eingang PB.1 des ATmega8A Controllers über den Befehl PULSEIN als HIGH erkannt. Sobald das am Hindernis reflektierte Ultraschallsignal am Sensor eintrifft, setzt dieser seinen Echo-Ausgang auf LOW, was vom Eingang PB.0 des Controllers ebenfalls erfasst wird.

Abbildung 4 - Ausgabe der Signallaufzeiten im Terminalfenster von CoolTerm.

Entfernung messen

Übung 2

Material

  • 1x  Steckbrett mit Nullkraftsockel
  • 1x  HC-SR04
  • 1x  USB-UART Adapter
  • 1x  ATmega8A oder ähnlich
  • diverse Steckdrähte
  • 1x  Software BASCOM
  • 1x  Software CoolTerm
  • 1x  Brenner
  • 1x  USB Oszilloskop (optional)

Der Schaltungsaufbau in dieser Übung ist identisch zu dem aus Übung 1.

Aufgaben

  • Die Schaltung ist mit der aus Übung 1 identisch.
  • Übertrage das Programm hcsr04_2.bas in den Editor und speichere es ab.
  • Compiliere das Programm und brenne es in den ATmega-Baustein.
  • Setze den ATmega-Baustein in den Nullkraftsockel auf dem Steckbrett und schalte die Spannungsversorgung ein.
  • Bestimme die Deckenhöhe und den Abstand des Sensors von einer Wand.
  • Bestimme die Abstände zwischen Sensor und verschiedenen Gegenständen und vergleiche die im Terminal ausgegebenen Zahlenwerte mit den Messungen mit Hilfe eines Zollstocks.

Das Programm hcsr04_2.bas

Ausgabe im Terminal CoolTerm

Wie arbeitet das Programm hcsr04_2.bas?

Zeilen 17 - 19

Zunächst werden die Eingangs- und Ausgangsports deklariert. PB.1 ist Eingang - über ihn wird der Sensor angetriggert. PB.0 ist Ausgang - er prüft, welcher Spannungspegel an seinem Port anliegt. Die Variablen Zeit, Abstand und Abstand_s werden deklariert.

 

Zeilen 21 - 29

In der Endlosschleife Do ... Loop wird die eigentliche Abstandsmessung alle 2 s durchgeführt und anschließend aus der Laufzeit des Signals vom Sensor zum Gegenstand und zurück der Abstand nach Formel (3) berechnet und im Terminal von CoolTerm ausgegeben.

Berechnung des Abstandes

Nach Abbildung 1 gilt

Weiter geht´s mit dem Kapitel Inertiale Messeinheit LSM332

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf