What it shows
The LM35 gives 10 millivolts for every degree Celsius. The Arduino reads this voltage with its analog input, converts it to degrees and shows the present, lowest and highest readings on a screen.
The science
The LM35 output is exactly 10 mV per degree C, so 25 degrees gives 0.25 V. The analog input has 1024 steps; with the default 5 V reference one step is about 4.9 mV, so readings jump by half a degree. Selecting the internal 1.1 V reference with analogReference(INTERNAL) makes one step about 1.07 mV, so the reading is accurate to about 0.1 degree. The temperature is the reading multiplied by 110 and divided by 1023.
Materials
Cost: under Rs 1,500. Many items come from home or from waste; spare parts such as LEDs, motors and wire are in the store.
- An Arduino Uno or compatible board
- An LM35 temperature sensor in TO-92 package
- A 16 x 2 LCD with an I2C backpack (address usually 0x27)
- A push button for resetting
- A breadboard and jumper wires
- A USB cable and power bank
Safety
For this project: USB power only. Check the LM35 legs before powering: with the flat face towards you, they are +5 V, output and ground from left to right.
Never use mains electricity: power models with cells, batteries or a low-voltage adapter. Sharp and hot tools, flames and lab chemicals need an adult or your teacher beside you. Keep magnets, button cells and small parts away from young children, and wash your hands after making.
All the safety rulesStep by step
8 steps. Do them in order, and test each part before you go on to the next. Write what you notice in a notebook as you go.
Connect the LM35 pins: left to 5 V, middle to A0, right to GND.
Connect the LCD I2C backpack: VCC to 5 V, GND to GND, SDA to A4 and SCL to A5.
Connect the push button between pin 2 and GND, with the internal pull-up enabled in the sketch.
Install the LiquidCrystal_I2C library from the Library Manager.
In setup, call analogReference(INTERNAL) and initialise the LCD.
Read A0 once per second; average ten readings to remove noise and convert with reading x 110 / 1023.
Keep variables for the minimum and maximum and print the three values on the two lines of the LCD.
Check the display against a mercury or digital thermometer and note any offset.
What you should see
The display shows temperature to 0.1 degree, the maximum and minimum since reset, and agrees with a reference thermometer within about 1 degree.
Viva questions
A teacher or a judge will ask how it works. Try to answer each question before you open it, then compare.
1How many millivolts per degree does the LM35 give?
10 millivolts per degree Celsius.
2Why select the 1.1 V reference?
It gives smaller steps so the reading is more precise.
3Why average ten readings?
To reduce random noise in the analog values.
4Why does a wire touching the LM35 change the reading?
Heat from your hand flows into the sensor, so keep it away from warm things.
Take it further
Store a reading every ten minutes in the EEPROM and print a day’s graph on the Serial Plotter.
Change one thing, measure what happens, and add a table or chart of your readings: that is what turns a model into your own investigation.
