Jump to content
PLC Forum


Sign in to follow this  
slavin89

Interfacciare Pic 16F877 A Pt100Ohm

Recommended Posts


Livio Orsini

Probabilmente stai usando variabili intere con segno. Un intero con segno positivo ha come valore massimo 32767, ovvero 7FFh . I valori negativi vanno da FFFFh == -1 a 8000h == -32768; quindi se leggi 65515 == -20, in altri termini devi fare eseguire il complemento a 2.

Questo è il complemento a 2 Però se fai una ricerca con google trovi un'infinità di links, compresi calcolatori on line di questo complemento.

Oppure puoi fare in conti in real.

Share this post


Link to post
Share on other sites
slavin89

non ci arrivo

while(ADGO)

{continue;}

// mi calcolo il valore numerico restituito dal convertitore

// tenendo conto che ho scelto la giustificazione a sinistra

valore=ADRESL + (ADRESH<<8);

// mi posiziono per scrivere il valore numerico

LCD_GOTO(1,11); //

LCD_PUTUN(valore);

// cancello parte restante, questo per evitare che mi trascino caratteri sull'LCD

// quando da un numero a più cifre passo a un numero con meno cifre

LCD_PUTS(" ");

tensione=(valore*740); // valore in millivolt,

temp=((tensione/1000)-200);

LCD_GOTO(2,11);

LCD_PUTUN(temp);// parte intera dei volts

LCD_PUTS(",");//

LCD_PUTUN(tensione%1000);//

questa è la parte di programma per eseguire la conversione da bit a gradi

per useguire il complemento a due dovrei partire dal numero binario, invertire il primo bit ed aggiungere 1 ma questo dovrei farla al valore di temperatura solo che non lo posso fare perchè i calcoli che sto facendo sono già in numeri decimali..

non capisco come fare

Share this post


Link to post
Share on other sites
Livio Orsini

Esegui il calcolo in real e non hai problemi, oppure dichiara la variabile come intero con segno. Attenzione che in questo modo limiti la variabile a +/- 32767.

Share this post


Link to post
Share on other sites
slavin89

Esegui il calcolo in real e non hai problemi
, oppure dichiara la variabile
come intero con segno
. Attenzione che in questo modo limiti la variabile a +/- 32767.

cioè calcolo in binario?

e poi cosa cambia tra fare i conti con un int con segno o un long con segno?

Share this post


Link to post
Share on other sites
Livio Orsini
cioè calcolo in binario?

NOOO! Real ovvero numeri reali. Si divhiara la variabile real.

e poi cosa cambia tra fare i conti con un int con segno o un long con segno?

Solo il limite. Se hai dichiarato la variabile long con segno non dovresti avere il problema che segnali. Sei sicuro che è una variabile con segno?

Share this post


Link to post
Share on other sites
slavin89

ciao a tutti

dopo aver risolto il problema del segno..eseguendo il complemento a due

sto tentando di tarare il range dello strumento

rifacendo un po meglio i cablaggi ho rilevato che a 1023 count sono fuori con la resistenza ovvero sono da tabella oltre i 600°C

all'incirca a 380Ohm arrivo ad avere 1023 count..

come potrei risolvere questo problema?..perchè se amplifico di più il segnale è peggio ancora ma se lo ampifico meno non arriverò mai ad aver 1023 count..penso

Share this post


Link to post
Share on other sites
Livio Orsini
.perchè se amplifico di più il segnale è peggio ancora..

No se amplifichi maggiormente arrivi prima al limite di 1023 counts.

Share this post


Link to post
Share on other sites
slavin89

si però il valore -200 mi vaa qualche count e non arriverò mai a 0 count

Share this post


Link to post
Share on other sites
Livio Orsini

Devi correggere con l'offset. Perbacco un po' di iniziativa. :smile:

Share this post


Link to post
Share on other sites
Livio Orsini

Se vuoi mantenere tutta la gamma di conversione l'offset deve essere Hw in modo da riportare la tensione prossima allo zero quando sei al limite basso di temperatura. Se noti, sullo sche dell'interfaccia che ho messo sul forum, ci sono 2 potenziometri: uno per lo zero e l'altro per il fondo scala.

Share this post


Link to post
Share on other sites
slavin89

