Arduino: Infrarotsensor einlesen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|300px|Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F]]
[[Datei:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|300px|Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
{|class="wikitable"
'''Modul:''' Praxismodul I<br>
|-
'''Lehrveranstaltung:''' Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|-
| '''Modul:''' || Praxismodul I
|-
| '''Lektion 5:''' || Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester
|}


== Inhalt ==
== Inhalt ==
Zeile 48: Zeile 53:
# Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße <code>U1</code>?
# Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße <code>U1</code>?
# Wie wird die Ausgangsgröße (<code>U1</code>) digitalisiert (<code>D1</code>)?
# Wie wird die Ausgangsgröße (<code>U1</code>) digitalisiert (<code>D1</code>)?
# Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße <code>D1</code> in die Distanz <code>d</code> umgerechnet?
# Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße <code>D1</code> in die Distanz <code>d</code> umrechnen?
# Wurde der Quelltext durch Header und Kommentare aufgewertet?
# Wurde der Quelltext durch Header und Kommentare aufgewertet?
# Wurden jedes Programm mittels PAP geplant?
# Wurden jedes Programm mittels PAP geplant?
Zeile 55: Zeile 60:


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
== Tutorials ==
== Tutorials ==
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Arduino: Using the Serial Plotter Tool]
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Arduino: Using the Serial Plotter Tool]
* [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ]
* [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ]
* [[Sharp_GP2Y0A41SK0F| Wiki: SHARP IR Abstandsensor]]
* [[Sharp_GP2Y0A41SK0F| Wiki: SHARP IR Abstandsensor]]
* [[Arduino:_Bibliothek_einbinden|Wiki: HSHL-Bibliothek einbinden]]
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht]


== Demos ==
== Demos ==
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoArray/DemoArray.ino DemoArray.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoArray/DemoArray.ino DemoArray.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoLookupTableIR/DemoLookupTableIR.ino DemoLookupTableIR.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoLookupTableIR/DemoLookupTableIR.ino DemoLookupTableIR.ino]


== Versuchsvorbereitung ==
== Versuchsvorbereitung ==
Zeile 163: Zeile 171:
=== Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors ===
=== Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors ===
Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben
Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben
* Messbereich in cm
* [https://de.wikipedia.org/wiki/Messbereich Messbereich] in cm
* Auflösung (Zeit, Distanz)
* [https://de.wikipedia.org/wiki/Aufl%C3%B6sung_(Digitaltechnik) Auflösung] (Zeit, Distanz)
* Empfindlichkeit  
* [https://de.wikipedia.org/wiki/Empfindlichkeit_(Technik) Empfindlichkeit]


'''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code>
'''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code>
Zeile 202: Zeile 210:
# Schneider, U.: ''Programmierrichtlinie für für die Erstellung von Software in C.'' Lippstadt: 1. Auflage 2022. [[Medium:Programmierrichtlinie.pdf|PDF-Dokument (212&thinsp;kb)]]
# Schneider, U.: ''Programmierrichtlinie für für die Erstellung von Software in C.'' Lippstadt: 1. Auflage 2022. [[Medium:Programmierrichtlinie.pdf|PDF-Dokument (212&thinsp;kb)]]
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|Datenblatt (858&thinsp;kb)]]
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|Datenblatt (858&thinsp;kb)]]


----
----
→ Termine [[Einführungsveranstaltung Informatikpraktikum 1|0]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|1]] [[Einstieg_in_die_Welt_des_Arduino|2]]  [[Arduino: Taster auswerten und LEDs ansteuern|3]] [[Arduino:_Sensoren_einlesen|4]]  [[Arduino:_Infrarotsensor_einlesen|5]] [[Arduino:_Infrarotsensor_entstören|6]] [[Arduino:_Programmier-Challenge_I_WS_23/24|7]] [[Arduino:_IR-Theremin|8]] [[Arduino:_Aktoren|9]] [[Arduino:_LCD_Display_mit_I2C_Schnittstelle|10]] [[Arduino:_Ultraschall_Entfernungsmessung|11]] [[Arduino:_Ultraschallsensor_entstören|12]] [[Arduino:_Temperaturmessung_mit_NTC_und_PTC|13]] [[Arduino:_Programmier-Challenge_II_WS_23/24|14]]<br>
→ Termine [[Einführungsveranstaltung Informatikpraktikum 1|0]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|1]] [[Einstieg_in_die_Welt_des_Arduino|2]]  [[Arduino: Taster auswerten und LEDs ansteuern|3]] [[Arduino:_Sensoren_einlesen|4]]  [[Arduino:_Infrarotsensor_einlesen|5]] [[Arduino:_Infrarotsensor_entstören|6]] [[Arduino:_Programmier-Challenge_I_WS_WS_24/25|7]] [[Arduino:_IR-Theremin|8]] [[Arduino:_Aktoren|9]] [[Arduino:_LCD_Display_mit_I2C_Schnittstelle|10]] [[Arduino:_Ultraschall_Entfernungsmessung|11]] [[Arduino:_Ultraschallsensor_entstören|12]] [[Arduino:_Temperaturmessung_mit_NTC_und_PTC|13]] [[Arduino:_Programmier-Challenge_II_WS_WS_24/25|14]]<br>
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_23/24|Arduino Praxiseinstieg]]
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_24/25|Arduino Praxiseinstieg]]

