Menu:

PPTEA Guida Galattica


di MarKoZaKKa


Questa è la discussione originale.


Indice:

Capitolo 16:
It's a long way to the top...

Ok, misuriamo, calcoliamo, leggiamo sul display, ma un termostato è una cosa un poco diversa, cosa manca?
Innanzitutto una uscita che sia comandata dalla temperatura, dobbiamo quindi pilotare la nostra linea 14 sulla base della temperatura che leggiamo.
Come detto più sopra, accenderemo il nostro riscaldatore quando la temperatura scenderà sotto i 21°C e lo spegneremo sopra i 23°C, in maniera da mantenere la temperatura dell'ambiente dove è posta la sonda a 22°C in media.
Scriviamo la routine che si occuperà della gestione dell'output:

CODICE

SUB THERMO
LCDPOS=&H2E
IF T<21 THEN
OUTBIT(14)=1
STATO="#"
ENDIF
IF T>23 THEN
OUTBIT(14)=0
STATO="."
ENDIF
LCDWRITE=STATO
SUBEND

La routine confronta la temperatura misurata con i nostri due valori, ed agisce di conseguenza, indicando sul display lo stato acc/spento del riscaldatore.

Un primo miglioramento potrebbe essere quello di spostare la scrittura sull'LCD nella routine dedicata all'aggiornamento; un'altro, quello di usare delle variabili per definire i valori di soglia e di disteresi, in modo da rendere più flessibile la routine:

CODICE

SUB THERMO
IF T OUTBIT(14)=1
STATO="#"
ENDIF
IF T>SOGLIA+ISTERESI THEN
OUTBIT(14)=0
STATO="."
ENDIF
SUBEND


CODICE

SUB MOSTRA 'scrive la temperatura misurata e mediata
LCDPOS=&H21
LCDWRITE=LEFT(T,5)
LCDPOS=&H2E
LCDWRITE=STATO
SUBEND

Ovviamente, dovremo definire due costanti (per ora) con i valori SOGLIA=22 ed ISTERESI=1 per avere lo stesso comportamento del software.
Bene, abbiamo un termostato che fa le stesse cose di un termostato meccanico, ma essendo noi dei maniaci del PPTEA, possiamo fermarci qui e considerare raggiunto l'obiettivo?
Certamente NO!
... Innanzitutto, miglioriamo un poco la presentazione dei dati, visto che stiamo sprecando un LCD per due informazioni. Modifichiamo le seguenti parti del codice:

CODICE

CONSTANT RIGA1="T:"
CONSTANT RIGA2="C OUT:"


CODICE

SUB PREPARA_DISPLAY 'inizializzo il display e predispongo scritte fisse
LCDCLEAR
LCDPOS=&H11
LCDWRITE=RIGA1
LCDPOS=&H17
LCDWRITE=RIGA2
SUBEND


CODICE

SUB MOSTRA 'scrive la temperatura misurata e mediata
LCDPOS=&H13
LCDWRITE=LEFT(T,4)
LCDPOS=&H1D
LCDWRITE=STATO
LCDPOS=&H27
LCDWRITE=TREND
SUBEND


CODICE

SUB THERMO
IF T OUTBIT(14)=1
STATO="ON "
ENDIF
IF T>SOGLIA+ISTERESI THEN
OUTBIT(14)=0
STATO="OFF"
ENDIF
SUBEND


Almeno, abbiamo tutte le informazioni sulla prima riga, e la seconda rimane libera e pronta alle prossime "features".

Ora, fermiamoci un momento, e riflettiamo sul nostro operato.

Un termostato siffatto va benissimo per pilotare un riscaldatore elettrico, una caldaia a gas oppure a gasolio, ovvero macchine che possiamo avviare e fermare senza curarci del tempo necessario all'avvio ed all'arresto, perchè è dell'ordine di qualche decina di secondi.

Ma noi PPTEAiani, che bazzichiamo in un forum dall'altisonante nome di ENERGIA ALTERNATIVA, minimo minimo abbiamo una stufa/termostufa a pellet, che quindi ha un suo tempo di avvio (pulizia, carico, accensione, attesa fiamma, accesa) ed un suo tempo di arresto (stop alimentazione pellet, attesa spegnimento braciere, pulizia, spenta), per cui non possiamo sicuramente accenderla e spegnerla nel giro di mezz'ora.

Questo vuol dire che il nostro termostato deve perlomeno avere una "isteresi" anche per quanto riguarda i suoi tempi di reazione.

Pensiamo infatti ad una bella casetta con terrazzo vivibile, abitata da una famiglia con due pupetti di pochi anni, che si divertono da matti a giocare sul terrazzo, e che ormai hanno imparato ad aprire le porte... ad aprirle, appunto, il chiuderle per non far raffreddare casa è un concetto che proprio non gli entra ancora in testa, o se gli entra, viene messo a priorità 0 rispetto al gioco.

Cosa combinerebbe il nostro termostato?
Alla mattina, dopo aver mantenuto la casa a 22°C per tutta la notte, il termostato è nello stato spento... si alzano i due marmocchi, fanno colazione, vedono i giochi abbandonati fuori il giorno prima e si fiondano sul terrazzo, lasciando la portafinestra aperta... la temperatura del locale dove si trova il termostato (e la portafinestra aperta) rapidamente scende sotto ai 21°C... il termostato passa allo stato ACCESO, ed avvia la termostufa... ma arriva la mamma (urlando), prende i marmocchi per i pigiami e li riporta in casa, chiude la portafinestra, e la temperatura misurata dal termostato risale in breve tempo sopra ai 21°C per merito degli urli della mamma, dell'inerzia termica dell'abitazione ed anche perchè il sole ha iniziato a riscaldare gli ambienti... ma la nostra termostufa ormai è lanciata, e deve arrivare allo stato ACCESA, prima di iniziare il processo di spegnimento.

Quindi, abbiamo sprecato energia elettrica e pellet inutilmente, a causa della "nervosità" del nostro sistema.
Potremmo aumentare l'isteresi del termostato, magari differenziandola tra salita e discesa, già questo aiuterebbe, ma pensiamo a qualcosa di più raffinato... possiamo prendere in considerazione la velocità di abbassamento della temperatura per discriminare un raffreddamento brusco dovuto all'apertura di porte e fineste per arieggiare casa da un raffreddamento più lento, dovuto alla dispersione termica. inoltre, dobbiamo prevedere un tempo minimo di ACCESO della termostufa per evitare accensioni di breve durata che portano solo ad un usura della macchina senza alcun beneficio.

Quindi il nostro termostato si accenderà solo quando la temperatura sarà scesa sotto la soglia inferiore, ma con un trend non troppo brusco, altrimenti non prenderà in considerazione la variazione... ma se dopo aver arieggiato casa voglio accendere il riscaldamento?
Beh, prevederemo un modo per riportare il sistema al suo funzionamento normale.

MA nella prossima lezione, che sento suonare la campanella, INTERVALLO!!!!

Torna all'indice


Valid XHTML 1.0 Strict



[ Back to top ] [ Home ]