sensore non lineare

Standardoil:
Mi hai già dato il mio Karma? grazie

Quello te lo avevo dato io, i polinomi oltre il quinto grado lo meritano

avrei tanto voluto guadagnarmene un'altro di karma
purtroppo per avere un errore (della formula) minore dell'errore del sensore serve almeno un polinomio di 9° grado con oltre 22 cifre di fattore
non credo che una UNO ci riesca, mi sa che allo OP tocca di rinunciare, o magari invece di usare un bulbo per radiatori d'automobile potrebbe usare qualcosa di più "civile"
o ripiegare su una tabella, precompilata, magari con la formula inversa che ho dato prima.....

attendo la formula corretta,
grazie per l'aiuto

Ma l’interpolazione lineare vi fa proprio schifo?

a me no, chiedi allo OP...

mirkoelettronics:
attendo la formula corretta,
grazie per l'aiuto

e se invece ti spiegassi come ottenerla?

mi piacerebbe capirlo anche perchè il problema delle curve mi è capitato diverse volte e ho rioslto approssimando o creando delle Kostanti di moltiplicazione per range

mi meriterò un altro Karma....
trovare la formula generante un certo insieme di dati si chiama "regressione"
il problema è che gli strumenti che fanno automaticamentre la regressione richiedono di sapere almeno che tipo di regressione sia: lineare, polinomiale, esponenziale e altre ancora
questo lo sai, o lo intuisci guardando il diagramma disegnato a partire dai dati
guardando il diagramma dei dati che hai pubblicato non si capisce una mazza, o forse si tratta di una funzione trigonometrica, ma non ci siamo
ecco la ragione del grado elevato del polinomio generante
ho pensato però che forse dipende anche dal circuito di misura
per sua natura un PTC o NTC, messo in serie con una resistenza fissa è tutto salvo che lineare
se invece si usa un generatore di corrente costante (e qui chiederai aiuto al diavolo del silicio, che è più bravo di me) si toglie una causa di non linearità
ecco che se invece di usare la tensione misurata, usiamo la resistenza, e come misurare la resistenza non è difficile da trovare, la formula generante, con una buona approssimazione diventa:

temperatura= 490.902823*pow(resistenza,-0.1417601964)-134.5439793

come vedi alle volte cambiare punto di vista fa guadagnare karma

la tua spiegazione non è pero esaustiva, le costanti della tua formula come sono state generate?

risolto !!
Grazie per l'aiuto
ho applicato la formula inversa del partitore di tensione conoscendo r1 di 906 ohm e Vcc di 5V

resistenza = 906*((analogRead/204.6)/(5-(analogRead/204.6))
temperatura= 490.902823*pow(resistenza,-0.1417601964)-134.5439793
[code/]

Bravo a te

e grazie anche a Paulus1969

Off topic
Tempo fa giocavo in un sito di scacchi con punteggio, il punteggio era diventata un ossessione, non mi
interessava giocare bene ma che il punteggio salisse. Poi mi sono reso conto che è una cavolata, avere un buon punteggio giocando con persone scarse non faceva di me un buon giocatore "sono scarso a scacchi" :slight_smile:

La stessa cosa può succedere su questo forum con il KARMA, ho risolto svariati problemi ma gli autori del thread non si sono presi la briga di aggiungere un punto di karma, però me ne frego perché non voglio ossessionarmi per un numerino :slight_smile:

Purtroppo ritorna il problema...

Ho da accoppire un altrotipo di sensore con valori hommici diversi,ho provato ad applicare la vecchi formula ma ho un delta di circa 30 gradi.

mi servirebbe la nuova formula di conversione

di seguito i valori

temp		ohm		r pullup	V out		        mA sensore
								
-40		402000		906		4,988756683		0,012409842
-35		289000		906		4,984374245		0,01724697
-30		210000		906		4,978521237		0,023707244
-25		154000		906		4,970756459		0,032277639
-20		114000		906		4,960576471		0,043513829
-15		85000		906		4,947267944		0,058203152
-10		64300		906		4,930527866		0,07668006
-5		48900		906		4,909047103		0,100389511
0		37500		906		4,88204968		0,130187991
5		29000		906		4,84852538		0,16719053
10		22500		906		4,806459882		0,213620439
15		17700		906		4,756530152		0,268730517
20		14000		906		4,696095532		0,335435395
25		11100		906		4,622688656		0,416458437
30		 8900		906		4,538037936		0,509891903
35		 7200	  	906		4,4411547		0,616827042
40		 5800		906		4,324485535		0,745600954
45		 4700		906		4,19193721		0,891901534
50		 3900		906		4,057428215		1,040366209
55		 3200		906		3,896736483		1,217730151
60		 2700		906		3,743760399		1,386577926
65		 2200		906		3,541532518		1,609787508
70		 1900		906		3,385602281		1,781895937
75		 1500		906		3,117206983		2,078137988
80		 1300		906		2,946509519		2,266545784
85		 1100	 	906		2,741774676		2,492522433
90		 965		906		2,578834848		2,672367718
95		 826		906		2,384526559		2,886836028
100		 710            906		2,196782178		3,094059406
105		613		  906		2,017774852		3,291639236
110		531		  906		1,847599165		3,47947112
115		462		  906		1,688596491		3,65497076
120		403		  906		1,53934301		3,819709702
125		352		  906		1,399046105		3,974562798
130		309		  906		1,271604938		4,115226337
135		272		  906		1,154499151		4,244482173
140		241		  906		1,050566696		4,359197908
145		213		  906		0,951742627		4,468275246
150		189		  906		0,863013699		4,566210046


[code/]

Grazie

Ciao

Se la precisione ti interessa allo stesso modo su tutta l'escursione termica, ti conviene usare una resistenza di pull-up di valore più elevato, intorno agli 8700 ohm, che è la media quadratica fra 189 Ohm e 402 kOhm: se usassi proprio 8700 Ohm, infatti, con 189 Ohm avresti 106mV e con 402 kOhm avresti 4,894V, che sono gli stessi 106mV ma al di sotto dei 5V. In questo modo migliorerebbe la precisione alle temperature più basse. La zona di massima precisione si sposterebbe dall'intorno dei 92°C all'intorno dei 32°C.

Ma non puoi usare un sensore con uscita digitale come il DS18B20?...

Guarda, adesso sono sul lavoro...
Se rileggi i miei vecchi post, troverai come calcolare la formula nuova...

per adesso ho corretto cosi :

resistor =906*((value/204.6)/(5-(value/204.6)));resistenza cavo
temp = 598.902823*pow(resistor,-0.1417601964)-134.5439793;

ho variato la costante da 490.902823 a 590.902823

sono andato a tantativi ma il risultato non è male come scostamento