Digital Thermometer using Arduino and LM35 Temperature Sensor

Digital Thermometer using Arduino and LM35 Temperature Sensor

The LM35 series are precision integrated-circuit temperature sensors from Texas Instruments, whose output voltage is linearly proportional to the Celsius (Centigrade) temperature. Its output is linearly proportional to Centigrade temperature Scale and it changes by 10 mV per °C.
The LM35 thus has an advantage over linear temperature sensors calibrated in ° Kelvin, as the user is not required to subtract a large constant voltage from its output to obtain convenient Centigrade scaling. 
The LM35 does not require any external calibration or trimming to provide typical accuracy of ±1⁄4°C at room temperature and ±3⁄4°C over a full −55 to +150°C temperature range. Low cost is assured by trimming and calibration at the wafer level. 
The LM35’s low output impedance, linear output, and precise inherent calibration make interfacing to readout or control circuitry especially easy. It can be used with single power supplies, or with plus and minus supplies. 
As it draws only 60 μA from its supply, it has very low self-heating, less than 0.1°C in still air.

The LM35 Temperature Sensor has Zero offset voltage, which means that the Output is 0V when the temperature is at 0 °C. Thus for the maximum temperature value (150 °C), the maximum output voltage of the sensor would be 150 * 10 mV = 1.5V.

If we use the supply voltage (5V) as the Vref+ for Analog to Digital Conversion (ADC) the resolution will be poor as the input voltage will goes only up to 1.5V and the power supply voltage variations may affects ADC output. So it is better to use a stable low voltage above 1.5 as Vref+. We should supply Negative voltage instead of GND to LM35 for measuring negative Temperatures.


  1. Calibrated directly in ° Celsius (Centigrade)
  2. Linear + 10.0 mV/°C scale factor
  3. 0.5°C accuracy guaranteed (at +25°C)
  4. Rated for full −55° to +150°C range
  5. Suitable for remote applications
  6. Low cost due to wafer-level trimming
  7. Operates from 4 to 30 volts
  8. Less than 60 μA current drain
  9. Low self-heating, 0.08°C in still air
  10. Non-linearity only ±1⁄4°C typical
  11. Low impedance output, 0.1 Ω for 1 mA load

Extract from the LM35 Datasheet

More information can be found from the LM35 datasheet

For this project These are the components you’ll need:

  • 1 Arduino board
  • 1 LCD 16×2 display
  • 1 10K potentiometer to adjuct the contrast of the LCD display
  • 1 220 ohms series resistor for the LCD back light.
  • 1 Temperature LM35 sensor
  • Jumpers for connection
Digital Thermometer using PIC Microcontroller and the LM35 Temperature Sensor
Figure 1: Digital thermometer on Breadboard

Figure 1 above shows the digital thermometer on Breadboard, the LM35 is connected to pin A0 of the Arduino, positive and to ground. Figure 2 below shows the simulated project in Proteus.

The output of the LM35 is linearly proportional to Centigrade temperature Scale and it changes by 10 mV per °C in a range from 0 to 5V, with 10 bits of resolution for Analog/Digital conversion (1024 different values to represent the temperature). This will give us the maximum value 1023, because it is from 0 to 1023 when 5V is read.

Digital thermometer circuit diagramFigure 2: Digital thermometer circuit diagram

Arduino Sketch

You can download the full project files (Arduino Sketch and Proteus Schematic design) below here.  All the files are zipped, you will need to unzip them (Download a free version of the Winzip utility to unzip files).  

Download: Arduino_Temp_Sketch

Download: Arduino-Digital-Temp-Proteus

Share this post

Select your currency