AIUTO Resistenza e Termistore

Salve a tutti.

Volevo creare un misuratore di temperatura, col termistore dello starter kit, in modo da poter tenere sotto controllo l’aumento della stessa; sul diodo laser da 5W che sto utilizzando per creare un Laser Engraver.
All’interno dei dissipatori, c’e il diodo laser, sul quale vorrei applicare il termistore.

Finalmente, dopo giorni di ricerca, trovai un codice che comprendeva anche la luminosità, la quale, sono riuscito ad eliminare dal codice stesso; così da farmi visualizzare solo la temperatura sul LCD.

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int pin= A0;
double v;/*voltaggio tra 0 e 1023*/
double volt;/* voltaggio reale tra o e 5 volt*/
double Rt;/* resistenza del termistore*/
double R1=4700;/*valore resistenza in ohm che abbiamo messo noi (sia per termostato da 5 che da 10 k)*/
double temp;/* temperatura in Kelvin*/
double Temperatura;
int stato = 0;

void setup(){
lcd.begin(16, 2);
}

void loop(){
v=analogRead(pin);/*leggiamo il valore della tensione ai capi di R1*/
volt=5*v/1023;// riportiamo la tensine tra 0 e 5 volt con una proporzione
Rt=R1*(5/volt-1);//resistenza del termistore
temp=1/(0.001319+(0.000234125*log(Rt))+(0.0000000876741*log(Rt)*log(Rt)*log(Rt)));/*calcolo la temperatura con la formula di Steinhart-Hart*/
Temperatura=temp-273.15;// gradi Chelsius
lcd.setCursor(0, 0);

lcd.print("Temp C");lcd.print((char)223); lcd.print(": ");

lcd.print(Temperatura);/*stampo il valore della teperatura*/
delay(1000);/*ritardo di un secondo*/
}

(Il valore della temperatura me lo da double, anche se mi piacerebbe avere una singola temperatura e quindi ho provato a seguire il consiglio di una persona che gentilmente aveva postato per un altra:
Innanzitutto ti converti la variabile double in Stringa utilizzando questa sintassi:
String stringa_value = String(valore_double);

Dopodichè converti la Stringa in Char in questo modo… e qui segue un link dal quale non ci ho capito niente :frowning: toCharArray() - Arduino Reference
Se qualche anima pia riuscisse ad aiutarmi anche in questo gliene sarei molto grato.)

Tornando alla resistenza…

Purtroppo, con la resistenza consigliata nel progetto, da 4,7Kohm, mi dava temperature sotto lo zero.
Quando, esternamente c’erano 5 gradi e dentro casa stavo scoppiando.

Ora la ho sostituita, temporaneamente con una da 10Kohm e la temperatura restituitami sembra più nei range.

(20 gradi circa.)

Anche se ho paura, che mettendo resistenze a caso, la temperatura resti comunque non corretta.

Sapreste aiutarmi per questo enigmatico progetto? :smiley:

Grazie a tutti in anticipo,

Cordiali Saluti.

Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO … Grazie. :slight_smile:

… poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink:

Cosa intendi con termistore dello starter kit ? (scusa la domanda, ma non ho uno starter kit, e poi in base al kit potrebbe esserci dentro qualsiasi cosa) ... e' una NTC oppure un sensore da alimentare ?

Se e' una NTC ti basta fare un partitore di tensone (con la NTC ed una resistenza nota, il valore va in base al valore della NTC), leggere la tensione al centro del partitore, e convertirla in temperatura ... ovviamente ti serve sapere il valore della NTC, ed in base alla curva di risposta sul suo datasheet, farti una tabella o un'algoritmo di conversione ...

Pero' personalmente ti consiglierei di usare un sensore alimentato con gia un'uscita lineare proporzionale alla temperatura, come ad esempio un semplice TMP36 (o LM50, o altri simili), che ti da un'uscit gia certa e lineare (750mV a 25C, con una variazione di 10mV per grado), per cui puoi semplicemente leggerlo e fare un map per il campo di temperatura che ti serve, senza bisogno di curve di correzione e simili ...

