Lektion 42: Verwendung des LM35-Temperatursensors | Arduino Schritt für Schritt Kurs
In dieser Lektion werden wir lernen, wie man den LM35-Temperatursensor mit einem Arduino verwendet, um die Temperatur in Celsius, Fahrenheit und Kelvin zu messen und anzuzeigen. Dieser Sensor gibt eine Spannung aus, die proportional zur Temperatur ist, wodurch wir die Daten in unserem Arduino-Programm leicht lesen und verarbeiten können. Am Ende dieses Tutorials werden Sie in der Lage sein, temperaturabhängige Aktionen in Ihren Projekten umzusetzen.

Der LM35 Temperatursensor verfügt über drei Pins: Der linke Pin ist für die Stromversorgung, der mittlere Pin gibt eine Spannung entsprechend der Temperatur aus, und der rechte Pin ist für die Erdung. Der Sensor arbeitet innerhalb eines Spannungsbereichs von 4 bis 30 Volt und liefert einen Ausgang von 10 Millivolt pro Grad Celsius. Diese Präzision ermöglicht genaue Temperaturmessungen in verschiedenen Anwendungen.
Hardware erklärt
Die Hauptkomponente dieses Projekts ist der LM35-Temperatursensor. Er ist so konzipiert, dass er eine analoge Spannungsausgabe liefert, die linear proportional zur Temperatur in Grad Celsius ist. Der Sensor ist für einen breiten Temperaturbereich von -55 °C bis +150 °C geeignet, wodurch er vielseitig in verschiedenen Umgebungen einsetzbar ist.
Der LM35 benötigt minimalen Strom (60 Mikroampere) und arbeitet in einem breiten Spannungsbereich. Seine Ausgangsimpedanz ist niedrig, wodurch er direkt mit den analogen Eingangs-Pins des Arduino ohne zusätzliche Schaltung verbunden werden kann. Diese Einfachheit im Design macht den LM35 zu einer ausgezeichneten Wahl für Temperaturemessaufgaben.
Technische Datenblatt Details
| Hersteller | Texas Instruments |
|---|---|
| Teilenummer | LM35 |
| Logik/IO-Spannung | 4-30 V |
| Ausgangsstrom (pro Kanal) | 1 mA max |
| Temperaturbereich | -55 bis +150 °C |
| Ausgangsspannung | 10 mV/°C |
| Genauigkeit | ±0,5 °C bei 25 °C |
| Paket | TO-92 |
- Stellen Sie eine ordnungsgemäße Stromversorgung zwischen 4V und 30V für genaue Messwerte sicher.
- Die Ausgangsspannung ist direkt proportional zur Temperatur (10 mV/°C).
- Verwenden Sie Entkopplungskondensatoren in der Nähe des Versorgungspins zur Stabilisierung.
- Achten Sie beim Anschließen auf die richtige Polarität, um Schäden zu vermeiden.
- Stellen Sie gute Verbindungen sicher, um schwebende Eingänge zu vermeiden, die zu fehlerhaften Messungen führen können.
Verkabelungsanleitung

Um den LM35-Temperatursensor zu verkabeln, verbinden Sie den linken Pin (VCC) mit dem 5V-Ausgang des Arduino. Der mittlere Pin (Output) sollte mit dem analogen Eingangspin verbunden werden.A0, den wir verwenden werden, um die Temperatur zu messen. Schließen Sie schließlich den richtigen Pin (Masse) an einen der Masse-Pins des Arduino an. Stellen Sie sicher, dass alle Verbindungen sicher sind, um Probleme während des Betriebs zu vermeiden.
Beim Verdrahten denken Sie daran, dass der LM35 mit einer Versorgungsspannung zwischen 4V und 30V betrieben werden kann, aber 5V für Arduino-Anwendungen ausreichend sind. Wenn Sie unerwartete Temperaturmessungen sehen, überprüfen Sie die Verbindungen und stellen Sie sicher, dass der Sensor ordnungsgemäß mit Strom versorgt wird.
Code-Beispiele und Anleitung
Im Arduino-Code definieren wir den analogen Eingangspin zum Lesen der LM35-Ausgangsspannung mit dem Identifikator.inPin, das festgelegt ist aufA0. Darüber hinaus definieren wir eine KonstanteLM35_FACTORauf 0,01 setzen, um die Ausgabe des Sensors pro Grad Celsius darzustellen.
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not change
Dieses Setup ermöglicht es uns, die Temperatur auf unkomplizierte Weise zu lesen. Als Nächstes initialisieren wir die serielle Kommunikation in dersetup()Funktion zum Beginnen der Ausgabe von Temperaturdaten an den seriellen Monitor.
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
}
Innerhalb derloop()Funktion, wir lesen kontinuierlich die Temperatur und drucken sie in verschiedenen Einheiten aus. DieprintTemperature()Die Funktion nimmt einen Zeicheneingabeparameter an, um das gewünschte Temperaturformat anzugeben, sodass wir die Temperatur in Celsius, Fahrenheit oder Kelvin anzeigen können.
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000); // Wait for 1000ms
}
Um basierend auf der Temperatur Maßnahmen zu ergreifen, können wir überprüfen, ob die Temperatur einen bestimmten Schwellenwert überschreitet, indem wir diegetTemperature()Funktion. Diese Funktion berechnet die durchschnittliche Temperatur über eine festgelegte Anzahl von Proben.
Für weitere Details sehen Sie sich das dazugehörige Video für eine vollständige Code-Durchführung an (im Video bei 10:15).
Demonstration / Was zu erwarten ist
Wenn der LM35-Sensor richtig angeschlossen ist und der Arduino-Code hochgeladen wurde, sollten Sie die Temperatur in Celsius, Fahrenheit und Kelvin im Serial Monitor angezeigt bekommen. Wenn Sie Wärme auf den Sensor anwenden, werden Sie beobachten, dass die Temperaturwerte entsprechend steigen.
Seien Sie sich bewusst, dass falsches Verdrahten zu unregelmäßigen Temperaturmessungen führen kann, wie z. B. extrem hohen oder niedrigen Werten. Stellen Sie immer sicher, dass der Sensor korrekt angeschlossen ist, um solche Probleme zu vermeiden (im Video um 12:30).
Video-Zeitstempel
- 00:00- Einführung in den LM35
- 02:30- Verkabelungsanweisungen
- 05:00- Code-Erklärung
- 10:15- Demonstration von Temperaturmessungen
- 12:30- Häufige Probleme und Fehlerbehebung
++
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 42: Introduction to LM35
* 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
*
Please watch video instruction here https://youtu.be/DRIC4wDu878
This code is available at http://robojax.com/course1/?vid=lecture37
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* * 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:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
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);//Wait for 1000ms (change it if you want)
}
/*
* 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)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value,voltage,temperature;//define variables
int sensorValue;
float averageTemperature =0;
for(int i=0; i< iteration; i++)
{
sensorValue = analogRead(inPin);//read analog value
voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
temperature = voltage / LM35_FACTOR; //convert voltage to temperature
averageTemperature += temperature;//add
}
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 charact 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)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
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.