User manual
35 36
5.4 AD Umsetzer - Temperatur messen mit NTC
Verwendet man einen NTC (Heißleiter) als variablen Widerstand, kann man mit der Anordnung auch Tempera-
turen messen. Zunächst läßt sich der Widerstand wie gehabt ermitteln. Dann benötigt man aber eine komple-
xere Formel zur Bestimmung der Temperatur. Für Heißleiter gilt näherungsweise:
R
T
= R
N
* e
B(1/T-1/TN)
daraus läßt sich folgendes ableiten: R= B *T
N
/(B+ln(R
T
/R
N
)*T
N
)
T
N
ist i.A: 298.15K die Nenntemperatur. Der Nennwiderstand R
N
liegt bei uns bei 10kOhm so wie er beim Her-
steller gemessen wurde. Es wird eine Raumtemperatur von 25 Grad C, in K umgerechnet, verwendet.
B ist vom Hersteller vorgegeben (zwischen 2000K und 4000K), kann man durch eine Referenzmessung auch
ermitteln. R
T
ist die gemessene Temperatur (in K) daraus ergibt sich T (in K) . Als Widerstand zum Spannungs-
teiler ist hier ein 100kOhm Widerstand verwendet, damit man auch bei 0 Grad C messen kann. Zur Kalibrierung
kann man nun z.B. Schmelzwasser verwenden, und damit den genauen Wert für B ermitteln, der ist aber leider
in Wirklichkeit auch geringfügig temperaturabhängig, so gibt es unterschiedliche B-Werte je nach Temperatur.
Man sucht sich am Besten die Temperatur für B heraus, in deren Bereich man messen will.
// DE_11 AD Umsetzer und NTC
// CTRL-SHIFT-M fuer
// seriell Port Monitor
// bzw. STRG und SHIFT und M
// druecken am PC !
#dene PORTAD0 0 // wir nehmen Kanal 0
// Die Ausgabe erfolgt am PC, spaeter
// werden wir noch Anzeige Bricks anschliessen
void setup() { // start
Serial.begin(9600); // die sogenannte BAUDRate
// damit werden die Daten an den PC übertragen
// 9600 Baud = 9600 Bits/Sekunde
}
void loop() { // Schleife
int value; // Wert vom AD Umsetzer
double Vteiler,RNtc; // Spannung am Teiler Rntc
value = analogRead(PORTAD0); // A0 einlesen
// Umrechnen value in Vteiler
Vteiler = value * 5.0 / 1023.0; // in Volt
// Umrechnen in Widerstandwert
// Batterie vorher messen (!)
double VBatt = 9.0; // MUSS MAN Anpassen !
double RTeiler = 100000.0; // 100k Teiler
RNtc = (Vteiler*RTeiler)/(VBatt-Vteiler); //Widerstand
// Dann Temperatur ermitteln.
double B = 3800.0; // je nach NTC unterschiedlich !! ermitteln
double RN = 10000.0; // 10kOhm
double TN = 298.15; // 25 Grad Celsision in Kelvin
double T = (B*TN)/(B+log(RNtc/RN)*TN)-273.15; // T in Celsius
Serial.print(T); // Temperatur ausgeben
Serial.print(„ Grad C „); // Text in doppelten Anfuehrungszeichen
Serial.print(RNtc); // auch den Widerstandswert ausgeben
Serial.println(„Ohm „); // Text in doppelten Anfuehrungszeichen
}
+
-
9V
1A
10k
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
I²C
Was passiert? Wenn das Terminal aktiviert ist, sollte man dort
je zwei Zeilen sehen, eine mit dem Temperaturwert in Grad
Celsius, die nächste mit dem gemessenen Widerstandswert.
Wenn man den NTC erhitzt (Handwärme reicht), sollte sich die
angezeigte Temperatur erhöhen und der Widerstand verklei-
nern.
ACHTUNG: 100kOhm
ACHTUNG:
Terminal aktivieren!
Dazu beim Arduino Pro-
gramm, CTRL und SHIFT
und M drücken (CTRL=STRG
je nach Tastatur).
Dann poppt ein Fenster
hoch in dem die Infos
stehen.
Ggf. muss man die Bau-
drate im Terminalfenster
auf 9600 einstellen, so
daß diese mit unserer im
Programm übereinstimmt.










