ARDUINO TEMPERATURE SENSOR LM35

678,946

153

115

Introduction: ARDUINO TEMPERATURE SENSOR LM35

Now make your own temperature sensor by Arduino and LM35 Sensor
You required following parts
1-ARDUINO BOARD ANY VERSION
2-LM35 TEMPERATURE SENSOR
3-USB CABLE
4-COMPUTER WITH ARDUINO SOFTWERE

MAKE THE CONNECTION AS SHOWN IN IMAGE AND UPLOAD THE FOLLOWING CODE ON ARDUINO BOARD.




int val;
int tempPin = 1;

void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(tempPin);
float mv = ( val/1024.0)*5000;
float cel = mv/10;
float farh = (cel*9)/5 + 32;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C");
Serial.println();
delay(1000);

/* uncomment this to get temperature in farenhite
Serial.print("TEMPRATURE = ");
Serial.print(farh);
Serial.print("*F");
Serial.println();


*/
}








NOW SEE THE SERIAL MONITOR IN THE ARDUINO SOFTWERE ,
ITS DONE.

VISIT https://www.facebook.com/SparkingElectronics FOR MORE PROJECTS
;)
:)


Weekend Projects Contest

Participated in the
Weekend Projects Contest

5 People Made This Project!

Recommendations

  • Cardboard Speed Challenge

    Cardboard Speed Challenge
  • Colors of the Rainbow Contest

    Colors of the Rainbow Contest
  • Chocolate Challenge

    Chocolate Challenge

115 Comments

0
spradana1
spradana1

8 years ago on Introduction

We can get value magic number 0.48828125 from following expression:

(SUPPLY_VOLTAGE x 1000 / 1024) / 10 where SUPPLY_VOLTAGE is 5.0V (the voltage used to power LM35)

1024 is 2^10, value where the analog value can be represented by ATmega (cmiiw) or the maximum value it can be represented is 1023. The actual voltage obtained by VOLTAGE_GET / 1024.

1000 is used to change the unit from V to mV

10 is constant. Each 10 mV is directly proportional to 1 Celcius.

By doing simple math: (5.0 * 1000 / 1024) / 10 = 0.48828125

0
conorb1
conorb1

Reply 6 years ago

Sorry for asking this but what is the magic number you refer to about? What is the importance of it

0
peter.mbiria
peter.mbiria

Reply 5 years ago

I think he meant the calibration value. instead of doing all the computation , just get the value from the sensor and multiply it with that value

0
minimadmalc
minimadmalc

Reply 7 years ago on Introduction

Hi Please can you tell me if I was to run this program through a Attiny85 on 4.5 volts what formula would I need to use to get the correct results?

0
spradana1
spradana1

Reply 7 years ago on Introduction

you can substitute the SUPPLY_VOLTAGE part which result in

(SUPPLY_VOLTAGE x 1000 / 1024) / 10 = (4.5 x 1000 / 1024) / 10 =

0.439453125

0
sghosh21
sghosh21

Reply 7 years ago on Introduction

the supply voltage doesn't really matter , i think the analog to digital converter matters though, coz see we can even power the LM35 with a 20 v power supply, if we do that and still read the analog value from arduino, your equation will not hold,

0
spradana1
spradana1

Reply 7 years ago on Introduction

Indeed the supply voltage can ranging from +35V to -0.2V. Well, I got the equation from the LM35 datasheet and never done things outside the datasheet.

0
LamSwetFan
LamSwetFan

Question 6 weeks ago

Please help and advice if the 2-LM35 TEMPERATURE SENSOR be able to measure temperature up to 100 degree Celsius and have the tip that can poke into cooked fish? If cannot, what would be the replacement sensor?

0
FargingIcehole
FargingIcehole

9 months ago

How to set up two, three, four, ... sensors to the same arduino?

0
pantou60
pantou60

1 year ago on Introduction

Merry Christmas! Nice work but your line of calculation assumes that you are measuring only positive temperatures with 0 degrees Celsius corresponding to 0 voltage. Is that the case for the LM35 you are using? Are you using LM35Dz?

0
apangesti
apangesti

2 years ago

While I was measuring ambient temperatuure in planet Earth.. I got a reading of 430-something-degree. I put the sensor on fire and its still showing about 430-something. Surely global warming hasn't reach that temperature yet (the year was 2020)

Turned out I got my pins (data and ground) reversed. Now it shows earthly temperature of 30-something degree. The sensor respond well to trial-by-fire as well.

Note to self:
Please double check your connection.
VCC - Signal - Ground

0
switchthepin
switchthepin

