Micro-GT

termocontroller

Per terrari e acquari 

Identificazione progetto

progetto 6

autore

email

note

Termocontroller acquari e terrari

Mirko Musto

mirkomusto1@gmail.com

Il sensore di temperatura e' il noto LM35.

Sulla Micro-GT mini verra' alloggiato sia il PIC16F876A che il 18F2550

Premessa

Per gli appassionati di acquari o terrari questo circuito risultera' molto utile, e' infatti in grado di mantenere costante la temperatura entro un range piuttosto stretto rispetto ad un setpoint impostato.

La segnalazione avviene tramite la barra LED onboard della Micro-GT Mini che potra' essere istallata, previo opportuno inscatolamento, all'interno del habitat artificiale che stiamo cercando di riprodurre.

Schema elettrico con descrizione


Download schema elettrico barra LED

Figura 1

Nello schema elettrico di figura 1, integrato nella Micro-GT, notiamo la presenza di un ponte resistivo a 8 vie con il primo piedino che corrisponde al comune. Se dovesse mancarvi il ponte per irreperibilita' e' possibile montare delle resistenze da 1/4 di watt in posizione verticale e creando poi con reofori e saldature il ritorno comune come visibile nella foto.

Figura 2

La freccia rossa indica la posizione nel PC della rete resistiva simulata con otto resistenze il cui comune e' creato in fili saldato oppure usando i pezzi dei reofori di avanzo.  Il comune e' in questo caso l'ultimo foro a destra, quello piu' vicino al margine del PCB.

I valori resistivi dipenderanno dal tipo di LED montati, ma teniamo presente che la porta del PIC 16F876 non sopporta piu' di 25mA e che la tensione applicata a livello logico alto e' TTL ovvero +5V.

Tipicamente, con dei LED di nuova fattura sara' sufficiente lasciare passare circa 1 o 2 milliampere.  Ogni valore compreso tra 220ohm e 1kohm sara' accettabile e cambiera' al massimo la luminosita' dei LED stessi. Il calcolo corretto si fa togliendo il valore V-gamma del led impiegato quando in conduzione, dalla tensione TTL presente all'uscita del PIC diviso il valore in milliampere consigliato dal databook del led che intenderemo usare.

Questa formula mi restituira' il valore in ohm di ogni singola resistenza da impiegare nella rete resisteva che andiamo a costruire.

Circuito stampato descrizione

Lo stampato e' semplicemente quello della Micro-GT mini che potete avere semplicemente aprendo con Eagle i file Eagle che ottenete scaricando il file scheletro da cui potete partire per fare le vostre pubblicazioni in questo foro.  Lo si riporta solo per dovere di formato dell'articolo.


Figura 3


Nel Layout notiamo nel lato superiore, dentro al rettagolo rosa,  i LED, la rete resistiva, e il conettore strip line maschio a 8 posizioni in cui si dovra' innestare il cavetto flat da riportare sul PORTB del PIC, ovvero sul conettore evidenziato in giallo. Il pin RB0 e' quello che nella serigrafia e' indicato con S10 e dovra' per coerenza essere collegato al LED 1, ovvero quello piu' a destra. (una eventuale inversione del flat non compromette la funzionalita' di questo semplice esercizio.

Figura 4

E' bene fissare le saldature dei cavetti flat usando un po di colla a caldo. Saranno piu' solidi e maneggevoli.

Apparato sensoriale

il sensore di temperatura utilizzato e' il noto LM35  prodotto dalla casa Texas instruments, il cui databook e' scaricabile dal link sottostante.

download databook LM35

Il data book mostra le due modalita' principali di applicazione del dispositivo.

Applicazione tipica nel range di temperatura da +2 gradi centigradi a la modalita' full range per le temperature comprese tra -55 gradi e +150 gradi. La modalita' fullrange richiede anche tensioni negative che non abbiamo presenti nel nostro hardware. Come leggiamo nell'immagine  la conversione volt->gradi e' immediata dato che esiste la relazione 10mV=1C .

      

Nella nostra applicazione botanica o ittica la funzionalita' piu' adatta risulta essere la prima. 

Firmware

La fase di debug del programma e' stata realizzata con RealPic simulator,  che e' uno  strumento semplice efficace ed intuitivo. Il salvataggio del progetto della simulazione e' scaricabile da questo link (funzionera' solo se sul vostro PC e' istallato il RealPic simulator).

