Vai al contenuto
PLC Forum


Convertitore A/d Per Pt100


Messaggi consigliati

Inserito:

Buongiorno a tutti sto cercando di risolvere un enigma, poter leggere una temperatura con una sonda PT100

con un PIC16F84.

Il mio primo esperimento è quello di applicare la sonda su un circuito monostamile fatto con un NE555 e testando il tempo in cui il monostabile passa da 1 a 0, però ho riscontrato 1 problemi, la sonda si scalda e quindi la temperatura sul displai (LCD collegato al PIC) sale. Questo dovuto a una bassa resistenza della sonda PT100 (0° = 100Hom).

quindi mi chiedevo se qualcuno puo aitarmi nel risolvere il problema cioè trovare un convertitore analogico digitale che possa leggere una PT100.

dati esperimento con NE555 in configurazione monostabile:

considerando K=0,385

Valore sonda : Hom=K*Gradi+100

dove 100 è il valore della resistenza a 0°

con un condensatore di 330microfarad

ottengo un ritardo tra un decimale di un grado e l'altro di 13,9775micro secondi


Matteo Montanari
Inserita: (modificato)

Premessa:

utilizzare un generatore di correnete costante per alimentare la PT100. lo puoi realizzare con un LM317, per il corretto circuito puoi guardare nella documentazione relativa all'integrato.

normalmente la corrente costante deve essere di 12,5 mA, in questo modo viene generata una tensione lineare di ingresso di 5 mV per grado Celsius (°C)

utilizzando l'ingresso del PIC come "analogico" puoi misurare la tensione e di conseguenza la temperatura.

p.s. il generatore di corrente costante deve essere collegato ai due fili della PT100, esempio corrente sul rosso e massa sul bianco, il filo rosso deve essere collegato all'ingresso analogico del pic, mentre il filo bianco a massa.

in alternativa puoi utilizzare un modulo di conversione da PT100 a 0..10V o 4..20mA e farti il circuito di "adattamento".

Modificato: da keosmm
Inserita: (modificato)

Solitamente si consigliano correnti <<10 mA, per stare al di sotto dei 10mW di dissipazione, perchè altrimenti la misura di temperatura potrebbe essere inficiata dal leggero riscaldamento della resistenza.

Poi dipende dal campo di temperatura in cui si vuole eseguire le misure. Se si misurano temperature <=100C non è necessario linearizzare la misura, altrimenti è il caso di farlo.

Poi se non ricordo male il 16F84 non dispone di A/D, sarebbe meglio passare ad un 16F876.

Infine sarebbe il caso di prevedere un collegamento a 3 fili, in modo da annullare la resistenza dei collegamenti.

Per fare un lavoro decente dvi mettere in preventivo 3 stadi di amplificazione: uno per generare la corrente costante e due per amplificazione in tensione. Se usi un operazionale come, ad esempio, LM324 hai quattro ampli disponibili, te ne avanza uno. :)

Modificato: da Livio Orsini
Inserita:

Grazie per i Vs.iterventi.

Sto cercando di fare un termoregolatore programmato per liquidi da 0°C a 150°C con intervallo di 0,1°C possibile che non esista un convertitore A/D per PT100 che possa essere letto da un PIC16F84.

Il problema è che cambiando processore (PIC16F876) ,non ho il circuito per programmarlo (Multipippo), in secondo luogo ho letto che esiste un bit che commuta alla fine del ciclo di scansione della porta A/D pero, non mi dice in quanto tempo realizza tale scansione e utilizzando l'interrupt su TMRO per calcolare il tempo in secondi, non capisco come gestirlo.

Tornando a noi se qualcuno puo aiutarmi con schemi già fatti o da modificare gli sarei grato.

ciao

Fabio

Inserita:

Il problema che il 16F84 è uno dei più poveri, non ha neanche il bus SPI/I2C. Però puoi usare 3 porte, una come DataIn, la seconda come DataOut e la terza come clock, scirverti il software; in rete trovi numerosi esempi di funzioni per I2C (che è simile allo SPI solo che ha il dato bidirezionale) con il 16F84. Poi usi un A/D converter con SPI bus o I2C ne esisto parecchi tipi della Maxim, BB e AD.

Se poi frughi bene nelle AN della microchip trovi anche come fare un A/D_C con PIC che ne sono sprovvisti. Ne avevo vista una alcuni anni orsono.

Leggere diretamente la PT100 con un A/D è praticamente impossibile. Puoi misurare la resistenza, però per misurare la resistenza bisogna far scorrere una corrente e misurare la cdt ai capi della resistenza incognita. Come ti ho detto in precedenza la corrente non deve superare pochi mA per evitare un riscaldamento della sonda. Anche un minimom riscaldamento inficia la misura. Con 0.385 ohm/C hai meno di 1mV/C, anche portando al limite la corrente superi di poco il mV. Quindi sei costretto ad amplificare per forza.

