Pagina 1 di 1

Termostato con PIC

MessaggioInviato: 31 gen 2013, 17:48
da lcua31989
Ciao a tutti,

ho l'esigenza di progettare un termostato con le seguenti caratteristiche:

1) temperatura compresa tra -30 e +30 °C con risoluzione +/- 0.5 °C
2) la temperatura deve essere letta da un trasduttore di temperatura MCP9700 e convertita da un AD a 10 bit
3) la temperatura deve essere stampata su un display 16x2 serie ITACHI.
4) Ci deve essere un'uscita per eccitare il relè, qualora la temperatura ambiente sia inferiore a quella programmata.

Ho tirato giù uno schemino tipo quello che vede qui:



Dalla formula ricavada dal datasheet del sensore di temperatura, ho calcolato queste tensioni:

Vout [-30°C] = 0.2 V
Vout[0°C] = 0.5V
Vout[30°C] = 0.8V

L'ADC del PIC pensavo di configurarlo a 10 bit (per avere più precisone) ed alimentare il PIC 18F1330 a 5 volt.
Così ottengo i seguenti calcoli:

Quanto = Vfs/1024 --> 5/1024 = 0.005V
Quanto% = (Quanto/5)*100 = +-1%

Ho provato a calcolarmi il codice binario del convertitore a 0°C e risulta:

1024 : 5 = 0.5 : x; (1024*0.5)/5=100;

Le mie domande:

1) come converto il valore letto dall'ADC in un valore xx,x °C da stampare sull'LCD?
2) avete qualche suggerimento nei passi precedenti?

P.S. il programma non è ancora stato realizzato, ma sicuramente userò mikroc.

Saluti
Luca

Re: Termostato con PIC

MessaggioInviato: 1 feb 2013, 18:26
da grandegiove
ciao Foto Utentelcua31989

Essendo:

Vout [-30°C] = 0.2 V
Vout[0°C] = 0.5 V
Vout[30°C] = 0.8V


e leggendo con un A/D a 10 bit con tensione di riferimento 5 volt si ricava che la temperatura in gradi centigradi è:

Temperatura= (valoreLettoADC-102,4) / 2,048

Il risultato è in unita di gradi centigradi. Valuta opportunamente il tipo di variabile da utilizzare e le cifre significative in base alla precisione che vuoi ottenere.

Leggi attentamente il capitolo del datasheet relativo al modulodi conversione A/D con lo scopo di settare opportunamente i parametri di integrazione ed ottenere una misura il più stabile possibile.



Buon lavoro! :ok:

Re: Termostato con PIC

MessaggioInviato: 1 feb 2013, 18:31
da Candy
Io progetterei una tensione di riferimento dell'ADC esterna, dalle parti di 1V, stabile, così da avere tutti i dieci bit nel range 0 V / 10 V.

La visualizzazione sul display è sempre e solo una stringa, qiundi, se usi un compilatore C il problema non si pone molto: scali il risultato dello ADC in un intero a piacere e poi lo stampi formattato come credi.

Quindi, innanzi tutto, in che linguaggio programmerai il PIC?

Re: Termostato con PIC

MessaggioInviato: 1 feb 2013, 19:33
da lcua31989
Ciao,

Non ho capito molto bene, cosa intendi con il portare la tensione di rifeeimenro dell'ADC a 1 volt in modo tale da ottenere una tensione tra 0 A 10 volt. Il piccolo va com una Ecc di 5 volt.
Potrei però trasformato quei 0.2 in 1 volt con un A.O. non inerente. Avevo intenzione di usare il C.

Puoi spiegare un Po meglio per cortesia?

Grazie mille ciao...

Re: Termostato con PIC

MessaggioInviato: 2 feb 2013, 0:38
da lcua31989
grandegiove ha scritto:ciao Foto Utentelcua31989

Essendo:

Vout [-30°C] = 0.2 V
Vout[0°C] = 0.5 V
Vout[30°C] = 0.8V


e leggendo con un A/D a 10 bit con tensione di riferimento 5 volt si ricava che la temperatura in gradi centigradi è:

Temperatura= (valoreLettoADC-102,4) / 2,048

Il risultato è in unita di gradi centigradi. Valuta opportunamente il tipo di variabile da utilizzare e le cifre significative in base alla precisione che vuoi ottenere.

Leggi attentamente il capitolo del datasheet relativo al modulodi conversione A/D con lo scopo di settare opportunamente i parametri di integrazione ed ottenere una misura il più stabile possibile.



