Das ist der : Typ LM335 Ich gebe Dir einmal das Tutorial, so wie es Erklährt wird:
Temperaturerfassung
Als erstes Beispiel soll die Erfassung der Temperatur dienen. Halbleiter-Temperatursensoren geben ein Ausgangssignal ab, das proportional zur Umgebungstemperatur ist. Weit verbreitet sind die Typen LM35 bis LM335, die ein Ausgangssignal zur Verfügung stellen, das direkt proportional zur Celsius-Skala ist. Die Bausteine werden in verschiedenen Genauigkeitsklassen über verschiedene Temperaturbereiche bereits auf dem Wafer abgeglichen, sodass ein externer Abgleich nicht vorgesehen werden muss. Insofern soll nur der preiswerte Typ LM335 betrachtet werden, der sich auf den absoluten Nullpunkt (-273,15 °C) bezieht und eine Spannung von 10 mV/K am Ausgang liefert. Bei 25° Celsius sollte sich also eine Spannung von etwa 2,98 V am Ausgang messen lassen. Diese liegt etwa in der Mitte des Messbereichs des Arduino und daher kann der Sensor direkt angeschlossen werden. Zum Betrieb benötigt er nur noch einen Widerstand von 2 Kiloohm gegen +5 V.
Für die Umrechung des Spannungswertes in die Temperatur gilt
temp = Uein * 100 - 273,15
Da der A/D-Wandler jedoch nicht die Eingangsspannung, sondern einen Wert von 0 bis 1023 liefert, der den Spannungsbereich von 0 bis 5 V entspricht, muss der Arduino folgendermaßen rechnen:
temp = Vcc * Uein / 1024.0 * 100.0 - 273.15
Für die Gleitpunktarithmetik mit begrenzter Stellenzahl ist die Formel jedoch ungünstig, da erst durch 1024 geteilt und dann mit 100 multipliziert wird. Der bei der Division eventuell entstehende Rundungsfehler multipliziert sich anschließend auch mit dem Faktor 100. Also stellt man besser um:
temp = (Vcc * Uein * 100 / 1024.0) - 273.15 ' temp = (Vcc * Uein / 10.24) - 273.15
Beim preiswerten LM335 kann es vorkommen, dass das Sensorausgangssignal von der tatsächlichen Temperatur etwas abweicht. Hier kann entweder per Hardware am Eingang adj des LM335 die Ausgangsspannung korrigiert werden oder man verwendet im Programm einem Korrekturfaktor. Beim Einlesen von Sensordaten stellen sich auch immer leichte Schwankungen der gelesenen Werte ein, die beispielsweise durch elektromagnetische Störeinflüssen oder leichte Schwankungen der Messgröße hervorgerufen werden. Um den Eingangswert zu stabilisieren, kann man gegebenenfalls mehrmals den Wert erfassen und dann einen Mittelwert bilden. Das erste Testprogramm liest den Temperaturwert und gibt ihn auf der seriellen Schnittstelle aus.
// Analog input pin
#define analogInPin A0
// Referenzspannung A/D-Wandler
#define Vcc 5.0
int sensorValue = 0; // Sensorwert
float temp; // Temperaturwert
void setup()
{
// serielle Schnittstelle einschalten und auf 9600 bps setzen
Serial.begin(9600);
}
void loop()
{
// Analogwert lesen
sensorValue = analogRead(analogInPin);
// in Celsiusgrade umrechnen
temp = (Vcc * sensorValue / 10.24) - 273.15;
// Ausgabe auf dem seriellen Monitor
Serial.print("Sensor = " );
Serial.print(sensorValue);
Serial.print("\t Temperatur = ");
Serial.println(temp);
// 1/2 Sekunde warten
delay(500);
}