Inserita:

GALU leggi l'application note AN512 della microchip, sembra fatta apposta per te

Inserita:

Grazie Livio, ho appena scaricato il tutto dal sito microchip, mi servirà un po di tempo per tradurre il tutto.

Sai dirmi con che programma si apre il .CFG e .PJT?

Scusa la mia ignoranza ma è da poco che faccio esterimenti con il PIC. Sai dirmi la differenza tra 16C5X e 16F84 oppure se esiste un sito (in italiano) dove spiegano le differenze tra i vari PIC?

ciao, Fabio

Inserita: (modificato)
Sai dirmi con che programma si apre il .CFG e .PJT?

Sono due files di ambiente MPLAB (se non lo hai ancora fatto scarica l'ultima versione da microchip; è free). MPLAB è l'ambiente di sviluppo per tutti i PIC e dsPIC. i due files dovrebberoessere. configurazione e progetto.

Le differenze tra 16Cxxx e 16Fxxx sono, per prima cosa, il tipo di memoria. Nel caso dei 16C è del tipo EPROM o OTP, nel caso dei 16F è Flash, quindi facilmente riprogrammabile.

Per le differenze tra un tipo e l'altro devi conforntare i datasheets. Sul sito micrchip ci sono tabelle comparative e riassuntive di tutti i controlori di loro produzione.

TI consiglio vivamente di navigare ed esplorare questo sito: è una vera miniera di info e idee :)

I italiano trovi un corso propedeutico al sito di Sergio Tanzilli (è anche abbinato all'AreaSX), trovi anche info nel sito Fisertek ed in molti altri. Fai una rcerca con google e verrai sommerso

Modificato: da Livio Orsini
Inserita:

Grazie Livio, sto cercando di capire il file (OHMETER.ASM) e ho trovato le seguenti difficoltà:

trovo la direttiva EQU usata come file registre (RES). Io ho sempre considerato la EQU per definire delle costanti simboliche non modificabili . Forse sono in sbaglio?

Mi trovo in oltre:

MOVLW B'00001111'

TRIS 5

cosa significa "TRIS 5"

La formula per il calcolo ci C nel file 00512e.pdf non riesco a capire IN cosa sta ad indicare.

In oltre una volta ricavato il dato con il PIC16C54 riesco a trasferire il dato sul PIC 16F84?

Ciao da Fabio

Inserita:

EQU, secondo quanto dice MPASM Reference Guide, definisce una costante assembler secondo la sintassi: <label> equ <espreessione>

TRIS 5 dovrebbe essere l'equivalente di TRISA, cioè il registro di configurazione della porta A del pic16C84

Pag.2, prima formula,calcolo della capacità; non vedo IN, come non lo vedo in tutta l'AN (mi sarà sfuggito)

Devi trasporre l'asm del PIC16C84 in quello del PIC16F84, che è quasi identico, salvo qualche indirizzo e qaulche dettaglio di configurazione.

Inserita:

La formula a pag. 2 parla di:

RM * IN(1-VT/VR)

quello che non capisco è quel IN che non viene specificato.

Se la EQU definisce una costante assembler perchè montando il surce su mplab le vede come registri modificabili:

es:

ACCA EQU 8

-

-

INCFSZ ACCA+1, F

Grazie Livio per la tua disponibilità.

__________

Ciao, Fabio

Inserita:

Si non avevo notato nell'occhiata veloce con zoom piccolo. IN è il numero di istruzioni, lo spiega chiaramente nell'esempio di calcolo.

La direttiva EQU, comune a tutti gli assembler e significa "equate" ==> "equivalente" o "fatto uguale a", identifica un dato o un indirizzo. Puoi scrivere "pippo EQU primo" oppure "pippo EQU 1fe", se primo == 1fe; se poi scrivi "pippo+1" equivale a 1ff. Può essere un valore (dato) o un indirizzo. Nel caso di ACCA è un indirizzo della RAM interna.

Inserita:

Ok ora mi è tutto più chiaro, ritorno allo studio perchè non ho ancora capito come funziona il tutto ma prima o poi ci riesco.

approposito non esiste un software per emulare in pieno questo surce a parte mplab?

-------------

ciao Fabio

Inserita:

Forse si, ma te lo sconsiglio. Con MPLAB sei sicuro dei risultati :)

Inserita:

Sto cercando di tradurre il surce, (OHMETER.ASM) purtroppo è più difficile di quanto sembra.

