Arduino: Infrarotsensor einlesen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(66 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:Lernset - Einsteiger Kit für Arduino.jpg|thumb|rigth|450px|Abb. 1: Lernset - Einsteiger Kit für Arduino]]
[[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 ==
* Deklaration und Verwendung von Arrays
* Kapselung einer Teilaufgabe in einer Funktion
* Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
* Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
* Einlesen des Entfernungssensors mit dem Arduino
* Einlesen des Entfernungssensors mit dem Arduino
* Darstellung der Messwerte
* Darstellung der Messwerte
* Kennlinienkalibrierung
* Kennlinienkalibrierung
 
== Video Tutorials==
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial Arrays&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=52d1eee9-b0f9-455a-80db-af3f00f2529b&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial: Lookup Table&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=98958e23-9c36-48cf-b912-af3c00601ce1&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial: Lookup Table programmieren&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=3b45bf84-7d4e-49e5-bc0c-af4600ef47ee&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
== Lernziele==
== Lernziele==
Nach Durchführung dieser Lektion
Nach Durchführung dieser Lektion
* können Sie den Sensor korrekt (elektrisch) anschließen.
* können Sie den IR-Sensor korrekt (elektrisch) anschließen.
* können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
* 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 Sensordaten in die gemessene Entfernung umrechnen.
* können Sie die Messwerte charakterisieren.
* können Sie die Messwerte charakterisieren.
Zeile 24: 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 32: Zeile 61:
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>


== Vorbereitung ==
== Tutorials ==
* [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> ]
* [[Sharp_GP2Y0A41SK0F| Wiki: SHARP IR Abstandsensor]]
* [[Arduino:_Bibliothek_einbinden|Wiki: HSHL-Bibliothek einbinden]]
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht]
 
== Demos ==
* [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/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.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/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoLookupTableIR/DemoLookupTableIR.ino DemoLookupTableIR.ino]
 
== Versuchsvorbereitung ==
[[Datei:Batterie-Tester.jpg |thumb|rigth|300px|Abb. 2: Batterie-Tester]]
# Studieren Sie die Tutorials und Demos.
# Studieren Sie das [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]  und nutzen Sie das Demo [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino], um Daten im Seriellen Plotter auszugeben.
# Studieren Sie das [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]  und nutzen Sie das Demo [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino], um Daten im Seriellen Plotter auszugeben.
# Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]].
# Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]] oder [[Sharp_GP2Y0A41SK0F|Wiki-Artikels]].
# Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
# Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
# Nutzen Sie die Abbildung auf Seite 4 des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]], um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
# Nutzen Sie die Abbildung auf Seite 4 des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]], um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
# Machen Sie sich mit der Funktion der analogen Eingänge vertraut: [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ]. Messen Sie gemäß Abb. 2 die Spannung einen AA Batterie in V. (Hinweis: KEINE 9-V-BLOCK nutzen! Spannung von mehr als 5&thinsp;V können den '''Arduino zerstören'''.)
# Nutzen Sie die [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ] und erweitern Sie Ihre Tabelle um die Spalte Digitalwert <code>D1</code> (vgl. Tab. 1).
# Nutzen Sie die [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ] und erweitern Sie Ihre Tabelle um die Spalte Digitalwert <code>D1</code> (vgl. Tab. 1).
# Planen Sie die Software via PAP.
# Planen Sie die Software via PAP.
# Beantworten Sie die Lernzielkontrollfragen.
# Beantworten Sie die Lernzielkontrollfragen.
# Sichern Sie Ihre Unterlagen in SVN.
# Sichern Sie Ihre Unterlagen in SVN.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung&thinsp;</strong>
|-
| '''Musterlösung:''' für den Batterie-Tester <br>
<syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:small">
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");
</syntaxhighlight>
|-
|}
{| class="wikitable"
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 1: Kennlinie des IR-Distanzsensors
|+ style = "text-align: left"|Tabelle 1: Kennlinie des IR-Distanzsensors
Zeile 47: Zeile 110:
| '''Spannung <code>U1</code> in V'''|| '''Distanz <code>d</code> in cm'''|| '''Digitalwert <code>D1</code>'''
| '''Spannung <code>U1</code> in V'''|| '''Distanz <code>d</code> in cm'''|| '''Digitalwert <code>D1</code>'''
|-
|-
| 3|| 3,6 || 732
| 3|| 3,6 || 614
|-
| 2.02|| 6 || 413
|-
|-
| 2.02|| 6 || 439
| 0.82|| 16 || 168
|-
|-
| 0.82|| 16 || 165
| ..|| .. || ..
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
|
* Nutzen Sie Werte über den gesamten Wertebereich [0.2&thinsp;V .. 3.2&thinsp;V].
* Sie können die Werte auch durch reale Messungen auf ein statisches Ziel ermitteln.
* Umrechnungsformel: <math>D_1 = U_1\cdot \frac{1023}{5\,V}</math>
|-
|-
|}
|}
Zeile 60: Zeile 134:


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
----


=== Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F ===
=== Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F ===
# Setzen Sie Ihre geplante Software 1:1 um.
# Setzen Sie Ihre geplante Software 1:1 um.
Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird.
# Stellen Sie die Messwerte <code>D1</code> im Seriellen Monitor und Plotter dar.


'''Nützliche Befehle''': <code>pinmode(), digitalRead(), digitalWrite(), delay, if..else</code>
'''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead()</code>


'''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Demo&thinsp;</strong>
'''Demo:''' [https://funduino.de/nr-8-bewegungsmelder]
|-
</div>
|
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino Demo: DemoSharpIR.ino]
|-
|}
----


=== Aufgabe 5.3: Sensorkennlinie ===
=== Aufgabe 5.3: Sensorkennlinie ===
Lesen Sie Charakteristische
# Erweitern Sie Ihr Programm <code>leseSharpIR.ino</code>. Rechnen Sie das Digitalwort <code>D1</code> in die Messdistanz <code>d</code> um.
Rechnen Sie die digitalisierten Messwerte D1 in
# 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>pinmode(), analogRead(), digitalWrite(), if..else</code>
'''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()</code>


'''Arbeitsergebnisse''' in SVN: <code>LDRSteuertLED.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Demo&thinsp;</strong>
'''Musterlösung:''' [https://funduino.de/nr-6-fotowiderstand]
|-
</div>
| '''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino]
|-
|}
----


=== Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors ===
=== Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors ===
Eine LED soll blinken. Die Blinkgeschwindigkeit soll mit einem Drehregler eingestellt werden.
Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben
* [https://de.wikipedia.org/wiki/Messbereich Messbereich] in cm
* [https://de.wikipedia.org/wiki/Aufl%C3%B6sung_(Digitaltechnik) Auflösung] (Zeit, Distanz)
* [https://de.wikipedia.org/wiki/Empfindlichkeit_(Technik) Empfindlichkeit]


'''Nützliche Befehle''': <code>pinmode(), analogRead(), analogWrite(), delay(), map()</code>
'''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code>


'''Arbeitsergebnisse''' in SVN: <code>PotiSteuertLED.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>Sensorcharakterisierung.pdf</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Musterlösung&thinsp;</strong>
'''Musterlösung:''' [https://funduino.de/nr-7-potentiometer]
|-
</div>
|
* Den Messbereich beschreibt der kleinste und größte Messwert [3,50]cm.
* Die Auflösung ist der kleinstmögliche Werteschritt. Hier Zeit: 5-7&thinsp;ms, Spannung: 0,0048V
* Die Empfindlichkeit berechnet sich aus <math>E=\frac{\Delta y}{\Delta x}</math>. Im nichtlinearen Fall entsprich dies der 1. Ableitung.
|-
|}
----


=== Aufgabe 5.5: Nachhaltige Doku ===
=== Aufgabe 5.5: Nachhaltige Doku ===
Zeile 107: Zeile 200:
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>


== Bewertung ==
== FAQ ==
{| class="wikitable"
* 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 [[Software_Plagiat|Plagiat]] und wird als Täuschungsversuch gewertet.'''
| '''Aufgabe'''|| '''Punkte'''
|-
| 5.1|| 2
|-
| 5.2|| 2
|-
| 5.3|| 2
|-
| 5.4|| 2
|-
| 5.5|| 2
|-
|}
== Tutorials ==
* [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> ]
* [[SHARP_IR_Abstandsensor_GP2Y0A21YK0F| Wiki: SHARP IR Abstandsensor]]


== Demos ==
* []
== Literatur ==
== Literatur ==
# Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL]
# Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL]
# Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen : mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly]
# Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly]
# Snieders, R.: ''ARDUINO lernen''. Nordhorn: 8. Auflage 2022. URL: [https://funduino.de/vorwort https://funduino.de/vorwort]
# Snieders, R.: ''ARDUINO lernen''. Nordhorn: 8. Auflage 2022. URL: [https://funduino.de/vorwort https://funduino.de/vorwort]
# 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|PDF-Dokument (858&thinsp;kb)]]
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|Datenblatt (858&thinsp;kb)]]
 


----
----
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg|Arduino Praxiseinstieg]]
→ 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_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