Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

temperature sensor source code for LM35DZ

Status
Not open for further replies.

summersnow

Newbie level 6
Joined
Dec 30, 2006
Messages
14
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,435
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...
 

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
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top