---
+ Post New Thread
Results 1 to 2 of 2
  1. #1
    Newbie level 6
    Points: 1,318, Level: 8

    Join Date
    Dec 2006
    Posts
    14
    Helped
    0 / 0
    Points
    1,318
    Level
    8

    temperature sensor code

    i'm using PIC18F452 to do a project now..One of the features of the project is it can detect the temperature..i found a source code on the internet..But i face problem on convert it to the C language which suits the PIC and the programmer program that i use..the programmer that i use is MPLAB IDE v7.43..Is there anyone can help me on this?

    below is the source code that i found:

    DEFINE loader_used 1 ' Boot loader is being used
    DEFINE debug_mode 0 ' Debug sending True serial data
    DEFINE debug_reg portc ' Debug Port = PortCDEFINE debug_bit 6 ' Debug.bit = PortC.6
    DEFINE debug_baud 9600 ' Default baud rate = 9600
    DEFINE osc 4 ' We're using a 4 MHz oscillator
    DEFINE ADC_BITS 8 ' Set A/D for 8-bit operation
    DEFINE ADC_CLOCK 1 ' Set A/D clock Fosc/8
    DEFINE ADC_SAMPLEUS 50 ' Set A/D sampling time @ 50 uS
    samples VAR WORD ' Multiple A/D sample accumulator
    sample VAR BYTE ' Holds number of samples to take
    temp VAR BYTE ' Temperature storage
    samples = 0 ' Clear samples accumulator on power-up

    TRISA = %11111111 ' Set PORTA to all input
    ADCON1 = %00000011 ' Set PORTA.0,1,2,5 = A/D, PortA.3 = +Vref
    PAUSE 500 ' Wait .5 second

    loop:
    FOR sample = 1 TO 20 ' Take 20 samples
    ADCIN 0, temp ' Read channel 0 into temp variable
    samples = samples + temp ' Accumulate 20 samples
    PAUSE 250 ' Wait approximately 1/4 seconds per loop
    NEXT sample
    temp = samples/20
    DEBUG "Temperature is: ",DEC temp," Deg F",10,13
    samples = 0 ' Clear old sample accumulator
    GOTO loop ' Do it forever

    END


    basically the source code above is to display the temperature of the sensor on the computer..what i need is for specfic range of temperature,i will "on" the specific LED...such as for temperature within 20 celcius to 25 celcius,led1 will on..

    for my circuit,i connect the LM35DZ to PORTA,A0..and there will be a Vref of 2.55V at PORTA,A3...


    Q1:the part that i'm not clear is the ADCIN 0, temp ,i don't know for my PIC,what is this symbolize to..

    Q2:if i want to compare the range of the temperature,is it that i need to compare with the
    temp?so if the temperature now is 20 celcius,is it that i compare temp with 20?

    If my clarification is not clear enough,please let me know..
    i'm really confuse with it..please help me...

    •   Alt19th January 2007, 05:51

      advertising

        
       

  2. #2
    Newbie level 6
    Points: 1,318, Level: 8

    Join Date
    Dec 2006
    Posts
    14
    Helped
    0 / 0
    Points
    1,318
    Level
    8

    coding for temperature sensor

    Hi all,I tried to write another code for the detection.But it cant works,can you all help me on this?
    Below are the codes that i wrote for the project.

    #include <p18f452.h>
    #include <adc.h>
    #include <stdlib.h>


    #define out1 LATBbits.LATB0
    #define out2 LATBbits.LATB1

    void delay(unsigned short i);


    void main (void)
    {
    TRISB=0b00000000;
    TRISA=0b11111111;

    while(1)
    {

    int temp;
    int i;
    out1=0;
    out2=0;


    OpenADC(ADC_FOSC_8 & ADC_RIGHT_JUST & ADC_7ANA_1REF,ADC_CH0 & ADC_INT_OFF);
    ConvertADC();
    while(BusyADC());
    temp = ReadADC();
    CloseADC();

    if (temp>X)
    {
    out1=1;
    delay (500);

    }
    else if (temp <Y)
    {
    out2=1;
    delay (500);

    }
    else
    {
    out1=0;
    out2=0;
    }

    }
    }

    void delay(unsigned short i) //delay subroutine
    {
    for( ; i>0; i--); //"for" loop
    }


    Q1.i'm not sure what is the digital output after converting from the analog input.So for the program above,i don't know what is the value of the X and Y variable.The input voltage from the temperature sensor symbolize the temperature detected.When the input voltage is 0.31V,it symbolize 31 Celcius.i suppose i should compare the X with 31 but it's failed.Can you all let me know what value should i compare?
    Q2.I tried to troubleshoot one by one and when i compare the value with 135++,the LED1 with be on..i wonder whether the code that i write is wrong or the conversion is wrong.Can you all please clarify hows the conversion goes?
    Q3.i tried to refer to the data sheet but i really have no idea hows it goes.is there any other alternatives on learning this?

    please help me..thanks in advance



+ Post New Thread
Please login