Arduino: Infrarotsensor einlesen: Unterschied zwischen den Versionen
(71 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Datei: | [[Datei:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|300px|Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F]] | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | {| | ||
'''Modul:''' Praxismodul I | |- | ||
''' | | '''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 </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 </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 </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 22: | Zeile 51: | ||
# Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz? | # Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz? | ||
# Wie funktioniert der Sensor GP2Y0A41SK0F technisch? | # Wie funktioniert der Sensor GP2Y0A41SK0F technisch? | ||
# Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße | # Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße <code>U1</code>? | ||
# Wie wird die Ausgangsgröße ( | # Wie wird die Ausgangsgröße (<code>U1</code>) digitalisiert (<code>D1</code>)? | ||
# Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße D1 in die Distanz d umgerechnet? | # Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße <code>D1</code> in die Distanz <code>d</code> umgerechnet? | ||
# 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 31: | Zeile 60: | ||
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code> | ||
== 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 | # Nutzen Sie die Abbildung auf Seite 4 des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]], um eine Tabelle Spannung/Distanz aufzustellen (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>. | # 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 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). | |||
# 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 </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 | ||
|- | |- | ||
| '''Spannung in V'''|| '''Distanz in cm'''|| ''' | | '''Spannung <code>U1</code> in V'''|| '''Distanz <code>d</code> in cm'''|| '''Digitalwert <code>D1</code>''' | ||
|- | |- | ||
| 3|| 3,6 || | | 3|| 3,6 || 614 | ||
|- | |- | ||
| | | 2.02|| 6 || 413 | ||
|- | |- | ||
| | | 0.82|| 16 || 168 | ||
|- | |- | ||
| | | ..|| .. || .. | ||
|- | |- | ||
| | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipps </strong> | |||
|- | |||
| | |||
* 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: <math>D_1 = U_1\cdot \frac{1023}{5\,V}</math> | |||
|- | |- | ||
|} | |} | ||
Zeile 64: | Zeile 133: | ||
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code> | ||
---- | |||
=== Aufgabe 5.2: Der | === 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> | '''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead()</code> | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Demo </strong> | |||
''' | |- | ||
| | |||
'''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 === | ||
# Erweitern Sie Ihr Programm <code>leseSharpIR.ino</code>. Rechnen Sie das Digitalwort <code>D1</code> in die Messdistanz <code>d</code> um. | |||
Rechnen Sie | # 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> | '''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()</code> | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Demo </strong> | |||
''' | |- | ||
| '''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 === | ||
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> | '''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code> | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>Sensorcharakterisierung.pdf</code> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
</ | | | ||
* 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}</math>. Im nichtlinearen Fall entsprich dies der 1. Ableitung. | |||
|- | |||
|} | |||
---- | |||
=== Aufgabe 5.5: Nachhaltige Doku === | === Aufgabe 5.5: Nachhaltige Doku === | ||
Zeile 110: | Zeile 199: | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | ||
== | == 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 [[Software_Plagiat|Plagiat]] und wird als Täuschungsversuch gewertet.''' | |||
== 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 | # Schneider, U.: ''Programmierrichtlinie für für die Erstellung von Software in C.'' Lippstadt: 1. Auflage 2022. [[Medium:Programmierrichtlinie.pdf|PDF-Dokument (212 kb)]] | ||
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf| | # Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|Datenblatt (858 kb)]] | ||
---- | ---- | ||
→ zurück zum Hauptartikel: [[ | → 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> | ||
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_23/24|Arduino Praxiseinstieg]] |
Aktuelle Version vom 28. Oktober 2023, 10:02 Uhr
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
Tutorial Arrays |
|
Tutorial: Lookup Table |
|
Tutorial: Lookup Table programmieren |
|
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
- 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
Tutorials
- Arduino: Using the Serial Plotter Tool
- Arduino Referenz:
analogRead()
- Wiki: SHARP IR Abstandsensor
- Wiki: HSHL-Bibliothek einbinden
- Arduino Befehlsübersicht
Demos
Versuchsvorbereitung
- Studieren Sie die Tutorials und Demos.
- 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 oder Wiki-Artikels.
- 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 |
Musterlösung: für den Batterie-Tester 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 |
|
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
- Setzen Sie Ihre geplante Software 1:1 um.
- Stellen Sie die Messwerte
D1
im Seriellen Monitor und Plotter dar.
Nützliche Befehle: Serial.begin(), Serial.println(), analogRead()
Arbeitsergebnisse in SVN: leseSharpIR.ino
Demo |
Demo: Demo: DemoSharpIR.ino |
Aufgabe 5.3: Sensorkennlinie
- Erweitern Sie Ihr Programm
leseSharpIR.ino
. Rechnen Sie das DigitalwortD1
in die Messdistanzd
um. - Stellen Sie die Distanz
d
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: Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()
Arbeitsergebnisse in SVN: leseSharpIR.ino
Demo |
Demo: DemoLookupTable.ino |
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: millis(), Serial.print(), Serial.println()
Arbeitsergebnisse in SVN: Sensorcharakterisierung.pdf
Musterlösung |
|
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
- 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)
→ Termine 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg