Sensore di temperatura collegato con 10m di filo

Vabbè visto che sono a casa in ferie fino al 7...
Domani mattina mi ci metto

Graziano:
Chiedo scusa, ma io volevo sapere se la cosa fosse fattibile, perchè se dopo 10 pagine di forum se ne discute ancora è lecito pensare che la cosa non sia fattibile, preso atto che il sensore produce pochi mv ogni grado ed i cavi lunghi hanno i loro ohm, non mi resta altro da fare che rinunciare oppure se qualcuno ha delle alternative (cioè altri sensori che non hanno il problema)seguirò quelle oppure se troverete la soluzione ne sarò felice.

... se dovesse toccare a me un problema simile spendo 5 euro in più e prendo quel dallas che ti dicevo prima... però ripeto qui si gioca un'altra sfida.
Spero che Michele non mi sgridi: disubbidisco al suo schema mentale di prove ed aggiungo due "variabili" "inquietanti": questo pomeriggio ho attaccato un lm35 ed un boo non mi ricordo sensore di temperatura digitale i2c smd 12 bit ... l'lm misura come temp ambiente 1,5 gradi in meno del digitale... ma ad occhio e vedendo il termostato sul muro sembra comunque più corretto l'lm... però strano...tanto strano... comunque l'lm l'ho attaccato ad una 20ina di cm di filo, ho preso il mio palloncino e l'ho messo a mollo: sono sceso a 0,8 gradi ma vi confermo che nonostante il test l'abbia fatto accuratamente è veramente un attimo leggere anche 2 gradi in più... in meno diremo che lm non ti permette di andare negativo senza qualche partitore quindi non so se i pochi mv che ho misurato siano da lm o da "aria". Metto lo stesso sensore sotto l'ascella ed arrivo a fatica dopo 5 minuti a 35.5 gradi... ho messo anche un termometro a mercurio (36.1) ed uno digitale(36.2): il fatto è che 0,6 gradi non è in tolleranza con il datasheet.
Non so se è l'ambiente o il sensore che è così così ma constato che di sicuro misurare la temperatura con uno scarto di 0,5 gradi è abbastanza un'impresa (cosa peraltro già sospettata).
ho poi preso una basetta ed ho tentato un cablaggio allo "schema 8"...ragazzi =(... diremo che è meglio che domani riprovo misurando bene anche le resistenze perchè non torna nulla...
...dallas forever...

Ho letto i post recenti, quelli di Graziano incluso.

Graziano si pone la domanda semplice e si aspetta una risposta semplice. Rileggendo tutti i post puoi trovare una risposta complicata da estrapolare da tutti i post, mentre la risposta semplice è:

Non puoi usare nessun sensore di temperatura e aspettarti dei risultati perfetti se non hai la competenza per realizzare il circuito e il software.

Da questa risposta può sembrare qualcosa del tipo; tu non hai le competenze io si, ma non deve essere intrpretata così.

La prima volta che ho connesso un sensore NTC avevo anche io una lettura ballerina, uno dei motivi di tale lettura è legata all'instabilità della tensione di 5V fornita dal pc tramite USB. Ora ha distanza di tempo e di esperienza e competenza acquisita i miei 6 sensori NTC da 10k mostrano valori stabili di temperatura, con solo una media di 6 lettura dall'ADC. I valori sono inchiodati anche per ore, specie per il sensore immerso nell'acqua. Non sto lavorando con la board arduino ma con un 328 alimentato a 3.3v montato su breadb, ma con arduino il funzionamento sarebbe lo stesso.

Prima di ottenere questi risultati ne è passato di tempo, tuttavia c'è ancora un errore se il valore viene confrontato con il sensore se95 i2c da 13 bit, la lettura di quest'ultimo è ancora ballerina ma le cose cambiano appena il sensore viene messo in acqua, il motivo è che la costante di tempo si allunga rendendo meno repentine le variazioni di temperatura rilevate dal sensore. Un oggetto di massa limitata viene influenzato più rapidamente dalla temperatura che lo circonda, in tal caso possiamo anche dire che la costante di tempo è inferiore a 1 secondo e quindi è normale leggere un valore ballerino. La discrepanza tra lettura se95 e NTC è dovuto al fatto che arduino ha un convertitore da 10 bit mentre il se95 è da 13 bit, inoltre per NTC uso una lookup table con la conseguenza che il valore può passare da 14.41 a 14.52 e valori intemedi non li posso apprezzare.

Noi qui ci stiamo accrescendo le nostre competenze, e un nuovo utente che vuole seguirci deve avere questo come obbiettivo principale, se per te Graziano questo è il tuo obbiettivo, sei il benvenuto, diversamente devi cercare una soluzione al tuo problema diversa da questa principalmente perchè non abbiamo certezza circa il risultato.

Ciao.

Mauro ha espresso in termini più ampi il mio pensiero, credo che Graziano abbia già capito, visto che ha intenzione di accodarsi alle prove;
@qs (ormai siamo amici, uso un diminutivo :)): io faccio questioni sulle variabili quanto tenti di infilarle nelle prove di Alberto (che intanto è sparito di nuovo ]:D), ovviamente ben vengano se le prove le fai tu, ma la ricerca (ed in questo, permettimi, penso di avere un tantino di esperienza in più, almeno così mi pare di capire), usando il termine in modo ampio, non si fa così, e la prova è che alla fine di una giornata di test ne sai meno di prima e ti sei riempito di dubbi anche tu. Infatti è caduto anche il baluardo dei 36,6°C di temperatura corporea, sul quale ti dicevo di non contare troppo :wink:
L'LM35 ha una sua precisione ed anche una sua tolleranza, che ovviamente non è ai livelli riscontrati da te; nello specifico c'è un fattore di cui stiamo parlando ma che per ora stiamo trascurando, e sul quale Mauro sta facendo "santo" casino (perché ha ragione): l'alimentazione. Noi facciamo tutti i calcoli basandoci su 5V, quindi per noi ogni passo dell'ADC vale circa 0,004883V; di recente abbiamo scoperto che Alberto (ma serviva la prova su Arduino che non ha fatto) sembra stia lavorando con 4,45V, il che significa che il passo vale 0,004346V circa, una bella differenza. La situazione ideale, visto che iul nostro fondo scala è di 40°C, quindi al massimo 550-600mV, è quella di impostare l'ARef su internal, avendo circa 1,1V, ma a quel punto bisogna mettere un bel C da 100nF su quel pin e misurare come si deve quel riferimento, perché vi assicuro che non è così preciso come si dice; allora da lì bisognerebbe ripetere le misure. Ora il mio problema è: se per fare 6-7 misure dando per scontati (e per errore) 5V di alimentazione, ci sono volute tutte le vacanze di Natale ed anche più, siamo disposti a tirarla fino a Pasqua, ricominciando daccapo? Personalmente no, anche perché io a giorni ricomincio le lezioni e un paio di Consulenze e non avrò nemmeno il tempo per fare le mie cose, che sono tante.
Allora ho deciso di assumere che i 5V siano buoni e stabili (anche perché l'origine è sempre la stessa: un porta USB di un notebook), e di arrivare ad avere altri due riferimenti, che sono più o meno gli estremi della nostra scala, facendo proprio le prove che consigli tu. A quel punto avremo un quadro chiaro relativo; basterà poi rilevare la VERA tensione di alimentazione e rifare i calcoli e da lì uscirà il verdetto, se sarà positivo si passa all'internal (con relativa misura) e per Alberto siamo a posto; se sarà negativo dovremo capire se non va il metodo o se non vanno le prove e gli strumenti di Alberto, ma prima aspettiamo di arrivare alla fine. Ciò che sto sostenendo io è che ogni prova aggiuntiva che gli si vuole far eseguire eleva al quadrato ogni problematica, e visti i tempi non se ne esce più, quindi abbiate pietà e non insistete oltre :sweat_smile: invece fate da soli tutte le prove che volete.
@ Mauro: i tuoi studi sono ormai a livello scientifico su questa materia, per cui tu stai ricercando la precisione del centesimo (se non del millesimo) di °C, chiaro che siamo su livelli assolutamente diversi; qui lo scopo è avere un'indicazione di massima della temperatura ambiente fuori casa, il range di 45°C (-5 / +40) è abbastanza ristretto e la precisione richiesta è abbastanza poca da non dover richiedere pesanti interventi sulle curve di linearità. Tempo fa (una cosa che dovrò riprendere) feci delle prove con degli NTC, trovai un programma di un tizio che si era ricostruito tutte le curve sulla base del data-sheet; avendo proprio quell'NTC lo testai e mi diede grandi soddisfazioni, ma il mio scopo era far lavorare questo NTC NON da 0 a 1000°C ma da 10 a 35, e lì c'era una bella linea dritta che mi rassicurava sui risultati. Quindi alla fine bisogna sempre operare in base al risultato, ma ciò non leva nulla al valore del tuo lavoro, sia ben chiaro!

[quote author=Michele Menniti link=topic=137489.msg1055029#msg1055029 date=1357203454
@qs (ormai siamo amici, uso un diminutivo :)): io faccio questioni sulle variabili quanto tenti di infilarle e la prova è che alla fine di una giornata di test ne sai meno di prima e ti sei riempito di dubbi anche tu. Infatti è caduto anche il baluardo dei 36,6°C di temperatura corporea, sul quale ti dicevo di non contare troppo :wink:
L'LM35 ha una sua precisione ed anche una sua tolleranza, che ovviamente non è ai livelli riscontrati da te; nello specifico c'è un fattore di cui stiamo parlando ma che per ora stiamo trascurando, e sul quale Mauro sta facendo "santo" casino (perché ha ragione): l'alimentazione. Noi facciamo tutti i calcoli basandoci su 5V, quindi per noi ogni passo dell'ADC vale circa 0,004883V; [/quote]

non volevo tediarvi con info inutili ma ho settato l'internal reference a 2.56V .. soprattutto mi sono assicurato con tester di nota marca tettesca che il piedino dell'lm producesse la tensione che l'arduino traduceva (correttamente) e che la tensione di alimentazione fosse effettivamente a 5v (4,98 per la precisione).
Non ci ho dedicato una giornata... i 36 gradi corporei sono garantiti dalla misurazione con gli altri due termometri (36.1 e 36.2)...ho misurato 35.5 ma anche il tester gli dava ragione... è 0,6 gradi non è tanto non è poco ma possiamo sicuramente dire che il mio lm per qualche motivo sbagliava di 0,6 gradi: il mio corpo era a 36.1 gradi questo è certo. il mio intervento era per dire che comunque un mezzo grado di differenza sulla misurazione è un attimo sballarlo: basta un'alitata, una porta aperta, un maglione, l'acqua stratificata...

Ma era quello che intendevo dire io, nei primi post tu parlavi di un valore assoluto che alla fine non sei riuscito a leggere, comunque che Arduino stai usando? Un'altra curiosità: per quanto ne so l'ARef può lavorare con una tensione esterna tra 0,5 (mi pare) e 5V, o con la tensione di alimentazione di default, o con un riferimento interno di 1,1V, tu parli di un riferimento interno di 2,56V, come lo hai ottenuto?

Salve a tutti
Ho letto tutti i post e ho capito che prima di tutto il mio sensore è differente, infatti il mio è LM35DT

http://pdf1.alldatasheet.com/datasheet-pdf/view/8876/NSC/LM35DT.html

E' più o meno simile, ma lo schema per remotizzarlo (la famosa figura 8 ) da quanto ho capito (correggetemi se sbaglio)riduce il range di rilevazione da (-55 a + 150) a (-5 + 40) il che riduce notevolmente il campo, tra l'altro ho letto in questo post (e credo che nessuno l'abbia smentito) che dato che arduino non ha tensioni negative il sensore non potrà comunque rilevare temperature sottozero è corretto ?

E' corretto se lo alimenti normalmente (5v e GND); nel caso dello schema che stiamo applicando l'interpretazione a quanto scritto nel documento è che la lettura minima che ci si aspetta è 100mV, che coincidono con -5°C, a motivo che cambia il riferimento a massa in virtù dei partitori usati in quello schema; quindi se a te va bene il range -5/+40 puoi procedere con le prove, anche se non so se i valori in uscita coincidono con il modello che sta usando Alberto; devi verificarlo confrontando i data-sheet

Io ora ho provato in condizione normale (5v e GND) ed effettivamente non scende sotto 0°.

Tutti gli lm 35 con la D finale non sono in grado di misurare temperature sotto 0 °C e non superiori a 100 °C, così dice il datasheet suggerito da Graziano, che poi è lo stesso degli altri che abbiamo visionato, ma questo è l'originale National, prima che diventasse Texas. Devo dire che l'acquisizione di National da parte di Texas mi è sfuggita e nulla so, tanto che non so se si tratta veramente di una acquisizione.

Graziano il tuo lm35DT dovrebbe essere allora in contitore TO220, cioè lo stesso contenitore usato per i classici 7805, confermi?

Il fatto che nel datasheet viene dato il range di temperature per ogni versione non significa che non possa del tutto misurare
temperature negative, ma invece potrebbe dire che il DT non rileva temperature con precisione o linearità nel range 0 to 100.

Ma era quello che intendevo dire io, nei primi post tu parlavi di un valore assoluto che alla fine non sei riuscito a leggere, comunque che Arduino stai usando? Un'altra curiosità: per quanto ne so l'ARef può lavorare con una tensione esterna tra 0,5 (mi pare) e 5V, o con la tensione di alimentazione di default, o con un riferimento interno di 1,1V, tu parli di un riferimento interno di 2,56V, come lo hai ottenuto?

La UNO/2009 hanno solo il riferimento a 1.1, mentre la mega ce lo ha anche a 2.56, come pure il 644 e 1284, forse qsecofr usa la MEGA.

Ciao.

il 2,56 l'ho trovato per tentativi :stuck_out_tongue: :stuck_out_tongue: :smiley:
Dai scherzo...ho 32u4... leonardo...
I valori che misuro sono sempre piuttosto stabili (sull'lcd ho piccole oscillazioni centesimali) ma quello che volevo dire è che il tutto è da guardare senza toccare tanto perchè basta un nonnulla per cambiare la temperatura ambientale.

qsecofr, sei toscano? che forte il toscano.

Rileggi il datasheet dove dice che di solito a questi sensori viene saldato un dissipatore leggero per aumentare la costante di tempo e c'è anche scritto come risolvere l'influenza negativa del cavo di collegamento che se soggetto a correnti di aria fa variare la temperatura letta ancor più del corpo del sensore stesso, perchè quarda caso i terminati sono connessi in punti ancora più sensibile del corpo esterno che ha anche una costante di tempo maggiore.

Soluzione immergilo nel bicchiere di acqua e non alitare sui cavetti.

Ho comprato dei NTC tdk 10k smd, nel datasheet il modello è 1005, io pensavo fossero di simensioni paragonabili alle resistenze in contenitore 1206, invece è qualcosa di invisibile tipo 1/4 di cimino di pane. Non ti dico per saldarli, senza monocolo X10 non lo vedi neanche.

Uno di questi è inserito e cementato con resina bicomponente all'interno di un tubetto di acciaio preso da una sonda NTC guasta. Gli altri sono in aria a vista, un paio pensolano vicino alle mie gambe se mi avvicino la temperatura cresce e diminuisce se vado via. Poi ho provato a verificare l'influenza del cavo, risultato riscaldando il cavo sale anche la temperatura letta, morale il collegamente finale va fatto con filo sottolissimo tra ntc e cavo, specie nel mio caso che ho cavi da 0.75mm.

Ok quindi anche la leonardo ha REF a 1.1 o 2.56?

La sigla del sensore precisa è ?

Quale circuito stai usando?
PS: chiamiamo Standard il collegamente semplice con riferimento a gnd.

Il sensore i2c qual'è?

Ciao.

Alla fine infatti qs non mi ha risposto completamente, evidentemente la Leonardo ha il doppio riferimento a 1,1 e 2,56; gentilmente mi date le sintassi per ottenere i due valori? Sulla UNO/2009 analogreference(INTERNAL) fornisce automaticamente 1,1V, invece per selezionare il valore dov'è doppio che si fa?

Confermo il mio è il TO-220

ragazzi scusate mi sono perso, mi dite che devo fare?? devo inserire il sensore nella sotto la ascelle??

...INTERNAL... GLI ALTRI INTERNAL1V1 E INTERNAL2V56 non compilano (ide 1.0.2 toolchian scaricata da atmel)
da letture fugaci l'internal è 2,56V chiuso.
se qualcuno è masochista può fare anche così..ma io INTERNAL scrissi...
// Set Voltage Reference to internal 2.56V reference with external capacitor on AREF pin
ADMUX |= (1 << REFS1) | (1 << REFS0);

i2c = mcp9800A0T

dimenticavo: le prove le ho fatte in gran parte con il sensore attaccato in modo standard con un 20 cm di filo rigido per avere una base di partenza...un riferimento... poi ho provato con la configurazione figura8 velocemente (però anch'io avevo qualche resistore non proprio ok...per questo non ho voluto parlarvene) ed ho notato che (parlando in gradi) è normalmente circa 5 gradi sopra la misura del i2c ma non ho condotto misure in acqua o sotto l'ascella.... dovevo farlo meglio oggi ma non ho avuto tempo.
come dicevo ieri l'i2c mi da sempre grossomodo 1,5 gradi in più del lm (parliamo di valori ambientali non ghiaccio perchè l'i2c è in smd su una basetta prototipo: non è dovuto al filo perchè posso anche toglierli completamente. Amante del digitale mi verrebbe di dire che l'i2c è infallibile ma a naso mi pare che quel grado e mezzo in più se lo stia inventando... ipotesi in testa mia me ne sono fatte tante ma non sono completamente convinto di nessuna... comunque dato che di notte dormo abbastanza bene ho fatto un po' spallucce.
Se mi avanzerà tempo dato che di questi i2c respirabili ne ho più di uno vedo se riesco a montarli su un piccolo pcb e metterlo a mollo nell'acqua.

qsecofr:
...INTERNAL... GLI ALTRI INTERNAL1V1 E INTERNAL2V56 non compilano (ide 1.0.2 toolchian scaricata da atmel)
da letture fugaci l'internal è 2,56V chiuso.
se qualcuno è masochista può fare anche così..ma io INTERNAL scrissi...
// Set Voltage Reference to internal 2.56V reference with external capacitor on AREF pin
ADMUX |= (1 << REFS1) | (1 << REFS0);

i2c = mcp9800A0T

non ho capito niente, non conoscevo affatto 1v1 e 2v56 ma solo internal e a me con 0022 e Arduino UNO funzionava di sicuro a 1,1V; non ho mai fatto prove con 1.0.x e non capisco se hanno modificato a 2,56 in via definitiva, provo a guardare il reference và.
Riguardo le prove a me era chiaro tutto ciò che avevi fatto, solo che ho detto che fatte così non avevano molto significato per le prove di Alberto, quindi non hai tediato nessuno, ci mancherebbe che qualcuno si permettesse a criticare le prove che fai, se la dovrebbe vedere con me ]:smiley:

@ Alberto: devi avere la pazienza di rileggerti i post DOPO il tuo ultimo intervento, non puoi costringerci a riscrivere tutto solo perché tu te ne vai a spasso :zipper_mouth_face: le prove da fare sono due, assolutamente e nuovamente quella del ghiaccio (istruzioni di qs!) e poi quella dell'ascella, inoltre devi RIMISURARE la tensione di alimentazione ma direttamente sui pin 5V e GND di Arduino, e non sul sensore.

--> analogReference() - Arduino Reference
2V56 è per l'Arduino Mega e gli ATmega8.

PaoloP:
--> analogReference() - Arduino Reference
2V56 è per l'Arduino Mega e gli ATmega8.

Grazie Paolo, quindi resta 1,1V per l'ATmega328, comunque ora me lo leggo per bene