Come utilizzare un LM35 per misurare la temperatura in Celsius, Fahrenheit e Kelvin
In questo tutorial, impareremo come utilizzare il sensore di temperatura LM35 per misurare la temperatura e visualizzarla in Celsius, Fahrenheit e Kelvin sul monitor seriale. L'LM35 è un sensore semplice ma efficace che fornisce una tensione proporzionale alla temperatura, permettendo letture e conversioni facili. Questo progetto è ideale per i principianti che cercano di integrare il rilevamento della temperatura nei loro progetti Arduino.

Hardware spiegato
Il sensore di temperatura LM35 è un dispositivo di precisione che fornisce un'uscita di tensione analogica corrispondente alla temperatura in Celsius. Il sensore opera in un intervallo di -55°C a 150°C con una precisione di ±0,5°C. Il suo basso consumo di energia di 60 microampere lo rende adatto per dispositivi alimentati a batteria. L'impedenza di uscita del LM35 è bassa, permettendo di pilotare un carico in modo efficace senza un significativo calo di tensione, il che è cruciale per mantenere letture accurate. Il sensore è spesso imballato in un fattore di forma TO-92, rendendolo facile da integrare in vari progetti.
Dettagli della scheda tecnica
| Produttore | Texas Instruments |
|---|---|
| Numero di parte | LM35 |
| Tensione di logica/IO | 4-30 V |
| Corrente di uscita (tip.) | 60 µA |
| Intervallo di temperatura | -55 a 150 °C |
| Tensione di uscita | 10 mV/°C |
| Accuratezza (tip.) | ±0,5 °C (fino a 25 °C) |
| Pacchetto | TO-92 |
- Assicurati di fornire un'alimentazione adeguata tra 4V e 30V.
- Fai attenzione alla polarità invertita nelle connessioni di alimentazione.
- Utilizzare una connessione a terra stabile per evitare rumori nelle letture.
- Tieni il sensore lontano da fonti di calore diretto per prevenire letture errate.
- Considera un filtro passa-basso se stai riscontrando fluttuazioni nella tensione di uscita.
Istruzioni per il cablaggio

Per collegare il sensore LM35, collega il pin sinistro (VCC) all'alimentazione da 5V dell'Arduino. Il pin destro (GND) deve essere collegato a terra (GND) dell'Arduino. Il pin centrale (Output) è dove leggerai i dati di temperatura; collega questo pin al pin di ingresso analogico.A0sull'Arduino. Questa configurazione permetterà all'Arduino di leggere l'uscita di tensione dall'LM35, che corrisponde alla temperatura.
Se hai bisogno di modificare il cablaggio per configurazioni diverse, assicurati di aggiornare il riferimento al pin analogico nel codice per abbinarlo al tuo nuovo setup. (nel video alle 03:15)
Esempi di codice e guida passo passo
I seguenti frammenti di codice mostrano come leggere la temperatura dall'LM35 e visualizzarla in diverse unità. Innanzitutto, definiamo il pin di ingresso e il fattore di conversione dell'LM35:
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not changeIn questo frammento,inPinrappresenta il pin analogico collegato all'uscita dell'LM35, eLM35_FACTORdefinisce la conversione necessaria per convertire la tensione in temperatura in Celsius.
Successivamente, configuriamo la comunicazione seriale:
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}Qui,Serial.begin(9600)inizializza la comunicazione seriale a una velocità di 9600 bit al secondo, consentendoci di inviare e ricevere dati dal monitor seriale.
La funzione loop legge continuamente la temperatura e la stampa:
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000);
}In questo ciclo, chiamiamo ilprintTemperaturefunzione per ogni unità (Celsius, Fahrenheit, Kelvin) per visualizzare le rispettive temperature sul monitor seriale.
Dimostrazione / Cosa Aspettarsi
Quando l'LM35 è cablato correttamente, dovresti vedere le letture della temperatura visualizzate in Celsius, Fahrenheit e Kelvin sul monitor seriale. Man mano che applichi calore al sensore, le letture aumenteranno di conseguenza. Se noti valori casuali o irregolari, controlla il cablaggio per connessioni allentate o assegnazioni di pin errate. (in video a 05:00)
Timestamp video
- 00:00- Introduzione
- 01:00- Panoramica del LM35
- 02:30- Istruzioni di cablaggio
- 03:15- Spiegazione del Codice
- 05:00- Dimostrazione
/*
* 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");
}
Cose di cui potresti avere bisogno
-
AmazonAcquista LM35 su Amazonamzn.to
-
eBayAcquista LM35 su eBayebay.us
Risorse e riferimenti
-
Scheda tecnicaScheda tecnica LM35ti.com
File📁
Nessun file disponibile.