1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

temperature sensor LM35

Discussion in 'Electronic Projects Design/Ideas/Reviews' started by civictypeR, Dec 6, 2007.

  1. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    The opa has a Gain of '5', so with a LM35 giving 10mV/Cdeg you should be able to work out the output voltage
    for any temperature from +2C to +100Cdeg easily.

    eg: at 20Cdeg, the LM35 gives 20 * 0.01 = 0.2V which after the opa *5 = 1volt
     
    Last edited: Apr 1, 2009
  2. ricky17

    ricky17 New Member

    Joined:
    Mar 30, 2009
    Messages:
    4
    Likes:
    0
    where to connect the output of lm 35 to positive of lm 358 or negative of lm 358.whether it is 4k ohm or 4.7 k ohm.
    reply as soon as possible.
     
  3. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    The output of the LM35 goes to pin 3 [non inverting input]

    Use a 1.0K in place of the 100K.

    Do you follow OK.?
     
  4. dave

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    -
    Likes:
    0


     
  5. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE

    hello,
    When you read the ADC and multiply by 2 it will always give an even number.
    example: 10 * 2 = 20 , 11 * 2 =22

    So the LCD will display 20Cdeg 22degC .....

    Use a reference voltage of +2.5 when setting for an 8 bit adc conversion.

    Please use English.

    olá!,
    Quando você lê o ADC e o multiplica por 2 dará sempre um número uniforme.
    exemplo: 10 * 2 = 20, 11 * 2 =22 Assim o LCD indicará 20Cdeg 22degC .....

    Use uma tensão da referência de +2.5 ao ajustar-se para uma conversão de 8 bocados ADC.

    Use por favor o inglês.

    Yahoo! Babel Fish - Text Translation and Web Page Translation
     
    Last edited: Apr 28, 2009
  6. cabral

    cabral New Member

    Joined:
    Apr 27, 2009
    Messages:
    9
    Likes:
    0
    Ericgibbs,

    First I want to thank them!

    The voltage reference you refer to is the LM35? The PIC because I could not change the input of the ADC!

    I put a trimpot between 1k to GND and +5 with the 330R resistors on each side and
    the output voltage on pin I measured central 2.6 Volts (2.5V with the levels were slightly above normal)
    and used this voltage on pin VS + of LM35 and worked perfect!

    If you are so right, the problem is solved!

    Thank you again and send a big hug to all of Brazil!

    Cabral
     
  7. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Hi, I'm currently working on a project which required me to compare the temperature of one area with the temperature of the other area.

    I started doing this by comparing T1 and T2. If the result of T1 subtract by T2 is equal or greater than 20, then a buzzer will be activated. Below are the PICBasic code:

    DEFINE osc 20

    Define LCD_DREG PORTD
    Define LCD_DBIT 4
    Define LCD_RSREG PORTE
    Define LCD_RSBIT 0
    Define LCD_EREG PORTE
    Define LCD_EBIT 1

    define ADC_BITS 10
    define ADC_CLOCK 3
    define ADC_SAMPLEUS 50

    adct1 var word
    temp1 var word
    adct2 var word
    temp2 var word

    TRISA = %11111111
    ADCON1 = 0
    TRISB = %00000000

    Start:

    ADCIN 0, adct1
    temp1 = (adct1*5)/10
    adcin 1, adct2
    temp2 = (adct2*5)/10

    Lcdout $fe, 1
    Lcdout "T1 = ", dec temp1,"deg C"
    lcdout $fe, $c0
    lcdout "T2 = ", dec temp2,"deg C"

    if temp2 - temp1 >= 20 then
    sound PORTB.7,[100,10,50,10]
    endif

    goto start

    LCD is able to show the result, but the buzzer is activated all the way no matter the result of T2 minus T1 is equal or greater than 20. I think there is something wrong with my code, but I cant figure it out where is it. Anyone can help?

    I am using PIC16F877 and LM35DZ as temperature sensor.

    Thanks in advance. :)
     
  8. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,
    Code (text):
    if temp2 - temp1 >= 20 then
    sound PORTB.7,[100,10,50,10]
    endif
     
    If during sampling and comparing the condition is met, the 'sound' will be set for ever.!

    You need to call silence if the condition is not met.
    try an 'else' statement
     
  9. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Now I tried to start from the beginning by showing the temperature reading of LM35DZ on the LCD. Here's the code:

    DEFINE osc 20

    Define LCD_DREG PORTD
    Define LCD_DBIT 4
    Define LCD_RSREG PORTE
    Define LCD_RSBIT 0
    Define LCD_EREG PORTE
    Define LCD_EBIT 1

    define ADC_BITS 10
    define ADC_CLOCK 3
    define ADC_SAMPLEUS 50

    lmtemp var word
    temp var word

    TRISA = %11111111
    ADCON1 = 0

    Start:

    ADCIN 0, lmtemp
    temp = (lmtemp*5)/10
    Lcdout $fe, 1
    Lcdout "Temp = ", dec temp,"C"

    pause 100

    goto start

    The results of the LCD is wrong, with the reading of temperature "417C".

    The output of LM35DZ is direct input to AN0, when I measured the output voltage of LM35DZ, it is 4.06V. I decided to remove the output of LM35DZ from PIC and measure the output voltage again, which is the correct now, 0.28V (28 deg C).

    I was told by my friend that it shouldn't be a problem cos he used that before. But I just recalled that he used reference voltage for that. Is that relation between that? What should I do to get the correct reading?

    Thanks ericgibbs for the last reply :)
     
  10. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,

    This suggests that you have got pin AN0 set as an output, check the adc configuration bits.
     
  11. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,
    Which Basic are you using.?

    ADCON1 = 0x06
    TRISA = 0xcf ''%11111111
    TRISE = 0x00
     
  12. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Which Basic? PIC Basic PRO I guess.

    After that I set ADCON1 = %10000010, I still get the same result, which is wrong. And I just noticed that I dun get the result in decimal point as well.

    Hmm... :(
     
  13. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,
    Your Basic is not compatible with my Basic Sim.:)

    I'll try to get a free download of PIC Basic Pro.

    As a test, disconnect the LM35 from the PIC adc input and measure the voltage on the adc pins.... I assume that you are not using any pullup resistors, post what you measure.

    EDIT:
    Please confirm the Basic you are using.
     
    Last edited: May 6, 2009
  14. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Hi,

    I got 4.94V when I measured the voltage on the adc pins, all the portA pins are 4.94V. I am using a programmer board where there is a 220 Ohm resistor in each of the I/O pin, is that consider a pullup?

    I'm using MicroCode Studio Plus with compiler version PICBASIC PRO 2.47.
     
  15. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,
    Thats a pullup, a 220R will pull the output of the LM35 high.!
    Remove that 220R and try again.

    For some reason I cannot get the Lite version of PICPRO to compile your program.:confused:

    I will look again, but Im 99% sure that the 220R on the adc pin your problem.
     
  16. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    woo, I've tried to connect the output of LM35 to pin AN0 bypassing the 220 Ohm, I'm still getting the same result. So disappointed as I thought it is easy to use LM35. Anyway, may be I'll build the circuit of PIC on bread board and try again. :(
     
  17. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    The LM35 is very easy to use, many DIY circuits have been made OK.

    Did you re-measure the adc input pin voltage after you had removed the 220R.?

    Also check that the LM35 still works OK when not connected to the adc, just in case the 220R voltage has damaged it.
     
  18. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Just measured, I got the same results 4.94V on all the adc pins. And the LM35's working fine, showing 0.27V.

    Probably I'll build it in bread board and test again.

    Thanks for ur patient guidance ericgibbs. Appreciate that. ;)

    By the way, do you have any suggestion of ADC's IC if I want to use an ADC module with PIC instead of an PIC with built in ADC. I am doing my final year project which I only use a PIC and few LM35DZ without any circuit. I don't think I can score any mark from here. So I'm thinking of using a PIC with external ADC module and perhaps a keypad to lock/unlock the system.
     
  19. ericgibbs

    ericgibbs Well-Known Member Most Helpful Member

    Joined:
    Jan 4, 2007
    Messages:
    21,233
    Likes:
    645
    Location:
    Ex Yorks' Hants UK
    ONLINE
    hi,
    I use the quad MCP3204 12 bit adc ic. [ also a 8 channel ver MCP3208]

    Get the datasheet.:)
     
  20. hckeat

    hckeat New Member

    Joined:
    May 3, 2009
    Messages:
    8
    Likes:
    0
    Yes, I got the results desired with a simple PIC circuit on breadboard. As you mentioned, pull-up resistor problem :)

    Now I'll proceed to the next step XD

    Thanks ericgibbs
     
  21. cabral

    cabral New Member

    Joined:
    Apr 27, 2009
    Messages:
    9
    Likes:
    0
    Good morning,

    I was reading about the LM35 and saw that it does not work under the terminal 4V + Vs therefore believe
    that the configuration that I mentioned above, putting the LM35 + Vs to 2.5 volts should not be correct!

    The friend advised me Ericgibbs: "Use of a reference voltage of +2.5 to adjust itself to a conversion
    ADC, 8 bit "

    I ask: How? I change the hardware or software? and how to change?

    I appreciate any help!

    Cabral
     

Share This Page