figura 5

download progetto di simulazione Realpic Simulator

La presenza del tasto A settato normal 1 -> pressed 0, ovvero con la restinza in pullup, consente il cambio di effetto luminoso da normale supercar a boucing (rimbalzi).

Potete scaricare il file zippato dell'intero progetto in Mplab al segunte indirizzo-> download effetto luci supercar con Micro-GT mini

/*****************************************************************

*                                   Termoregolatore per terrari e acquari                                                 *

*                                                       G-Tronic Robotic                                                              *

*                                                             19/05/2012                                                                    *

*                        Questo programma sviluppato per PIC16F876A                                     *

*                                               piattaforma Micro-GT mini                                                      *         

*                                                 realizzato da Mirko Musto                                                    *

*                                                                                                                                                   *

****************************************************************/

#include <pic.h>

#include "delay.h"

#include "ADC.h"

#include "settaggiADC.h"

#define smin 1

#define smax 195

 

 

//Routine principale...

 

void main(){

settaggiADC();

unsigned int valore1;

unsigned int incr;

 

 

ADCON1 = 0b10000000;

incr=(smax-smin)/8;

    while(1){

      valore1=leggi_ad(0);

           if((valore1>=smin)&&(valore1<=smin+incr)){

             PORTB=0b00000000;

     }

if((valore1>=smin+incr)&&(valore1<=smin+2*incr)){

PORTB=0b00000001;

}

if((valore1>=smin+2*incr)&&(valore1<=smin+3*incr)){

PORTB=0b00000011;

}

if((valore1>=smin+3*incr)&&(valore1<=smin+4*incr)){

PORTB=0b00000111;

}

if((valore1>=smin+4*incr)&&(valore1<=smin+5*incr)){

PORTB=0b00001111;

}

if((valore1>=smin+5*incr)&&(valore1<=smin+6*incr)){

PORTB=0b00011111;

}

if((valore1>=smin+6*incr)&&(valore1<=smin+7*incr)){

PORTB=0b00111111;

}

if((valore1>=smin+7*incr)&&(valore1<=smin+8*incr)){

PORTB=0b01111111;

}

if((valore1>=smin+8*incr)&&(valore1<=smax)){

PORTB=0b11111111;

}

}

}

 -----------------------------------------------------------------------------------------------------------------------------

file fettaggiADC.h

--------------------------------------------------------------------------------------------------------------------------------

void settaggiADC(){

TRISA=0XFF;

TRISB=0;

TRISC=0;

PORTB=0;

PORTC=0;

}

 

 

-------------------------------------------------------------------------------------------------------------------------------------

file ADC.h     con la funzione di acquisizione analogica e assegnazione del valore convertito in numero intero

-------------------------------------------------------------------------------------------------------------------------------------

/**************************************************

*                                                                                                 *

* MODULO PER LA LETTURA DEI CANALI ANALOGICI *

*                                                                                                 *

*                            chiamare la fz leggi_ad(n);                              *

*                    dove n: numero del canale in ingresso                       *

*                                                                                                  *

*                                                                                                  *

************************************************/

int leggi_ad(char canale)

{

int valore;

ADCON0 = (canale << 3) + 0xC1; // enable ADC, RC osc.

DelayUs(10); //Ritardo per dare modo all'A/D di stabilizzarsi

ADGO = 1; //Fa partire la conversione

while(ADGO)

continue; //Attende che la conversione sia completa

valore=ADRESL; //Parte bassa del risultato

valore= valore + (ADRESH<<8); //Parte alta del risultato

return(valore);

}

 

Scarica il programma compilato, file hex, Termoregolatore per terrari e acquari  per Micro-GT mini -> download

Il precedente codice, scritto in C con l'ambiente Mplab della microchip.


Potete vedere un filmato dell'effetto supercar nel seguente filmato caricato su youtube, putroppo quella notte non avevo sottomano un pulsante da collegare a RA0, quindi non si vede il cambio di effetto. Fatelo voi durante le vostre prove.

 

 

 


 

Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia

 

Note aggiuntive

Visita i siti web sviluppati da Marco Visentini:

http://www.bb-yewilliam.it/    (il bed end brekfast di Jenny per chi fosse di passaggio a Padova)

http://www.amministrazionibugno.it/   (l'agenzia di amministrazione condominiale dell'amico Massimiliano)

  Pagina precedente