In diesem Tutorial lernst du, wie man einen LM35 analogen Temperatursensor mit Arduino verwendet. Ich habe einen Schaltplan und Beispielcodes beigefügt, um dir den Einstieg zu erleichtern!
Im ersten Teil dieses Artikels findest du die Spezifikationen und das Pinout des LM35. Anschließend schauen wir uns an, wie man den Sensor mit dem Arduino verbindet.
Das erste Codebeispiel kann verwendet werden, um Temperaturmessungen vom Sensor zu nehmen und die Ergebnisse im Serial Monitor anzuzeigen. Im zweiten Beispiel zeige ich dir, wie du die eingebaute 1,1 V Referenzspannung des Arduino nutzt, um genauere Messwerte zu erhalten. Zum Schluss sehen wir uns an, wie man die Temperatur auf einem I2C LCD anzeigen kann, um ein eigenständiges Thermometer zu erstellen.
Materialien
Hardware-Komponenten
| LM35 analog temperature sensor (TO-92) | × 1 | Amazon |
| Arduino Uno | × 1 | Amazon |
| Breadboard | × 1 | Amazon |
| Jumper wires | ~ 10 | Amazon |
| 16×2 character I2C LCD | × 1 | Amazon |
| USB cable type A/B | × 1 | Amazon |
Software
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Über den LM35
Der LM35 ist ein kostengünstiger, präziser Celsius-Temperatursensor von Texas Instruments. Er liefert eine Ausgangsspannung, die linear proportional zur Celsius-Temperatur ist und ist daher sehr einfach mit dem Arduino zu verwenden.
Der Sensor benötigt keine externe Kalibrierung oder Justierung, um Genauigkeiten von ±0,5°C bei Raumtemperatur und ±1°C im Temperaturbereich von −50°C bis +155°C zu erreichen.
Ein Nachteil des Sensors ist, dass er eine negative Vorspannung benötigt, um negative Temperaturen zu messen. Wenn das für dein Projekt nötig ist, empfehle ich stattdessen den DS18B20 oder TMP36. Der TMP36 von Analog Devices ist dem LM35 sehr ähnlich und kann Temperaturen von -40°C bis 125°C ohne externe Bauteile messen.
Ein spezielles Tutorial für den TMP36 und DS18B20 findest du hier:
- TMP36 analog temperature sensor with Arduino tutorial
- The complete guide for DS18B20 digital temperature sensors with Arduino
Der Ausgangs-Skalierungsfaktor des LM35 beträgt 10 mV/°C und er liefert bei 25°C eine Ausgangsspannung von 250 mV (siehe Abbildung unten).

Beachte, dass der Sensor in einem Spannungsbereich von 4 bis 30 V arbeitet und die Ausgangsspannung unabhängig von der Versorgungsspannung ist.
Der LM35 ist Teil einer Serie von analogen Temperatursensoren, die von Texas Instruments verkauft werden. Weitere Mitglieder der Serie sind:
- LM335 – Ausgangsspannung direkt proportional zur absoluten Temperatur bei 10 mV/°K.
- LM34 – Ausgangsspannung linear proportional zur Fahrenheit-Temperatur bei 10 mV/°F.
LM35 Pinbelegung
Der LM35 ist in 4 verschiedenen Gehäusen erhältlich, aber der am häufigsten verwendete Typ ist das 3-Pin TO-92 Transistorgehäuse.

Die Pinbelegung des Sensors ist wie folgt:

