Proviamo allora ad allestire un semplice rivelatore di
calore utilizzando il termistore e dei LED che ci consentiranno di
'visualizzare' le variazione di temperatura (all'aumentare della
temperatura si illumineranno un numero crescente di LED).
Per realizzare il circuito riportato in figura 1 sono necessari il
termistore, un condensatore da 100nF, un resistore da 220W, 4 resistori da
390W e 4 LED colorati (meglio se dello stesso colore).
Nel circuito risultano utilizzate 5 porte logiche, da P9 a P13: le prime 4
porte (da P9 a P12) sono destinate ai LED mentre l'ultima (P13) è
collegata al circuito RC formato da termistore e condensatore.
Il rivelatore di calore che si ottiene misura attraverso il termistore un
indicatore dalla temperatura ambientale (la costante di tempo RC) e in
base a tale valore accende un determinato numero di LED.
Il programma
Termistore.bs2
qui disponibile consente di far funzionare tale rivelatore.
La struttura del programma si articola in due fasi: prima si calcola
attraverso il comando rctime il valore approssimato della costante di
tempo RC, quindi si confronta il valore ottenuto con altri quattro valori
numerici (soglie), per stabilire quanti e quali LED devono essere accesi.
Altre informazioni e descrizioni specifiche della struttura e del
funzionamento del programma
Termistore.bs2
sono contenute nel listato del programma stesso.
|
|
' {$STAMP BS2}
' Termistore.bs2
' Il programma realizza un semplice rivelatore di calore. Utilizza una
fila di quattro led
' come spie per segnalare il livello di calore registrato dal termistore.
Il termistore
' viene utilizzato in coppia con un condensatore da 100nF e viene gestito
in maniera del tutto simile
' a quanto già visto per i fotoresistori: in particolare si calcola il
valore approssimativo della
' costante di tempo RC quale indicatore dell'indice di calore (il valore
di R dipende dalla temperatura).
' Per l'accensione dei vari led si utilizza un meccanismo a soglia: si
stabiliscono 4 valori numerici
' di RC (soglie) partendo da un valore (espresso da RC_MIN) e aggiungendo
di volta in volta per ogni led
' una quantità fissa (SOGLIA_LED); comparando il valore di RC calcolato
con ciascuna delle quattro soglie
' si stabilisce quali led devono rimanere accesi.
'-------------------- Variabili --------------
thermo VAR Word
' Variabile in cui viene memorizzata la stima della costante di
' tempo del circuito RC formato da condensatore 100nF e termistore.
sogliaLed VAR Word
' Variabile di supporto per verificare la soglia di accensione
' dei vari led.
i VAR Nib
' Variabile di supporto.
'--------------------- Costanti ----------------------
PORTA_TERMO CON 13
' Valore numerico relativo alla porta a cui è connesso il termistore
PORTA_LED1 CON 9
' Valore numerico relativo alla porta a cui è connesso il primo led.
RC_MIN CON 400
' Valore minimo della costante di tempo RC
del circuito oltre la quale
' viene acceso il primo led. Aumentando o diminuendo il valore di questa
' costante puoi regolare il valore minimo della costante di tempo che
' determina l'accensione del primo led.
SOGLIA_LED CON 50
' Esprime il valore tra una soglia di accensione e l'altra. Aumentando o
' diminuendo tale valore si rende più o meno sensibile il circuito alle
' variazioni di calore: se la soglia di accensione dei led è grande
occorre
' una maggiore variazione di calore per determinarne l'accensione.
FREQUENZA CON 100
' Valore in millisecondi: determina la
frequenza con cui viene eseguito
' il ciclo principale.
'-------------------- Inizializzazione -----------------------------
' Inizialmente tutti i led devono essere spenti.
FOR i = 0 TO 3
HIGH (PORTA_LED1+i) ' Numero della
porta del led da spegnere, è calcolato partendo da quella del
' primo led aggiungendo il valore di i
NEXT
'------------------------ Programma Principale ---------------------------
main:
' Occorre ottenere una stima della costante di tempo RC del circuito
termistore - condensatore
' Il procedimento è identico a quello già visto per i fotoresistori e
richiede l'utilizzo del
' comando rctime.
HIGH PORTA_TERMO
PAUSE 3
RCTIME PORTA_TERMO, 1, thermo
' Nella variabile "thermo" è ora contenuta la stima della costante RC,
indice della quantità di
' calore rilevata dal termistore. Visualizza tale valore nella finestra di
debug.
DEBUG DEC thermo, CR
' In base al valore RC ottenuto dalla misurazione precedente si deve
determinare quanti e quali
' led devono essere accesi per fornire un'indicazione luminosa della
quantità di calore registrata.
FOR i = 0 TO 3
' Si calcola la soglia di accensione dell'i-esimo led come la soglia
minima a cui si aggiunge
' il valore di soglia relativo all'i-esimo led: affinchè per esempio il
secondo led (i=1) si accenda, ' esempio, è necessario che il valore
trovato di RC sia minore della soglia minima RC_MIN più
' è necessario che il valore trovato di RC sia minore della soglia minima
RC_MIN più
' 1 una soglia SOGLIA_LED.
sogliaLed = RC_MIN + (SOGLIA_LED*i)
' Se il valore di RC è minore della soglia i-esima calcolata occorre
accendere il relativo led.
' Ricorda: all'aumentare della temperatura il valore di RC decresce e
viceversa.
IF (thermo < sogliaLed) THEN
Accendi_Led
' spegne il led
HIGH (PORTA_LED1 + i)
GOTO endif
Accendi_Led:
LOW (PORTA_LED1 + i)
endif:
NEXT
PAUSE FREQUENZA
' Aumentando il valore di FREQUENZA si
aumenta la frequenza di
' misurazione della costante RC, aumentando così la reattività e la
sensibilità alle
' variazioni di calore.
GOTO main |