si sul tuo circuito ho notato che ci sono quei due trimmer molto molto comodi ma purtroppo sul circuito che sto usando io che ti riporto nuovamente questi due trimmer purtroppo non ci sono quindi se non individuo quali resistenze servono per gain e zero non riuscirò mai a farlo. per quanto riguarda il gain me lo hai già indicato basta sostituire r11 con un trimmer ma per lo zero secondo te su quale resistenza posso andare ad agire per regolarlo?

non sono sicuro che questo circuito lo preveda

dall'alto della mia ignoranza direi che:

r11 ed r10 mi determinano il guadagno

r12 + condensatore in quel ramo servono a determinare la banda del filtro

rimangono r8 ed r9 che onestamente non penso siano da attribuire allo zero

tutte queste sono considerazioni da ignorante e ne sono pienamente consapevole

di seguito il link dell'interfaccia se volessi darci un'occhio per dirmi la tua opinione

http://forum.chipmk....19931_thumb.jpg

Share this post


Link to post
Share on other sites
Livio Orsini

Purtroppo puoi agire solo sulla Rref, variando la corrente; se aumenti la Rref diminuisci il valore di corrente e, a parità di valore della PT100, avrai meno tensione. In questo modo recuperi il poco di offset sull limite inferiore e, diminuendo la corrente, diminuisci anche l'auto riscaldamento dell PT100 (1 mA è proprio il valore limite di corrente).

Purtroppo quando ritocchi lo zero devi poi anche ritoccare il fondo scala; questa è la ragione per cui si usano 2 potenziometri, almeno se si mette a punto un prototipo. Poi si possono sostituire i potenziometri con resistori di precisione.

Share this post


Link to post
Share on other sites
slavin89

comincio a pensare che questo circuito proposto dalla microchip non sia poi cosi buono..insomma non dico che debba essere preciso al 100% ma un'errore di 100° a fondo scala mi sembra un'esagerazione..mettiamoci pure che i resistori potrebbero essere migliori di quelli che ho usato io e mettiamoci una basetta meglio costruita ma non credo che possano farmi rientrare 100° di errore..

quell'integrato della maxim che stavi invece provando per interfacciare la pt100 ha dato qualche sviluppo?

Share this post


Link to post
Share on other sites
Livio Orsini

Scusa ma non capisoc proprio come può esserci un simile errore. Forse sei tu che credi di ottenere qaulche cosa di non previsto dall'applicazione. O forse samnetti troppo il circuito, senza metodo, e non riesci a fare una taratura.

Ti ho già spiegato che, a mio parere, vuoi usare una scala troppo ampia. Però 100C di errore....via hai compbinato qualche percheria di cui non tirendi conto. :smile:

A parte il fatto che quell'AN prevede di lavorare in un modo ben preciso, che è differente da quello che stai facendo tu. Però interfacciare una PT100 sono decenni che si fa senza eccessivi problemi, ancora da prima che esistessero gli Amplificatori Operazionali Integrati; se fai conto che il µA709 è comparso a fine anni '60 puoi regolarti. :smile:

Il circuito, di cui ho messo lo schema, funziona tranquillamente anche con un LM324. Ovviamente con un AO così povero le prestazioni in stabilità son quelle che sono, comunque io ne ho tenuto uno sotto prova per una settimana e lo scostamento era nella tolleranza della termoresistenza.

Share this post


Link to post
Share on other sites
slavin89

il circuito proposto dalla microchip lavora su un campo -200÷600°C e non sono io ad averlo deciso ma viene dichiarato nel datasheet se funzionasse da 0 a 200° mi adatterei a quel range visto che sto solo facendo degli esperimenti.

Perchè dici che lo sto facendo lavorare in un'altro modo? ho riprodotto il circuito esattamente com'è nello schema l'unica cosa è che loro utilizzano un convertitore esterno, io utilizzo quello interno del pic..non mi pare di utilizzare il circuito in modo improprio..

per vedere l'errore che mi da il circuito non ho fatto altro che costruire il circuito metterci al posto che una tr un calibratore e simulato le varie temperature, non mi pare sia una porcheria come sistema anzi..

il software prevede, come da tuoi consigli, di utilizzare una costante per convertire da count a °C. e anche qui mi pare che non ci possano essere grossi errori..

se ho 1023 count e un range di 800° (da -200 a 600 dichiarati dal datasheet) la costante sarà per forza di cose 0,782 ossia 1 count =0,782°C e anche qui mi pare che non ci sia molto spazio per interpretazioni.

detto questo so di non avere grossa esperienza ma mi pare che i procedimenti siano corretti..

non sto giudicando il tuo di circuito dato che non lo sto utilizzando..ho chiesto solo aiuto perchè sviluppandone una della microchip che ho riportato , non riesco ad ottenere i valori corretti

Share this post


Link to post
Share on other sites
Livio Orsini
ho riprodotto il circuito esattamente com'è nello schema l'unica cosa è che loro utilizzano un convertitore esterno, io utilizzo quello interno del pic..non mi pare di utilizzare il circuito in modo improprio..

Osserva bene il circuito originale con quel convertitore; se la differenza fosse solo il convertitore A/D dovresti avere i medesimi risultati. Se i risultati son differenti ci deve essere una differenza circuitale.

e anche qui mi pare che non ci sia molto spazio per interpretazioni.

Stando alle tue ddichiarazioni hai un'errore di 100C, come lo spieghi?

non sto giudicando il tuo di circuito

Ci mancherebbe anche questo. ;)

Se non ottieni i risultati che sono indicati nell'AN Micrichip ci sono solo 3 possibilità:

  1. Application Note completamente errata: molto improbabile.
  2. Circuito mal realizzato
  3. Software sbagliato.

Come verificare il circuito te l'ho spiegto più volte in modi differenti. Se la tensione che metti all'ingresso dello A/D è quella che deve essere allora il problema è nei calcoli che fai.

Non è il circuito dell'elttronica di stazione spaziale, son solo una decina di componenti, verificare che tutta la parte analogiaca si comporti correttamente non è uno sforzo sovrumano.

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
slavin89

non dico che lo sia ma sicuramente non è facile per me ma nonostante tutto ci provo se per te è cosi tanto facile scusa tanto non siamo tutti cosi bravi.

Ci provo, non ci riesco e chiedo consigli ma non c'è scritto da nessuna parte che qualcuno sia obbligato a rispondere; uno di solito lo fa se si sente di voler aiutare e in quel caso lo fa tenendo conto del fatto che dall'altra parte potrebbe esserci qualcuno meno bravo di lui che cerca di imparare

comunque mi pare che non hai più pazienza per questa cosa e quindi ti ringrazio per l'aiuto datomi fin'ora e mi scusa per l'insistenza in qualche modo farò

Share this post


Link to post
Share on other sites
Livio Migliaresi
mi pare che non hai più pazienza per questa cosa e quindi ti ringrazio per l'aiuto datomi fin'ora e mi scusa per l'insistenza in qualche modo farò

:o

Dove hai letto che Livio non abbia pazienza???

Non è una difesa d'ufficio la mia, ma, quello che mi lascia perplesso è quando non ci si rende conto di dover approfittare della conoscenza altrui per accrescere la propria:

cosa voglio dire??

Che Livio è un maestro e ha non solo la conoscenza, ma, la capacità di insegnare!!!

Approfitta e......carpisci quante più informazioni possibili!!!!!!

Ti assicuro che nella mia lunga carriera di studi non ho trovato molti docenti che offrivano; insegnavano, ma, spesso senza saper offrire!!!!!

Share this post


Link to post
Share on other sites
slavin89

l'ho capito che è un maestro ed ho molta stima di lui e come ho già detto sono spupefatto dalla sua disponibilità e dalla sua bravura che mai mi sarei aspettato di trovare.

sono io il primo che approfitta delle spiegazioni degli altri per assorbire più informazioni che posso e sono disponibile a ricevere consigli e critiche senza alcun problema purchè le critiche siano costruttive.

non mi piace essere preso in giro se non capisco qualcosa tanto più se poi non me ne viene spiegata la soluzione.

se non va vuol dire che hai sbagliato per me non vuol dire nulla.

è chiaro che il problema è un errore software o hardware mio nessuno dice nulla ma non mi serve che qualcuno me lo dica ma che qualcuno se vuole mi aiuti a capire dove sbaglio

sia chiaro che non è una critica solo una spiegazione

Share this post


Link to post
Share on other sites
Livio Orsini

slavin89, un po' meno di suscittibilità ed un po' più di pazienza da parte tua ti aiuterebbero molto.

Forse dovresti anche sforzarti di capire quello che ti scrivo, visto che scambi i consigli per "prese in giro".

Ti ho ripetuto almeno 2 volte la procedura per ricercare gli eventuali guasti e come mettere a punto il circuito. ma io ho l'impressione che tu continui a fare prove "ad libitum" ed a lamentarti perchè io no ti risolvo il problema.

Purtroppo, oltre alla conoscenza tecnica, per mettere a punto qualsiasi circuito-dispositivo è necessaria un'infinita pazienza.

