Wie man einen LM35 verwendet, um die Temperatur in Celsius, Fahrenheit und Kelvin zu messen
In diesem Tutorial werden wir lernen, wie man den LM35-Temperatursensor verwendet, um die Temperatur zu messen und sie in Celsius, Fahrenheit und Kelvin auf dem seriellen Monitor anzuzeigen. Der LM35 ist ein einfacher, aber effektiver Sensor, der eine Spannung ausgibt, die proportional zur Temperatur ist, was einfache Messungen und Umrechnungen ermöglicht. Dieses Projekt ist ideal für Anfänger, die temperaturempfindliche Funktionen in ihre Arduino-Projekte integrieren möchten. (im Video um 01:00)

Hardware Erklärt
Der LM35 Temperatursensor ist ein Präzisionsgerät, das eine analoge Spannungsgröße liefert, die der Temperatur in Celsius entspricht. Der Sensor arbeitet in einem Bereich von -55°C bis 150°C mit einer Genauigkeit von ±0,5°C. Der geringe Stromverbrauch von 60 Mikroampere macht ihn geeignet für batteriebetriebene Geräte. Die Ausgangsimpedanz des LM35 ist niedrig, was es ihm ermöglicht, eine Last effektiv zu treiben, ohne signifikanten Spannungsabfall, was entscheidend für die Aufrechterhaltung genauer Messwerte ist. Der Sensor ist oft im TO-92 Gehäuse formfaktor verpackt, was die Integration in verschiedene Projekte erleichtert.
Technische Datenblatt Einzelheiten
| Hersteller | Texas Instruments |
|---|---|
| Teilenummer | LM35 |
| Logik/IO-Spannung | 4-30 V |
| Ausgangsstrom (typ.) | 60 µA |
| Temperaturbereich | -55 bis 150 °C |
| Ausgangsspannung | 10 mV/°C |
| Genauigkeit (typ.) | ±0,5 °C (bis zu 25 °C) |
| Paket | TO-92 |
- Stellen Sie eine ordnungsgemäße Stromversorgung zwischen 4V und 30V sicher.
- Seien Sie vorsichtig bei umgekehrter Polarität der Stromanschlüsse.
- Verwenden Sie eine stabile Erdverbindung, um Störungen bei den Messungen zu vermeiden.
- Halten Sie den Sensor von direkten Wärmequellen fern, um fehlerhafte Messwerte zu vermeiden.
- Betrachten Sie einen Tiefpassfilter, wenn Sie Schwankungen in der Ausgangsspannung feststellen.
Verdrahtungsanweisungen

Um den LM35-Sensor zu verdrahten, schließen Sie den linken Pin (VCC) an die 5V-Stromversorgung des Arduino an. Der rechte Pin (GND) sollte mit der Erde (GND) des Arduino verbunden werden. Der mittlere Pin (Output) ist der Ort, an dem Sie die Temperaturdaten ablesen; schließen Sie diesen Pin an den analogen Eingangspin an.A0auf dem Arduino. Dieses Setup ermöglicht es dem Arduino, die Spannungswerte vom LM35 zu lesen, die der Temperatur entsprechen.
Wenn Sie die Verkabelung für andere Konfigurationen anpassen müssen, stellen Sie sicher, dass Sie den analogen Pinverweis im Code aktualisieren, um Ihr neues Setup abzubilden. (im Video bei 03:15)
Codebeispiele und Durchgangsanleitungen
Die folgenden Codeausschnitte zeigen, wie man die Temperatur vom LM35 liest und in verschiedenen Einheiten anzeigt. Zuerst definieren wir den Eingangspin und den Umrechnungsfaktor des LM35:
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not changeIn diesem Ausschnitt,inPinstellt den analogen Pin dar, der mit dem LM35-Ausgang verbunden ist, undLM35_FACTORdefiniert die Umwandlung, die erforderlich ist, um die Spannung in Temperatur in Celsius umzuwandeln.
Als nächstes richten wir die serielle Kommunikation ein:
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}Hier,Serial.begin(9600)initialisiert die serielle Kommunikation mit einer Baudrate von 9600 Bits pro Sekunde, wodurch wir Daten an den seriellen Monitor senden und von dort empfangen können.
Die Loop-Funktion liest kontinuierlich die Temperatur und druckt sie aus:
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000);
}In dieser Schleife rufen wir dieprintTemperatureFunktion für jede Einheit (Celsius, Fahrenheit, Kelvin), um die jeweiligen Temperaturen im seriellen Monitor anzuzeigen.
Vorführung / Was Sie erwarten können
Wenn der LM35 korrekt verdrahtet ist, sollten die Temperaturwerte in Celsius, Fahrenheit und Kelvin im seriellen Monitor angezeigt werden. Wenn Sie Wärme auf den Sensor anwenden, werden die Werte entsprechend steigen. Wenn Sie zufällige oder unregelmäßige Werte feststellen, überprüfen Sie Ihre Verdrahtung auf lose Verbindungen oder falsche Pinbelegungen.
Video-Zeiten
- 00:00- Einführung
- 01:00- Übersicht des LM35
- 02:30- Verdrahtungsanweisungen
- 03:15- Code-Erklärung
- 05:00- Demonstration
/*
* This Arduino sketch is to use LM35 to measure temperature
* This code has two ways to get temperature
* 1-To print the temperature either in C, F or K on the serial monitor
* 2-To return the value in C, F and K
*
* Watch Video instruction for this code:https://youtu.be/S5IBc_epa1A
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
//robojax.com LM35 Code for Arduino
printTemperature('C');
Serial.println();
printTemperature('F');
Serial.println();
printTemperature('K');
Serial.println();
Serial.println();
// Serial.print(" Temperature: ");
// printDegree();
// Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
// do something here (watch video)
}
// Serial.println();
delay(1000);
}
/*
* getTemperature()
* @brief gets the average temperature
* @param average temperature
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
float getTemperature(char type)
{
float value;
float averageTemperature =0;
int sensorValue = analogRead(inPin);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage / LM35_FACTOR;
for(int i=0; i< iteration; i++)
{
averageTemperature += temperature;
}
averageTemperature /=iteration;
if(type =='F')
{
value = averageTemperature *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = averageTemperature + 273.15;//convert to Kelvin
}else{
value = averageTemperature;// return Celsius
}
return value ;
}//getTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param character type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature(char type)
{
float value;
float temp = getTemperature(type);
Serial.print(temp);
printDegree();
if(type =='F')
{
Serial.print("F");
}else if(type =='K')
{
Serial.print("K");
}else{
Serial.print("C");
}
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
Dinge, die Sie vielleicht brauchen
-
AmazonPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Ressourcen & Referenzen
-
DatenblattLM35 Datasheetti.com
Dateien📁
Keine Dateien verfügbar.