Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

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.

Schaltplan des Distanzmessungsprojekts

Präzise Ultraschall-Distanzmessung mit Arduino – Schritt-für-Schritt-Anleitung

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.

Benötigte Komponenten

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

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:Präzise Ultraschall-Distanzmessung mit Arduino – Schritt-für-Schritt-Anleitung

Technische Daten
Pin-Belegung HC-SR04

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.

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.

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:

Pin-Belegung 16×2 LCD:

16×2 LCD Pinout und Beschreibung

Pin Name Beschreibung
1VSSMasse, an Schaltungsmasse
2VDDStromversorgung (4,7–5,3 V), typ. 5 V
3VEKontraststeuerung – Potentiometer anschließen, per Drehknopf Kontrast einstellen
4RSRegister Select – Umschaltung Befehl/Datenregister, an Mikrocontroller
5RWRead/Write – Lesen/Schreiben, meist auf Masse für Schreiben
6ENEnable – an Mikrocontroller, 1/0 für Datenbestätigung
7D0–D7Datenpins für 8-Bit-Daten vom Mikrocontroller. 4-Bit-Modus möglich (nur 4 Pins)
8AAnode – Pluspol Hintergrundbeleuchtung (optional). Ohne Backlight geringerer Stromverbrauch.
9KKathode – 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.

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.

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);
}

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.

Präzise Ultraschall-Distanzmessung mit Arduino – Schritt-für-Schritt-Anleitung

Industrietechnik

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