mercoledì 17 agosto 2011

Termotimer con PIC

Un po' di tempo fa mi serviva un termotimer da mettere nei terrari dei miei animali, le caratteristiche che mi servivano erano che doveva avere due fasce di temperatura programmabili (giorno/notte) e che in caso saltasse la luce non si perdessero sia le impostazioni che l'ora corrente.
Ho così deciso di realizzarlo con l'ausilio di un PIC, è stato il mio primo progetto con i PIC.
I componenti che ho scelto per la realizzazione sono stati:
- PIC16F886
- DS18S20
- DS1302

Il DS18S20 è una sonda di temperatura che integra già un convertitore A/D, cioè si può comunicare direttamente in digitale tramite il PIC con un protocollo chiamato 1-Wire, ed ha una precisione di 0.5°C più che sufficiente per la mia applicazione.
Il DS1302 è un realtime clock che comunica con il PIC tramite un protocollo a 3 connessioni, è in grado di mantenere l'ora sempre aggiornata anche nel caso venga rimossa l'alimentazione utilizzando una batteria tampone da 3V (cambia automaticamente tensione di alimentazione quando manca quella primaria).
Infine il PIC16F886 è un PIC a 28 pin che contiene 256 byte di EEPROM che ho utilizzato per memorizzare i dati che mi servivano.
Per visualizzare le informazioni ho utilizzato un LCD 16x2.

Lo schema delle connessioni è il seguente (un po' disordinato...) schema
Mancano i collegamenti ad alimentazione e massa nell'LCD, comunque VSS è massa, VDD è l'aliementazione e VEE serve per il contrasto, va collegata ad un potenziometro tra massa e VDD.

Logicamente la tensione di alimentazione deve essere di 5V.

Vediamo ora il funzionamento.

In condizioni normali viene mostrata la seguente schermata

In alto a sinistra viene mostrata la temperatura letta in gradi celsius, mentre in basso l'ora corrente, mentre in alto a destra viene mostrata la fascia oraria corrente (F1 o F2) e se l'uscita è attiva o meno. Se è attiva viene mostrato un asterisco, se è spenta un pallino.

Tenendo premuto per alcuni secondi il tasto 'Mode' è possibile accedere alla modifica delle impostazioni, per passare da un'impostazione all'altra si preme sempre il tasto 'Mode' fino a che non si ritorna alla schermata iniziale.
Per muoversi tra i valori delle singole impostazioni si usano i tasti 'Left' e 'Right' e per incrementare/decrementare un valore si usano rispettivamente i tasti 'Up' e 'Down'.
Ecco alcune schermate d'esempio

Impostazione dell'ora


Inizio della fascia oraria 1 (che corrisponde anche alla fine della fascia 2)


Inizio della fascia oraria 2 (che corrisponde anche alla fine della fascia 1)


Temperatura nella fascia 1


Temperatura nella fascia 2


Offset della sonda, ho notato che la sonda è piuttosto precisa, però nel caso abbia qualche problema si può correggere la temperatura che legge modificando opportunamente questo valore di offset, ad esempio se la sonda legge 25°C mentre la temperatura reale è di 24°C potete impostare l'offset a -1.

PCB

Ho realizzato il seguente pcb link
Qui trovate il link di come devono essere montati i componenti link

La sonda DS18S20 l'ho saldata ad un filo tripolare schermato lungo un paio di metri e poi l'ho incapsulata all'interno di una capsula di ottone che ho realizzato con il tornio in modo che non vi entri umidità e i contatti siano ben isolati.
La sonda è fatta così

Il terminale GND nel PCB va saldato dove c'è scritto S-, VDD invece va dove c'è S+ e DQ dove c'è la piazzola nel piedino 11 del PIC.

Tra le restanti piazzole libere collegate all'uscita del 7805 e a quelle collegate al PIC dove ci sono anche le resistenze da 10K, andranno saldati i pulsanti a pressione che servono per regolare le impostazioni.

Il componente E$31 è il trimmer da 1k.

I collegamenti rossi dovrete realizzarli con dei fili.

OSC è l'oscillatore al quarzo.

Lista componenti

Riporto di seguito la lista dei componenti per la realizzazione del PCB

1 integrato DS1302
1 integrato PIC16F886
1 integrato LM7805
1 integrato DS18S20
1 transistor 2N3904
1 LCD 16x2

5 pulsanti a pressione

1 zoccolo per integrato 28 pin
1 zoccolo per integrato 8 pin

1 trimmer da 1K
1 resistenza da 220 ohm
5 resistenze da 10k
5 resistenze da 4.7k

1 condensatore da 2200 uF
2 condensatori da 100 nF

1 batteria tampone da 3V

5 Diodi 1N4007

1 Trasformatore 220V - 12V (vi serve una tensione di 5V quindi potreste anche prenderlo da 220V - 5V io ho fatto con quel che avevo)
1 Relé a 5V

1 oscillatore al quarzo da 32.768K Hz

Programmare il PIC

Per programmare il PIC vi serve un programmatore, io utilizzo un clone del PIC Kit 3 acquistato per pochi euro su ebay dalla Cina che funziona egregiamente.
Per programmare il pic vi servirà innanzi tutto il programma che potete scaricare da qui e poi vi servirà MPLAB scaricabile gratuitamente dal sito della Microchip.
Una volta installato MPLAB avviatelo, cliccate su 'import' e selezionate l'hex linkato prima, poi selezionate come device il PIC16F886 e settate i configuration bits come in questa schermata.

È tutto...

Ecco un'immagine del PCB quasi montato e del termostato in funzione






Siccome questo circuito funziona con la 220V è potenzialmente PERICOLOSO!
Quindi non mi assumo nessuna responsabilità in caso di danni a cose o a persone, lo realizzate a vostro rischio e pericolo!

Nessun commento:

Posta un commento