Di nuovo ciao a tutti.
In questo periodo sto facendo degli esperimenti e spuntano diversi dubbi...
Oggi la questione riguarda un sensore ntc 100k 3950 (questo). Ho provato a chiedere il datasheet al cinese, ma non ho ricevuto risposta.
Dopo diversi tentativi sono arrivato a valori di temperatura coerenti utilizzando un partitore con una resistenza da 100k e con questo codice (trovato qui):
/*thermistor parameters:
* RT0: 100 000 Ω
* B: 3950 K +- 1%
* T0: 25 C
*/
//These values are in the datasheet
#define RT0 100000 // valore termistore Ω
#define B 3950 // costante??? K
//--------------------------------------
#define VCC 5 // Supply voltage
#define R 100000 // resistenza del partitore R=100KΩ
float RT, VR, ln, TX, T0, VRT;
T0 = 25 + 273.15; //Temperature T0 from datasheet, conversion from Celsius to kelvin
VRT = analogRead(TERMISTORE_PIN); //Acquisition analog value of VRT
VRT = (5.00 / 1023.00) * VRT; //Conversion to voltage
VR = VCC - VRT;
RT = VRT / (VR / R); //Resistance of RT
ln = log(RT / RT0);
TX = (1 / ((ln / B) + (1 / T0))); //Temperature from thermistor
termistore = TX - 273.15; //Conversion to Celsius
Come dicevo, il tutto di per sè funziona. Ho fatto dei test utilizzando come riferimento l'hotend della stampante 3d e le temperature riportate corrispondono (+/- un paio di gradi, ma va bene così).
L'unica cosa che mi lascia perplesso e che vorrei migliorare è il tempo di risposta...
Nel senso che la temperatura segnata dalla stampate sale molto più rapidamente rispetto a quella riportata da arduino. Anche arrivato alla temperatura impostata, arduino impiega diversi secondi a raggiungere lo stesso valore.
Esempio, giusto per essere più chiari:
partenza da temperatura ambiente: entrambi i sensori riportano 15°
faccio salire la temperatura della stampante e il display si aggiorna molto velocemente, mentre arduino lo rincorre rimanendo indietro di acuni gradi (differenza che aumenta aumentando la temperatura)
arrivato a 170° la stampante si assesta in 1 secondo, mentre arduino impiega quasi 10 secondi per arrivare e fermarsi a quella temperatura
Bene, dopo tutta la manfrina arriva la domanda:
ho semplicemente comprato un sesnore lento oppure cambiando qualcosa in quello che ho fatto si riesce a migliorare la risposta?
Con tutta quella massa metallica impiega un po' di tempo per riscaldarsi e raffreddarsi.
Prova una DS18B20, One-Wire in contenitore plastico.
Naturalmente è importante comunque un buon accoppiamento termico.
Ti posso confermare la dritta che ti ha dato @Datman su quel sensore. L'ho utilizzato per un progetto analogo al tuo e funziona molto bene con la libreria One-Wire. Di che tipo di intervallo di temperatura stiamo parlando?
Non so qual è lo scopo del tuo progetto, ma in linea di massima il mio consiglio è :
Se fosse un resistore NTC puro, senza nessun componente discreto accessorio la lentezza non è imputabile alla resistenza NTC perchè si basa su un fenomeno fisico.
Quindi dipende forse dalla velocità di conversione ADC della scheda Arduino che usi che è piu o meno lento rispetto ai convertitore A/D che sono integrati nella scheda di controllo della stampante?
In media Arduino Uno - Nano impiegano tra 16uS e i 130uS per convertire in digitale un segnale analogico quindi direi proprio di no!
Prova a vedere, con il plotter seriale, quanto impiega la scheda ad ricreare il grafico da 15° alla temperatura prestabilita! Dopodiché posta uno screenshot.
Attenzione : Le sonde NTC non gestiscono di norma temperature al di sopra dei 150°C .
Guarda delle sonde PT100 o PT1000 dipende della temperatura massima che devi misurare.
Riguardo le temperature... in realtà non so a che temperatura potrebbe arrivare l'elemento riscaldante che uso (è un ptc). In pratica a me interessa scaldare l'aria (max 40 / 50°) all'interno di un box (tipo essiccatore) e misuro la temperatura ambiente con altri sensori. Sono i valori di questi sensori che mi fanno decidere se accendere o spegnere il riscaldatore.
La sonda ntc la uso solo per monitorare a che temperatura arriva il riscaldatore... un po' per curiosità e un po' per fare altre valutazioni.
Come detto sopra, non ho il datasheet del ntc che ho comprato. Cercando in rete ho trovato questo NTC-3950-100K.pdf (462.3 KB)
che sembra avere le stesse caratteristiche di quello che uso io (100K 3950) e lo danno buono fino a oltre 200°...
In casa avrei dei ds18b20 (questo), ma li danno fino a 125°...
Riguardo la velocità di arduino... non credo sia quello il problema... sul display la temperatura varia velocemente, ma in ritardo rispetto alla stampante... alcuni secondi di ritardo mi sembrano tanti per essere imputabili alla lentezza del adc di arduino...
Stiamo facendo confusione...
Allora come ho scritto non è possibile che la conversione AD sia lenta!
Appunto per questo il problema non è nella conversione:
Il tuo sensore NTC arriva fino a 125°C c'è scritto nelle specifiche del link che hai postato.
Qual è il tuo dispositivo di output un altro display?
Aaahhhh... che pirla... il tab specifiche non lo guardo quasi mai perché in molti articoli non trovo scritto niente di utile... chiedo scusa per la svista...
Perfetto, appurato ciò valutiamo i valori dai 15°C ai 125°C.
Fai la prova che ti menzionato prima, invece di utilizzare come dispositivo di output solo il display, usa in contemporanea il plotter seriale o anche solo il monitor seriale. E' sufficiente usare Serial.println e visualizza i valori anche sul display. Per il momento non tenere conto dei valori del display della stampante. I sostanza dobbiamo verificare quanto ci mette il display a scrivere i caratteri. Se output seriale e quello del display coincidono pensiamo ad un altro approccio , nel caso in cui noti un ritardo apprezzabile tra i due scrivilo
PS: il codice è ok!
Nel monitor seriale puoi attivare la funzione timestamp che visualizza l'orario tra un valore e un altro, cosi possiamo ricavare quanto tempo passa da un acquisizione e l'altra!
Ho capito il tuo ragionamento... anche se i secondi di ritardo con cui arriva il sensore/display mi sembrano comunque tanti per essere giustificati solo dalla lentezza del display e della comunicazione tra arduino e display...
Tra l'altro il ritardo diventava più apprezzabile man mano che aumentava la temperatura, quindi potrebbe essere che uscendo dalle specifiche ho tirato il collo al sensore e quindi ha risposto con più calma...
Cmq una prova posso farla, però devo organizzarmi perché la stampante non è comoda al pc... avevo alimentato arduino con un alimentatore.
Intanto grazie.
EDIT:
Avevo temporizzato io le letture una volta al secondo... quindi i valori cambiano una volta al secondo. Ma il ritardo supera abbondantemente i 2 o 3 secondi... arrivato a 170° ha impiegato almeno 7 / 8 secondi per visualizzare il valore corretto.
Questa è una cosa giusta, se aumenta il ritardo all'aumentare della temperatura il problema non è li. Il ritardo deve essere fisso, per quanto detto prima. Strano comunque prova a fare ciò che ho scritto dopo il PS. In estrema ratio prova a cambiare NTC
Come gia vi ha detto Datman, la "lentezza" non e' altro che l'inerzia termica del componente (che li e' sia racchiusa in un tubetto di metallo, che annegata nella resina epossidica), specialmente se si parla di temperatura dell'aria (per cui l'adeguamento "fisico" della temperatura del sensore sara' ancora piu lenta che se, ad esempio, fosse in acqua)
Se vuoi una maggiore velocita' di reazione, devi trovare una NTC con una massa il piu piccola possibile ... quelle per termostati sono o palline da circa 1mm, o componenti SMD tipo 0603 oppure 0402, e sono molto piu veloci (anche se ovviamente non istantanee) nel raggiungere la temperatura dell'aria che le circonda ... un'altra possibilita' potrebbe essere una di quelle NTC che si usano di solito per rilevare le temperature all'interno dei case dei PC, che sono componenti SMD montati su dei circuitini flessibili di Kapton, tipo questi ad esempio
In questo caso il componente e' comunque piccolo, ma il circuito in Kapton offre una superfice un po maggiore del solo componente, inoltre se si fa attenzione si puo eliminare parte del Kapton intorno al sensore (senza intaccare le piste ovviamente) aumentando ancora un po la velocita' di risposta, anche se gia cosi e' comunque molto piu rapida della versione nel tubetto (ovviamente questa non e' stagna, ma mi sembra che per il tuo uso non sia un problema)
A proposito, le NTC standard, tipo queste o quelle incapsulate in resina, possono "reggere" al massimo sui 150 gradi (o meglio, sono piu adatte per queste temperature massima a causa dell'incapsulamento non resistente a temperature molto superiori), mentre quelle incapsulate in vetro, come quelle a goccia delle stampanti 3D o quelle formato diodo in vetro, grosse come gli 1N4148 e simili, arrivano a circa 300 gradi come funzionamento) ... tipo questi
Grazie della risposta.
Mi procurerò un altro ntc che regge temperature maggiori.
Comunque forse non mi sono spiegato bene... la temperatura dell'aria la misuro che dei SHT30. Il ntc è a contatto con l'elemento riscaldante.
Rimane il fatto che all'interno di quel tubetto c'e' della resina epossidica, per cui alcuni secondi di ritardo ci stanno (oltretutto, neppure l'epossidica regge alte temperature, a lungo andare si cuoce e rischi che perda isolamento, interferisca con il valore della NTC e ti sballi il risultato)
Se cerchi NTC 3d trovi un sacco di quelle in vetro a pallina, vendute proprio per le stampanti 3D, di solito le accoppiano al riscaldatore facendo un forellino nel metallo e riempiendolo di grasso termico per dissipatori, ma non sapendo il tipo di riscaldatore che usi tu, dovrebbe bastare semplicemente metterle in contatto, al massimo un pochino (poco, perche' non vada in giro dappertutto) grasso termico nel punto di contatto.
Esistono anche quelle a flangia (sono tipo capicorda con la NTC nel punto in cui di solito viene crimpato il cavo), fatte per essere avvitate sul metallo e rispondere piu velocemente, ma credo siano piu costose e meno reperibili, mentre ormai quelle per le 3D le si trova dappertutto.
In realtà avevo preso questo tipo (a parte aver cannato la temp max) perché in un forum di stampa 3d qualcuno diceva che andavano meglio...
Mi procuro altro materiale e proseguo con i test.