Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/ognigiorno.com/wp-content/plugins/math-comment-spam-protection/math-comment-spam-protection.php:1) in /var/www/html/ognigiorno.com/wp-includes/feed-rss2.php on line 8 termostato – OgniGiorno.com https://www.ognigiorno.com insieme tutti i giorni Sun, 13 Mar 2011 20:28:21 +0000 en-US hourly 1 https://wordpress.org/?v=5.8.9 Registratore di temperatura https://www.ognigiorno.com/2009/04/01/registratore-di-temperatura.html https://www.ognigiorno.com/2009/04/01/registratore-di-temperatura.html#respond Wed, 01 Apr 2009 07:02:14 +0000 http://www.ognigiorno.com/?p=259 Read More »Registratore di temperatura]]> Il progetto qui descritto è un termometro/orologio con funzionalità di campionatore della temperatura. Il dispositivo funziona stand alone ed ha la possibilità di interfacciarsi via seriale (RS232) con un pc per effettuare il trasferimento dati. Lo stesso collegamento serve per impostare i parametri di configurazione. Il circuito è dotato di RTC (real time clock) con batteria tampone per mantenere l’ora impostata anche in assenza di batteria. La visualizzazione avviene tramite display lcd 2 righe x 16 caratteri.
Nella foto è visibile lo schema a blocchi.

regtemp

Come si può vedere, ho utilizzato il PIC 16F84 come controllore del dispositivo. Questo controlla tramite BUS I2C le tre periferiche attive:

  • RTC: PCF8563 della Philips.
  • Sensore di temperatura: DS1775. Effettua la rilevazione della temperatura impostato alla massima risoluzione. La precisione arriva a 0.0625?C
  • EEPROM seriale utilizzata per la memorizzazione delle informazioni.

regtemperatura

Al controllore è inoltre collegato il MAX232 che si occupa di adattare i livelli per la seriale del computer (converte da TTL del PIC a +/-12v utilizzati dal PC)

Firmware
Il codice che allego è scritto in jal, un linguaggio ormai non più mantenuto. È infatti mia intenzione riscrivere in C (utilizzo il compilatore picc di HI-TECH) tutto il codice.

Ritengo questo progetto interessante anche per la completezza delle periferiche: modificando il programma è possibile utilizzare i dispositivi per qualsiasi altro scopo per cui siano necessari un RTC, un rilevatore di temperatura, un display, la connessione seriale e la EEPROM.

]]>
https://www.ognigiorno.com/2009/04/01/registratore-di-temperatura.html/feed 0
Il sensore di temperatura DS1775 https://www.ognigiorno.com/2009/03/26/il-sensore-di-temperatura-ds1775.html https://www.ognigiorno.com/2009/03/26/il-sensore-di-temperatura-ds1775.html#respond Thu, 26 Mar 2009 12:42:38 +0000 http://www.ognigiorno.com/?p=240 Read More »Il sensore di temperatura DS1775]]> Il DS1775 prodotto da Dallas Semiconductors è un sensore di temperatura/termostato che può essere utilizzato nei nostri circuiti, pilotato da un controllore tramite il protocollo I2C.
Le applicazioni sono molteplici: termometro digitale, termostato, controllo di temperatura interna al circuito, registratore di temperatura, …
Purtroppo è disponibile solo nel package SOT23, quindi per utilizzarlo va necessariamente realizzato un circuito stampato abbastanza preciso. Suggerisco il metodo con il ferro da stiro e carta patinata.
dspr1775

Come tutti i dispositivi I2C, dobbiamo ragionare per locazioni di memoria: scriviamo o leggiamo valori da indirizzi precisi. Questo sensore di temperatura utilizza 4 locazioni differenti:
00h – contiene il valore della temperatura. Il valore è a 12 bit, quindi dobbiamo effettuare due letture

i2c_put_read_address(temp_addr + a)
i2c_get_data(tempMSB)
i2c_put_ack
i2c_get_data(tempLSB)
i2c_put_nack
i2c_put_stop

01h – registro di configurazione. Lo scriviamo con la configurazione desiderata (di seguito il dettaglio)

Gli altri due servono per controllare il termostato e hanno entrambi la stessa struttura a 12 bit del registro temperatura
02h – temperatura isteresi del termostato. Rappresenta la soglia di intervento. Il termostato è attivo al di sotto della temperatura impostata. Si disattiva al raggiungimento di tale valore per riattivarsi quando la temperatura scenda al di sotto del valore di isteresi.
03h – Valore della temperatura del termostato

Codifica della temperatura
Il valore della temperatura viene rappresentato in questo modo:
1775_temperatura

Questo significa che la parte intera la otteniamo dal primo byte che leggiamo. Il valore letto nel byte meno significativo va shiftato di 4 a destra e moltiplicato per 0.0625 per ottenere la parte decimale della temperatura. I bit sono effettivamente utilizzati in base alla risoluzione impostata. Di default la risoluzione è a 9 bit, quindi abbiamo letture valide solo per il primo bit (0.5?C)

Byte di configurazione (02h)

1775_configurazione
SD: quando portato a 1 il convertitore va in stand-by, restando in ascolto solo sul BUS I2C. A 0 (default) il dispositivo effettua continuamente rilevazione della temperatura

TM: seleziona il modo operativo del termostato. 0 funziona nella modalità descritta nell’esempio che ho fatto parlando di isteresi. A 1 il funzionamento è “a interrupt”, cioè partendo dal valore alto che indica la situazione normale, l’uscita viene abbassata ad ogni evento significativo (temperatura sopra la soglia o sotto l’isteresi). Il valore resta basso fino a che non viene effettuata una lettura I2C.

POL indica il significato di “attivo” dell’uscita. Se POL vale 1, attivo significa 1, altrimenti 0

F0-F1 indica il numero di letture da effettuare prima di considerare valido il cambio stato quando si opera in modalità interrupt.

1775_letture

R0-R1 indica la risoluzione del termometro
1775_risoluzione

Indirizzi
Trattandosi di un dispositivo I2c, dobbiamo parlare di indirizzo. L’indirizzo è necessario per effettuare la comunicazione. Diversamente da quanto solitamente avviene per altri dispositivi (per esempio le EEPROM seriali) per il DS1775 l’indirizzo è unico e cablato nel processore, composto da due parti.

  • una parte fissa: 1001
  • altri 3 bit determinabili dal part number dell’integrato, in particolare:
    DS1775R/TRL 000
    DS1775R/TR1 001
    DS1775R/TR2 010
    DS1775R/TR3 011
    DS1775R/TR4 100
    DS1775R/TR5 101
    DS1775R/TR6 110
    DS1775R/TR7 111

Va quindi prestata attenzione al momento dell’acquisto

]]>
https://www.ognigiorno.com/2009/03/26/il-sensore-di-temperatura-ds1775.html/feed 0