Newsgroup: it.hobby.elettronica.digitale
Titolo: Che fine ha fatto il riporto?

Buonasera a tutti,
vorrei sottoporvi un quesito anche se a a qualcuno potrebbe sembrare
banale.
So cercando di visualizzare su PC il risiltato di una conversione AD (la
scarica di una batteria) e
utilizzo il PicBasicpro.
Premesso:
Il convertitore è a 10 bit
La formule che uso sono:
Volt 	= Vref*(valore convertito)/1024
	Voltr 	= Vref*(valore convertito)//1024
Poi per visualizzare:
	serout2	 txpc,84,[9,#minuti," min  -  ",#volt,",",#voltr," Volt"," 
(valore = ",#valore,")",10,13]
Ora, quando la prima cifra del riporto della tensione misurata è 0, non me
la visualizza.
Perché?
Suppongo che il valore della variabile Voltr lo prenda in asoluto, senza
considerare che è 
Solo la seconda parte di un numero, quindi 0256 lo fa diventare 256.  
Esempio:
Se la tensione da misurare è 8,685V, la visualizzazione e’ corretta 8,685
Volt
Se la tensione da misurare è 8,045V, mi visualizza 8,452 Volt.
Sapete dirmi se la mia supposizione e’ corretta?
Come risolvo?
Grazie in anticipo
					LILLO    
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

sono riuscito a risolvere in questo modo,
va bene anche per Andrea che ha posto un quesito simile,
grazie lo stesso
	                val	=	10*(valore campionato)		
			volt	=	val/1024
			voltr	=	val//1024
 
invia:		serout2	txpc,84,[9,#minuti," min  -  ",#volt,",",dec3 voltr,"
Volt","  (valore = ",#valore,")",10,13]
ciao da LILLO
LILLO ha scritto:



Ciao Lillo.
IO uso il C.
Avendo a disposizione il valore di tensione a 10 Bit  ho operato in questo
modo.
Preciso che non so ancora se il tutto è corretto perchè devo ancora
realizzare la schedina.
Ad ogni modo preso il valore a 10 Bit ho ottenuto il valore di tipo Float
moltiplicando per il fattore ( 5/1024) in modo di avere la scala corretta
per la tensione.
Poi, volendo scrivere sull'LCD il valore di tensione, mi sono accorto che
posso mandare solo valori interi.
Allora ho estratto le singole cifre dal valore di tensione.
In pratica ho moltiplicato per 100 il valore di tensione ed effettuato la
divisione intera del numero per 100, 10,  1, naturalmente ogni volta
eliminando la cifra d'ordine superiore
Ecco quello che ho scritto.
Spero che l'approccio sia giusto.
Se qualcuno ha qualche suggerimento o un metodo meno macchinoso, ne sarei
lieto.
Ciao
Andrea
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
tensione = (valore*100*5)/1024;       // tensione = numero a 10 bit
numero[1]=(tensione/100);                // l'array numero[i] accoglie le
tre cifre
if !(numero[1]==0) {
 tensione=tensione-numero[1]*100;    // ho sottratto il numero mille
 }
numero[2]=tensione/10;
if !(numero[2]==0) {
 tensione =tensione-numero[2]*10;
}
numero[3]=tensione/1;
                                                          //scrivo sull'LCD
impostaLCD();                                    //inizializzo il display
LCD_CMD(LCD_line1);     //
LCD_PUTS("Vref asse X:");  //
LCD_PUTUN( numero[1]);
 LCD_PUTS(".");
LCD_PUTUN( numero[2]);
LCD_PUTUN( numero[3]);
LCD_PUTS(" V");
........
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

a dire il vero ho cantato vittoria un po troppo presto
ho ancora qualche piccolo problema quando si tratta di appilicare la
formula di conversione per valori di tensione che sono molto prossimi -
appena supieriori all'unità di volt.
non so se e' un problema risolvibile, 
gradito suggerimenti
        Lillo
jvbov-Andrea ha scritto:



