Value of temperature

# Thread: Value of temperature

1. ## Value of temperature

Hi, I'm always grappling with my firmware on the PIC 16F88 trying to dust some programming.

1) Ascertained that as PIC I have 16F88
2) My temperature sensor is an LM235H
3) located on analog port 0 (PIN17)
4) The assembly scheme of sensor is:

I looked a bit at the results obtained in the calculations.
I used, not for my skill but sifting left and right of the codes found on line of the formulas.

Ex .:

to find the temperature, average 20 values read on the analog port and then apply the formula

Code:
`temperature= (temp*10) */ quanta`
and I'd like to understand why?

Also, another string makes me do this:
Code:
`lcdout \$ FE, 2, "Temp.", dec2 (temperatures / 100), ".", dec1 (temperatures // 100), \$ DF, "C"`
That is, the result obtained from the first, set it in this way to represent it on the display as a number with a comma.

But making some insights I pull out such a times table:

 temp Temperature= (temp*10) */ quanta Temperature/100 Temperature//100 Display 666 32519 325,19 25,9 667 32568 325,68 25,8 668 32617 326,17 26,7 669 32666 326,66 26,6 670 32714 327,14 27,4 671 32762 327,62 27,3 672 32812 328,12 28,2 673 32861 328,61 28,1 674 32910 329,1 29 675 32958 329,58 29,8 676 33007 330,07 30,7 677 33056 330,56 30,6 678 33105 331,05 31,5 679 33154 331,54 31,4

I read in the PicBasic manual what the various mathematical operators indicate.
But what amazes me is the fact that worth
32617 corresponds to a temperature of 26.7 ° C and that to the value of
32666 corresponds to a temperature of 26.6 ° C and so on on the table.

So what is represented on the display is a lying value?

Or am I doing something wrong?

Thanks for the answers.

2. Did you find this post helpful? |

## Re: Value of temperature

You did not post enough code that we can answer your question. Post all of your code.

3. Did you find this post helpful? |

## Re: Value of temperature

Originally Posted by Charlie
You did not post enough code that we can answer your question. Post all of your code.
Code:
```

define osc 4
ANSEL = 0001 'Disable Inputs Tranne AN0
OSCCON = 100000 'Internal RC set to 4MHZ
TRISA =  000001 ' impostazioni INP/OUT
TRISB =  000000 ' delle porte
'----------------------------------------------------
DEFINE LCD_DREG PORTB       'Porta B DATA OUT
DEFINE LCD_DBIT 4           '0 --> Bit 0-3 : 4 --> Bit 4-7
DEFINE LCD_RSREG PORTB      'LCD register select port - Porta B --> RS
DEFINE LCD_RSBIT 2          'LCD register select bit  - Pin RS B2
DEFINE LCD_EREG PORTB       'LCD enable port - Porta B --> EN
DEFINE LCD_EBIT 3           'LCD enable bit - Pin EN B3DEFINE LCD_BITS 4           'LCD bus size 4 or 8
DEFINE LCD_LINES 2          'Number lines on LCD DEFINE LCD_COMMANDUS 2000   'Command delay time in us
DEFINE LCD_DATAUS 50        'Data delay time in us

Rele   VAR    PORTA.6     '                  Pin 15
'--------------------------------------------------------------
DEFINE ADC_BITS 10      'set number of bits in result
DEFINE ADC_CLOCK 3      'set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50  'Set sampling time in uS

'    RAM Assignments and Variables
'===========================================================================
temp var word
temperature var word
samples var word
sample VAR BYTE
quanta con 1250
Tmax VAR byte
Tmin VAR byte
'===========================================================================
Tmin=16
Tmax=30

START:
Lcdout \$FE, 1

low rele

main:
sample = 1
samples= 0
FOR sample = 1 TO 20 'Take 20 samples
ADCIN 0, temp 'Read AN0 into temp variable
samples = samples + temp
PAUSE 50 ' Wait 1/4 seconds per reading
NEXT sample
temp = samples/20 'Average over 20 samples (Every 5 seconds)
temperature= temp */ quanta

if temp > 675 then high rele  'Instead 675 write the correct RAW number for 30degC
if temp < 675 then low rele   'Instead 675 write the correct RAW number for 30degC

LCDOUT \$FE, 2 ' ritorna al primo carattere
lcdout \$FE, 2, "Temp ",dec2 (temperature/10),".", dec1 (temperature/10),"C"
'lcdout \$FE, \$C0, "Tmin ",#Tmin, " Tmax ",#Tmax            FOR NORMAL OPERATION UNCOMMENT LINE
lcdout \$FE, \$C0, "RAW:",dec temp 'this show the ADC value  FOR NORMAL OPERATION COMMENT OR DELETE THIS LINE
'lcdout \$FE, \$C0, "RAW:",dec temperature

'When the display show 30,0 degC look at the RAW number on LCD and rewrite it in lines: if temp > 675 then high rele
'and if temp < 675 then low rele .

goto main```

4. Did you find this post helpful? |

## Re: Value of temperature

I believe you are going wrong by not subtracting the zero degree C. offset before you calculated the final value of quanta. Here is what I calculate:

0 degrees C. = 273.15 degrees K.
273.15 degrees K. x .01 volts = 2.7316 volts @ 0 degrees C.
5 volts / 1023 counts = .004887586 volts per count
2.7315 volts / .004887586 volts per count = 588.86484 counts
588.86484 raw counts = 0 degrees C. = 273.15 degrees K.

After subtracting the 588.86 counts from the raw reading, you end up with:
.01 volts per degree C. / .004887586 volts per count which equals 1 degree C.

5. Did you find this post helpful? |

## Re: Value of temperature

Everything is solved in previous thread.
Did you read this?
http://www.picbasic.co.uk/forum/atta...5&d=1586510417
This is the working code for LM335 probably for LM235 too. Compile it, load to pic and thats all.

6. Did you find this post helpful? |

## Re: Value of temperature

Originally Posted by louislouis
Everything is solved in previous thread.
Did you read this?
http://www.picbasic.co.uk/forum/atta...5&d=1586510417
This is the working code for LM335 probably for LM235 too. Compile it, load to pic and thats all.

Thanks louislouis you were very kind!

7. Did you find this post helpful? |

## Re: Value of temperature

I suppose that cobuccit has hard times understanding the maths behind */ operator and how to find the number used with that operator.

1. The PBP manual is your friend

2. Look at this page (down) that is primarily for the Basic Stamp but most if not all apply to PBP too: http://emesystems.com/OLDSITE/BS2index.htm

Ioannis

8. 1 out of 1 members found this post helpful. Did you find this post helpful? |

## Re: Value of temperature

Hi, Ioannis,

for those calculations ... I suggest you to have a look here : https://www.miscel.dk/MiscEl/miscel.html
e
specially here : https://www.miscel.dk/MiscEl/miscelIntegerMath.html

t
he program is a bit old ... but just answer "yes" if it shows an error , and it will run fine ...

best regards
Alain

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts