Applicazione n. 6: Termostato programmabile

Nell’applicazione n.3 (controllo termico di ambiente), mancano due caratteristiche molto importanti e presenti in tutte le centraline di comando reali:

  • la possibilità di impostare a piacere le soglie di temperatura minima e massima.
  • La visualizzazione con display delle soglie stabilite e della temperatura misurata.

Realizziamo la parte mancante.

Impostazione delle soglie

Specifiche di funzionamento da rispettare:

  • Il valore desiderato si può aumentare o diminuire con due pulsanti.
  • L’utente può scegliere di modificare a piacere ambedue le soglie nell’ordine preferito; una volta fissate, esse non devono essere variate accidentalmente.
  • Mentre sceglie la soglia, l’utente deve poter controllare sul display il valore impostato.
  • Al termine della fase di selezione, il display visualizza la temperatura misurata.

Queste specifiche possono essere realizzate con lo schema:

Schema elettrico

I due deviatori SogliaInf e SogliaSup decidono quale valore arriva all’uscita del multiplex a 4 ingressi MULTIPLEX4: se sono ambedue a livello 0, viene selezionato dal mux il valore uscente dal A/D SensoreT che sta misurando la temperatura ambiente; se solo SogliaInf è a livello 1, viene selezionato il valore uscente dal contatore ValoreInferiore; se solo SogliaSup è a livello 1, viene selezionato il valore uscente dal contatore ValoreSuperiore; se ambedue sono a livello 1, viene selezionato il valore 0.

La presenza delle porte AND evita false manovre: infatti, se si decide di impostare la soglia inferiore, si aziona il deviatore SogliaInf e si usano i pulsanti InfSU e InfGIU per impostare il valore; i pulsanti SupSU e SupGIU non hanno alcun effetto. Lo stesso accade per l’altra soglia. Quando si mettono a livello 0 (a massa) ambedue i deviatori, le soglie non possono essere modificate.

Trasformazione dei valori in gradi centigradi e visualizzazione

Con l’aiuto di un sensore esterno di temperatura e di un adatto circuito ad operazionali, dal convertitore A/D esce un numero a 8 bit (tra 0 e 255) che rappresenta il valore della temperatura misurata. Se si decide di misurare l’intervallo da 0°C e 100°C, alla temperatura di 0°C corrisponde il valore 0 e alla temperatura di 100°C il valore 255, perciò basta dividere per 2,55 il numero risultante dalla conversione A/D per riottenere la temperatura misurata. Ad esempio, se la temperatura misurata dal circuito esterno è 18°C, esso fornirà al A/D un valore di tensione tale che il valore uscente dal A/D è 18x2,55 = 46. A nostra volta se, all’interno del micro, dividiamo 46 per 2,55 riotteniamo il numero 18 da visualizzare su due display: 1 come decine e 8 come unità.

Schema visualizzazione temperatura

Nello schema il numero tra 0 e 255 in ingresso è proveniente dall’uscita del MULTIPLEX4. Dato che il micro non sa fare le divisioni con la virgola, questo numero è prima moltiplicato per 100 dal Moltiplicatore e poi diviso per 255 dal Divisore1. Per suddividere il numero a due cifre in Decine e Unità, si usa il Divisore2 che fornisce come quoziente Q della divisione per 10 del numero A il valore delle decine e come resto R il valore delle unità da visualizzare.

Rimane da inviare queste due cifre a due display a 7 segmenti: per far questo occorrerebbero 14 linee di uscita (7 linee per ogni display). Nella famiglia ST6 non si dispone di tante linee in uscita libere, dato che servono anche linee in ingresso, per i segnali e i comandi; perciò si ricorre alla tecnica del multiplexing.

Si collegano i pin uguali dei due display tra loro (il segmento a del primo display col segmento a del secondo ecc.), così il codice di accensione dei vari segmenti arriva contemporaneamente sui due display, ma si collega a massa solo un catodo alla volta e perciò solo un display alla volta è attivato.

Nello schema è aggiunto un oscillatore che porta a massa uno alla volta dei due digout AccensioneUnità e Accensione Decine; contemporaneamente comanda al Multiplex2 l’invio sequenziale dei due numeri da visualizzare: se l’intervallo Time ha un valore adatto (il valore 20 serve solo per la simulazione) l’accensione in sequenza di un display alla volta è così rapida che l’occhio li vede accesi entrambi.