Beachte, dass Pin 1 (+VS) der linke Pin ist, wenn die flache Seite des Sensors (mit dem aufgedruckten Text) zu dir zeigt.
| Name | Pin | Beschreibung |
|---|---|---|
| +VS | 1 | Positiver Versorgungspin (4 – 30 V) |
| VOUT | 2 | Analoger Ausgang des Temperatursensors |
| GND | 3 | Masse-Pin des Geräts, mit dem Minuspol der Stromversorgung verbinden |
Die Spezifikationen des LM35 findest du in der folgenden Tabelle.
LM35 analoge Temperatursensor-Spezifikationen
| Versorgungsspannung | 4 V bis 30 V |
| Betriebsstrom | 60 µA |
| Temperaturbereich | -55°C bis +155°C |
| Garantierte Genauigkeit | ±0,5°C bei +25°C ±1°C von -55°C bis +150°C |
| Ausgangs-Skalierungsfaktor | 10 mV/°C |
| Ausgangsspannung bei 25°C | 250 mV |
| Selbsterwärmung | <0,1°C in ruhender Luft |
| Gehäuse | 3-Pin TO-92 |
| Hersteller | Texas Instruments |
| Kosten | Check price |
Weitere Informationen findest du auch im Datenblatt hier:
Verdrahtung – LM35 analogen Temperatursensor mit Arduino verbinden
Das Verbinden eines LM35 mit dem Arduino ist sehr einfach, da du nur 3 Pins verbinden musst. Beginne damit, den +VS Pin mit dem 5 V Ausgang des Arduino und den GND Pin mit Masse zu verbinden.
Als nächstes verbinde den mittleren Pin (VOUT) mit einem der analogen Eingänge des Arduino. In diesem Fall habe ich den analogen Eingang A0 verwendet.

Die Verbindungen sind auch in der folgenden Tabelle angegeben:
LM35 analogen Temperatursensor Verbindungen
| LM35 | Arduino |
|---|---|
| Pin 1 (+VS) | 5 V |
| Pin 2 (VOUT) | Pin A0 |
| PIN 3 (GND) | GND |
Umwandlung der LM35 Ausgangsspannung in Temperatur
Um die Ausgangsspannung des Sensors in die Temperatur in Grad Celsius umzuwandeln, kannst du folgende Formel verwenden:
Temperatur (°C) = VOUT / 10
mit VOUT in Millivolt (mV). Wenn also der Ausgang des Sensors 750 mV beträgt, ist die Temperatur 75°C.
Wie du im obigen Schaltplan sehen kannst, ist der Ausgang des LM35 mit einem der analogen Eingänge des Arduino verbunden. Der Wert dieses analogen Eingangs kann mit der Funktion analogRead() gelesen werden. Diese Funktion gibt jedoch nicht direkt die Ausgangsspannung des Sensors zurück.
Arduino-Boards enthalten einen mehrkanaligen 10-Bit Analog-Digital-Wandler (ADC), der Eingangsspannungen zwischen 0 und der Betriebsspannung (5 V oder 3,3 V) in Ganzzahlen zwischen 0 und 1023 umwandelt. Bei einem Arduino Uno entspricht das einer Auflösung von 5 Volt / 1024 Einheiten oder 0,0049 Volt (4,9 mV) pro Einheit.
Wenn du also analogRead() verwendest, um die Spannung an einem der analogen Eingänge des Arduino zu lesen, erhältst du einen Wert zwischen 0 und 1023.
Um diesen Wert wieder in die Ausgangsspannung des Sensors umzuwandeln, kannst du folgende Formel verwenden:
VOUT = Wert vom ADC * (Vref / 1024)
Diese Formeln verwenden wir in den folgenden Codebeispielen.
LM35 analogen Temperatursensor mit Arduino Beispielcode
Mit dem folgenden Beispielcode kannst du die Temperatur von einem LM35 Sensor auslesen und im Serial Monitor anzeigen.
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}
Du solltest folgende Ausgabe im Serial Monitor sehen:

