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:
Realizziamo la parte mancante. Impostazione delle soglie Specifiche di funzionamento da rispettare:
Queste specifiche possono essere realizzate con lo schema: 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à. 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). 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.
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.
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.
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. 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.
Realizzazione pratica: ![]() 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 è: 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)
|