Discussioni di carattere generale sull'elettronica analogica e digitale. Didattica e applicazioni pratiche.
#12354
Attualmente ho una generica termocoppia TC che viene letta da un generico controllore C (FOTO AS_IS).
Io vorrei leggere la temperatura con un max6675 (MAX) e tramite un relè governare la lettura di C. Ovvero fargli leggere il valore vero di TC oppure fargli credere che ci sia un altra temperatura passando da delle resistenze(come in foto goal).
Ora non sono un elettronico, ma vorrei capire se posso avere problemi di lettura sporca, cortocircuito, ritorno di corrente o che altro...
Se non è possibile leggere la temperatura contemporaneamente posso sempre fare in modo che mentre uno legge l'altro venga isolato... ma vorrei capire se può funzionare già così.
Allegati
goal.jpg
asis.jpg
#12355
Suppongo che si tratti di una discussione puramente teorica, in quanto NON puoi collegare direttamente una termocoppia
ad un "generico" microcontroller (supponendo che tu intenda contollore=microcontroller)
Occorre metterci qualcosa in mezzo. Ad esempio il MAX citato.

La connessione "as is" ha senso solo se C è circuito complesso che dispone di un ingresso specifico per la termocoppia usata.

Peraltro, mettere qualcosa in parallelo alla termocoppia non è sicuramente una buona idea per la correttezza delle letture.
#12356
dades1988 ha scritto:Attualmente ho una generica termocoppia TC che viene letta da un generico controllore. Io vorrei leggere la temperatura con un max6675[CUT]


Una termocoppia K fornisce in uscita una tensione, vedi pagina 4 del datasheet del max6675
https://datasheets.maximintegrated.com/en/ds/MAX6675.pdf
For a type-K thermocouple, the voltage changes by 41μV/°C, which approximates the
thermocouple characteristic with the following linear equation:
VOUT = (41μV / °C) x (TR - TAMB)
Where:
VOUT is the thermocouple output voltage (μV).
TR is the temperature of the remote thermocouple junction (°C).
TAMB is the ambient temperature (°C).


Per avere la temperatura simulata a te servirebbe un generatore di tensione che fornisca 41 microvolt per grado.
Se la TC è a 50 gradi (giunto caldo) e l'ambiente è a 20 gradi (giunto freddo) avrai una uscita di (30-25) x 41uV= 1.23 millivolt.
Se si devono simulare 50 gradi e l'ambiente è a 20 gradi allora servono circa 1.2 millivolt da mandare al al max6675.
Se si devono simulare 200 gradi e l'ambiente è a 25 gradi allora servono circa 7.4 millivolt da mandare al al max6675.

Sono molto pochi per generarli in modo accurato, stabile e senza rumore visto che bastano 41 microvolt per spostare la lettura di un grado. E non è neppure semplice trasferire qualche millivolt senza rumore (e senza tensioni aggiuntive di possibili contatti bimetallici o peggio ossidati)

Se per connettersi al micro non è indispensabile usare una termocoppia e relativo max6675 è meglio usare un buon NTC (resistenza a coefficiente di temeperatura negativo) per la lettura reale ed un resistore calibrato (e a bassissimo coefficiente termico) per la lettura simulata. Lo si puo' alimnetare a corrente costante e leggere la caduta con l'ADC del microcontrollore. Serve calibrare la lettura con una equazione quadratica (i coefficienti li trovi in rete) per seguire la curva semiparabolica resistenza vs temperatura del NTC.

Puoi anche usare un altro microcontrollore programmandolo per produrre lo stesso segnale digitale generato dal max6675+TC: con un potenziomentro esterno puoi simulare la lettura della TC a qualunque temperatura, Commutare a livello digitale l'uscita del max3375 e quella del "simulatore" è cosa abbastanza semplice.

Pero' i miei ricordi del corso di misure sono lontani nel tempo , quindi prendi il tutto cum grano salis....
#12368
In realtà ho scoperto che non è una termocoppia, ma un termistore (da 10Kohm a 25 gradi celsiuls). Per cui non posso usare il max6675. Comunque l'idea di base rimane la stessa (però per effettuare le misurazioni userei un esp8266). Quindi usare il circuito in allegato nel seguente modo:
    1)Quando S1 va a TH, S2 viene aperto e il mio esp8266 non legge la temperatura, mentre C legge la temperatura reale.
    2)Quando S1 va su R1, S2 è chiuso e il mio esp8266 legge la temperatura, mentre C legge la temperatura falsa.

R1 è un resistore per la temperatura falsa. R2 è una resistenza da 10 kohm.
S1 e S2 sono due relè.
A0 è il pin adc dell'esp8266.

E' corretto? Esiste una soluzione migliore?
Allegati
IMG-20220902-WA0001.jpg
#12370
Dipende da cosa vuoi fare, se vuoi un circuito "dimostrativo" oppure un circuito che "misuri" dignitosamente la temperatura con un NTC

1) un NCT è una resistenza , quindi per leggerne il valore con una ADC devi ottenere una tensione
2) il metodo più semplice è creare un partitore di tensione con una resistenza di riferimento che deve avere un coefficiente di temperatura il più basso possibile ( altrimenti anche lei diventa un NTC/PTC ed il partitore va a spasso)
3) il riferimento dell'ADC deve essere lo stesso di quello del partitore, altrimenti il riferimento dell'ADC e il riferimento del partitore vanno a spasso in modo differente
4) in alternativa puoi usare un generatore di corrente costante (anche lui stabile in temperatura) per alimentare la resistenza e quindi misurare la caduta di tensione

4) non è finita: la curva temperatura/resistenza dell'NTC è grosso modo parabolica quindi devi linearizzare o approssimare tale curva
4a) misuri la resistenza in due punti nel range che ti interessa (es 10-70 gradi) e poi ricavi la retta approssimante. Si studia a scuola come si ricavano i coefficienti A e B di una retta y= Ax+B che passa per due punti noti (T1,R1 e T2,R2)
4b) usi l'equazione logaritmica di Steinhart ed Hart https://it.wikipedia.org/wiki/Equazione_di_Steinhart-Hart e cerchi in rete i coefficienti per il tuo NTC . Il C++ di AVR (usato anche da arduino ed esp) gestisce il logaritmo in virgola mobile sia in <base 10> che in <base e> float a=log10f( xx.dd); float b= logf(xx.dd); .Probabilmente la funzione è parecchio lenta.

5) per la temperatura fittizia ha i due possibilità che non prevedono alcuna commutazione fisica:
5a) quella proposta da Mars creando una variabile interna al codice, sia fissa che modificabile con un potenziomentro esterno: selezioni le due letture (esterna vera ed interna fittizia) con un ingresso digitale
5b) usi un resistore calibrato a bassissimo coefficiente termico che leggi con un secondo ingresso analogico: le due letture esterne (reale e fittizia) le selezioni con un ingresso digitale. Se non ti serve un riferimento fittizio preciso e stabile puoi usare un potenziometro di buona qualità, ad esempio lineare ed a filo.

Qui trovi qualche info da chi i termistori li vende, ma in rete trovi tutto quello che ti serve
https://it.omega.com/prodinfo/termistori.html
https://it.omega.com/temperature/Z/pdf/z256-257.pdf

Buon lavoro!
Dimmer su aspirazione

Ciao a tutti ho una ventola di aspirazione in came[…]

Visita il nostro canale telegram