Angewandte Informatik: Entfernungsmessung mit Ultraschall: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „{|class="wikitable" |- | '''Autor:''' || Prof. Dr.-Ing. Schneider |- | '''Modul''' || Business and Systems Engineering, Angewandte Mathematik und Informatik, Übung, Sommersemester |- | '''Modulbezeichnung:''' || BSE-M-2-1.09 |} == Inhalt == * [https://www.mathworks.com/help/matlab/arduinoio-get-started-with-matlab-support-package-for-arduino-hardware.html?s_tid=CRUX_lftnav Erste Schritte mit dem MATLAB-Supportpaket für A…“ |
|||
| (25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
[[Datei:Bild-SR04.jpg|300px|thumb|rechts|Abbildung 1: Ultraschallsensor HC-SR04]] | |||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
| Zeile 8: | Zeile 9: | ||
|} | |} | ||
== Inhalt == | == Inhalt == | ||
* | * Aussendung und Empfang von Ultraschallimpulsen mit MATLAB<sup>®</sup> | ||
* Ansteuerung einer LED | |||
* Entfernungsmessung mittels Ultraschall | |||
* Messwertanalyse mit MATLAB | |||
* | * Messwertfilterung in Echtzeit | ||
* Auslegung von Filterparameter | |||
* Ergebnisdarstellung | |||
* Schwellwertbetrachtung und Anzeige mit Ampelmodul | |||
= | == Lernziele== | ||
Nach Durchführung dieser Lektion können Sie | |||
* die Funktion eines Ultraschallsensors erläutern. | |||
* die Vor- und Nachteile der Entfernungsmessung mit Ultraschall erläutern. | |||
* mit einem Ultraschallsensors Entfernungen messen. | |||
* Messdaten charakterisieren und anzeigen. | |||
* reale Messwerte speichern und via MATLAB<sup>®</sup> zyklisch visualisieren. | |||
* ein rekursives Tiefpassfilter programmiert und parametrieren. | |||
* eine Funktion in MATLAB<sup>®</sup> programmieren und aufrufen. | |||
* LEDs und das Ampelmodul ansteuern. | |||
== Vorbereitung == | |||
Erlernen Sie die Funktion des Ultraschallsensors und eines rekursiven Tiefpassfilters anhand der verlinkten Fachartikeln und Literatur. | |||
== Tutorial == | |||
* [[Ultraschallsensor_HC-SR04|HSHL-Wiki: Ultraschallsensors]] | |||
* [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html MATHWORKS: Ultraschallsensor einlesen] | |||
* [[Rekursive_Filter|HSHL-Wiki: Rekursives Tiefpassfilter]] | |||
| | |||
= | == Demos == | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong> | | <strong>Tiefpass.m </strong> | ||
|- | |- | ||
| <source line lang="matlab" style="font-size:medium"> | | <source line lang="matlab" style="font-size:medium">%**************************************************************** | ||
% Hochschule Hamm-Lippstadt * | |||
%**************************************************************** | |||
% Modul : Tiefpass(x) * | |||
% * | |||
% Datum : 08-Okt-2013 * | |||
%% | % * | ||
% Funktion : Tiefpassfilter 1. Ordnung mit fester * | |||
% Wichtung * | |||
% * | |||
% Implementation : MATLAB R2025b * | |||
% * | |||
% Toolbox : * | |||
% * | |||
% Author : Phil Kim * | |||
% Bearbeitet von Prof. Schneider * | |||
% * | |||
% Quelle : www.jj21.org/kf4b * | |||
% * | |||
% Letzte Änderung : 020.04.2026 * | |||
% * | |||
%***************************************************************/ | |||
function xTPF = Tiefpass(x) | |||
%% Bleibende Variablen anlegen | |||
persistent prevX alpha | |||
%% Beim ersten Durchlauf Initialisierung | |||
if isempty(alpha) | |||
prevX = x; % Letztes Ergebnis | |||
alpha = 0.95; % Filterfrequenz/Wichtung | |||
if | |||
end | end | ||
%% Tiefpass 1. Ordnung | |||
xTPF = alpha*prevX + (1 - alpha)*x; | |||
%% | prevX = xTPF; | ||
</source> | </source> | ||
|} | |} | ||
= | |||
= Aufgaben: Entfernungsmessung mit Ultraschall = | |||
<!--[[Datei:Gift-9344 128.gif|50px]]'''Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.'''--> | <!--[[Datei:Gift-9344 128.gif|50px]]'''Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.'''--> | ||
# Lesen Sie die Messwerte des Ultraschallsensor ein [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html?searchHighlight=arduino+matlab+ultrasonic&s_tid=srchtitle_support_results_2_arduino+matlab+ultrasonic]. | # Lesen Sie die Messwerte des Ultraschallsensor ein [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html?searchHighlight=arduino+matlab+ultrasonic&s_tid=srchtitle_support_results_2_arduino+matlab+ultrasonic]. | ||
# Eine rote LED signalisiert die | # Eine rote LED signalisiert den Programmstart. Sobald Messwerte eintreffen erlischt die rote LED und das Ampelmodul übernimmt die Anzeige. | ||
# Zeigen Sie die Distanzwerte in cm über der Zeit an. | # Zeigen Sie die Distanzwerte in cm über der Zeit an. | ||
# Nutzen Sie ein [[Arduino:_Ultraschallsensor_entstören|Tiefpassfilter]], um das Messwertrauschen während der Laufzeit in Echtzeit zu entstören. | |||
# Nutzen Sie ein [[Arduino:_Ultraschallsensor_entstören|Tiefpassfilter]], um das Messwertrauschen zu entstören. | # Ein Ampelmodul zeigt mit dauerhaftem Leuchten die Entfernung gemäß Tabelle 1 an. | ||
# Ein Ampelmodul zeigt die Entfernung an. | # Sichern Sie nach mind. 30 s Laufzeit Ihre Messwerte <code>Zeit</code> in s, <code>Distanz</code> in cm und die gefilterten Werte <code>DistanzTP</code> in der Datei <code>Ultraschall.mat</code>. | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ Tabelle 1: Zuornung zu Farben des Ampelmoduls | |||
|- | |- | ||
! Entfernung !! Farbe | ! Entfernung !! Farbe | ||
|- | |- | ||
| x | | x ≥ 20 cm || grün | ||
|- | |- | ||
| 10 cm < x < 20 cm|| gelb | | 10 cm < x < 20 cm|| gelb | ||
|- | |- | ||
| x | | x ≤ 10 cm || rot | ||
|} | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| Zeile 166: | Zeile 126: | ||
|} | |} | ||
'''Arbeitsergebnis:''' <code> | '''Arbeitsergebnis:''' <code>messeUSEntfernung.m</code>, <code>Ultraschall.mat</code> | ||
---- | ---- | ||
→ zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe26]] | → zurück zum Hauptartikel: [[BSE Angewandte Informatik - SoSe26]] | ||
Aktuelle Version vom 15. Juni 2026, 16:35 Uhr

