AlphaBot: Messdatenverarbeitung mit MATLAB: Unterschied zwischen den Versionen
(→Demos) |
|||
Zeile 121: | Zeile 121: | ||
== Tutorials == | == Tutorials == | ||
* [ | * [[Einrichtung von PuTTY]] | ||
* [[Ultraschallsensor_HC-SR04| HSHL-Wiki: Ultraschallsensor HC-SR04]] | * [[Ultraschallsensor_HC-SR04| HSHL-Wiki: Ultraschallsensor HC-SR04]] | ||
* [https://funduino.de/nr-10-entfernung-messen Funduino: Entfernungen mit einem HC-SR04 Ultraschallsensor am Arduino messen] | * [https://funduino.de/nr-10-entfernung-messen Funduino: Entfernungen mit einem HC-SR04 Ultraschallsensor am Arduino messen] | ||
== Demos == | == Demos == |
Version vom 19. März 2023, 12:16 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester
Aufgabenstatus: In Bearbeitung
Inhalt
- Statische und dynamische Messung mit dem Ultraschallsensor
- Nutzung von MATLAB® als seriellen Monitor.
- Programmierung und Anwendung eines gleitenden Mittelwertfilters
Lernziele
Nach Durchführung dieser Lektion
- können Sie Debug-Daten speichern und via MATLAB® visualisieren.
- können Sie direkt MATLAB® als seriellen Monitor nutzen.
- können Sie ein Signal differenzieren und kennen die Gefahren dieser Berechnung.
- kennen Sie die Funktion und Kennwerte des Ultraschall-Sensors.
- können Sie Entfernungen mit dem Ultraschall-Sensor messen.
- können Sie Software mit einem PAP planen.
Versuchsdurchführung
Aufgabe 2.1: MATLAB® als serieller Monitor
- Nutzen Sie MATLAB®, um die Messdaten direkt (live) darzustellen.
- Planen Sie als ersten Schritt das MATLAB®-Programm als PAP.
- Greifen Sie hierzu auf die serielle Schnittstelle zu während der Arduino Daten sendet.
- Nutzen Sie das Demo
DemoDebug2MATLAB
im SVN-Verzeichnis.
Nützlich MATLAB®-Befehle: fopen, feof, fgetl, strfind, isempty, plot, xlabel, ylabel, legend
Arbeitsergebnisse in SVN: zeigeArduinoDaten.pap, zeigeArduinoDaten.m
Aufgabe 2.1: Statische Messunsicherheit
- Lesen Sie die Messwerte des Ultraschall-Sensors auf statische Ziele im gesamten Messbereich aus (10 cm, 20 cm, 50 cm, 1 m, 2 m, 3 m, 4 m). Schreiben Sie hierzu ein Arduino-Programm
statische Messunsicherheit.ino
. Jeder Messsatz sollte >100 Messwerte umfassen. - Nutzen Sie das Programm
Putty
, um die Daten der seriellen Schnittstelle in der ASCII-DateiUltraschallmessung.txt
zu speichern. - Schreiben Sie einmalig als Header die Bezeichnung der Messwerte Zeit in ms und Strecke in cm in die Textdatei.
- Laden und visualisieren Sie die Messdaten in Ultraschallmessung.txt mit MATLAB®.
- Stellen Sie die Messdaten in einem Diagramm in cm über der Zeit dar.
- Berechnen Sie Mittelwert und Standardabweichung und stellen Sie diese dar,
- Beschriften Sie die Graphen.
Nützlich MATLAB®-Befehle: mean, std, xline
Arbeitsergebnisse in SVN: statische Messunsicherheit.ino, Ultraschallmessung.txt, zeigeUltraschallMessung.m
Aufgabe 11.3: Gleitendes Mittelwertfilter
Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO.
- Schreiben Sie die Funktion
GleitendesMittelwertFilter()
, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet. - Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen.
- Visualisieren Sie Messwerte und Filterergebnis im seriellen Plotter.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
- Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
Arbeitsergebnisse in SVN: testeGleitendesMittelwert.ino
Hinweis:
- Nutzen Sie das FIFO aus Aufgabe 6.4.
- Die Formel für das gleitende Mittelwertfilter lautet: für k Messwerte
Eine Einführung zu rekursiven Filtern finden Sie in folgendem Video.
- Gleitendes Mittelwertfilter: 19 m 52 s
- Tiefpassfilter: 29 m
Aufgabe 11.4: Rekursives Tiefpassfilter
Ein rekursives Filter kann Messwerte in Echtzeit während der Laufzeit filtern. Nutzen Sie ein Tiefpassfilter, um die Messwerte zu filtern.
- Schreiben Sie die Funktion
TiefpassFilter()
, welches die Eingangswerte zyklisch filtert. Hier bei wird der Tiefpass berechnet. - Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen.
- Visualisieren Sie Messwerte und Filterergebnis im seriellen Plotter.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
- Wählen Sie anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
Arbeitsergebnisse in SVN: testeTiefpassFilter.ino
Hinweis:
- Die Formel für das Tiefpassfilter lautet: für den aktuellen Messwert .
- ist hierbei ein Filterparameter .
Aufgabe 11.5: Dynamische Messunsicherheit
- Zeigen Sie das ungefilterte und das Tiefpass-gefilterte Signal in MATLAB® an. Messen Sie auf ein Ziel im gesamten Messbereich (2 cm - 4 m - 2 cm).
- Wurde das Signalrauschen geglättet?
- Sichern Sie alle Ergebnisse mit beschreibendem Text (
message
) in SVN. - Wurden die Regeln für den Umgang mit SVN eingehalten?
- Wurde die Programmierrichtlinie eingehalten?
- Wurde nachhaltig dokumentiert?
- Haben die Programme einen Header?
- Wurden der Quelltext umfangreich kommentiert?
- Wurden die PAPs erstellt und abgelegt? Passen die PAPs 100% zum Programm?
Arbeitsergebnis in SVN: SVN Log
, USTiefpassFilter.ino
, Ergebnisbewertung.pdf
Tutorials
- Einrichtung von PuTTY
- HSHL-Wiki: Ultraschallsensor HC-SR04
- Funduino: Entfernungen mit einem HC-SR04 Ultraschallsensor am Arduino messen
Demos
Literatur
- Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
- Brühlmann, T.: Sensoren im Einsatz mit Arduino. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: HSHL-Bib, O'Reilly
- Snieders, R.: ARDUINO lernen. Nordhorn: 8. Auflage 2022. URL: https://funduino.de/vorwort
- Schneider, U.: Programmierrichtlinie für für die Erstellung von Software in C. Lippstadt: 1. Auflage 2022. PDF-Dokument (212 kb)
→ zurück zum Hauptartikel: Informatik Praktikum 2