Buon lavoro! :ok:


Ciao,
Questa tua opzione mi sembra la più sensata ma, non ho capito da dove hai tirato fuori quel 2.048 ?

Grazie lcua31989

Re: Termostato con PIC

MessaggioInviato: 2 feb 2013, 2:15
da Candy
Errore mio di sbaglio: 10 bit da 0 V ad 1 V. 2048 punti.

Re: Termostato con PIC

MessaggioInviato: 3 feb 2013, 9:24
da Paolino
Scusate, ma \[2^{10}=1024\]

Ciao.

Paolo.

Re: Termostato con PIC

MessaggioInviato: 4 feb 2013, 9:25
da grandegiove
Allora Foto Utentelcua31989 ricapitoliamo:

La formula che proponevo si riferiva all'ipotesi di mantenere 5 volt come tensione di riferimento dell'ADC:

Temperatura= (valoreLettoADC-102,4) / 2,048

dove 102,4 è l'offset rispetto a 0 gradi del valore letto dall'ADC (notare che Vout[0°C] = 0.5 V) mentre 2,048 è il coefficiente proporzionale della curva lineare caratteristica del sensore sempre rispetto al valore letto dal modulo ADC.
Per ricavare questi valori è sufficiente ricavare la curva caratteristica dai valor forniti :
Tensione fornita dal trasduttore [volt]= Temperatura[gradi centigradi]*0.01 + 0.5
Operando le opportune proporzioni per adattare la formula al valore digitale convertito(considerando 10 bit e quindi 1024 quanti) si ottiene la formula sopra:
(0.5:5=x:1024 -> x=102.4 )
(0.01:5=x:1024 -> x=2.048 )


Detto questo la proposta di Foto UtenteCandy è quella di utilizzare una tensione di riferimento diversa dai 5 volt visto che i valori di tensione in uscita dal trasduttore saranno compresi fra 0 e 1 volt (temperatura compresa tra -30 e +30 °C ).

Fornendo infatti al PIC una tensione di riferimento di 1 volt sull' opportuno pin (vedi datasheet) si può infatti ottenere una risoluzione teorica 5 volte maggiore rispetto all' utilizzo dei 5 V.
A dire il vero la considerazione di Foto UtenteCandy diventa fondamentale nel momento in cui andiamo a rivedere la risoluzione che si vuole ottenere: +/- 0.5 °C. Nel caso in cui si utilizzino i 5 volt come tensione di riferimento saremmo nelle condizioni limite per garantire la risoluzione come da specifiche. Utilizzare una tensione di riferimento riscalata sembra quindi la strada più opportuna.

La formula dovrà quindi essere adattata alla nuova tensione di riferimento. Foto Utentelcua31989, prova a ricalcolarla, poi la rivediamo insieme.

Buona giornata! :ok:

Re: Termostato con PIC

MessaggioInviato: 4 feb 2013, 21:55
da lcua31989
Ecco i calcoli:

Vfs = 1 volt; bit ADC = 10;

Quanto = Vfs/1024; 1/1024 = 0.00098 V/bit;
Quanto% = (Quanto/Vfs)*100 = 0.098%

Codice ADC a 0 gradi = 1024 : 1 = 0.5 : x -> (1024*0.5)/1 -> 512

Curva 1024 : 1 = 0.001 : x; -> (1024*0.01)/1 -> 10.24

Formula = [(ValoreADC)-512]/10.24

E' corretto?

Re: Termostato con PIC

MessaggioInviato: 5 feb 2013, 10:28
da grandegiove
lcua31989 ha scritto:Codice ADC a 0 gradi = 1024 : 1 = 0.5 : x -> (1024*0.5)/1 -> 512

Curva 1024 : 1 = 0.001 : x; -> (1024*0.01)/1 -> 10.24

Formula = [(ValoreADC)-512]/10.24

E' corretto?


Il risultato è corretto. Ottimo!

Ti è però scappato uno zero nella seconda proporzione. Probabilmente un errore di battitura.

Poi attenzione. Probabilmente il ragionamento è corretto ma entrambe le proporzioni son scritte in modo errato. Devi invertire divisore e dividendo da un lato dell'uguaglianza, se no la proporzione non ha senso, ovvero:

Codice ADC a 0 gradi = 1 : 1024 = 0.5 : x
Curva= 1 : 1024= 0.01 : x;

In questo modo poi il calcolo della x è corretto in quanto se a:b=c:x x=(b*c)/a

Spero sia tutto abbastanza chiaro, un saluto!