LM35 (Precision Centigrade Temperature Sensors)

     온도를 측정하기 위한 반도체 센서로 온도에 비례하는 전압을 읽어 온도로 환산하여 온도를 표시 할 수 있다. LM35는 아래 그림과 같이 3 개의 핀으로 이루어진 소자로 전원선 2 개와 출력 신호선 1 개로 이루어져있어 다루기 편리하여 Analog Input 연습을 위하서도 유용하게 사용가능하다.


     
ref) http://www.ti.com/lit/ds/symlink/lm35.pdf


온도(C) = 측정전압(mV) / 10




온도센서 LM35를 사용하여 온도를 측정하기 위한 회로


     아래 코드는 LM35를 사용하여 온도를 읽기위한 프로그램으로 PIC16F18345의 RA2에 LM35의 출력 핀을 연결하고 100 개의 ADC 값을 읽고 평균 값을 구하여 온도로 환산하였다. 그리고 계산한 온도 결과 값을 LCD 화면에 표시하도록 하였다.

										 
//* ****************************************************************************
//
//    LM35 - 20x04 LCD
//
//	  PIC16F18345, LM35 (0.01V/degC)
//
//* ****************************************************************************

#include    <16f18345.h>
#device     ADC=10
#fuses      HS,NOMCLR
#use         delay (clock = 20000000)

//*** Declear Pin for UART Communication ***************************************
#pin_select		U1TX = PIN_B7
#pin_select		U1RX = PIN_B5
#use			        rs232 (baud=19200, parity=N, xmit=PIN_B7, rcv=PIN_B5)

void main (void)
{   int8    idx_avg ;
    int16   adc_value, volt_mv ;
    int32   sum_value ;
    float   temp ;
    
    delay_ms (1000) ;
    
    printf ("$#BL_100;") ;
    printf ("$#CLR_LCD;") ;
    printf ("$1,1,**  LM-35 Test **;") ; delay_ms (1) ;
    
    setup_adc_ports (sAN2, VSS_FVR) ;
    setup_vref (VREF_ON | VREF_ADC_1v024) ;
    setup_adc (ADC_CLOCK_INTERNAL) ;
    set_adc_channel (2) ;
    
    while (1) {
        sum_value = 0 ;
        for (idx_avg = 0;idx_avg <= 99;idx_avg++) {        
            sum_value = sum_value + read_adc () ;
        }
        adc_value = sum_value / 100 ;
        
        volt_mv = (float)adc_value * (1024. / 1023.) ;
        temp = (float)volt_mv / 10 ;                      //* volt_mv = 0mV + 10.0mV/C
        
        printf ("$4,3,Outp:  %ld mV  ;", volt_mv) ; 
        printf ("$4,4,Temp: %4.1f C  ;", temp) ; 
        delay_ms (100) ;
    }
}
//******************************************************************************
						 

       LM35, C Source Code




위 프로그램을 사용한 결과