Anche se non riguarda direttamente la tua domanda, parli di diodo laser da 5W ... potresti dirmi che diodo e' e che tipo di portadiodo usi ? ... lo chiedo perche' i diodi laser da 5W, oltre a non essere di tanti modelli sul mercato, sono abbastanza delicati (oltre che costosi), e mi piacerebbe sapere se lo stai usando correttamente, sia riguardo ai pericoli che pone per gli occhi, sia riguardo all'accoppiamento termico ed alla dissipazione del calore ... ci vuole davvero poco a farlo finire in zona valanga e ritrovarsi con un diodo fuso ...

Allora,

Intanto grazie per la risposta.

Purtroppo ora non posso prendermi un NTC, lo ho anche visto su amazon e vorrei prenderlo insieme ad altre cose non appena potrò.

Questo è il termistore dello starter kit da me comprato. Purtroppo non ho molte informazioni a riguardo...

|500x375

|500x375

Il laser invece, è una cinesata (Max Power 5000mW - 532nm - Class III), quindi estremamente delicato, ne ho tre da poter sacrificare. Se non dovessero andare, vedrò di trovare qualcosa di piu serio.

|500x375

Il laser è incastonato in un vecchio dissipatore per computer con tanto di pasta termica, sul quale ho piazzato un altro pezzo di un altro dissipatore, in modo da convogliare più aria possibile.

Normalmente può restare acceso solo per pochi secondi alla volta, altrimenti già ne risente.

Ma nel primo test sono riuscito, alimentando la ventola al 40% circa, dandole 3.3V al posto di 12V, quindi molto lenta e silenziosa. A lasciarlo acceso 4 ore, alimentandolo con le due batterie stilo AA, senza che ne risentisse minimamente.

|500x375

|500x375

Non appena avrò un misuratore di temperatura, che possa anch'esso essere incastonato, eseguendo un forellino vicino al diodo per poterlo inserire in modo che tocchi le pareti, con tanto di pasta termica.

Eseguirò un secondo test, alimentando il diodo con un alimentatore stabilizzato, che mi dia un voltaggio corretto e costante. In modo da non bruciarlo dandogli quel mezzo volt di troppo.

Il tutto eseguito in totale sicurezza, facendo operare il laser in un ambiente chiuso e sicuro, ove occhio non vede.

Grazie ancora per la risposta,

Saluti

Mars88: ... Questo è il termistore ...

Quindi probabilmente una NTC ... fai presto a vederlo, lo misuri con il tester su ohm, tenendolo per i terminali, e poi lo scaldi con le dita e vedi, se quando la temperatura aumenta il valore diminuisce e' NTC, se invece aumenta e' PTC ...

Il laser invece, è una cinesata ...

Ecco, lo sospettavo ... piu che cinesata e' una fregatura da 5mW (e mi dispiace dovertelo dire) ... una cavita' da 5W a 532nm e' un sistema ottico complesso lungo quasi un metro, e parlo solo della cavita' di conversione, poi a parte ci sono i due laser IR con relativi accoppiamenti a fibra ottica, alimentatori e raffreddatori ad acqua ... tanto per darti un'idea, questa e' una foto dell'interno della sola cavita' di conversione di un modello VERDI da 5W ... del costo di svariate migliaia di Euro, fra l'altro ...

|500x249

