Arduino: Temperaturmessung mit NTC und PTC: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(29 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Datei: | [[Datei:NTC.jpg|thumb|rigth|300px|Abb. 1: NTC Temperatursensor]] | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | {| | ||
'''Modul:''' Praxismodul I | |- | ||
''' | | '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
|- | |||
| '''Modul:''' || Praxismodul I | |||
|- | |||
| '''Lektion 13:''' || Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester | |||
|} | |||
== Inhalt == | == Inhalt == | ||
Zeile 26: | Zeile 31: | ||
# Wie lautet der Zusammenhang <math>T = f(R_{PTC})</math>? | # Wie lautet der Zusammenhang <math>T = f(R_{PTC})</math>? | ||
# Setzen Sie die Formel in C um und testen Sie diese mit den Messwerten aus dem PTC-Datenblatt. | # Setzen Sie die Formel in C um und testen Sie diese mit den Messwerten aus dem PTC-Datenblatt. | ||
# Was bedeutet EEPROM? | # Unter welchen Bedingungen nutzen Sie einen NTC oder PTC? | ||
# Was bedeutet [https://de.wikipedia.org/wiki/Electrically_Erasable_Programmable_Read-Only_Memory EEPROM]? | |||
# Wie groß ist das EEPROM vom [[Arduino_UNO:_Board_Anatomie|Arduino Uno R3]]? | |||
# Wo auf der Platine vom [[Arduino_UNO:_Board_Anatomie|Arduino Uno R3]] befindet sich das EEPROM? | |||
# Wie häufig können Sie das EEPROM beschreiben? | # Wie häufig können Sie das EEPROM beschreiben? | ||
# Welche Daten würden Sie im EEPROM ablegen? | |||
# Beschreiben Sie alle Methoden der Klasse <code>EEPROM.h</code> (<code>crc, get, put, read, update, write</code>). | # Beschreiben Sie alle Methoden der Klasse <code>EEPROM.h</code> (<code>crc, get, put, read, update, write</code>). | ||
# Wurde der Quelltext durch Header und Kommentare aufgewertet? | # Wurde der Quelltext durch Header und Kommentare aufgewertet? | ||
Zeile 33: | Zeile 42: | ||
# Wurde auf <code>magic numbers</code> verzichtet? | # Wurde auf <code>magic numbers</code> verzichtet? | ||
# Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten? | # Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten? | ||
== Tutorials == | |||
* [https://docs.arduino.cc/learn/built-in-libraries/eeprom Arduino.cc: EEPROM Library] | |||
* [https://docs.arduino.cc/learn/programming/eeprom-guide Arduino.cc: A guide to EEPROM] | |||
* [[PTC_Temperatursensor_KTY_81-210| HSHL-Wiki: PTC Temperatursensor (KTY81-210)]] | |||
* [[Temperatursensor_NTC_MF58_3950_B| HSHL-Wiki: NTC Temperatursensor (MF58 3950 B)]] | |||
== Demos == | |||
*[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoEEPROM/DemoEEPROM.ino SVN: DemoEEPROM.ino] | |||
*[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoMessePTCTemperatur/DemoMessePTCTemperatur.ino SVN: DemoMessePTCTemperatur.ino] | |||
== Vorbereitung == | == Vorbereitung == | ||
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor. | Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor. | ||
# Bereiten Sie sich anhand der [[Arduino:_Temperaturmessung_mit_NTC_und_PTC#Tutorials|Tutorials]] vor. | # Bereiten Sie sich anhand der [[Arduino:_Temperaturmessung_mit_NTC_und_PTC#Tutorials|Tutorials]] und [[Arduino:_Temperaturmessung_mit_NTC_und_PTC#Demos|Demos]] vor. | ||
# Planen Sie alle Programme | # Planen Sie alle Programme als PAP. | ||
# Beantworten Sie die Lernzielkontrollfragen. | # Beantworten Sie die Lernzielkontrollfragen. | ||
# Arbeiten Sie nachhaltig in SVN. | # Arbeiten Sie nachhaltig in SVN. | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_12.pdf</code> | ||
== Versuchsdurchführung == | == Versuchsdurchführung == | ||
=== Aufgabe | === Aufgabe 13.1: Lernzielkontrolle === | ||
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle. | Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle. | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_13.pdf</code> | ||
---- | |||
=== Aufgabe 13.2: Temperaturmessung mit einem NTC === | |||
# Bauen Sie die [[Temperatursensor_NTC_MF58_3950_B#Messschaltung|Grundschaltung]] für eine Temperaturmessung mit NTC auf. | |||
# Lesen Sie die Spannung am Analogpin <code>A0</code> ein. | |||
# Berechnen Sie aus dem Digitalwort den Widerstand <math>R(T)</math> in Ω. | |||
# Formen Sie die [[Temperatursensor_NTC_MF58_3950_B#Kennlinie|Formel]] <math>R(T)</math> nach <math>T</math> um. | |||
# Berechnen Sie mit Ihrer Formel die Temperatur in °C. | |||
# Visualisieren Sie die Temperatur in °C im seriellen Plotter. | |||
'''Arbeitsergebnisse''' in SVN: <code>messeNTCTemperatur.ino</code> | |||
''' | <div class="mw-collapsible mw-collapsed"> | ||
'''Lösungsweg'''<br> | |||
# <code>#include <math.h></code> | |||
# <code>Messwert=analogRead(A0);</code> | |||
# Widerstand über den Spannungsteiler berechnen: <code>R = 10000*(1024/Messwert-1)</code> | |||
# [[Temperatursensor_NTC_MF58_3950_B#Kennlinie|Formel]] nach T umformen. | |||
# <code>R0, T0, B</code> dem Datenblatt entnehmen und in die Formel einsetzen. | |||
# <math>T=f(R_{NTC})</math> in K berechnen. | |||
# K in °C umrechnen und im seriellen Plotter anzeigen. | |||
Die Lösung finden Sie in [1, S. 144ff.]. | |||
</div> | |||
---- | |||
=== Aufgabe 13.3: Temperaturmessung mit einem PTC === | |||
# Bauen Sie die [[PTC_Temperatursensor_KTY_81-210#Messschaltung|Grundschaltung]] für eine Temperaturmessung mit NTC auf. | |||
# Lesen Sie die Spannung am Analogpin <code>A0</code> ein. | |||
# Berechnen Sie aus dem Digitalwort den Widerstand <math>R(T)</math> in Ω. | |||
# Formen Sie die [[PTC_Temperatursensor_KTY_81-210#Kennlinie|Formel]] <math>R(T)</math> nach <math>T</math> um. | |||
# Berechnen Sie mit Ihrer Formel die Temperatur in °C. | |||
# Visualisieren Sie die Temperatur in °C im Seriellen Plotter. | |||
'''Arbeitsergebnisse''' in SVN: <code>messePTCTemperatur.ino</code> | |||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
'''Lösungsweg'''<br> | |||
# <code>#include <math.h></code> | |||
# <code>Messwert=analogRead(A0);</code> | |||
# Widerstand über den Spannungsteiler berechnen: <code>R = 10000*(1024/Messwert-1)</code> | |||
# [[PTC_Temperatursensor_KTY_81-210#Kennlinie|Formel]] nach T umformen. | |||
# <code>R0, T0, A</code> dem Datenblatt entnehmen und in die Formel einsetzen. | |||
# <math>T=f(R_{NTC})</math> in °C berechnen und im seriellen Plotter anzeigen. | |||
Die Lösung finden Sie in [1, S. 144ff.]. | |||
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoMessePTCTemperatur/DemoMessePTCTemperatur.ino SVN: DemoMessePTCTemperatur.ino] | |||
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/ | |||
</div> | </div> | ||
---- | |||
=== Aufgabe | === Aufgabe 13.4: Datensicherung im EEPROM === | ||
* Sichern Sie folgende Daten im EEPROM | * Betreiben Sie den Arduino mit einem 9 V Batterieblock. | ||
* Lesen Sie einen entprellten Taster ein. | |||
* Sichern Sie bei Tastendruck folgende Daten im EEPROM | |||
** die Namen der Teammitglieder als <code>string</code>. | ** die Namen der Teammitglieder als <code>string</code>. | ||
** die Anzahl der Teammitglieder als <code>byte</code>. | ** die Anzahl der Teammitglieder als <code>byte</code>. | ||
Zeile 93: | Zeile 123: | ||
** die Zeit mit <code>millis()</code> als <code>long</code>. | ** die Zeit mit <code>millis()</code> als <code>long</code>. | ||
** die gemessene Temperatur in °C als <code>float</code>. | ** die gemessene Temperatur in °C als <code>float</code>. | ||
* Trennen Sie den Arduino von der Spannungsversorgung. | * Messen Sie im Labor bei ca. 20 °C und im Freien bei ca. 0 °C. | ||
* Trennen Sie den Arduino kurz von der Spannungsversorgung. | |||
* Lesen Sie die im EEPROM gespeicherten Daten aus und visualisieren Sie diese im seriellen Monitor. | * Lesen Sie die im EEPROM gespeicherten Daten aus und visualisieren Sie diese im seriellen Monitor. | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>speichereDatenimEEPROM.ino, leseDatenausEEPROM.ino</code> | ||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Zeile 103: | Zeile 134: | ||
'''Tutorials''' | '''Tutorials''' | ||
* [https://docs.arduino.cc/learn/built-in-libraries/eeprom Arduino: EEPROM Library] | * [https://docs.arduino.cc/learn/built-in-libraries/eeprom Arduino.cc: EEPROM Library] | ||
* [https://docs.arduino.cc/learn/programming/eeprom-guide | * [https://docs.arduino.cc/learn/programming/eeprom-guide Arduino.cc: A guide to EEPROM] | ||
{{#ev:youtube|https://https://youtu.be/bVH4_tet_Eo| 600 | | Video 1: So funktioniert der Arduino EEPROM|frame}} | {{#ev:youtube|https://https://youtu.be/bVH4_tet_Eo| 600 | | Video 1: So funktioniert der Arduino EEPROM|frame}} | ||
</div> | </div> | ||
---- | |||
=== Aufgabe | === Aufgabe 13.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 120: | Zeile 151: | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code></code> | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code></code> | ||
Zeile 158: | Zeile 162: | ||
---- | ---- | ||
→ 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_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 12. September 2024, 14:33 Uhr
Autor: | Prof. Dr.-Ing. Schneider |
Modul: | Praxismodul I |
Lektion 13: | Mechatronik, Informatikpraktikum, 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 und die Kennlinien eines NTC und PTC beschreiben.
- können Sie Messwerte im EEPROM ablegen und auswerten.
Lernzielkontrolle
- Was ist ein NTC? Wie funktioniert er?
- Mit welcher Schaltung kann man mit einem NTC die Temperatur messen?
- Wie lautet der Zusammenhang ?
- Setzen Sie die Formel in C um und testen Sie diese mit den Messwerten aus dem NTC-Datenblatt.
- Was ist ein PTC? Wie funktioniert er?
- Mit welcher Schaltung kann man mit einem PTC die Temperatur messen?
- Wie lautet der Zusammenhang ?
- Setzen Sie die Formel in C um und testen Sie diese mit den Messwerten aus dem PTC-Datenblatt.
- Unter welchen Bedingungen nutzen Sie einen NTC oder PTC?
- Was bedeutet EEPROM?
- Wie groß ist das EEPROM vom Arduino Uno R3?
- Wo auf der Platine vom Arduino Uno R3 befindet sich das EEPROM?
- Wie häufig können Sie das EEPROM beschreiben?
- Welche Daten würden Sie im EEPROM ablegen?
- Beschreiben Sie alle Methoden der Klasse
EEPROM.h
(crc, get, put, read, update, write
). - Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Wurden jedes Programm mittels PAP geplant?
- Wurde auf
magic numbers
verzichtet? - Wurde die Programmierrichtlinie eingehalten?
Tutorials
- Arduino.cc: EEPROM Library
- Arduino.cc: A guide to EEPROM
- HSHL-Wiki: PTC Temperatursensor (KTY81-210)
- HSHL-Wiki: NTC Temperatursensor (MF58 3950 B)
Demos
Vorbereitung
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor.
- Bereiten Sie sich anhand der Tutorials und Demos vor.
- Planen Sie alle Programme als PAP.
- Beantworten Sie die Lernzielkontrollfragen.
- Arbeiten Sie nachhaltig in SVN.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_12.pdf
Versuchsdurchführung
Aufgabe 13.1: Lernzielkontrolle
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_13.pdf
Aufgabe 13.2: Temperaturmessung mit einem NTC
- Bauen Sie die Grundschaltung für eine Temperaturmessung mit NTC auf.
- Lesen Sie die Spannung am Analogpin
A0
ein. - Berechnen Sie aus dem Digitalwort den Widerstand in Ω.
- Formen Sie die Formel nach um.
- Berechnen Sie mit Ihrer Formel die Temperatur in °C.
- Visualisieren Sie die Temperatur in °C im seriellen Plotter.
Arbeitsergebnisse in SVN: messeNTCTemperatur.ino
Lösungsweg
#include <math.h>
Messwert=analogRead(A0);
- Widerstand über den Spannungsteiler berechnen:
R = 10000*(1024/Messwert-1)
- Formel nach T umformen.
R0, T0, B
dem Datenblatt entnehmen und in die Formel einsetzen.- in K berechnen.
- K in °C umrechnen und im seriellen Plotter anzeigen.
Die Lösung finden Sie in [1, S. 144ff.].
Aufgabe 13.3: Temperaturmessung mit einem PTC
- Bauen Sie die Grundschaltung für eine Temperaturmessung mit NTC auf.
- Lesen Sie die Spannung am Analogpin
A0
ein. - Berechnen Sie aus dem Digitalwort den Widerstand in Ω.
- Formen Sie die Formel nach um.
- Berechnen Sie mit Ihrer Formel die Temperatur in °C.
- Visualisieren Sie die Temperatur in °C im Seriellen Plotter.
Arbeitsergebnisse in SVN: messePTCTemperatur.ino
Lösungsweg
#include <math.h>
Messwert=analogRead(A0);
- Widerstand über den Spannungsteiler berechnen:
R = 10000*(1024/Messwert-1)
- Formel nach T umformen.
R0, T0, A
dem Datenblatt entnehmen und in die Formel einsetzen.- in °C berechnen und im seriellen Plotter anzeigen.
Die Lösung finden Sie in [1, S. 144ff.].
Aufgabe 13.4: Datensicherung im EEPROM
- Betreiben Sie den Arduino mit einem 9 V Batterieblock.
- Lesen Sie einen entprellten Taster ein.
- Sichern Sie bei Tastendruck folgende Daten im EEPROM
- die Namen der Teammitglieder als
string
. - die Anzahl der Teammitglieder als
byte
. - die Baudrate als
int
. - die Zeit mit
millis()
alslong
. - die gemessene Temperatur in °C als
float
.
- die Namen der Teammitglieder als
- Messen Sie im Labor bei ca. 20 °C und im Freien bei ca. 0 °C.
- Trennen Sie den Arduino kurz von der Spannungsversorgung.
- Lesen Sie die im EEPROM gespeicherten Daten aus und visualisieren Sie diese im seriellen Monitor.
Arbeitsergebnisse in SVN: speichereDatenimEEPROM.ino, leseDatenausEEPROM.ino
Aufgabe 13.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
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)
→ Termine 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg