Vai al contenuto
PLC Forum


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


Zerototale

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


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

Link al commento
Condividi su altri siti

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

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

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.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

  • 2 weeks later...

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?)

Link al commento
Condividi su altri siti

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