| Autor: | Prof. Dr.-Ing. Schneider |
| Modul | Business and Systems Engineering, Angewandte Mathematik und Informatik, Übung, Sommersemester |
| Modulbezeichnung: | BSE-M-2-1.09 |
Inhalt
- Aussendung und Empfang von Ultraschallimpulsen mit MATLAB®
- Ansteuerung einer LED
- Entfernungsmessung mittels Ultraschall
- Messwertanalyse mit MATLAB
- Messwertfilterung in Echtzeit
- Auslegung von Filterparameter
- Ergebnisdarstellung
- Schwellwertbetrachtung und Anzeige mit Ampelmodul
Lernziele
Nach Durchführung dieser Lektion können Sie
- die Funktion eines Ultraschallsensors erläutern.
- die Vor- und Nachteile der Entfernungsmessung mit Ultraschall erläutern.
- mit einem Ultraschallsensors Entfernungen messen.
- Messdaten charakterisieren und anzeigen.
- reale Messwerte speichern und via MATLAB® zyklisch visualisieren.
- ein rekursives Tiefpassfilter programmiert und parametrieren.
- eine Funktion in MATLAB® programmieren und aufrufen.
- LEDs und das Ampelmodul ansteuern.
Vorbereitung
Erlernen Sie die Funktion des Ultraschallsensors und eines rekursiven Tiefpassfilters anhand der verlinkten Fachartikeln und Literatur.
Tutorial
- HSHL-Wiki: Ultraschallsensors
- MATHWORKS: Ultraschallsensor einlesen
- HSHL-Wiki: Rekursives Tiefpassfilter
Demos
| Tiefpass.m |
%****************************************************************
% Hochschule Hamm-Lippstadt *
%****************************************************************
% Modul : Tiefpass(x) *
% *
% Datum : 08-Okt-2013 *
% *
% Funktion : Tiefpassfilter 1. Ordnung mit fester *
% Wichtung *
% *
% Implementation : MATLAB R2025b *
% *
% Toolbox : *
% *
% Author : Phil Kim *
% Bearbeitet von Prof. Schneider *
% *
% Quelle : www.jj21.org/kf4b *
% *
% Letzte Änderung : 020.04.2026 *
% *
%***************************************************************/
function xTPF = Tiefpass(x)
%% Bleibende Variablen anlegen
persistent prevX alpha
%% Beim ersten Durchlauf Initialisierung
if isempty(alpha)
prevX = x; % Letztes Ergebnis
alpha = 0.95; % Filterfrequenz/Wichtung
end
%% Tiefpass 1. Ordnung
xTPF = alpha*prevX + (1 - alpha)*x;
prevX = xTPF;
|
Aufgaben: Entfernungsmessung mit Ultraschall
- Lesen Sie die Messwerte des Ultraschallsensor ein [1].
- Eine rote LED signalisiert den Programmstart. Sobald Messwerte eintreffen erlischt die rote LED und das Ampelmodul übernimmt die Anzeige.
- Zeigen Sie die Distanzwerte in cm über der Zeit an.
- Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen während der Laufzeit in Echtzeit zu entstören.
- Ein Ampelmodul zeigt mit dauerhaftem Leuchten die Entfernung gemäß Tabelle 1 an.
- Sichern Sie nach mind. 30 s Laufzeit Ihre Messwerte
Zeitin s,Distanzin cm und die gefilterten WerteDistanzTPin der DateiUltraschall.mat.
| Entfernung | Farbe |
|---|---|
| x ≥ 20 cm | grün |
| 10 cm < x < 20 cm | gelb |
| x ≤ 10 cm | rot |
| Teillösung |
clear all; close all; clc; % Initialisierung
if exist('hArduino')==0
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen
disp('Neues Arduino Objekt mit Ultrasonic-Bib erzeugt.')
end
hUltraschall = ultrasonic(hArduino,'D2','D3','OutputFormat','double')
nMesswerte = 100;
%% Messschleife
tic
writeDigitalPin(hArduino, 'D13', 1);
for i=1:nMesswerte
Distanz(i) = readDistance(hUltraschall);
Zeit(i) = toc;
end
writeDigitalPin(hArduino, 'D13', 0);
%% Ergebnisdarstellung
plot(Zeit,Distanz*100,'r.-');
xlabel('Zeit in s')
ylabel('Distanz in cm')
clear hArduino
|
Arbeitsergebnis: messeUSEntfernung.m, Ultraschall.mat
→ zurück zum Hauptartikel: BSE Angewandte Informatik - SoSe26