In diesem Experiment wird der Heißleiter (NTC) MF52B3950 verwendet. Dies ist ein Thermistor, d.h. elektrischer
Widerstand, dessen Wert sich mit der Temperatur ändert. In unserem Fall des Heißleiters einen niedrigeren
Widerstand bei hohen Temperaturen und einen höheren Widerstand bei niedrigeren Temperaturen.
Der MF52 hat einen sog. B-Wert von 3950 Kelvin und einen Nennwiderstand von 100 kΩ bei einer Umgebungstemperatur
von 25°C.
Der MF52 ist ein kleiner in Epoxyharz gegossener NTC Thermistor, von dem es verschiedenste Ausführungen gibt. Das Datenblatt des jeweiligen Herstellers bietet eine Übersicht, anhand der man in bestimmten Abständen den Widerstand einer bestimmten Temperatur zuordnen kann. Man kann natürlich auch den NTC in einem gewissen Temperaturbereich kalibrieren. Aufgrund der Halbleitereigenschaften des NTCs kann man auch die Temperatur errechnen:
RT = ermittelter Widerstand abhängig von der Temperatur
RN = Widerstand bei Nenntemperatur (hier 100 kΩ)
B = angegebener B-Wert vom Hersteller (hier 3950 Kelvin)
TN = Nenntemperatur in Kelvin (= 273,15 K + 25°C = 298,15 K)
T = gemessene Temperatur (zu erhaltende Wert)
Der MF52B3950 hat lt. Hersteller bei 25°C einen Nennwiderstand von 100kΩ. Um mit dem Arduino nun den
aktuellen Widerstandswert ermitteln zu können, muss nun ein zweiter aber fester Nennwiderstand RN mit
100kΩ in Reihe zu dem MF52 geschaltet werden, um somit einen Spannungsteiler zu schaffen.
Es teilt sich nun die gesamte Spannung Uges auf den MF52 und den anderen Widerstand auf und
man kann mit der Spannungsteilerregel RT berechnen:
Uges / (100kΩ + RT) = UNTC / RT
Umgestellt kann man mit dieser Formel nun RT berechnen:
RT = (100kΩ*UNTC/Uges) / (1-UNTC/Uges)
Allerdings gibt der Arduino die Spannung nicht direkt aus, sondern einen Wert zwischen 0 und 1023. Daher
muss der gemessene Wert zunächst in eine Spannung umgerechnet werden, d.h.:
UNTC/Uges = Bitwert/1024
#define PIN_THERMISTOR A0
float R1 = 10000.0;
float logR2, R2, T, Tc;
float c1 = 1.009249522e-03;
float c2 = 2.378405444e-04;
float c3 = 2.019202697e-07;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(PIN_THERMISTOR);
R2 = R1 * (1023 / (float)value - 1);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
Tc = T - 273.15;
Serial.println(String(Tc) + " °C");
delay(2000);
}
zurück