Quei rivenditori di cinesate dovrebbero bruciarli in piazza ... se vuoi farti una CNC per incisione (ovviamente, studiando prima tutta la parte relativa alla sicurezza, se vuoi qualche suggerimeno te lo posso dare dato che ci "gioco" da mezza vita, con i laser), puoi optare per un modulo da 445nm o simili, ormai da quando anni fa iniziarono ad usarli nei videoproiettori i prezzi si sono abbassati parecchio ... ma acquistando da una fonte certa e che ti dia una garanzia, per evitare fregature ... e come ulteriore suggerimento, ti consiglierei di iniziare con un modulino di potenza relativamente bassa, questo acquistabile anche su ebay, ma non come penna, qualcosa tipo questo o simili (probabilmente ti renderai conto della differenza rispetto al tuo quando proverai a focalizzarlo in un solo punto per vedere quanto scalda), fare esperimenti (sempre rispettando tutte le norme di sicurezza ed usando occhiali protettivi per laser, gia solo 100mW possono danneggiare la retina dell'occhio in meno di un decimo di secondo, anche di riflesso), e poi passare se lo vorrai a qualcosa di piu potente ...

Ma la prma cosaa da comperare se vuoi giocare con i laser, sono degli occhiali protettivi adatti alla lunghezza d'onda che usi ... ad esempio, per il blu/viola, una cosa del genere (quelli rossi ovviamente) e' sufficente per un modulo da 100mW (il che NON significa che puoi puntarteli negli occhi, neppure con gli occhiali, ma che basta a proteggere da riflessi o esposizioni accidentali ed involontarie, sia chiaro), se poi passerai a potenze superiori servira' qualcosa di meglio, piu costoso ma anche piu sicuro ...

Grazie ancora per l’aiuto che mi date :slight_smile:

Comunque.

Si, è un NTC, dato che la resistenza diminuisce mentre lo scaldo con le dita. :slight_smile:

E nel mentre, ho fatto un paio di test col termometro per la temperatura corporea e contemporaneamente con l’NTC correttamente isolato.

Ed inserendo 9KΩ di resistenza più una in serie variabile da 200Ω, se metto entrambi i termometri in mezzo al gomito, regolando bene quella variabile; sono riuscito ad ottenere la stessa temperatura decimo più decimo meno.

Per il laser, grazie infinite per i consigli. Appena posso mi prendo quello serio e non sta cinesata :stuck_out_tongue:

Quello che vorrei è riuscire a cambiare nel codice e la temperatura “double”:

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int pin= A0;
double v;/*voltaggio tra 0 e 1023*/
double volt;/* voltaggio reale tra o e 5 volt*/
double Rt;/* resistenza del termistore*/
double R1=4700;/*valore resistenza in ohm che abbiamo messo noi (sia per termostato da 5 che da 10 k)*/
double temp;/* temperatura in Kelvin*/
double Temperatura;
int stato = 0;

void setup(){
lcd.begin(16, 2);
}

void loop(){
v=analogRead(pin);/*leggiamo il valore della tensione ai capi di R1*/
volt=5*v/1023;// riportiamo la tensine tra 0 e 5 volt con una proporzione
Rt=R1*(5/volt-1);//resistenza del termistore
temp=1/(0.001319+(0.000234125*log(Rt))+(0.0000000876741*log(Rt)*log(Rt)*log(Rt)));/*calcolo la temperatura con la formula di Steinhart-Hart*/
Temperatura=temp-273.15;// gradi Chelsius
lcd.setCursor(0, 0);

lcd.print("Temp C");lcd.print((char)223); lcd.print(": ");

lcd.print(Temperatura);/*stampo il valore della teperatura*/
delay(1000);/*ritardo di un secondo*/
}

Provando a seguire il consiglio di una persona che gentilmente aveva postato per un altra, come avevo scritto nel post iniziale.

Ho provato più volte a convertire la variabile “double” in Stringa utilizzando la sintassi da loro proposta:
String stringa_value = String(valore_double);

Poi mi sono incasinato ancora di più, mentre provavo a convertire la stringa in char seguendo il link dal quale non ci ho capito niente.
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tochararray/

Se potessi aiutarmi anche in questo, te ne sarei infinitamente grato.
Per lo meno, completerei il progetto del termometro con l’Arduino da tenere da parte per il futuro.

Grazie ancora per la risposta,

Cordiali Saluti :slight_smile: