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).
- 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
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.
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.
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.
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.