Präzise Ultraschall-Distanzmessung mit Arduino – Schritt-für-Schritt-Anleitung
Ultraschall-Distanzmessung-Projekt mit Arduino
Ultraschall-Distanzmessung ist ein nützliches Werkzeug in vielfältigen Anwendungen: Positionierung, Ortung, Dimensionierung, Auswahl, Füllstandsmessung, Steuerung und Profiling. Durch mathematische Berechnungen mit Ausgangswerten lassen sich auch Geschwindigkeit und weitere physikalische Größen messen. Auch in der Robotik findet das Gerät Anwendung.
Vor diesem Hintergrund ist der Ultraschallsensor ein großartiges Werkzeug zur berührungslosen Distanzmessung kurzer Strecken. Er nutzt das ECHO-Prinzip. In diesem Projekt lernen wir, Distanz durch Interfacing des HC-SR04-Sensormoduls mit Arduino zu messen und auf einem 16×2-LCD anzuzeigen.
- Verwandter Beitrag: Variables Netzteil mit Arduino UNO – Schaltung & Code
Schaltplan des Distanzmessungsprojekts

Das Interfacing ist wirklich einfach – folgen Sie dem Schaltplan. Zunächst: Ultraschallsensor Trig- und Echo-Pins an A4 und A5 des Arduino UNO, VCC und GND an 5V und GND des Arduino.
Distanzanzeige auf 16×2-LCD, verbunden mit Arduino: RS und EN an Digitalpin 12 und 11. D4–D7 des LCD an Digitalpin 5–2. 10k-Potentiometer für LCD-Kontrast wie im Schaltplan gezeigt.
- Verwandter Beitrag: Automatischer Türklingel mit Objekterkennung per Arduino
Benötigte Komponenten
- HC-SR04 Ultraschall-Sensormodul
- Arduino UNO
- 16×2 LCD
- Potentiometer
- Jumper-Kabel & Verbindungsdrähte
Ultraschall-Sensormodul
Das verwendete Sensormodul ist HC-SR04, ein berührungsloses Ultraschall-Messgerät. Dieser kleine Modul misst Distanzen von 2 cm bis 400 cm. Sehr präzise: Genauigkeit bis 3 mm.
Der Sensor besteht aus Ultraschall-Sender und -Empfänger. Funktionsprinzip: IO-Trigger sendet 10 µs High-Pegel. Modul sendet acht 40-kHz-Ultraschallzyklen und prüft, ob Pulsignal zurückempfangen wird. Bei Empfang bleibt IO-Trigger so lange High, wie die Zeit vom Senden bis Empfang dauert.
Distanz = (High-Pegel-Dauer × Schallgeschwindigkeit in Luft (340 m/s)) / 2
- Verwandter Beitrag: Automatische Nachttischlampe mit Arduino
Timing-Diagramm
Wie besprochen, arbeitet das Modul nach dem ECHO-Prinzip. Zum Triggern wird ein Puls für ca. 10 µs gesendet. Danach sendet das Modul acht 40-kHz-Zyklen und prüft Reflexion. Bei Hindernis reflektiert Signal und kehrt zum Empfänger zurück. Distanz wird per Formel berechnet. Division durch 2, da Gesamtzeit Hin- und Rückweg umfasst – Zeit bis Hindernis ist halbe Gesamtzeit. Timing-Diagramm:
Technische Daten
- Betriebsspannung: 5 V
- Betriebsstrom: 15 mA
- Betriebsfrequenz: 40 kHz
- Messwinkel: 15°
- Messbereich: 2 cm – 400 cm
Pin-Belegung HC-SR04
- VCC: Stromversorgung (typ. +5 V)
- Trig: Modul triggern
- Echo: Ausgangspin. Bleibt High für Dauer Signalweg Sender → Hindernis → Empfänger
- GND: An Hauptschaltungs-Masse
Wie besprochen: ECHO-Prinzip. Modul per Mikrocontroller triggern: High-Pegel-Puls 10 µs an Trig-Pin senden. Auf ECHO warten. Mikrocontroller berechnet Zeit. Distanz per Formel ermitteln.
- Verwandter Beitrag: Was ist ein Crowbar-Schutzschaltkreis? Design & Betrieb
Arduino UNO
Arduino ist Open-Source-Mikrocontroller, weit verbreitet in kleinen und großen Embedded-Projekten. Hier: Arduino UNO – günstig & einfach zu interfacen. Board bietet 14 digitale I/O-Pins, 6 Analogpins. Open Source – Nutzer entscheidet über Nutzung. Board & Software anpassbar.
- Verwandter Beitrag: Einfacher Überspannungsschutz mit Zenerdiode
16×2 LCD-Modul
Diese Module sind in Embedded-Projekten weit verbreitet – günstig & einfach zu interfacen. Bekannt aus Taschenrechnern, Multimetern. Unser LCD: 16 Zeichen pro Zeile, 2 Zeilen = 16 Spalten, 2 Reihen. Jedes Zeichen: 5×8 Pixelmatrix.
Gesamtpixel: 5×8×16×2 = 1280 Pixel. Positionsangaben für Zeichen nötig. Zur Vereinfachung IC HD44780: Holt Daten & Befehle vom Mikrocontroller, verarbeitet, damit gewünschter Output auf LCD erscheint. IC erleichtert LCD-Interfacing stark. Wir nutzen LCD in vielen Projekten für Sensor-Outputs etc. Technische Daten:
- Betriebsspannung: 4,7–5,3 V
- Stromverbrauch: 1 mA ohne Hintergrundbeleuchtung
- 2 Zeilen à 16 Zeichen
- Zeichen: 5×8 Pixelmatrix
- Alphanumerisch: Zahlen, Buchstaben, Sonderzeichen
- Grün/Blau Hintergrundbeleuchtung
Pin-Belegung 16×2 LCD:
16×2 LCD Pinout und Beschreibung
| Pin | Name | Beschreibung |
|---|---|---|
| 1 | VSS | Masse, an Schaltungsmasse |
| 2 | VDD | Stromversorgung (4,7–5,3 V), typ. 5 V |
| 3 | VE | Kontraststeuerung – Potentiometer anschließen, per Drehknopf Kontrast einstellen |
| 4 | RS | Register Select – Umschaltung Befehl/Datenregister, an Mikrocontroller |
| 5 | RW | Read/Write – Lesen/Schreiben, meist auf Masse für Schreiben |
| 6 | EN | Enable – an Mikrocontroller, 1/0 für Datenbestätigung |
| 7 | D0–D7 | Datenpins für 8-Bit-Daten vom Mikrocontroller. 4-Bit-Modus möglich (nur 4 Pins) |
| 8 | A | Anode – Pluspol Hintergrundbeleuchtung (optional). Ohne Backlight geringerer Stromverbrauch. |
| 9 | K | Kathode – Minuspol Hintergrundbeleuchtung |
Basisches LCD-Interfacing mit Arduino: RS & EN an Digitalpin 12 & 11. D4–D7 an Digitalpin 5–2. RW, VSS, K an Masse, VDD, A an 5V. Potentiometer an VE für Kontrast.
- Verwandter Beitrag: Ampelsteuerung mit IC 4017 & 555 Timer
Code: Bibliothek LiquidCrystal.h einbinden.
#include <LiquidCrystal.h>
Variablen für LCD-Datenpins definieren & an lcd-Funktion übergeben:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Setup: LCD per lcd.begin(16, 2) initialisieren (16 Spalten, 2 Zeilen, volle Nutzung). 'Hello, World!' ausgeben – lange Nachrichten laufen in nächste Zeile.
lcd.begin(16, 2);
lcd.print("Hello, World!");
Loop: Cursor auf (0,1) per lcd.setCursor(). Zeit in Sekunden ausgeben.
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
Code hochladen – Nachricht erscheint. Kontrast per Potentiometer einstellen.
- Verwandter Beitrag: Klatschschalter mit IC 555 Timer & ohne Timer
Arduino-Programmierung für Ultraschall-Distanzmessung
Coding ist sehr einfach. Header für LCD einbinden.
#include <LiquidCrystal.h>
Makros für Pin A4 (Pin 18) und A5 (Pin 19) definieren:
#define trig 18
#define echo 19
Variablen für LCD-Pins definieren & an lcd übergeben:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Distanz-Variable 'd' und Zeit-Variable 't' definieren & mit 0 initialisieren:
float t=0, d=0;
Setup: LCD initialisieren, Pin-Modes für Trig (OUTPUT) & Echo (INPUT):
void setup() {
lcd.begin(16,2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
Loop: LCD leeren. Sensor initialisieren: High-Pegel-Puls 10 µs senden. Sensor sendet acht 40-kHz-Zyklen & prüft Reflexion. Zeit vom Sensor holen. Distanz berechnen. Division durch 10000 für cm-Umrechnung (Geschwindigkeit in m/s).
void loop() {
lcd.clear();
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH);
d = t * 0.0340 / 2;
d = t * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
- Verwandter Beitrag: Automatischer Badezimmerlichtschalter – Schaltung & Betrieb
Funktionsweise der Distanzmessschaltung
Code hochladen – fertig. Objekt/Hand vor Sensor halten, Distanz auf LCD ablesen. Abstand variieren – präzise Messung erhalten.
Bei Initialisierung (High-Pegel 10 µs) sendet Sensor acht 40-kHz-Zyklen. Bei Reflexion an Hindernis kehrt Signal zum Empfänger zurück. Sensor liefert Laufzeit. Damit Distanz zwischen Sensor und Hindernis berechnen.

Industrietechnik
- Funktionsweise und Hauptanwendungen von Distanzsensoren
- Arduino-Sensoren: Typen, Anwendungen und reale Projekte
- PIR-Sensorschaltungen: Design, Betrieb und reale Anwendungen
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
- Frequenz & Tastverhältnis präzise messen mit Arduino UNO
- Kompaktes FM-Radio mit Arduino Nano und RDA5807M selbst bauen
- Kompaktes Arduino-Radar mit HC-SR04 Ultraschallsensor & 1,8″ Display