Stelle sicher, dass die Baudrate des Serial Monitors ebenfalls auf 9600 eingestellt ist.
Wie der Code funktioniert
Zuerst habe ich definiert, an welchen Pin des Arduino der VOUT Pin des Sensors angeschlossen ist. In diesem Fall haben wir den analogen Pin A0 verwendet. Die Anweisung #define kann verwendet werden, um einem konstanten Wert einen Namen zu geben. Der Compiler ersetzt alle Verweise auf diese Konstante durch den definierten Wert, wenn das Programm kompiliert wird. Also überall, wo du sensorPinnennst, ersetzt der Compiler es beim Kompilieren durch A0.
// Define to which pin of the Arduino the output of the LM35 is connected: #define sensorPin A0
Im Setup-Teil des Codes starten wir die serielle Kommunikation mit einer Baudrate von 9600.
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
Im Loop-Teil des Codes beginnen wir damit, eine Messung vom Sensor mit der Funktion analogRead(pin)zu nehmen.
// Get a reading from the temperature sensor: int reading = analogRead(sensorPin);
Anschließend verwenden wir die Formeln, die ich zuvor im Artikel erwähnt habe, um die Messung in Spannung und dann in Temperatur umzuwandeln.
// Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in degree Celsius: float temperature = voltage / 10;
Zum Schluss werden die Ergebnisse im Serial Monitor ausgegeben:
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Verbessere die Genauigkeit der Messwerte
Da wir die Standard-Referenzspannung des Arduino für den analogen Eingang verwendet haben (also den Wert, der als Obergrenze des Eingangsbereichs dient), beträgt die maximale Auflösung des ADC 5000/1024 = 4,88 mV oder 0,49°C.
Wenn wir eine höhere Genauigkeit wollen, können wir stattdessen die eingebaute 1,1 V Referenz des Arduino verwenden. Diese Referenzspannung kann mit der Funktion analogReference() geändert werden.
Mit 1,1 V als Referenzspannung erhalten wir eine Auflösung von 1100/1024 = 1,07 mV oder 0,11°C. Beachte, dass dies den messbaren Temperaturbereich auf 0 bis 110 Grad Celsius begrenzt.
Ich habe die Zeilen, die du im Code hinzufügen/ändern musst, unten hervorgehoben:
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
// Set the reference voltage for analog input to the built-in 1.1 V reference:
analogReference(INTERNAL);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (1100 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}

LM35 mit I2C LCD und Arduino Beispielcode
Wenn du ein eigenständiges Thermometer bauen möchtest, das keinen Computer benötigt, ist es praktisch zu wissen, wie man die Temperaturwerte auf einem LCD-Display anzeigt.
Mit dem Beispielcode unten kannst du die Temperaturwerte auf einem 16×2 character I2C LCD anzeigen.
Das Anschließen des I2C LCD ist ziemlich einfach, wie du im Schaltplan unten sehen kannst. Für mehr Informationen kannst du mein ausführliches Tutorial zu How to control a character I2C LCD with Arduinoansehen. Wenn du stattdessen ein Standard-LCD ohne I2C verwenden möchtest, schau dir How to use a 16×2 character LCD with Arduino an.

Die Verbindungen sind auch in der folgenden Tabelle angegeben:
I2C LCD Verbindungen
| I2C Zeichen LCD | Arduino |
|---|---|
| GND | GND |
| VCC | 5 V |
| SDA | A4 |
| SCL | A5 |
Beachte, dass der LM35 Temperatursensor wie zuvor angeschlossen ist.
Installation der benötigten Arduino-Bibliotheken
Um ein I2C LCD zu verwenden, musst du die LiquidCrystal_I2C Arduino-Bibliothek installieren.
Um diese Bibliothek zu installieren, gehe im Arduino IDE zu Tools > Manage Libraries (Strg + Shift + I unter Windows). Der Library Manager öffnet sich und aktualisiert die Liste der installierten Bibliotheken.

Suche nun nach „liquidcrystal_i2c“ und suche die Bibliothek von Frank de Brabander. Wähle die neueste Version aus und klicke dann auf Installieren.

LM35 mit I2C LCD Beispielcode
/* LM35 analog temperature sensor with I2C LCD and Arduino example code.
https://www.makerguides.com */
// Include the required Arduino libraries:
#include "LiquidCrystal_I2C.h"
// Create a new instance of the LiquidCrystal_I2C class:
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Degree symbol:
byte Degree[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Start the LCD and turn on the backlight:
lcd.init();
lcd.backlight();
// Create a custom character:
lcd.createChar(0, Degree);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature on the LCD;
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(temperature);
lcd.write(0); // print the custom character
lcd.print("C");
delay(1000); // wait a second between readings
}
Du solltest folgende Ausgabe auf dem LCD sehen:

Fazit
In diesem Tutorial habe ich dir gezeigt, wie du einen LM35 analogen Temperatursensor mit Arduino verwendest. Wenn du mehr über andere Temperatursensoren erfahren möchtest, schau dir die untenstehenden Artikel an.
- The complete guide for DS18B20 digital temperature sensors with Arduino
- How to use DHT11 and DHT22 sensors with Arduino
- TMP36 analog temperature sensor with Arduino tutorial
- How to control a character I2C LCD with Arduino
Wenn du Fragen, Vorschläge hast oder denkst, dass in diesem Tutorial etwas fehlt, hinterlasse bitte einen Kommentar unten.

