Arduino: Infrarotsensor einlesen
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
Inhalt
- Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
- Einlesen des Entfernungssensors mit dem Arduino
- Darstellung der Messwerte
- Kennlinienkalibrierung
Lernziele
Nach Durchführung dieser Lektion
- können Sie den Sensor korrekt (elektrisch) anschließen.
- können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
- können Sie die Sensordaten in die gemessene Entfernung umrechnen.
- können Sie die Messwerte charakterisieren.
Lernzielkontrolle
- Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz?
- Wie funktioniert der Sensor GP2Y0A41SK0F technisch?
- Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße
U1
? - Wie wird die Ausgangsgröße (
U1
) digitalisiert (D1
)? - Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße
D1
in die Distanzd
umgerechnet? - 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_05.pdf
Vorbereitung
- Studieren Sie das Using the Serial Plotter Tool und nutzen Sie das Demo DemoSharpIR.ino, um Daten im Seriellen Plotter auszugeben.
- Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des Datenblatts.
- Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
- Nutzen Sie die Abbildung auf Seite 4 des Datenblatts, um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
- Machen Sie sich mit der Funktion der analogen Eingänge vertraut: Arduino Referenz:
analogRead()
. Messen Sie gemäß Abb. 2 die Spannung einen AA Batterie in V. (Hinweis: KEINE 9-V-BLOCK nutzen! Spannung von mehr als 5 V können den Arduino zerstören.) - Nutzen Sie die Arduino Referenz:
analogRead()
und erweitern Sie Ihre Tabelle um die Spalte DigitalwertD1
(vgl. Tab. 1). - Planen Sie die Software via PAP.
- Beantworten Sie die Lernzielkontrollfragen.
- Sichern Sie Ihre Unterlagen in SVN.
Musterlösung: für den Batterie-Tester
const unsigned long BAUD_RATE_u32 = 9600;
const unsigned int AUFLOESUNG_u16 = 1023; //2^10-1
const float ARDUINO_SPANNUNG_f32 = 5.0;
void setup() {
Serial.begin(BAUD_RATE);
}
void loop() {
unsigned int Digitalwert_u16 = analogRead(A0); // Quantisierung der Apannung am Analogen Eingang A0
Serial.print(ARDUINO_SPANNUNG_f32 * AUFLOESUNG_u16/Digitalwert_u16); // Umrechnung Digitalwert in V
Serial.println("V");
Spannung U1 in V |
Distanz d in cm |
Digitalwert D1
|
3 | 3,6 | 614 |
2.02 | 6 | 413 |
0.82 | 16 | 168 |
.. | .. | .. |
Tipps:
- Nutzen Sie Werte über den gesamten Wertebereich [0.2 V .. 3.2 V].
- Sie können die Werte auch durch reale Messungen auf ein statisches Ziel ermitteln.
- Umrechnungsformel: Fehler beim Parsen (Konvertierungsfehler. Der Server („cli“) hat berichtet: „[INVALID]“): {\displaystyle D_1 = U_1\cdot \frac{1023}{5\,V}<math> == Versuchsdurchführung == === Aufgabe 5.1: Lernzielkontrolle === Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle. '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code> === Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F === # Setzen Sie Ihre geplante Software 1:1 um. # Stellen Sie die Messwerte <code>D1</code> im Seriellen Monitor und Plotter dar. '''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead()</code> '''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code> <div class="mw-collapsible mw-collapsed"> '''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino Demo: DemoSharpIR.ino] </div> === Aufgabe 5.3: Sensorkennlinie === # Erweitern Sie Ihr Programm <code>leseSharpIR.ino</code>. Rechnen Sie das Digitalwort <code>D1</code> in die Messdistanz <code>d</code> um. # Stellen Sie die Distanz <code>d</code> im Seriellen Monitor und Plotter dar. # Verifizieren Sie Ihr Ergebnis mit einem Gliedermaßstab. # Was fällt Ihnen bei den Messwerten auf? '''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()</code> '''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code> <div class="mw-collapsible mw-collapsed"> '''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino] </div> === Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors === Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben * Messbereich in cm * Auflösung (Zeit, Distanz) * Empfindlichkeit '''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code> '''Arbeitsergebnisse''' in SVN: <code>Sensorcharakterisierung.pdf</code> <div class="mw-collapsible mw-collapsed"> '''Musterlösung:''' * Den Messbereich beschreibt der kleinste und größte Messwert [3,50]cm. * Die Auflösung ist der kleinstmögliche Werteschritt. Hier Zeit: 5-7 ms, Spannung: 0,0048V * Die Empfindlichkeit berechnet sich aus <math>E=\frac{\Delta y}{\Delta x}} . Im nichtlinearen Fall entsprich dies der 1. Ableitung.
Aufgabe 5.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 |
5.1 | 2 |
5.2 | 2 |
5.3 | 2 |
5.4 | 2 |
5.5 | 2 |
Tutorials
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)
- Sharp: GP2Y0A41SK0F. URL: [1]. Datenblatt (858 kb)
→ zurück zum Hauptartikel: Arduino Praxiseinstieg