GALU Inserito: 31 marzo 2006 Segnala Inserito: 31 marzo 2006 Buongiorno a tutti sto cercando di risolvere un enigma, poter leggere una temperatura con una sonda PT100con 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+100dove 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: 1 aprile 2006 Segnala Inserita: 1 aprile 2006 (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: 1 aprile 2006 da keosmm
Livio Orsini Inserita: 1 aprile 2006 Segnala Inserita: 1 aprile 2006 (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: 1 aprile 2006 da Livio Orsini
GALU Inserita: 3 aprile 2006 Autore Segnala Inserita: 3 aprile 2006 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.ciaoFabio
Livio Orsini Inserita: 3 aprile 2006 Segnala Inserita: 3 aprile 2006 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.
Livio Orsini Inserita: 4 aprile 2006 Segnala Inserita: 4 aprile 2006 GALU leggi l'application note AN512 della microchip, sembra fatta apposta per te
GALU Inserita: 5 aprile 2006 Autore Segnala Inserita: 5 aprile 2006 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
Livio Orsini Inserita: 5 aprile 2006 Segnala Inserita: 5 aprile 2006 (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: 5 aprile 2006 da Livio Orsini
GALU Inserita: 8 aprile 2006 Autore Segnala Inserita: 8 aprile 2006 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 5cosa 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
Livio Orsini Inserita: 8 aprile 2006 Segnala Inserita: 8 aprile 2006 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 pic16C84Pag.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.
GALU Inserita: 8 aprile 2006 Autore Segnala Inserita: 8 aprile 2006 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, FGrazie Livio per la tua disponibilità.__________Ciao, Fabio
Livio Orsini Inserita: 8 aprile 2006 Segnala Inserita: 8 aprile 2006 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.
GALU Inserita: 8 aprile 2006 Autore Segnala Inserita: 8 aprile 2006 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
Livio Orsini Inserita: 9 aprile 2006 Segnala Inserita: 9 aprile 2006 Forse si, ma te lo sconsiglio. Con MPLAB sei sicuro dei risultati
GALU Inserita: 10 aprile 2006 Autore Segnala Inserita: 10 aprile 2006 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 5e poi MOVLW B'00001110' ;ACTIVATE RA0 TRIS 5il che non è chiaro.3) Non ho ancora capito come si riesce a crpire il valore della Resistenza ._________________ciao, Fabio
Livio Orsini Inserita: 10 aprile 2006 Segnala Inserita: 10 aprile 2006 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 commentiQuale resistenza? RM è quella da misurare, RC la determini in funzione dle tempo di carica del C
GALU Inserita: 11 aprile 2006 Autore Segnala Inserita: 11 aprile 2006 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 diversiMOVLW B'00000011' ;SET RA0 AND RA1 HIGH (ON WHEN ACTIVATED)MOVWF 5e poiMOVLW B'00001110' ;ACTIVATE RA0TRIS 5Se 5 è inteso come "TRISA" cosa significa "MOVWF 5"?--------------------Ciao, Fabio
Livio Orsini Inserita: 11 aprile 2006 Segnala Inserita: 11 aprile 2006 MOVLW B'00000011' ;SET RA0 AND RA1 HIGH (ON WHEN ACTIVATED)MOVWF 5e poiMOVLW B'00001110' ;ACTIVATE RA0TRIS 5Se 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
GALU Inserita: 7 novembre 2006 Autore Segnala Inserita: 7 novembre 2006 (modificato) Un saluto a tutti.Purtroppo ho dovuto abbandonare per un po di tempo il mio progetto ora sono tornato all'attaccospero 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.pdfIn 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: 7 novembre 2006 da GALU
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora