Sensore Temperatura (termistore)

È possibile implementare anche un sensore di calore (termistore) in grado di far 'percepire' al robot le variazioni di temperatura che si verificano nell'ambiente circostante.
Il termistore (fornito con il fascicolo 26 unitamente a un condensatore ceramico da 100nF) è un componente elettronico sensibile al calore che varia la propria caratteristica elettrica (la resistività) in funzione della temperatura ambientale.
In particolare all'aumentare della temperatura il valore della resistenza diminuisce e viceversa; di fatto il comportamento di un termistore è, da un punto di vista fisico, molto simile a quello di un fotoresistore: entrambi i componenti, infatti, sono caratterizzati da un valore di resistenza inversamente proporzionale a determinate grandezze fisiche (calore e luce).
Questa similitudine si riflette anche nella modalità di utilizzo sulla bread-board: la configurazione circuitale che si adotta per il termistore è uguale a quella già vista per il fotoresistore, sostituendo semplicemente il fotoresistore con il termistore.
L'informazione riguardante il calore viene ancora calcolata misurando la costante di tempo RC attraverso il comando PBasic rctime, ottenendo così un indicatore della quantità di calore 'percepita' dal termistore.

 

 

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


      Elenco revisioni
06-11-2005 Revisione