Arduino: Infrarotsensor entstören
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 Sie eine Bibiothek installieren und nutzen.
- 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.
- Installieren Sie die Bibliothek
ArduinoSort-master.zip
. Hier finden Sie die Anleitung. - Sortieren Sie ein Array mit zufälligen Zahlen. Versuchen Sie das Demo DemoSortiereArray.ino nachzuvollziehen.
- 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: analogRead(), Serial.println()
Arbeitsergebnisse in SVN: IR_Sensorcharakterisierung.pdf
Tipps: Messbereich: Sie messen auf ein Ziel in verschiedenen Distanzen und zeichnen auf x die Referenz und auf y die Anzeige Ihres Systems. Minimalbeispiel:
WW/cm | MW/cm |
3 | 3,2 |
10 | 9,7 |
15 | 14,9 |
20 | 20,1 |
80 | 79,0 |
Mit der Abweichung von einer Ursprungsgraden können wir im Gespräch die Güte bewerten. Gibt es beispielsweise einen Offset oder driften die Werte auseinander?
Auflösung: [1]
- Welche Auswirkung hat D=700 zu D=699 auf die Ausgangsgröße d?
- Tragen Sie diese Werte gegeneinander auf ergibt sich eine Kurve.
- Im Nachbereich haben wir eine Auflösung von weniger als 1 mm und bei 70 cm Entfernung macht ein Inkrement 3 cm aus. Die Kurve beschreibt alle Zwischengrößen.
- Erkenntnis: Mit der Entfernung sinkt die Auflösung und somit steigt die Messunsicherheit.
Minimalbeispiel:
Fehler beim Parsen (Konvertierungsfehler. Der Server („cli“) hat berichtet: „[INVALID]“): {\displaystyle a_D<math>'''|| '''<math>a_d<math>/cm''' |- | 700 - 699|| 0,02 |- | 699 - 698|| 0,02 |- | ..|| .. |- | 21-20|| 2,5 |- |} '''Empfindlichkeit:''' [https://de.wikipedia.org/wiki/Empfindlichkeit_(Technik)] * Hier setzen Sie <math>E = \frac{\Delta d}{\Delta U}}
ins Verhältnis.
Aufgabe 6.4: Median-Filter
Nützliche Befehle: Arbeitsergebnisse in SVN: Lösung: Median-Filter für die Störung Aufgabe 6.5: Ergebnisbewertung und Nachhaltige Doku
Arbeitsergebnis in SVN: Bewertung
Tutorials
DemosLiteratur
→ zurück zum Hauptartikel: Arduino Praxiseinstieg |