Arduino LCD-Thermometer mit LM35/LM36 Temperatursensor
Komponenten & Zubehör
| Arduino UNO | 1 |
| LM35 oder LM36 Analog-Temperatursensor (TO-92) | 1 |
| 16×2 LCD-Display (HD44780-kompatibel, z. B. weiß auf blau) | 1 |
| 10 kΩ Potentiometer (Kontrastregelung LCD) – 50 kΩ geht auch | 1 |
| Breadboard | 1 |
| Steckbrücken (ca. 19 Stück) | 1 Set |
Alle Teile sind im offiziellen Arduino Starter Kit enthalten.
Aufbau
- LCD in Breadboard stecken, per Jumper an Arduino anschließen (Standard 4-Bit-Modus: RS→12, E→11, D4→5, D5→4, D6→3, D7→2, RW→GND, VSS→GND, VDD→5 V, A→5 V (ggf. mit Vorwiderstand), K→GND).
- Potentiometer: äußere Pins an 5 V und GND, mittlerer Pin an LCD Pin 3 (VO/Contrast).
- LM35/LM36: Pin 1 (VCC) → 5 V, Pin 3 (GND) → GND, Pin 2 (Signal) → Arduino A0. Achtung: Verpolung zerstört den Sensor (er wird extrem heiß).
Programmierung
Zwei Beispiel-Sketches (beide funktionieren mit LM35 und LM36, da beide 10 mV/°C liefern, LM36 hat 500 mV Offset bei 0 °C).
Variante 1 (von Gaige Kerns)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = A0;
void setup() { lcd.begin(16, 2); }
void loop() {
int tempC = getTemperature(sensorPin);
int tempF = celsiusToFahrenheit(tempC);
lcd.setCursor(0,0);
lcd.print(tempF); lcd.print(" "); lcd.print((char)223); lcd.print("F");
delay(200);
}
int getTemperature(int pin) {
int reading = analogRead(pin);
float voltage = reading * 5.0 / 1024.0;
return (voltage - 0.5) * 100; // LM36: 500 mV Offset, 10 mV/°C
}
int celsiusToFahrenheit(int c) { return (c * 9 / 5) + 32; }
Variante 2 (einfacher, direkte Berechnung)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int inPin = A0;
void setup() { lcd.begin(16, 2); }
void loop() {
int value = analogRead(inPin);
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // LM35: 10 mV/°C, 0 V bei 0 °C
lcd.clear();
lcd.setCursor(0,0); lcd.print(celsius); lcd.print("C");
lcd.setCursor(0,1); lcd.print((celsius * 9)/5 + 32); lcd.print("F");
delay(1000);
}
Hinweis: LM35 liefert 0 V bei 0 °C (10 mV/°C), LM36 liefert 500 mV bei 0 °C (10 mV/°C). Variante 1 kompensiert den Offset (voltage - 0.5), Variante 2 geht von LM35 aus. Für LM36 in Variante 2: float celsius = (millivolts - 500) / 10;.
Inbetriebnahme
- Code in Arduino IDE öffnen, Board/Port wählen, hochladen.
- Falls Display leer oder Kästchen zeigt: Potentiometer drehen bis Text klar lesbar.
- Fertig – misst Raumtemperatur in °C und °F.
Erweiterungsideen
- Min/Max-Speicher, Mittelwertbildung.
- Datenschrift auf SD-Karte (Datenlogger).
- Warnung per Summer/LED bei Grenzwerten.
- Gehäuse drucken für mobilen Einsatz.
Herstellungsprozess
- Schnelles, zuverlässiges Branderkennungssystem mit Samsung SAMI, Arduino UNO & Raspberry Pi
- Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- LCD-Animationen & Spiele mit Arduino UNO erstellen
- Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
- Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
- u-blox LEA-6H 02 GPS-Modul: Arduino & Python Integrationsanleitung
- Spracherkennung & Sprachsynthese auf Arduino Due meistern
- Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test