Arduino: Infrarotsensor entstören: Unterschied zwischen den Versionen
(→Inhalt) |
|||
Zeile 7: | Zeile 7: | ||
== Inhalt == | == Inhalt == | ||
* Kennlinienuntersuchung und Filterung | * Kennlinienuntersuchung und Filterung | ||
* Installation und Nutzung einer Bibliothek | |||
* Programmierung und Anwendung eines Median-Filters | * Programmierung und Anwendung eines Median-Filters | ||
== Lernziele== | == Lernziele== |
Version vom 1. November 2022, 09:51 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
Inhalt
- Kennlinienuntersuchung und Filterung
- Installation und Nutzung einer Bibliothek
- Programmierung und Anwendung eines Median-Filters
Lernziele
Nach Durchführung dieser Lektion
- können Sie die systematischen Sensorfehler erkennen und behandeln.
- können die Messwerte mit dem Serial Plotter der Arduino IDE vergleichend anzeigen und bewerten.
- können Sie die Messwerte charakterisieren.
Lernzielkontrolle
- Legen Sie ein Array an und bestimmen Sie dessen Größe. Nutzen Sie das DemoSizeOfArray.ino.
- Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Wurden jedes Programm mittels PAP geplant?
- Wurde auf
magic numbers
verzichtet? - Wurde die Programmierrichtlinie eingehalten?
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_06.pdf
Vorbereitung
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor.
Versuchsdurchführung
Aufgabe 6.1: Lernzielkontrolle
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_06.pdf
Aufgabe 6.2: Messwertanalyse
- Messen Sie die Zeit in Millisekunden mit dem Befehl
millis()
- Geben Sie die Zeit und Messdaten im seriellen Monitor aus (z. B.
Zeit in ms : Entfernung in cm
). - Analysieren Sie die Messdaten. Was fällt Ihnen auf?
- Diskutieren Sie das Ergebnis mit Prof. Schneider.
- Wie lässt sich der Fehler beheben?
Nützliche Befehle: millis(), Serial.begin(), Serial.println(), analogRead()
Arbeitsergebnisse in SVN: zeigeIRMesswerte.ino
Demo: Demo: DemoSharpIR.ino
Aufgabe 6.3: IR Sensorcharakterisierung
- Zeichnen Sie die gemessene Entfernung im Verhältnis zu einer Referenz auf. Die Referent kann ein Gliedermaßstab sein. Welchen Messbereich hat Ihr IR-Sensor?
- Zeichnen Sie die gemessenen Entfernungsschritte über dem Messbereich auf. Welche Auflösung hat Ihr Sensor?
- Zeichnen Sie die Auflösung über dem Messbereich auf. Welche Empfindlichkeit hat Ihr Sensor?
Nützliche Befehle: tone(), delay(), noTone(), analogRead(), map()
Arbeitsergebnisse in SVN: IR_Theremin.ino
Aufgabe 6.4: Median-Filter
- Ausreißer lassen sich gut mit einem Median-Filter entfernen. Ein Beispielvideo finden Sie in diesem [Sharp_GP2Y0A41SK0F#Median-Filter_f%C3%BCr_die_St%C3%B6rungen|Artikel}.
- Schreiben Sie die Funktion
float = MedianFilter(float Messwert_s32)
. Diese Funktion soll über einen statischen 5 Werte Ringspeicher (first in first out, FIFO) verfügen. Der erste Wert wird gelöscht, die nachfolgenden Werte rutschen einen auf und der neue Messwert (Messwert_s32) nimmt Platz 5 ein. - Sortieren Sie die 5 Werte nach Größe z. B.
2,2,4,1,2
wird zu1,2,2,2,4
. Nutzen Sie hierfür die Funktionen ausDemoSortiereArray
- Geben Sie als Rückgabewert
SortiertesArray[3]
zurück. - Testen Sie die Funktion Ihrer Funktion mit Zufallszahlen im
void loop()
Nützliche Befehle: random(), Serial.println(), analogRead(), LookupTable(), analogRead()
Arbeitsergebnisse in SVN: testeMedianFilter.ino
Lösung: [Sharp_GP2Y0A41SK0F#Median-Filter_f%C3%BCr_die_St%C3%B6rungen| Median-Filter für die Störung]
Aufgabe 6.5: Nachhaltige Doku
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
Bewertung
Aufgabe | Punkte |
6.1 | 2 |
6.2 | 2 |
6.3 | 2 |
6.4 | 2 |
6.5 | 2 |
Tutorials
- Arduino: Using the Serial Plotter Tool
- Arduino Referenz:
analogRead()
- Arduino Referenz:
map()
- Arduino Referenz:
tone()
- Arduino Referenz:
noTone()
- Wiki: SHARP IR Abstandsensor
Demos
Videos
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)
- Sharp: GP2Y0A41SK0F. URL: [1]. Datenblatt (858 kb)
→ zurück zum Hauptartikel: Arduino Praxiseinstieg