Arduino: Temperaturmessung mit NTC und PTC: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 18: | Zeile 18: | ||
== Lernzielkontrolle == | == Lernzielkontrolle == | ||
# | # Was bedeutet EEPROM? | ||
# Wie häufig können Sie das EEPROM beschreiben? | |||
# 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 39: | Zeile 40: | ||
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_10.pdf</code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_10.pdf</code> | ||
=== Aufgabe 12.2: | === Aufgabe 12.2: Temperaturmessung mit einem NTC === | ||
# Lesen Sie die Messwerte des Ultraschall-Sensors auf statische Ziele im gesamten Messbereich aus (10 cm, 20 cm, 50 cm, 1 m, 2 m, 3 m, 4 m). Schreiben Sie hierzu ein Arduino-Programm <code>statische Messunsicherheit.ino</code>. Jeder Messsatz sollte >100 Messwerte umfassen. | # Lesen Sie die Messwerte des Ultraschall-Sensors auf statische Ziele im gesamten Messbereich aus (10 cm, 20 cm, 50 cm, 1 m, 2 m, 3 m, 4 m). Schreiben Sie hierzu ein Arduino-Programm <code>statische Messunsicherheit.ino</code>. Jeder Messsatz sollte >100 Messwerte umfassen. | ||
# Nutzen Sie das Programm <code>Putty</code>, um die Daten der seriellen Schnittstelle in der ASCII-Datei <code>Ultraschallmessung.txt</code> zu speichern. | # Nutzen Sie das Programm <code>Putty</code>, um die Daten der seriellen Schnittstelle in der ASCII-Datei <code>Ultraschallmessung.txt</code> zu speichern. | ||
Zeile 52: | Zeile 53: | ||
'''Arbeitsergebnisse''' in SVN: <code>statische Messunsicherheit.ino, Ultraschallmessung.txt, zeigeUltraschallMessung.m</code> | '''Arbeitsergebnisse''' in SVN: <code>statische Messunsicherheit.ino, Ultraschallmessung.txt, zeigeUltraschallMessung.m</code> | ||
=== Aufgabe 12.3: | === Aufgabe 12.3: Temperaturmessung mit einem PTC === | ||
Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO. | Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO. | ||
# Schreiben Sie die Funktion <code>GleitendesMittelwertFilter()</code>, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet. | # Schreiben Sie die Funktion <code>GleitendesMittelwertFilter()</code>, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet. | ||
Zeile 76: | Zeile 77: | ||
</div> | </div> | ||
=== Aufgabe 12.4: | === Aufgabe 12.4: Datensicheung im EEPROM === | ||
* Sichern Sie jede Sekunde die Gemessene Temperatur in °C im EEPROM. | |||
* Sichern Sie maximal 512 Byte Daten. | |||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>speichereTemperaturinEEPROM.ino</code> | ||
'''Hinweis:''' | '''Hinweis:''' | ||
Zeile 91: | Zeile 88: | ||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/ | '''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoEEPROM/DemoEEPROM.ino SVN: DemoEEPROM.ino] | ||
https://youtu.be/bVH4_tet_Eo | |||
</div> | </div> | ||
=== Aufgabe 12.5: | === Aufgabe 12.5: Nachhaltige Doku === | ||
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | * Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | ||
* Wurden die Regeln für den Umgang mit SVN eingehalten? | * Wurden die Regeln für den Umgang mit SVN eingehalten? | ||
Zeile 105: | Zeile 102: | ||
* Wurden die PAPs erstellt und abgelegt? Passen die PAPs 100% zum Programm? | * Wurden die PAPs erstellt und abgelegt? Passen die PAPs 100% zum Programm? | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code></code> | ||
== Bewertung == | == Bewertung == | ||
Zeile 112: | Zeile 109: | ||
| '''Aufgabe'''|| '''Punkte''' | | '''Aufgabe'''|| '''Punkte''' | ||
|- | |- | ||
| | | 12.1|| 2 | ||
|- | |- | ||
| | | 12.2|| 2 | ||
|- | |- | ||
| | | 12.3|| 2 | ||
|- | |- | ||
| | | 12.4|| 2 | ||
|- | |- | ||
| | | 12.5|| 2 | ||
|- | |- | ||
|} | |} | ||
== Tutorials == | == Tutorials == | ||
* [https://docs.arduino.cc/ | * [https://docs.arduino.cc/learn/built-in-libraries/eeprom Arduino: EEPROM Library] | ||
* [https://docs.arduino.cc/learn/built-in-libraries/eeprom Arduino: EEPROM Library] | |||
* [[PTC_Temperatursensor_KTY_81-210| HSHL-Wiki: PTC Temperatursensor (KTY81-210)]] | * [[PTC_Temperatursensor_KTY_81-210| HSHL-Wiki: PTC Temperatursensor (KTY81-210)]] | ||
* [[Temperatursensor_NTC_MF58_3950_B| HSHL-Wiki: NTC Temperatursensor (MF58 3950 B)]] | * [[Temperatursensor_NTC_MF58_3950_B| HSHL-Wiki: NTC Temperatursensor (MF58 3950 B)]] | ||
== Demos == | == Demos == | ||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/ | * [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoEEPROM/DemoEEPROM.ino SVN: DemoEEPROM.ino] | ||
== Literatur == | == Literatur == |
Version vom 10. Dezember 2022, 15:38 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
Inhalt
- Temperaturkennlinie von NTC und PTC
- Temperaturmessung mit NTC und PTC
- Datenspeicherung im EEPROM
Lernziele
Nach Durchführung dieser Lektion
- können Sie mittels NTC und PTC Temperaturen messen.
- können die Funktion eines NTC und PTX beschreiben.
- können Sie Messwerte im EEPROM ablegen und auswerten.
Lernzielkontrolle
- Was bedeutet EEPROM?
- Wie häufig können Sie das EEPROM beschreiben?
- Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Wurden jedes Programm mittels PAP geplant?
- Wurde auf
magic numbers
verzichtet? - Wurde die Programmierrichtlinie eingehalten?
Vorbereitung
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor.
- Bereiten Sie Aufgabe 11.1 vor.
- Schreiben und testen Sie die Funktion
GleitendesMittelwertFilter()
. - Schreiben und testen Sie die Funktion
TiefpasstFilter()
. - Planen Sie alle Programme mit PAP.
Arbeitsergebnisse in SVN: PAP, charakterisiereUltraschaschallsensor.ino, USMessung.txt, charakterisiereUltraschallSensor.m, Lernzielkontrolle_Termin_11.pdf, GleitendesMittelwertFilter(), TiefpasstFilter()
Versuchsdurchführung
Aufgabe 12.1: Lernzielkontrolle
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_10.pdf
Aufgabe 12.2: Temperaturmessung mit einem NTC
- Lesen Sie die Messwerte des Ultraschall-Sensors auf statische Ziele im gesamten Messbereich aus (10 cm, 20 cm, 50 cm, 1 m, 2 m, 3 m, 4 m). Schreiben Sie hierzu ein Arduino-Programm
statische Messunsicherheit.ino
. Jeder Messsatz sollte >100 Messwerte umfassen. - Nutzen Sie das Programm
Putty
, um die Daten der seriellen Schnittstelle in der ASCII-DateiUltraschallmessung.txt
zu speichern. - Schreiben Sie einmalig als Header die Bezeichnung der Messwerte Zeit in ms und Strecke in cm in die Textdatei.
- Laden und visualisieren Sie die Messdaten in Ultraschallmessung.txt mit MATLAB®.
- Stellen Sie die Messdaten in einem Diagramm in cm über der Zeit dar.
- Berechnen Sie Mittelwert und Standardabweichung und stellen Sie diese dar,
- Beschriften Sie die Graphen.
Nützlich MATLAB®-Befehle: mean, std, xline
Arbeitsergebnisse in SVN: statische Messunsicherheit.ino, Ultraschallmessung.txt, zeigeUltraschallMessung.m
Aufgabe 12.3: Temperaturmessung mit einem PTC
Ein gleitendes Mittlwertfilter bildet einen Mittelwert über k Messwerte mittels FIFO.
- Schreiben Sie die Funktion
GleitendesMittelwertFilter()
, welches die Eingangswerte zyklisch filtert. Hier bei wird der Mittelwert über die letzten k Messwerte gebildet. - Testen Sie Ihre Funktion mit Ultraschallmesswerten mit statischen Zielen.
- Visualisieren Sie Messwerte und Filterergebnis im seriellen Plotter.
- Testen Sie Ihre Funktion mit Ultraschallmesswerten mit dynamischen Zielen.
- Wählen Sie k anhand der Messwerte und diskutieren Sie Ihre Wahl mit Prof. Schneider.
Arbeitsergebnisse in SVN: testeGleitendesMittelwert.ino
Hinweis:
- Nutzen Sie das FIFO aus Aufgabe 6.4.
- Die Formel für das gleitende Mittelwertfilter lautet: für Messwerte
Eine Einführung zu rekursiven Filtern finden Sie in folgendem Video.
- Gleitendes Mittelwertfilter: 19 m 52 s
- Tiefpasfilter: 29 m
Aufgabe 12.4: Datensicheung im EEPROM
- Sichern Sie jede Sekunde die Gemessene Temperatur in °C im EEPROM.
- Sichern Sie maximal 512 Byte Daten.
Arbeitsergebnisse in SVN: speichereTemperaturinEEPROM.ino
Hinweis:
- Die Formel für das Tiefpassfilter lautet: für den aktuellen Messwert .
- ist hierbei ein Filterparameter .
Aufgabe 12.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 |
12.1 | 2 |
12.2 | 2 |
12.3 | 2 |
12.4 | 2 |
12.5 | 2 |
Tutorials
- Arduino: EEPROM Library
- Arduino: EEPROM Library
- HSHL-Wiki: PTC Temperatursensor (KTY81-210)
- HSHL-Wiki: NTC Temperatursensor (MF58 3950 B)
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)
→ zurück zum Hauptartikel: Arduino Praxiseinstieg