2 years ago

People who are getting 433 degrees C check the pins. i just switched it and got the correct temperature
(remember to only switch the positive and grond pin only)

0
INDHRAK
INDHRAK

3 years ago

#include "DHT.h"

#define DHTPIN 2 // what digital pin we're connected to

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

int val;

int tempPin = 1;

void setup() {

Serial.begin(9600);

Serial.println("Reading DHT11 data! ");

dht.begin();

pinMode(12, OUTPUT); // Green

pinMode(11, OUTPUT); // Red

}

void loop() {

// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)

float hum1 = dht.readHumidity();

// Read temperature as Celsius

float temp1 = dht.readTemperature();

// Check if any reads failed and exit early (to try again).

if (isnan(hum1) || isnan(temp1)) {

digitalWrite(11, HIGH);

digitalWrite(12, LOW);

Serial.println("Error in reading sensor data!");

while (isnan(hum1) || isnan(temp1)) {

hum1 = dht.readHumidity();

temp1 = dht.readTemperature();

}

}

else {

digitalWrite(11, LOW);

digitalWrite(12, HIGH);

}

// Wait a few seconds between measurements.

delay(1000);

float hum2 = dht.readHumidity();

float temp2 = dht.readTemperature();

// Compute heat index in Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex(temp1, hum1, false);

Serial.print("Humidity: ");

Serial.print(round((hum1 + hum2) / 2));

Serial.print(" %,");

Serial.print("Temperature: ");

Serial.print((temp1 + temp2) / 2);

Serial.print(" *C ");

//Serial.print("Heat index: ");

//Serial.print(round(hic));

//Serial.println(" *C ");

//lm35 code

val = analogRead(tempPin);

float mv = ( val/1024.0)*5000;

float cel = mv/10;

float farh = (cel*9)/5 + 32;

Serial.println("");

Serial.println("Analog sensor Reading !");

Serial.print("TEMPRATURE = ");

Serial.print(cel);

Serial.print("*C");

Serial.println();

Serial.print("Error = ");

Serial.print( ((((temp1 + temp2) / 2)-(cel))/ (cel))*100);

Serial.println(" % ");

Serial.print("Corrected output:");

// Serial.print(( (temp1 + temp2) / 2)+(( (temp1 + temp2) / 2)-(cel)));

Serial.print(cel);

Serial.print("*c");

Serial.println("");

Serial.print("-------------");

Serial.println("");

delay(1000);

if ((round((hum1 + hum2) / 2))>40)

{

//Serial.println("NEW VALUES");

digitalWrite(9, HIGH); // if high humidity on indication

digitalWrite(8, LOW);

}

else //if ((dht.readHumidity()) < 1050)

{

digitalWrite(8, HIGH); // if low humidity another indication i.e. motor on

digitalWrite(9, LOW);

}

}

0
BHADRESHT
BHADRESHT

Reply 3 years ago

Hello

Please tell me

const int temp = 0;
void setup()
{
Serial.begin (9600);
pinMode (temp, INPUT);
}
void loop()
{
float Real_Voltage = analogRead(temp)* 0.004882814;
float Temp_C = Real_Voltage * 100.0;
float Temp_F = Temp_C * (9.0/5.0) + 32.0;
Serial.print(analogRead(temp));
Serial.print("Voltage: ");
Serial.print(Real_Voltage);
Serial.print("Deg C: ");
Serial.print(Temp_C);
Serial.print("Deg F: ");
Serial.print(Temp_F);

if ( Temp_C >= 135.0)
{
Serial.println("Warning: The system is hot");
delay(1000);
}
else if (Temp_C
{
Serial.println("Warning: The system is cold");
delay(10000);
}
else
{
Serial.println("The system is functioning well ");
delay(10000);
}
}

But it's output generat without connect lm35 to Arduino Uno r3
In range of -12 to 460

0
MOUNIKA DATTA

I m getting d output as 132.34*C .....in ds pattern nly but not as 23*C n all...wat crctns can I make ????

0
TAPAN MOJIDRA
TAPAN MOJIDRA

Reply 6 years ago

Don't keep the length of sensor pin wire (A0- to lm35) long..
kepp it as short as possible

0
gabimal_ro
gabimal_ro

Reply 4 years ago

Hi,

It is short, actually I have inserted the output pin of LM35 directly into the board. Same high readings,+140 degrees. Any idea why?

0
TAPAN MOJIDRA
TAPAN MOJIDRA

Reply 7 years ago

just check the wiring once again ...
see the picture and connect exactly as shown in image

0
IanV48
IanV48

4 years ago

wow