I am facing quite a bit trouble with an LM25 temperature sensor. The readings are a bit too high (90-120*C) for room temprature. I have tried thefollowing things to get an expected result but none seems to work:

  • Adding a filter capacitor to the power rails of the LM35 to stabilize the temperature reading.

The fluctuation of temperature output might be the noise from the power supply so it’s better to use an electrolytic capacitor at power supply i.e. connected to Vcc and GND of LM35. (I added 10 uF)

  • Adding resistance between output pin and GND pin According to datasheet of the LM35 it has low sinking capability. As a result, its output become more sensitive to electromagnetic interference. 1K or 2K resistor between output and GND can solve this issue to some extent and also solve self-heating errors.

  • Taking average reading rather than single reading. Fluctuation or drift are one of the major issues of the Arduino sensor. One way to make fluctuation less is trying to calculate average reading instead of single reading.

  • Minimize the error. When we use the default reference i.e. 5V refence at analog input, it is less sensitive to voltage difference. At this reference the Arduino can map 5V input voltage into 1024 steps i.e. 0-1023. This means resolution at 5V = 5/1023 = 4.88 x 10-3V = 4.88mV. So, if we use the default 5V analog reference the minimum temperature deviation that the Arduino can detect is 0.50C. If we use the default Arduino reference voltage we will end up with adding 0.50C extra error. This error can be minimized by selecting the proper reference value for the Arduino. I used the 1.1V internal reference for the Arduino so that the minimum temperature deviation that the Arduino can measure improves.

At the end I even purchased a new sensor assuming the first one was faulty but tono avail. I am still facing the same problem.

  • \$\begingroup\$ #meghashyam parab, 90°C means a 0.9V multimeter reading (see my answer below) Please confirm if indeed you got 0.9V. Cheers. \$\endgroup\$
    – tlfong01
    Apr 14 '21 at 7:51

The output stage of the LM35 is famous for being a little moody… in my experience it often tends to oscillate, if the signal line is longer than 5-10cm (typical if externally mounted). Also it is somewhat weak, as you already noted.

Look with a scope at the output signal, if you see a sawtooth the LM35 is oscillating because of the excessive capacitive load (the output wire is seen as a capacitance). It may be eventually break, you did well trying another one.

There are tricks to make if work slightly better but the real solution is to use another kind of sensor with better drive capability or buffer it (a simple voltage follower is enough) before entering the long wire.

  1. LM35 shouldn't give such an ridiculously inaccurate reading. The spec below shows how precise (+- 0.5°C) it is!

lm35 spec

  1. Perhaps your calculation is dodgy! :)

Let me check your calculation. Suppose you set up as the left picture, without any R1 resistor, and just use any cheapy digial multi-meter to measure the output.

Now let me work back from your result of 90°C.

(a) Results = 90°C.

(b) Scale factor = 10mV/°C

(c) So raw reading in mV should be (90°C) * (10mV/°C) ~= 900mV ~= 0.9V.

Are you sure your multimeter reading ia as high as 0.9V? According to the datasheet, 25°C should give ~=250mA ~= 0.25V.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.