Solo quando conosci perfettamente la materia le cose riescono quasi al primo tentativo.

Ti ho già scritto e ripetuto che per prima cosa devi essere certo che la parte circuitale funzioni correttamente.

Ti ripeto per l'ultima volta i passi da compiere.

  1. Scollega l'uscita dell'amplificatore dal micro. Collega al posto della PT100 un resistore con l'esatto valore che avrebbe la sonda a -200C (se vuoi continuare con questi limiti). Aggiusta i valori della Rref per ottenere poco più di 0V in uscita.
  2. Cambia il volore del resistore con quello che dovrebbe assumere la sonda a +600 C. Adatta i valori dei resistori che determinano il guadagno in modo da ottnere in uscita un valore prossimo a 5 V che è il limite dell'A/D del PIC.
  3. Ripeti i punti 1 e 2 sino a che non sia più necessario ritoccare le tarature.
  4. Collega un potenziometro, alimentato a 5V, all'ingresso dello A/D del PIC. Verifica che il visualizzatore indichi i valori di temperatura che variano da -200 C a +600 C. Se questo non avviene devi rivedere sia i valori di conversione sia i conti che fai per visualizzare la temperatura.
  5. Ricolleghi il circuito di misura al PIC e, cambiando, i valori di resitenza devi ritrovare i valori di temperatura previsti.

Share this post


Link to post
Share on other sites
slavin89

ok cercherò di migliorare la mia attenzione ai tuoi consigli..mi scuso

comunque continuando con la sperimentazione

ho sostituito rref e r11 con dei trimmer per poter variare guadagno e zero può andare secondo te?...

al posto di rref ho messo un trimmer da 10k e al posto di r11 un trimmer da 20k

ho fatto delle prove cercando di limitare il campo scala tra 0 e 100°

ho messo un reostato al posto della pt100 , regolato a 100 Ohm, ho cercato di settare lo zero ma non riuscivo ad arrivare a 0v allora ho spostato l'inizio scala a -100° spostando il trimmer a 60,25Ohm cosi sono arrivato vicino a 0V

poi ho messo il trimmer a 138,50Ohm cioè 100°C e ho cercato di regolare il fondo scala col trimmer del guadagno però non riuscivo ad arrivare a 5 volt se non andavo a muovere il trimmer di zero..insomma un gatto che si mangia la coda..

ho pensato che forse i trimmer non sono sufficenti ci vuole un campo di resistenza più grande può darsi?..

Share this post


Link to post
Share on other sites
Livio Orsini

L'elettronica è una scienza (quasi) esatta. Prima di fare prove forse sarebbe meglio fare delle vierifiche sulla carta, almeno cosìsi hanno chiari i limiti.

Forse stai iniziando ad affrontare il problema nel modo corretto.

Dovresti però fare ancora un passo indietro: ragionare su come avviene la misura.

Il sensore è un resistore che varia il valore di resistenza con una funzione dirette della temperatura in modo quasi lineare per alcuni tratti.

Per effettuare la misura del valore di resitenza si esegue la meodologia classica. si fa scorrere nel resistore un valore di corrente costante ed in dipendente dal valore di resistenza, poi si misura la tensione ai suoi capi.

Se alimenti il resitore PT100 con una corrente pari ad 1 mA, ai capi del resitore avrai 100 mV con temperatura do 0oC e 138.5 mV quando la temperatura raggiunge il valore di 100oC.

QUindi per questo intervallo di temperatura hai esattamente 38,5 mV. Se vuoi ottenere un intervallo pari a 5 V, dovrai avere un'amplificazione paria a = 5000/38.5 = 129.87 volte circa.

Però se non togli l'offset dei 100 mV iniziali la tua tensione finale avrà un'ascursione da 12,987 V a 17,987 V.

Io ti consiglio di fare due stadi di amplificazione, il primo con guadagno <10 ed il secondo con guadagno di circa 15. fai 2 stadi invertenti, nel primo stadio inserisci un offset per eliminare i 100 mV. usi un amplificatore a doppia alimentazione ed hai risolto il problema (guarda caso è la mia soluzione.)

Non esistono tanti modi differenti per risolvere il problema.

C'è una altro modo: usare un integrato specialisti per queste funzione. Ne esisto alcun i timpi in commercio il più noto è dell TI; tutti però sono piuttosto costosi e dinon facile reperibilità.

E' ragionevole impiegarli per impieghi professionali.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...