cominciamo con le differenze con il 16F84:

1) Usano i registri STATUS , PORTA e TMR0 con i numeri 3 , 5 e 1.

2) Usano :

MOVLW B'00000011' ;SET RA0 AND RA1 HIGH (ON WHEN ACTIVATED)

MOVWF 5

e poi

MOVLW B'00001110' ;ACTIVATE RA0

TRIS 5

il che non è chiaro.

3) Non ho ancora capito come si riesce a crpire il valore della Resistenza .

_________________

ciao, Fabio

Inserita:

E' una questione formale, se leggi bene il datasheet del C84 troverai che quei numeri dovrebbero corrispondere ad un indirizzo fisico. Mentre i nomi sono indirizzi simbolici. Nelfile di include, che di solito si usa con i 16Gxxx, vengono dichiarate le corrispondenze simbolico-->assoluto.

Probabilmente c'è un lapsus nei commenti

Quale resistenza? RM è quella da misurare, RC la determini in funzione dle tempo di carica del C

Inserita:

quello che volevo dire è che prima di convertire il source per il 16F84, devo capire il funzionamento logico.

Considerando che i datasheet sono tutti in inglese "tecnico" sono difficili da comprendere.

tornando al source qualcuno sa spiegarmi il funzionamento logico per ricavare RM?

Per ora non ho ancora trovato le corrispondenze simbolico-->assoluto ho controllato nel files .lst, alla fine da le corrispondenze delle label.

Source-

persiste, da notti insonne, la domanda:

cosa si intende per 5 ?

Viene usato in due modi diversi

MOVLW B'00000011' ;SET RA0 AND RA1 HIGH (ON WHEN ACTIVATED)

MOVWF 5

e poi

MOVLW B'00001110' ;ACTIVATE RA0

TRIS 5

Se 5 è inteso come "TRISA" cosa significa "MOVWF 5"?

--------------------

Ciao, Fabio

Inserita:
MOVLW B'00000011' ;SET RA0 AND RA1 HIGH (ON WHEN ACTIVATED)

MOVWF 5

e poi

MOVLW B'00001110' ;ACTIVATE RA0

TRIS 5

Se 5 è inteso come "TRISA" cosa significa "MOVWF 5"?

Significa la medesima cosa.

Per comprendere come avviene la misura della resistenza, se veramente vuoi capire la teoria ed i principii che stanno alla base della misura,devi studiare come avvengono le conversioni analogico-digitale. Le metodologie seguono due strade principali.

La più antica e precisa consiste nelle comparazioni successive, fino a che la differenza tra compione e grandezza incognita sia inferior ad una soglia prefissata (1 bit). lavoravono in questo modo i voltmetri per comaprazione. Lo strumento disponeva di un generatore di tensione con valore noto e preciso. Questo valore andava ad alimentare un partitore con diverse decadi in cascata. Un galvanometro comparava la tensione del partitore con quella da misurare. Veniva variato il valore della tensione in uscita dal partitore, agendo sulle decadi resistive, fino a che il galvanometro indicava corente prossima allo zero, cioè le 2 tensioni erano in equilibrio.

Ci sono A/D che lavorano in questo modo, cioè per approssimazioni successive.

Nel caso in esame si usa un'altra tecnica, meno precisa ma più veloce e più immune ai disturbi. La tecnica pe integrazione. Si fa caricare un condensatore attraverso una corrente dipendente dalla tensione da misurare. Il tempo che impiega la tensione ai capi del condensatore per raggiungere indica il valore di tensione.

Nel caso della misura della resistenza il procedimento è analogo. La resistenza è alimentata con una tensione nota ed il suo valore determina la corrente di carica del Condensatore.

QUesto in linea di principio

  • 6 months later...
Inserita: (modificato)

Un saluto a tutti.

Purtroppo ho dovuto abbandonare per un po di tempo il mio progetto ora sono tornato all'attacco

spero di non essere noioso.

Il mio progetto è quello di realizzare un termoprogrammatore.

Tramite un PIC16F84 e una sonda PT100 poter visualizzare su un lcd 16x2 la temperatura dell'acqua con una precisione del 0,1°C e un scala da 0°C a 110°C.

Girovagando su internet ho trovato:

ww1.microchip.com/downloads/en/AppNotes/00687b.pdf

In Figura 5 mostra il collegamento di una PT100 collegata ad un integrato MCP3201 (convertitore A/D).

Ho scaricato il Dataseet ma purtroppo non ho capito come funziona per poterlo applicare al mio PIC16F84.

Spero che qualcono lo conosca per darmi qualche indicazione sul funzionamento e per poterlo abbinare al mio PIC

Modificato: da GALU

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...