La parte finale dello schema comprende - come già visto nell’applicazione precedente - un componente BUNPACK che "spacchetta" il numero da visualizzare in 7 bit da inviare separatamente ai vari segmenti, uno su ogni digout, e una LOOKUPTABLE contenente la tabella di decodifica (fa accendere correttamente quei certi segmenti che formano il numero desiderato).

BunPack e LookUp Table

Per realizzare questo schema occorre scegliere il ST6225 che dispone di 20 linee di IN/OUT.

Nei risultati dell’Analisi si vede che vengono usate 16 linee e che il programma supera 1 Kbyte.

ST6225 Realizing Unit (V2.20) (c) 1990-98 Actum Solutions
Report file of project C:\REALST\LAVORI\TERMO\TERMO2.SCH
List of all I/O sorted on the hardware name.
H/W name Type Symbolic name
PA.0 20 mA sink open drain output Unità
PA.1 20 mA sink open drain output Decine
PA.2 Input, with pull-up SogliaInf
PA.3 Input, with pull-up Sogliasup
PA.4 Input, with pull-up InfSU
PA.5 Input, with pull-up InfGIU
PA.6 Input, with pull-up SupSU
PA.7 8 bit analog input sensoreT
PB.0 Push-pull output a
PB.1 Push-pull output b
PB.2 Push-pull output c
PB.3 Push-pull output d
PB.4 Push-pull output e
PB.5 Push-pull output f
PB.6 Push-pull output g
PB.7 Input, with pull-up g

Memory overview.
Total used RAM : 43 byte (084H->0AEH) of 0BFH
Total used ROM : 1270 byte (0080H->0576H) of 0F80H

In questa prima videata di simulazione, si può notare che il sensore sta misurando 18°C (corrispondenti al numero 46), ma tale misura non è visualizzata: dato che il deviatore SogliaSup è a livello 1, viene visualizzata la soglia superiore impostata a 54, come esce dal contatore ValoreSuperiore.

Simulazione

 

In questa seconda videata di simulazione il numero 54 viene trasformato in 21°C: nell’istante di figura viene visualizzato il numero 2, le decine, poiché il catodo delle decine sta a livello 0 e il codice che è inviato ai sette segmenti è 91 (91 = 1011011 = g f e d c b a = b6 b5 b4 b3 b2 b1 b0): sono accesi i segmenti a b d e g che formano il simbolo 2. Nell’istante successivo è a livello 0 il catodo delle unità e viene visualizzato il numero 1 perché al bunpack arriva il codice 6 (6=0000110 = g f e d c b a = b6 b5 b4 b3 b2 b1 b0) che fa accendere solo i segmenti b c.

 

Simulazione

Adesso che si è certi della corretta visualizzazione dei valori, si può unire lo schema a quello già visto del controllo termico di un ambiente. Più precisamente, dopo aver unito i due schemi, l’unica modifica da fare riguarda i collegamenti del comparatore: all’ingresso B va sempre collegata l’uscita del A/D, mentre agli ingressi A e C vanno le uscite dei due contatori ValoreSuperiore e ValoreInferiore.

Modifica collegamenti

Lo schema complessivo, oltre alle 16 linee già usate, ne richiede altre due per il Riscaldatore e il Ventilatore: in totale 18 sulle 20 disponibili.

Il programma totale supera 1,5 KB.

---------------------------
PC.4 Push-pull output Riscaldatore
PC.5 Push-pull output Ventilatore
---------------------------
Total used ROM : 1645 byte (0080H->06EDH) of 0F80H

 

Realizzazione pratica:

Buffer SN74244

Naturalmente occorre bufferizzare le uscite verso i display: un buffer comodo può essere il SN74244 che contiene otto buffer.

E’ preferibile inoltre bufferizzare le due uscite AccensioneUnità e AccensioneDecine, perché la corrente che scorre verso massa può superare le possibilità delle due uscite PA0 e PA1.

Una soluzione semplice è l’uso di due transistor come interruttori: quando vengono saturati da un’uscita alta del micro, chiudono verso massa il catodo dei display uno dopo l’altro. Siccome nella simulazione si è supposto che le uscite dei due catodi siano attive basse, ed ora con i transistor servono attive alte, basta scambiarle tra loro.

Lo schema disegnato con Orcad è:

Schema elettrico

 Questa soluzione semplificata naturalmente non intende con le centraline commerciali reali, dotate di display LCD, anche a più righe, con i quali visualizzare, oltre ai decimi di grado, anche una programmazione oraria.

Scaricate i file creati da ST6 Realizer per provarli sul vostro computer! (file zip 104kb)