Termo4


Termostato a 4 livelli con PIC16F84 ed LM35 con controllo di una ventola. Termo4
Figura 1


Termo4
Figura 2


Schema elettrico Schema elettrico
Figura 3

Prendendo spunto dalla richiesta di un lettore ho realizzato questo semplice termostato a scopo didattico. Esso fa uso di un sensore di temperatura, l'LM35D che fornisce 10mV ogni grado centigrado e di un microcontrollore, il PIC16F84.
Con una temperatura di 10 gradi avremo, in uscita dal sensore, 100 mV, con una temperatura di 30 gradi avremo 300 mV.
L'idea è quella di controllare se la temperatura supera una delle soglie prefissate e di conseguenza variare la velocità di rotazione di una ventola sempre tramite il Pic.

Nella prima parte del circuito, che potete osservare in figura 3, abbiamo un LM35D seguito da un amplificatore non invertente (realizzato con uno dei quattro operazionali presenti nell'integrato LM324) che guadagna 10.
Per ottenere questo guadagno, sapendo che il guadagno di un non invertente è 1+R2/R1, bisogna fare in modo che il rapporto R2/R1 valga 9.
In questo caso R2 vale 270k ed R1 vale 30k (10k + 10k + 10k). Avremo quindi in uscita dall'amplificatore una tensione che dipende dalla temperatura e che varia fra 0V (0 gradi) e 10 V (100 gradi). (Il sensore LM35D può infatti lavorare e convertire temperature comprese in questi range).

L'uscita dell'amplificatore entra nell'ingresso non invertente di 3 comparatori a soglia semplice (realizzati con i 3 operazionali restati dell'LM324). All'ingresso invertente di questi comparatori sono invece collegate le tensioni di soglia superate le quali la ventola deve intervenire ponendosi in rotazione, o, se già attiva, aumentando la propria velocità. Le tensioni di soglia sono state realizzate tramite un partitore resistivo (in verticale a sinistra dei comparatori). Partendo da una tensione di alimentazione di 12V si ottengono, con questi valori di resistenze, 3 soglie : 2V, 3.15V, 3.95V.

Facciamo un esempio%u2026 Sapendo che la tensione di uscita dell'amplificatore vale, per esempio 3.4V, se la temperatura ambientale è di 34 gradi centigradi, allora confrontando questa tensione con le tre soglie impostate possiamo sicuramente dire che sono state superate sia la soglia dei 2V (20 gradi centigradi) che quella dei 3.15V (31.5 gradi centigradi).

Avrei voluto realizzare le tre soglie a 2V (per 20 gradi), 3V (per 30 gradi) e 4V (per 40 gradi) ma con i valori di resistenze commerciali (al 5%) ho potuto ottenere queste altre indicate nello schema. In ogni caso, volendo ottenere soglie precise e stabili nel tempo dovremmo fare uso di un sistema indipendente dalle variazioni della tensione di alimentazione, per esempio usando dei voltage reference. Ritornando all'esempio precedente, se la temperatura è di 34 gradi l'uscita dell'amplificatore è 3.4V, per cui le uscite del primo e del secondo comparatore a partire dal basso sono a stato logico alto, circa 2/3 della tensione di alimentazione dell'LM324.

Il diodo zener da 5.1V posto in uscita ai compratori serve a limitare la tensione a 5V in modo che si possano connettere le uscite dei comparatori ai pin del PORTA o del PORTB di un PIC16F84, che invece viene alimentato a 5V. (Nel circuito si può vedere l'utilizzo di un 7805, utile a questo scopo, che genera una tensione di 5V a partire da una tensione di ingresso di 12V, in questo modo possiamo alimentare il circuito con un'unica tensione di alimentazione a 12V).

Le uscite dei 3 comparatori entrano nei pin RA0, RA1 ed RA2 del Pic, mentre la regolazione della velocità della ventola viene effettuata generando un segnale PWM sul pin RB0 del Pic.

Abbiamo anche 4 led di diverso colore che indicano se le varie soglie sono state superate : led verde (RB4, nessuna soglia superata quindi temperatura inferiore a 20 gradi), led giallo (RB3, superata la soglia dei 20 gradi), led arancio (RB2, superata la soglia dei 31.5 gradi), led rosso (RB1, superata la soglia dei 39.5 gradi). Naturalmente ad ogni superamento di soglia la ventola aumenta la propria velocità perché il Pic aumenta il tempo di Ton del segnale Pwm presente su RB0 (che va a pilotare un NPN di media potenza, il BD135, sul cui collettore viene connessa la ventola, il diodo 1n4002 è un comune diodo di ricircolo per le commutazioni di carichi induttivi). Se la temperatura è inferiore a 20 gradi la ventola è spenta e si accende il led verde. Ma vediamo, nella tabella seguente, uno schema logico del funzionamento del circuito.

 
SUPERAMENTO SOGLIE USCITE
t>40 t>30 t>20 LED VERDE LED GIALLO LED ARANCIO LED ROSSO PWM
RA2 RA1 RA0 RB4 RB3 RB2 RB1 RB0
0 0 0 1 0 0 0 OFF
0 0 1 0 1 0 0 LOW
0 1 1 0 0 1 0 MEDIUM
1 1 1 0 0 0 1 HIGH


A questo punto non ci resta che vedere il semplice programma, scritto in C, da caricare nel Pic. Si tratta di un semplice ciclo infinito nel quale vengono continuamente verificati gli ingressi RA2, RA1 ed RA0. A seconda del loro stato viene accesso il led corrispondente ed accesa la ventola o variata la sua velocità. Per farlo è stata creata una funzione che riceve in ingresso i valori di Ton e di Toff e crea in uscita, su RB0, la corrispondente modulazione Pwm. In questo stesso sito, a questa pagina , potete trovare alcune note con schemi e disegni, sulla modulazione Pwm.


Le librerie delay.h e delay.c


Datasheets degli integrati utilizzati per questo progetto
LM35DTrasduttore di temperatura Datasheet
LM324Quadruplo amplificatore operazionale Datasheet
7805Regolatore di tensione Datasheet


Un ultima cosa riguarda il test del circuito : per provare se effettivamente il circuito si comporta come dovrebbe ci sono 2 metodi.

1) Si collega un tester all'uscita dell'amplificatore e ci si avvicina all'LM35 con la punta del saldatore. Sul tester si vedra' la tensione salire proporzionalmente alla temperatura, si vedranno commutare i led, ogni volta che si supera una soglia e la ventola aumentera' di velocita'.

2) Si realizza un "simulatore" di variazione di temperatura, raffigurato nello schema di figura 3, e lo si connette ai punti A, B e C al posto del sensore di temperatura. Ruotando il potenziometro si simulera' il cambiamento di temperatura come nel caso precedente.

Il circuito ha un piccolo problema, che si verifica ogniqualvolta la temperatura non sale o scende repentinamente. Se infatti ci troviamo a "cavallo" di una soglia potrebbe succedere che l'uscita del comparatore corrispondente oscilli fra 0 e 1. Questo perche' la temperatura non e' in questo caso nettamente superiore a quella di soglia. In ingresso al Pic avremo quindi delle configurazioni di bit che oscillano fra lo stato precedente al superamento di soglia e quello successivo. Il risultato saranno 2 led accesi contemporaneamente, magari con luce un po' piu' fioca, e la ventola che continua a passare da una velocita' all'altra (fara' dei fischi strani). La situazione si potrebbe risolvere via software...


Stampa la pagina