Jump to content
PLC Forum


Sign in to follow this  
Zerototale

Lm75 E Pic16f876a Mi aiutate ad interfacciare l'I2 - Riunite 2 discussioni sul med.mo argomen

Recommended Posts

Zerototale

Ho fatto anche una piccola sugli opto isolatori.. Sono davvero ignorante..

Quindi invece di usare il solito transistor per pilotare la ventola con il diodo per le commutazioni di carichi induttivi è possibile utilizzare uno di questi dispositivi.. Mi spieghi in cosa consiste la differenza?

Comunque ho fatto ricerche ed ho scaricato la libreria per gli LM75

eccola

Mi servono altre librerie? Non ho mai usato componenti che sfruttano l'I2C con la PIC.

Share this post


Link to post
Share on other sites

Zerototale

Salve a tutti!

Sto cercando di fare un piccolo termostato con il PIC16F876A, 2 sensori LM75 che sfruttano l'I2C e un display LCD 16x2.

Mi è già stato dato un grande aiuto sulla progettazione da Livio Orsini che ringrazio tantissimo, ma adesso dovrei passare alla programmazione.

Ecco lo schema

Ho già scaricato la libreria dell'LM75, ma non so proprio come continuare..

In pratica devo fare in modo che i sensori leggano di continuo la temperatura e la fissino in una variabile che poi successivamente scriverò sul display.

Mi potete aiutare? Mastico un pò di "Basic" e di "C".

Share this post


Link to post
Share on other sites
Livio Orsini

Prima cosa.

E' inutile aprire una nuova discussione, oltre ad essere una pratica dispersiva si perde di vista l'argomento principale e le condizioni al contorno del problema.

Ho riunito le due discussioni.

Per quanto riguarda la lettura degli LM75.

1 - Cosa usi come tool software? Compilatore "C"? Compilatore basic? di quale produttore. Non è assolutamente il caso di mischiare i due linguaggi, anche se tecnicamente è possibile. In funzione del compilatore adottato ci sono driver per I2C prefatti. Io, ad esempio, uso il "C" con compilatore CSC e non ho mai avuto problemi di sorta.

2 - Prima di pensare di programmare dovresti farti un minimo di conoscenza su questo BUS. Leggi le application notes di Microchip e, soprattuto, le specifiche del bus della Philips (o NXP) che lo ha brevettato. Io sconsiglio una lettura in continuo, non serve a nulla se non a saturare la CPU. Fai un timer a tempo, magari usando Timer1. Sull'interrupot fai la lettura dei due sensori.

3 - In alternativa. Se l'uso di questi sensori su bus ti sembra complicato potresti usare 2 PT100 e leggere il valore tramite gli A/D_C del pic. Se vuoi ti posto lo schemino dell'interfaccia analogica per PT100. E' semplice, ababstanza affidabile e poco costosa.

Se vai in questa direzione posso darti anche le funzioni di lettura e quelle per visualizzare la temperatura sul display. I "C" language, of course. smile.gif

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
Zerototale

Mi scuso se ho creato un doppio post, ma dato che adesso volevo occuparmi solo della programmazione volevo concentrarmi su di essa.

Come compilatori uso MikroC e MikroBasic di Mikroelettronika, ma volendo li posso anche cambiare dato che ho notato che alcune istruzioni non sono compatibili o meglio dire hanno delle piccole variazioni rispetto al classico C e Basic per PIC.

In effetti saturare la CPU non mi servirebbe a nulla, però a questo punto dovrei fare un timer molto breve in quanto non ho molto tempo per fare la dimostrazione di variazione di temperatura.

Ho qualche minuto per azionare raffreddamento e riscaldamento.

Le termo-resistenze sono affidabili come gli lm35? Conversione per conversione volendo potrei utilizzare anche quelli.. (Dico questo perchè quando li testai avvicinandomi con un accendino restarono intatti, non vorrei che i PT100 fossero più delicati)

Comunque qualunque cosa tu possa postare fai pure, nel frattempo imparo nuove cose! biggrin.gif

Share this post


Link to post
Share on other sites
Livio Orsini

Le PT100, specie se incapsulate in conteniroi meccanici, sono più sicure e affidabili di un LM75. Hanno anche una gamma molto più estesa, che ha te importa poco. Hai anche una precisione maggiore, visto che lo LM75 garantisce +/-2C.

Appena ho un attimo di tempo ti posto lo schema dell'interfaccia,ma lo puoi trovare anche su GRIX, autore lsergio

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
Zerototale

L'ho cercato, ma come al solito non posso vederlo in quanto non ho il livello necessario..

Share this post


Link to post
Share on other sites
Livio Orsini

Schema

L'amplificatore è di bassa qaulità, però sufficiente per ottenere discreti risultati. VOlendo aumentare la stabilità si possono usare amplificatori pin to pin compatibili, più costosi ma più performanti.

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
Zerototale

Ehm.. Diciamo che torno agli LM35 che forse è meglio..

Ho trovato il software che fa al caso mio, ma occorrerebbe fare qualche modifica in C.

Girovagando su internet ho trovato un termostato con isteresi e soglie programmabili:

Il software è ben scritto, solo che dovrei aggiungere il comando che aziona i relè in caso di rilevamento della soglia inferiore o maggiore all'isteresi.

supponendo di avere le variabili: temp, sb (soglia bassa), sa(soglia alta), isteresi..

if (temp<sb)

e poi si porta a livello logico alto la porta collegata al relè giusto?

Solo che non riesco a trovare una variabile "temp" ovvero quella della temperatura acquisita.. C'è qualcuno di buona volontà che può/riesce a capire questo programma?

Ecco il link del progetto

Share this post


Link to post
Share on other sites
Livio Orsini

la trovi nella funzione che legge lo A/D_C. Poi questo valore viene mediato.

Sono andato a leggere il sorgente, mi son anche dovuto registrare al sito dry.gif

Non uso Hitech come compialtore, quindi alcune direttive non misono familiari. Mi sebra di capire che la variabile che ti interessa sta in "valore".

Un consiglio.

Quando si usa un lavoro altrui si fanno modifiche se, e solo se, si domina molto bene il problema; in caso contrario è meglio non modificare nulla. Si prova il lavoor "così come è"; poi pian pianino si effettua una, ed una sola, modifica alla volta. Si controlla bene il risultato della modifica e, se tutto risponde alle aspettative, si passa alla successiva.

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
Zerototale

Senza fare troppe modifiche al software posso aggiungere un altro lm35 e poi dividere "valore" per 2?

L'autore del progetto mi ha detto:

"Per leggere una seconda sonda potresti fare in modo, finita la prima

lettura, cambi l'impostazione del registro ADCON0 in modo da eseguire la

successiva lettura sulla porta analogica dove sta l'altra sonda (devi

cambiare i bit CHS0:CHS2), finita la lettura sulla seconda sonda, se non

devi visualizzarla a parte, la aggiungi direttamente alla prima... e per

fare la media dividi per 2 (ovviamente). Quindi ricambi ADCON0 per farlo

rileggere di nuovo dalla prima sonda e così via."

Non si potrebbero collegare entrami i sensori ad un unica porta e poi mediare il valore? Tanto a me interessa la temperatura media di una stanzetta, non devo separare le temperature..

Grazie del consiglio Livio cercherò di non fare modifiche assurde prima di non conoscere il software, però da quanto ho visto nel video è davvero ben fatto.. Vorrei poterne fare uno simile :S

Share this post


Link to post
Share on other sites
Livio Orsini

Assolutamente no!

Puoi usare un relè per segnali, tipo i relè reed, e commutare il canale A/D da un sensore all'altro.

Comunque hai RA0 e RA1 libere; sono entrambe ingressi analogici. Ci colleghi un secondo LM35 e lo leggi tranquillamente.

Io non uso Hitech, quindi non so dirti se le modifiche proposte sono corrette, però mi sembran molto macchinose. Con CSC, basterebbero due righe due. smile.gif

Edited by Livio Orsini

Share this post


Link to post
Share on other sites
Zerototale

Sto aspettando che mi arriva il display e poi sono pronto per i test!

Credo di aver modificato tutto correttamente..

Forse con CSC sarà più facile, però dato che ho il programma già pronto ed io non sono molto pratico con la programmazione preferisco lavorare su quello.

Se hai qualcosa fatto con CSC che contenga la lettura di sensori e l'output sul display potresti pubblicarlo? Nel frattempo mi studio anche questo!

Adesso sorge un altro problema, dovrei crearmi la "stufetta" cosa mi consigliate di utilizzare? Da considerare che devo comandarla con il PIC.

(PS: il comando è lo stesso che per accendere un LED, vero?)

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...