Measure temperature with the LM35
FunduinoLast updated on
Temperaturen bis 150 °C messen – auch in Flüssigkeiten
Material
Wie der LM35 misst
1 / 2
Aufbau
1 / 2
Der map-Befehl
Sketch 1: Temperatur mit map() umrechnen
int LM35 = A0; // Der Sensor wird am analogen Pin A0 angeschlossen. Wir nennen den Pin ab jetzt "LM35".
int sensorwert; // Hier wird der rohe Messwert gespeichert.
int temperatur = 0; // Hier wird spaeter der umgerechnete Temperaturwert gespeichert.
int t = 500; // Zeitlicher Abstand zwischen den Messungen in Millisekunden.
void setup()
{
// Serielle Kommunikation starten, damit die Messwerte am Computer ankommen.
// In der Arduino IDE oeffnest du dazu Werkzeuge -> Serieller Monitor.
Serial.begin(9600);
}
void loop()
{
// Auslesen des Sensorwertes
sensorwert = analogRead(LM35);
// Umwandeln des Sensorwertes mit Hilfe des map-Befehls
temperatur = map(sensorwert, 0, 307, 0, 150);
// Wert an den Seriellen Monitor senden
Serial.print(temperatur);
Serial.println(" Grad Celsius");
// Pause bis zur naechsten Messung
delay(t);
}Erweiterung: Warnsignal ab 30 Grad
Sketch 2: Warnsignal ab 30 Grad
int LM35 = A0;
int sensorwert;
int temperatur = 0;
int t = 500;
int piezo = 5; // Das Wort "piezo" steht jetzt fuer die Zahl 5, der Summer haengt also an Pin 5.
void setup()
{
Serial.begin(9600);
// Der Pin fuer den Summer wird als Ausgang festgelegt.
pinMode(piezo, OUTPUT);
}
void loop()
{
sensorwert = analogRead(LM35);
temperatur = map(sensorwert, 0, 307, 0, 150);
Serial.print(temperatur);
Serial.println(" Grad Celsius");
// IF-Bedingung: Wenn die Temperatur 30 Grad erreicht oder ueberschreitet ...
if (temperatur >= 30)
{
// ... soll ein Ton mit 1000 Hertz erklingen.
tone(piezo, 1000);
}
// Und wenn das nicht so ist ...
else
{
// ... bleibt es still.
noTone(piezo);
}
delay(t);
}Genauer rechnen statt mappen
Sketch 3: Temperatur direkt berechnen
// LM35 am analogen Eingang A0
int LM35 = A0;
// Der vom Analog-Digital-Wandler gelieferte Zahlenwert (0 bis 1023)
float digitalerWert;
// Daraus berechnete Spannung in Millivolt
float gemesseneSpannung;
// Daraus berechnete Temperatur in Grad Celsius
float gemesseneTemperatur;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Zahlenwert am Eingang A0 lesen
digitalerWert = analogRead(LM35);
// Verhaeltnis zwischen 5V (= 5000 mV am Arduino) und der
// Anzahl der moeglichen Werte (1024) herstellen -> Spannung in Millivolt
gemesseneSpannung = digitalerWert * 5000 / 1024;
// Der LM35 liefert 10 mV je Grad, also durch 10 teilen -> Grad Celsius
gemesseneTemperatur = gemesseneSpannung / 10;
// Temperatur anzeigen
Serial.print(gemesseneTemperatur);
Serial.println(" Grad C");
// 2 Sekunden Pause bis zur naechsten Messung
delay(2000);
}Zahlenformat ändern: Punkt durch Komma
Sketch 4: Punkt durch Komma ersetzen
// LM35 am analogen Eingang A0
int LM35 = A0;
// Der vom Analog-Digital-Wandler gelieferte Zahlenwert (0 bis 1023)
float digitalerWert;
// Daraus berechnete Spannung in Millivolt
float gemesseneSpannung;
// Daraus berechnete Temperatur in Grad Celsius
float gemesseneTemperatur;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Zahlenwert am Eingang A0 lesen
digitalerWert = analogRead(LM35);
// Verhaeltnis zwischen 5V (= 5000 mV am Arduino) und der
// Anzahl der moeglichen Werte (1024) herstellen -> Spannung in Millivolt
gemesseneSpannung = digitalerWert * 5000 / 1024;
// Der LM35 liefert 10 mV je Grad, also durch 10 teilen -> Grad Celsius
gemesseneTemperatur = gemesseneSpannung / 10;
// Zahlenwert in eine Zeichenkette (String) umwandeln
String AnzeigeTemperatur = String(gemesseneTemperatur);
// replace: Punkt durch Komma ersetzen
AnzeigeTemperatur.replace(".", ",");
// Temperatur anzeigen
Serial.print(AnzeigeTemperatur);
Serial.println(" Grad C");
// 2 Sekunden Pause bis zur naechsten Messung
delay(2000);
}Ausgabe im Seriellen Monitor
Rate the instructions