Aktuelle Version vom 28. Oktober 2024, 14:14 Uhr

Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lektion 5: Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester

Inhalt

  • Deklaration und Verwendung von Arrays
  • Kapselung einer Teilaufgabe in einer Funktion
  • Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
  • Einlesen des Entfernungssensors mit dem Arduino
  • Darstellung der Messwerte
  • Kennlinienkalibrierung

Video Tutorials

Lernziele

Nach Durchführung dieser Lektion

  • können Sie den IR-Sensor korrekt (elektrisch) anschließen.
  • können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
  • können Sie ein Array anlegen und auf die Array-Elemente zugreifen.
  • können Sie funktional programmieren.
  • können Sie die Sensordaten in die gemessene Entfernung umrechnen.
  • können Sie die Messwerte charakterisieren.

Lernzielkontrolle

  1. Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz?
  2. Wie funktioniert der Sensor GP2Y0A41SK0F technisch?
  3. Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße U1?
  4. Wie wird die Ausgangsgröße (U1) digitalisiert (D1)?
  5. Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße D1 in die Distanz d umrechnen?
  6. Wurde der Quelltext durch Header und Kommentare aufgewertet?
  7. Wurden jedes Programm mittels PAP geplant?
  8. Wurde auf magic numbers verzichtet?
  9. Wurde die Programmierrichtlinie eingehalten?

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_05.pdf

Tutorials

Demos

Versuchsvorbereitung

Abb. 2: Batterie-Tester
  1. Studieren Sie die Tutorials und Demos.
  2. Studieren Sie das Using the Serial Plotter Tool und nutzen Sie das Demo DemoSharpIR.ino, um Daten im Seriellen Plotter auszugeben.
  3. Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des Datenblatts oder Wiki-Artikels.
  4. Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
  5. Nutzen Sie die Abbildung auf Seite 4 des Datenblatts, um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
  6. 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.)
  7. Nutzen Sie die Arduino Referenz: analogRead() und erweitern Sie Ihre Tabelle um die Spalte Digitalwert D1 (vgl. Tab. 1).
  8. Planen Sie die Software via PAP.
  9. Beantworten Sie die Lernzielkontrollfragen.
  10. Sichern Sie Ihre Unterlagen in SVN.
Tabelle 1: Kennlinie des IR-Distanzsensors
Spannung U1 in V Distanz d in cm Digitalwert D1
3 3,6 614
2.02 6 413
0.82 16 168
.. .. ..

Versuchsdurchführung

Aufgabe 5.1: Lernzielkontrolle

Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_05.pdf


Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F

  1. Setzen Sie Ihre geplante Software 1:1 um.
  2. Stellen Sie die Messwerte D1 im Seriellen Monitor und Plotter dar.

Nützliche Befehle: Serial.begin(), Serial.println(), analogRead()

Arbeitsergebnisse in SVN: leseSharpIR.ino


Aufgabe 5.3: Sensorkennlinie

  1. Erweitern Sie Ihr Programm leseSharpIR.ino. Rechnen Sie das Digitalwort D1 in die Messdistanz d um.
  2. Stellen Sie die Distanz d im Seriellen Monitor und Plotter dar.
  3. Verifizieren Sie Ihr Ergebnis mit einem Gliedermaßstab.
  4. Was fällt Ihnen bei den Messwerten auf?

Nützliche Befehle: Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()

Arbeitsergebnisse in SVN: leseSharpIR.ino


Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors

Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben

Nützliche Befehle: millis(), Serial.print(), Serial.println()

Arbeitsergebnisse in SVN: Sensorcharakterisierung.pdf


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

FAQ

  • Muss ich die Lösungen selbst programmieren? Ja, nur Eigenleistung wird bewertet.
  • Darf ich die Musterlösung 1:1 kopieren und als meine Leistung ausgeben? Nein, das ist ein Plagiat und wird als Täuschungsversuch gewertet.

Literatur

  1. Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
  2. Brühlmann, T.: Sensoren im Einsatz mit Arduino. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: HSHL-Bib, O'Reilly
  3. Snieders, R.: ARDUINO lernen. Nordhorn: 8. Auflage 2022. URL: https://funduino.de/vorwort
  4. Schneider, U.: Programmierrichtlinie für für die Erstellung von Software in C. Lippstadt: 1. Auflage 2022. PDF-Dokument (212 kb)
  5. Sharp: GP2Y0A41SK0F. URL: [1]. Datenblatt (858 kb)



→ Termine 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg