Newsgroup: it.hobby.elettronica.digitale
Titolo: LM35 e decimi di grado

Ciao A tutti sto cercando di visualizzare la temperatura ambiente letta
con LM35 e il PIC16F873 sul display 20 x 2 
il problema è che non  riesco a trovare la formula per visualizzare i
decimi di grado in maniera lineare 15.3- 15.4 - 15.5 - 15.6 -15.7  ecc.
avete gia fatto questa funzione 
uso il compilatore PICC HI-TECH
Vi ringrazio 
nano
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 uso il compilatore PICC HI-TECH
Io, usando il compilatore CCS od il MikroC ho sempre fatto così:
1) acquisisci tensione:   misura = leggi canale adc
2) sprintf(stringa appoggio,"%u,%u",(misura*100),(misura%100))
3) scrivi stringa appoggio su lcd
cioè scrivi:  gradi,decimi di grado (visti come resto della divisione intera 
per 100)
probabilmente ci sono metodi più intelligenti per fare la stessa operazione, 
magari lavorando sulle stringhe, come per esempio si potrebbe pensare di 
vedere il tutto come decimi di grado e scrivere solo le unità, poi scorrere 
la stringa e prendere il resto : in un'architettura senza moltiplicatore hw 
potrebbe essere conveniente.
ciao
-- 
____________________
      CG Engineering
 Lab. Ricerca & Sviluppo
********************
Skype : cg_ingegnering
MSN : 
cgaudiola...@interfree.it
ICQ UIN# : 104528066 

 ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 



[...]
Innanzitutto, quota come si deve altrimenti non ci si capisce nulla: la 
risposta va sempre in coda al messaggio originale che si desidera 
riprendere.
Il metodo che ti è stato suggerito è solo di aiuto per la visualizzazioen di 
una tensione già espressa in tensione o temperatura, visto che il sensore 
lm35 ha una uscita di 10mV /°C.
Il tuo problema è di accuratezza della misura.
Dalla formula che hai riportato, si vede che hai la vref di fondo scala 
dell'adc impostata a +5V e che hai il sensore collegato direttamente al 
micro senza amplificazioni intermedie.
Ciò significa che con un adc a 10bit hai una risoluzione minima di 5V / 1024 
= 4,88mV, che corrispondono a 0,488 °C.
Se vuoi aumentare la risoluzione, hai 2 strade: o amplifichi il segnale 
prima dell'adc, o fissi la vref ad una tensione inferiore.
Roberto P. 

 Roberto P.


 prima dell'adc, o fissi la vref ad una tensione inferiore.
Di recente ho fatto un giochino che serve, intanto ad ammazzare il rumore. 
Si tratta di fare una funzione di questo tipo (ho pochissimo tempo, ve la 
scrivo così) :
float adc_mean_acquire(unsigned char canale) {
    float tmp = 0;
    static float s_tmp;
    set_adc_channel(canale);
    tmp = read_adc();
    tmp = (tmp+s_tmp)/2;
    s_tmp = tmp;
    return tmp;
}
In pratica si rende sempre la media tra la misura e la media delle misure 
precedenti. Per le temperature può risultare conveniente per non vedere 
particolari sbalzi. Se si riscontrano problemi col valore iniziale della 
variabile statica s_tmp si può (la butto là...mai avuti questi problemi) 
aggiungere subito dopo le dichiarazioni, prima di set_adc_channel (...) :
...
static unsigned short s_tmp_init;
(!s_tmp_init && s_tmp) ? {s_tmp=0; s_tmp_init=1;}
...
Ciao
