Ultraschall Abstandssensor HC-SR04
Autor: Lukas Honerlage
Betreuer: Prof. Schneider
Aufgabe
In diesem Artikel werden folgenden Punkte abgearbeitet:
Es wird der Ultraschall Abstandssensor HC-SR04 verwendet
Wie funktioniert der Sensor?
Welche Rohsignale liefert der Sensor?
Wie funktioniert die Signalvorverarbeitung
Sollen Messwerte oder vorverarbeitete Daten übertragen werden?
Wie lässt sich eine Vorverarbeitung umsetzen?
Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?
Analog-Digital-Umsetzer
Wie werden die analogen Signale umgesetzt?
Welcher ADU kommt zum Einsatz?
Welche Gründe sprechen für diesen ADU? Alternativen?
Bussystem
Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?
Wenn ja, wie funktioniert dieses Bussystem?
Digitale Signalverarbeitung
Welche Verarbeitungsschritte sind notwendig?
Welche Filter werden angewendet?
Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.
Bewertung der Sensordaten
Welche Fehler treten in welchem Verarbeitungsschritt auf?
Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.
Einleitung
In dem Projekt wird ein Ultraschall-Sensormodul (HC-SR04) in betrieb genommen. Ebenfalls wird ein LCD-Display über die Schnittstelle iC2 angeschlossen, auf dem die Distanz angezeigt wird. Es wird das Arbeitsprinzip von einem HC-SR04 erläutert. Ebenfalls wird beschrieben, wie eine Messung mit Ultraschall Funktioniert und von welchen wesentlich Faktoren diese Abhängt. Die Inbetriebnahme wird mit den Arduino Board UNO durchgeführt. Zu Erläuterung wird ein Ausschnitt vom Seriellen Monitor gezeigt und erläutert welche Rohsignale (RAW) vom HC-SR04 an den Arduino gesendet werden. Des Weiteren wird die Softwareseitige Verarbeitung der Signale erklärt und wie der HC-SR04 mit dem vom Arduino in betrieben werden kann.
Technische Übersicht
Ultraschall Abstandssensor HC-SR04
Eigenschaft | Daten |
---|---|
Spannungsversorgung |
VCC 5 V |
Stromaufnahme |
15 mA |
Messbereich | 3 cm bis ca. 400 cm |
Messintervall | 0,3 cm |
Messung pro Sekunde | max. 50 |
Messfrequenz |
40 Hz |
Messkegel |
ca. 15° Hz |
Abmessung (l,b,h) |
45 mm x 25 mm x 20 mm |
Kompatibel mit |
Raspberry Pi, Arduino, pcDuino |
Pin | Funktion |
---|---|
1. VCC-Pin |
5 V |
2. Trigger-Pin |
TTL-Pegel |
3. Echo-Pin | Messergebnis, TTL-Pegel |
4. GND | 0 V |
Prinziperklärung
Equipment
Verwendete Software
Für die Abarbeitung der obgenannten Aufgabestellungen wurde folgenden Software verwendet:
- Arduino Software IDE 1.8.13
- MATLAB/Simulink 2020b
- Fritzing
- Tortoise SVN
Verwendete Komponente
Für die Abarbeitung der obgenannten Aufgabestellungen wurde folgenden Komponente eingesetzt:
- Ultraschall Abstandssensor: HC-SR04
- LCD Display mit I2C Anschluss
- Arduino UNO R3 (AZ-Delivery Edition)
Messkette
Die Messkette des HC-SR04. In dem Bild ist die Rückseite der Platine zu erkennen mit den Beschrifteten Bauteilen.
Die Messkette des HC-SR04. In dem Bild sind die Schaltung und die Bauteile zu erkennen.
Schaltkreis des HC-SR04
Der Sensor besteht aus drei verschieden Teilen, die im Zusammenspiel eine Ultraschallmessung möglich ermöglichen. Die Recheneinheit stellt der Mikroprozessoren der mit dem Sender und dem Empfänger verbunden ist. Ebenfalls befinden sich auf dem Board Verstärkerschaltungen und Filter.
Mikrocontroller U1 EM78P153S 8-Bit-Mikroprozessor
Der Mikrocontroller auf dem Board hat verschiedene Aufgaben. Einerseits stellt er die Schnittstelle, in dieser Arbeit die Verbindung zum Arduino über die Trig- und Echo-Pins. Des weiteren koordiniert er das Timing ein gegenphasigen Burstsignal, um einen Ping zu erzeugen und Schaltete den Empfänger Zeitweise aus um Fehler zu Vermeiden. Ebenfalls empfängt der das Vorverarbeitete Signal vom Empfänger.
Sender U3
Der Sender U3 verarbeitet die die eingehenden Signale vom Mikroprozessor und Verstärkt das Signal um den Lautsprecher US2 anzutreiben.
Empfänger U2
Bei dem Empfänger handelt es sich um einen Quad-Operationsverstärker-IC LM324. Das Empfangen erfolgt über vier Operationsverstärker. Die Kondensatoren C1, C3 und C4 sorgen sich um die Wechselstromkopplung zwischen den drei Stufen. Die erste Stufe (U2D, R1 und R2) ist ein invertierender Verstärker. Die zweite Stufe (U2C, C2, C3 und R5) ist ein Bandpassfilter. Bei der dritten Stufe Handelt es sich ebenfalls um ein Verstärker. Die vierte Operationsverstärkerstufe ist ein Hysteresekomparator mit variabler Schwelle und Ausgangsschalter.
Hardwareaufbau
Datenblätter
https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf
https://cdn-reichelt.de/documents/datenblatt/B400/ULTRASCHALL%20SENSOR.pdf
Schaltplan und Steckplatine
-
Anschlussbild des Abstandssensor HC-SR04
-
Anschlussplan des Abstandssensor HC-SR04
Der Hardwareaufbau besteht aus dem Anschluss des Ultrasschallsensors an den Arduino UNO. Der HC-SR04 benötigt vier Anschlüsse. Es werden VCC und GND für die Versorgungsspannung benötigt. Die anderen beiden sind für den Trigger Impulse und das Echo Signal. Der Trigger-Pin wird auf Pin 12 am Arduino angeschlossen und wird in der Software als Output-Pin deklariert. Der Echo-Pin wird auf Pin 10 am Arduino angeschlossen und liefert das Messergebnis vom Ultraschallsensors. In der Software wird das Signal als Input-Pin deklariert.
Ultraschallsender
Bei dem Sensor handelt es sich um einen Mehrfachvibrator der Schallwellen erzeugen und Aufnehmen kann. Der Aufbau des Sensors ist, dass außen rum ein Gehäuse ist dieses ist beim HC-SR04 aus Aluminium, es gibt aber auch welche mit Plastikgehäuse. Das Aufbau von innen ist so, dass oben auf einer Metallplatte eine Trichterartige Metallplatte befestigt ist. Dieser Trichter Sendet den Ultraschall gezielt nach vorne. Unter dem Trichter befindet sich der eigentliche Mehrfachvibrator. Dieser besteht aus einer Kombination von Resonator und Vibrator. Hierbei handelt es sich um um zwei Platten die aufeinander liegen. Die obere Platte ist aus Metall und die darunterliegend ist eine Piezoelektrisch Keramikplatte.
Jeder dieser Platten ist mit einem Anschluss Pin verbunden und kann so angeregt werden. Wenn an den Pins eine Elektrische Spannung angelegt wird entsteht eine mechanische Verzerrung anhängig von der Spannung und der angelegten Frequenz.
Ebenfalls ist der Sensor in der Lage wenn er in Schwingung gebracht wird, ein Elektrischen Strom zu erzeugen. Durch diesen Effekt erzeugen die Reflektierten Signale einen sehr kleinen Strom. Da der generierte Strom nur sehr gering ist, muss dieses Signal deutlich verstärkt werden um ihn mit dem Microcontroller zu verarbeiten. Durch die benötigte Verstärkung gibt es auf dem HC-SR04 zwei solcher Sensoren. Ein Sensor der angeregt wird um das Ultraschall Signal zu erzeugen und der andere um das Signal wieder aufzunehmen.
Prinziperklärung Ultraschallmessung
Das Prinzip eines Ultraschallsensormoduls ist ein Laufzeitverfahren. Der HC-SR04 enthält ein Ultraschallsender welches einen Ultraschall Impuls aussendet. Dieses Signal wird beim auftreffen auf einen Widerstand ( Ein Physisches Objekt ) reflektiert wie ein Echo. Wenn das Reflektierte Signale zurückkommt wird es vom (HC-SR04 rechten) Sensor wieder aufgenommen. Um die Distanz zu dem Objekt zu bestimmen wird die Zeit vom Ausgehenden Signal bis zum wieder eintreffen des Echos gemessen der Microcontroller misst die Zeit vom der ausgesandten steigende Flanke bis zur wieder eintreffenden steigenden Flanke vom Sensor der das Signal Empfängt. Durch die Schallgeschwindigkeit und die Verstrichene Zeit kann durch eine Berechnung eine Distanz ermittelt werden. Da Schallwellen die Strecke einmal hin und wieder zurück zurücklegen müssen muss die gemessene Zeit noch durch zwei gemessen werden.
Prinzip Erklärung Ultraschallmessung mit dem HC-SR04
Um eine Messung durchzuführen muss der Trigger-Eingang für 10µs (0,00001s) auf High gesetzt werden. Im Anschluss sendet der Sensor acht kurze Rechteckwelle von 40kHz in ungefähr 200µs (0,0002s) direkt danach wird der Echo Pin auf High gesetzt das Signal bleibt solange auf High bis das reflektierende Signal wieder empfangen wird. Wenn kein Reflektierendes Signal zurückkommt wird nach 170ms (0,17s) trotzdem wieder auf Low gesetzt. Die Messung wird als gescheitert betrachtet.
Im Oszilloskop können die Signale die vom HC-SR04 gesendet werden sichtbar gemacht werden. Hier ist schön zu erkennen, wie am Anfang das Signal kurz auf High gesetzt wird. Im Anschluss erfolgt dann der Burst von 8 x 40 kHz-Impulsen. Ebenfalls ist am Echo Ausgang zu sehen, das nach den 8 Impulsen der Ausgang auf High gesetzt wird. Wenn das erste Signal zurückkommt fällt die Flanke wieder. Dieses Prinzip findet beim Konstanten Messen in einer Schleife statt.
Softwarearchitektur
Das auslesen des Sensors ist nicht sehr umfangreich, da ein großer Teil vom Sensor direkt übernommen wird. Es muss lediglich festgelegt werden, wann das Signal ausgesendet wird. Das aussenden geschieht Digital, indem der Trigger-Pin für 5ms auf High gesetzt wird und danach wird auf Low. Das auslesen des Echo Pin erfolgt ebenfalls Digital. In der Arduino IDE gibt es bereits eine Funktion, in der die Zeit gemessen wird wie lange ein Pin auf High gesetzt ist. Durch diese Funktion wird die Zeit des gemessen wie lange der Echo-Pin auf High ist. Dieser Wert wird im Anschluss umgerechnet in die Distanz in cm. Um Messunsicherheit auszuschließen, wird der Wert immer auf eine ganze Zahl gerundet. Das errechnete Ergebnis wird im Anschluss in dem Seriellen Monitor der Arduino IDE ausgegeben.
Dieser Ablauf erfolgt dauerhaft in einer Schleife.
Signalverarbeitung
Messungen am Empfänger Sensor
Um einen Rückschluss darüber ziehen zu können, ob es Analog möglich ist über den eingehenden Strom eine Distanz zu ermitteln, wurde an den HC-SR04 an den Pins zum Empfänger Sensor jeweils ein Kabel angelötet. Aus den Ermittelten werden kann festgestellt werden, dass in kurzer Distanz noch ein Unterschied ermittelt werden kann diese Werte schwanken aber trotz gleicher Distanz. Eine Analoge Entfernungsmessung ist damit nicht möglich.
Distanz in [cm] | Spannung in [mA] |
---|---|
5 |
0,1-0,3 |
10 |
0,1-0,2 |
50 |
0,1-0,2 |
100 |
0,1 |
150 |
0,1 |
200 |
0,1 |
250 |
0,1 |
Analog-Digital-Umsetzer
Um trotzdem eine Messung durchführen zu können, werden die niedrige Spannungen Verstärkt und gefilterte. Im dem Mikroprozessor EM78P153 wird dieses Signal im Anschluss in ein Digitales 5 Volt High oder Low Signal umgewandte. Was im Anschluss an den Arduino übermittelt wird.
Umwelteinflüsse auf die Messung
Um Schallgeschwindigkeit zu berechnen ist es wichtig, sich mit den äußeren Gegebenheiten auseinander zu setzten. Die Schallgeschwindigkeit ist abhängig vom der Elastizität, Dichte und der Temperatur. Um eine Exaktemessungen bei Unterschiedlichen Umweltbedingungen durchzuführen muss konstant die Temperatur, höhe vom Meeresspiegel und die Luftfeuchte gemessen werden. In der Atmosphäre nimmt die Schallgeschwindigkeit mit der Höhe ab. Mit diesen Werten kann die Momentane Schallgeschwindigkeit Berechnet werden unter Berücksichtigung der äußeren Umwelteinflüsse.
Bei dem HC-SR04 wird keine Messung der äußeren Einflüsse durchgeführt. Alle Versuche sind in einem geschlossenen Raum durchgeführt so dass mit einer Schallgeschwindigkeit von 343,5 m/s gerechnet wird.
Die Schallgeschwindigkeit bei Trockener Luft und einer Temperatur von 20°C betragt 343,5 m/s (1236 km/h).
Wir nehmen bei unseren Berechnungen 343,5 m/s als Schallgeschwindigkeit an.
Übersicht der Schallgeschwindigkeit bei Temperatur
Temperatur [°C] | Temperatur [K] | Schallgeschwindigkeit [m/s] | Schallgeschwindigkeit [km/h] |
---|---|---|---|
-50 |
223,15 |
299,63 |
1079 |
-40 |
233,15 |
306,27 |
1103 |
-30 |
243,15 |
312,77 |
1126 |
-20 |
253,15 |
319,09 |
1149 |
-10 |
263,15 |
325,35 |
1171 |
0 |
273,15 |
331,50 |
1193 |
10 |
283,15 |
337,54 |
1215 |
20 |
293,15 |
343,46 |
1236 |
30 |
303,15 |
349,29 |
1257 |
40 |
313,15 |
254,94 |
1278 |
50 |
323,15 |
360,57 |
1298 |
Mathematisches Hilfsmittel
Lautstärke berechnen
Bei dem Ultraschallsenders lässt sich die Lautstärke mit der Formel des Schalldruckpegel berechnen.
Sound pressure level = (S.P.L.)
= Schalldruck des Sensors
= Referenzschalldruck
Die Laustärke des Sensors beträgt auf dem HC-SR04 100db.
Nach 0,5 Meter sind es nur noch 80db.
Berechnung der Schallgeschwindigkeit
Für trockene Luft Molmasse in Meereshöhe
Für das zweiatomige Gas Sauerstoff
ist die universelle Gaskonstante in Joule pro Kelvin mal Mol
ist die Temperatur in Kelvin bei 20°C
Umgang mit der Messunsicherheit
Um die Umrechnung einfach zu Gestaltung gibt es eine Näherungs Formel, die mit einer Genauigkeit von 99,8% den Messbereich von -20°C bis 40°C abbildet. Da wir in unserm Beispiel nur auf cm runden ist die Messunsicherheit von 0,2% bei uns zu vernachlässigen. Was nicht zu vernachlässigen ist, ist die Temperatur. Bei 0°C bis 20°C entsteht ein Messunsicherheit von 3,49% von -20°C bis 20°C entsteht sogar ein Messunsicherheit von 6,99%. Bei genauen Messung bei großen Temperatur Schwankungen sollten eine Temperatur Messung in die Berechnung mit einfließen.
Distanz zum Objekt [cm] | Laufzeit in [ms] bei 20°C | Laufzeit in [ms] bei 0°C | Laufzeit in [ms] bei -20°C |
---|---|---|---|
2 |
0,1164 |
0,1206 |
0,1251 |
5 |
0,2911 |
0,3016 |
0,3129 |
10 |
0,5822 |
0,6033 |
0,6259 |
25 |
1,4556 |
1,5082 |
1,5649 |
50 |
2,9112 |
3,0165 |
3,1289 |
100 |
5,8224 |
6,0331 |
6,2597 |
150 |
8,7336 |
9,0497 |
9,3896 |
200 |
11,6448 |
12,0663 |
12,5195 |
250 |
14,5560 |
15,0829 |
15,6494 |
300 |
17,4672 |
18,0995 |
18,7793 |
Bewertung des Sensors
Vorteile
Die Vorteile des Sensors sind, dass er für unter 5 Euro zu bekommen ist. Für den Preis bietet der Sensor eine gute Möglichkeit, den Abstand von 3 cm bis 250cm auf 1 cm genau zu bestimmen. Ebenfalls liegt der Vorteil darin, dass der Sensor einen großenteil des Messens selbständig übernimmt.
Vorteile | Nachteile |
---|---|
2 |
0,1164 |
5 |
0,2911 |
10 |
0,5822 |
25 |
1,4556 |
50 |
2,9112 |
100 |
5,8224 |
150 |
8,7336 |
200 |
11,6448 |
250 |
14,5560 |
300 |
17,4672 |
Nachteile
Alternative
Zusammenfassung
Lernerfolg
YouTube Video
Schwierigkeitsgrad
Quellenverzeichnis
https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf
http://www.pcserviceselectronics.co.uk/arduino/Ultrasonic/electronics.php
http://www.pcserviceselectronics.co.uk/arduino/Ultrasonic/HC-SR04-cct.pdf
https://cdn-reichelt.de/documents/datenblatt/A300/SEN-US01-DATASHEET.pdf
https://www.sunfounder.com/learn/sensor-kit-v2-0-for-arduino/lesson-1-display-by-i2c-lcd1602-sensor-kit-v2-0-for-arduino.html
https://www.mouser.com/pdfdocs/DFR0464Datasheet.pdf
https://elektro.turanis.de/html/prj121/index.html#:~:text=Ultraschallmodul%20HC%2DSR04,-Beschreibung&text=Nach%20Triggerung%20mit%20einer%20fallenden,Messungen%20pro%20Sekunde%20durchgef%C3%BChrt%20werden.
https://arduino-projekte.webnode.at/meine-libraries/ultraschallsensor/
https://www.rahner-edu.de/mikrocontroller/prop-sensoren-et-al/ultraschallsensor/
3. https://elektro.turanis.de/html/prj121/index.html
→ zurück zur Übersicht: ST WS2020 (MTR)
- ↑ https://www.banggood.com/3Pcs-HC-SR04-Ultrasonic-Module-with-RGB-Light-Distance-Sensor-Obstacle-Avoidance-Sensor-Smart-Car-Robot-Geekcreit-for-Arduino-products-that-work-with-official-Arduino-boards-p-1608924.html?rmmds=detail-topright-recommendation1&cur_warehouse=CN
- ↑ https://www.banggood.com/Wholesale-Geekcreit-Ultrasonic-Module-HC-SR04-Distance-Measuring-Ranging-Transducers-Sensor-DC-5V-2-450cm-p-40313.html?akmClientCountry=America&&utm_source=google&utm_medium=cpc_ods&utm_campaign=arvin-cam-sds-view-telscope-content-pc&utm_content=arvin&gclid=Cj0KCQiA2af-BRDzARIsAIVQUOdUqObSv6DEN3AAWBKRlD20KRye4_nSknpvvVbfCFtrdvdgr818smgaAuVREALw_wcB&cur_warehouse=UK
- ↑ http://www.pcserviceselectronics.co.uk/arduino/Ultrasonic/HC-SR04-cct.pdf
- ↑ https://www.reichelt.de/ultraschallsender-16mm-h-12mm-ust-40t-p22188.html?&nbc=1&trstct=lsbght_sldr::112244
- ↑ https://cdn-reichelt.de/documents/datenblatt/B400/ULTRASCHALL%20SENSOR.pdf
- ↑ https://cdn-reichelt.de/documents/datenblatt/B400/ULTRASCHALL%20SENSOR.pdf
- ↑ https://wolles-elektronikkiste.de/hc-sr04-und-jsn-sr04t-2-0-abstandssensoren
- ↑ http://www.pcserviceselectronics.co.uk/arduino/Ultrasonic/