Lesson 14 LM35 Temperature Sensor

Share for us


LM35 is a temperature sensor produced by National Semiconductor. It has very high operational accuracy and a wide operating range. With small size, low cost and reliability, LM35 is widely applied in engineering. Since it uses internal compensation, the output can begin with 0℃. LM35 has many different packages. Under the normal temperature, the LM35 requires no additional calibration to  reach the accuracy of plus or minus 1/4℃. The power supply mode can be classified as single power source and positive-and-negative double power supply. Its pins are as shown below. Under the positive-and-negative dual power supply mode, it can measure a negative temperature. Under the single power supply mode and 25℃, the quiescent current is about 50μA and it has a wide operation voltage range – between 4 to 20V, thus saving electricity.


– 1* SunFounder Uno board

– 1 * Breadboard

– 1 * USB data cable

– 1 * LM35 Temperature Sensor

– 1 * I2C LCD1602

– Several jumper wires

Experimental Principle

The output voltage of the LM35 is proportional to Celsius temperature. When placed in 0℃ ambient temperature, it will output 0V. The output voltage will increase 10mV each time the temperature increases by 1℃. The calculation formula is as follows:

Experimental Procedures

Step 1: Build the circuit

Step 2: Program (Please refer to the example code in LEARN -> Get Tutorials on our website)

Note: Here you need to add a library. Refer to the description in Lesson 4 previously in the manual.

Step 3: Compile the code

Step 4: Upload the sketch to the SunFounder Uno board

Now, you can see the current temperature displayed on the I2C LCD1602.


* name:LM35 Temperature Sensor
* function:
* LM35 output voltage has a linear relation with the Celsius temperature, output of 0 v when 0 ℃, 
* every increase 1 ℃, the output voltage increase 10 mv
//lm35 attach to A0
/****************************************/#define lmPin A0 //LM35 attach to
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line displayfloat tem = 0;
long lmVal = 0;void setup()
  lcd.init(); //initialize the lcd
  lcd.backlight(); //open the backlight 
void loop()
  lmVal = analogRead(lmPin);//read the value of A0
  tem = (lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100
  lcd.setCursor(5,0);//place the cursor on 5 column,0 row
  lcd.setCursor(0,1);//place the cursor on 0 column,1 row
  lcd.print(“Tem= “);//print”Tem= “
  lcd.setCursor(5,1);//place the cursor on 5 column,1 row
  lcd.print(tem);//print tem
  lcd.print(char(223));//print the unit” ℃ “
  delay(200);//delay 200ms