Termostati evoluti da Freescale

Benvenuti a un nuovo appuntamento con la Rubrica Firmware Reload di Elettronica Open Source. Freescale propone due tipologie di hardware da poter utilizzare come termostato, vediamone nel dettaglio le funzionalità e le caratteristiche più salienti, sia dal punto di vista hardware che software, per comprenderne al meglio il loro utilizzo.

INTRODUZIONE

Nell’accezione più generale del termine, un termostato è un componente costituito da un interruttore la cui azione ON-OFF (chiuso-aperto) è comandata da una variazione in temperatura di un elemento sensibile che è parte del componente stesso. Il primo termostato venne prodotto dal chimico scozzese Andrew Ure nel 1830. Viene identificato con il termine termostato perché è un sistema capace di cedere o assorbire calore senza mutare la propria temperatura. Banalizzando il suo funzionamento, si può affermare che quando la temperatura sale oltre un certo livello preimpostato, allora il termostato commuta in una posizione di OFF spegnendosi; mentre, quando la temperatura diminuisce oltre un certo livello stabilito, il termostato torna nella posizione di ON e ricomincia il ciclo.

È facile intuire che il tempo che intercorre nella commutazione ON-OFF deve essere compatibile con le apparecchiature o eventualmente i fluidi gestiti, perché i tempi d’intervento troppo brevi potrebbero danneggiare le apparecchiature elettriche comandate e generare ogni tipo di disturbo, perciò non sono attuabili con questo tipo di regolazione. Il termostato è pertanto adatto a regolare la temperatura di ambienti in cui questa varia “lentamente” nel tempo come in ambienti civili, frigoriferi e altro. Possiamo distinguere le funzioni del termostato in due macro blocchi:

  • regolatore di flusso, ovvero in grado di agire su un componente fisico per modificarne la gestione;
  • interruttore elettrico, per il comando di un dispositivo elettrico, il quale a sua volta comanderà i sistemi che influiscono sulla temperatura d’interesse.

In questa seconda tipologia di termostati, l'elemento sensibile è tipicamente un resistore il cui valore di resistenza è variabile con la temperatura, oppure un dispositivo a semiconduttore il quale, inserito in un circuito elettronico, comanda lo stato “ON-OFF” di un relè o di altre tipologie di dispositivi a stato solido. Queste tipologie di termostati apportano molti vantaggi dell’elettronica alla regolazione ON-OFF di un’apparecchiatura, ad esempio, consentono la memorizzazione dei periodi di riscaldamento, sia giornaliero che settimanale ma anche delle relative soglie di accensione/spegnimento, comandando sia caldaie che climatizzatori. In questo ambito, Freescale propone varie soluzioni da poter utilizzare come termostato, che analizziamo più nello specifico sia per quanto riguarda la parte hardware sia per quella software.

HARDWARE

Come anticipato, un termostato regola la temperatura di un sistema, di una stanza o di un edificio, mantenendo la temperatura a un livello desiderato. Com’è noto, per poter attuare qualsiasi tipo di strategia, si ha bisogno di poter misurare la temperatura circostante (input), ad esempio, mediante l’uso di un termistore, di una termocoppia e, in alcuni casi, di circuiti integrati a stato solido, ma anche poter intervenire sul sistema per controllarla (output), infatti, un termostato digitale è tipicamente collegato a un’unità nota come HVAC (Heater Venting and Air Conditioning). Chiarito l’ambito in cui si colloca un termostato, il progetto di riferimento di Freescale è realizzato sfruttando le caratteristiche del microcontrollore MC9S08LL16, ideale per applicazioni a bassa potenza con LCD, infatti, è caratterizzato da:

  • basso consumo energetico con configurazioni LCD che supportano il funzionamento nel range a bassa potenza, a partire da 1,5 μA;
  • 32 pin per i cristalli liquidi, fino a 196 segmenti e 18 pin per LCD multiplexati con GPIO (General Purpose Input Output), fornendo anche un’alta flessibilità;
  • funzionamento dell'LCD senza dove tener “sveglio” il controller, permettendo un notevole risparmio di energia.

Esistono due versioni del progetto proposto da Freescale, che utilizzano lo stesso hardware, il primo con un LCD 2x28 (termostato di fascia bassa), a sinistra in Figura 1 e l’altro con un LCD 8x24 (termostato di fascia alta) a destra in Figura 1.

Figura 1: Le due tipologie di termostato Freescale

Figura 1: Le due tipologie di termostato Freescale

Le due versioni mostrano la flessibilità di utilizzo di pannelli LCD di piccole e grandi dimensioni e il consumo di energia derivante dal loro utilizzo. Facendo riferimento al diagramma a blocchi mostrato in Figura 2, si può notare che il microcontrollore MC9S08LL16 è collegato ai seguenti componenti hardware:

  • Sensore di temperatura
  • Due diversi LCD
  • Cinque pulsanti
  • Quattro interruttori
  • Uscite HVAC
Figura 2: Schema a blocchi semplificato del termostato Freescale

Figura 2: Schema a blocchi semplificato del termostato Freescale

Il progetto di riferimento funziona con un cristallo da 32,768 kHz esterno e uno dei vantaggi è legato all’assenza di componenti aggiuntivi esterni per questa configurazione. Il connettore BDM standard è disponibile su entrambi i PCB (Printed Circuit Board) per poter programmare qualsiasi firmware. La tipologia di relè utilizzata è denominata “Latching Relay” (a ritenuta) in cui ogni relè ha due bobine “Set” e “Reset”, e ognuno ha bisogno di 180 mW di potenza nominale per impostare o reimpostare le bobine. Questo tipo di relè ha il vantaggio di mantenere i livelli “attuali” di controllo evitando di gestire continuamente il set e di reset delle bobine; funzionalità ideale per i sistemi alimentati con delle pile dove il consumo di corrente è fondamentale per il risparmio energetico. In questa configurazione viene utilizzato un circuito comune a +24V AC e prevede anche terminali a vite per una facile integrazione con le apparecchiature HVAC visibili in Figura 3-B. È stato progettato per operare con un unico trasformatore e lavorare nella configurazione visibile in Figura 3-A.

Figura 3: Diagramma di configurazione (A) e connettori su scheda (B)

Figura 3: Diagramma di configurazione (A) e connettori su scheda (B)

Per quanto riguarda la misura della temperatura, viene utilizzato un resistore variabile (esempio 100 kΩ) indipendentemente dalla temperatura, in serie con un resistore fisso da 82 kΩ per creare un partitore di tensione come mostrato in Figura 4.

Figura 4: Sensore di temperatura

Figura 4: Sensore di temperatura

A 25°C (77 °F) il coefficiente di temperatura del sensore è “1”, pertanto, la tensione della rete di divisione è pari a 1,486 V. Il termostato è controllato da cinque tasti e quattro interruttori, visibili in Figura 5-A e Figura 5-B, ogni pulsante è collegato a un pin che “risveglia” il micro da un suo eventuale “standby” utile per ridurre al minimo il consumo di potenza. Mentre gli interruttori hanno solo funzionalità hardware, infatti, servono a selezionare la sorgente di alimentazione, accendere o spegnere i LED di indicazione, attivare la misura della corrente per il micro o gestire la ventola. Alcune di queste funzionalità verranno analizzate più nel dettaglio successivamente per quanto riguarda la parte relativa al firmware. Infine, il progetto prevede anche un regolatore di tensione, perciò il sistema può essere utilizzato senza batterie e mediante un alimentatore esterno, con una tensione che può variare da 6 V a 12 V DC.

Figura 5: Pulsanti (A) e interruttori (B) di configurazione del termostato

Figura 5: Pulsanti (A) e interruttori (B) di configurazione del termostato

FIRMWARE

Il codice per il termostato rilasciato da Freescale è scritto in modo tale da avere i moduli software che interagiscono con le periferiche del microcontrollore, indipendenti dai moduli che elaborano le informazioni. I moduli utilizzati come interfaccia con le periferiche sono noti come Hardware Abstraction Layer (HAL) mentre i moduli che interagiscono con gli HAL e passano le informazioni alla routine principale (main.c) sono conosciuti come Hardware Independent Layer (HIL). L’uso di questa architettura riduce la dipendenza tra i blocchi e migliora la portabilità dei driver software per altre applicazioni. Per avere una panoramica di alto livello su come funziona tale software si veda la Figura 6, da cui si evince che il termostato inizia configurando tutte le periferiche e le variabili, poi misura e visualizza la temperatura iniziale e dopo entra nel ciclo principale.

Figura 6: Diagramma di flusso del funzionamento software

Figura 6: Diagramma di flusso del funzionamento software

Ci sono due scenari in cui si può “svegliare” il micro:

  • Quando si verifica la condizione di TOD (Time of Day): questo può essere ogni 5, 10, 15, 30 o 60 secondi; in tale occasione l’ora e la data vengono aggiornate e inizia una conversione della temperatura e della misura del livello di alimentazione (VDD). Il tutto termina quando la data e l’ora sono state aggiornate sul display LCD, così come la nuova temperatura e il livello di tensione. Nel caso di variazioni di temperatura, il termostato prende la decisione di attivare o disattivare il dispositivo di raffreddamento o il riscaldatore; dopo la configurazione delle uscite HVAC, il micro rientra in modalità “standby”.
  • Quando viene premuto un tasto qualsiasi: il termostato, in base al suo stato e al tasto premuto, decide cosa eseguire e successivamente torna nella fase di “standby”.

Per quanto riguarda il driver HAL del modulo LCD, questo fornisce le funzioni di inizializzazione nonché le routine per visualizzare le informazioni. Per la fascia bassa di LCD, il driver HAL fornisce anche la possibilità di scrivere messaggi in modalità di lampeggio dell'LCD (blink mode). Mentre le routine HIL visualizzano le informazioni rilevanti per l’applicazione del termostato; possono scrivere la data, l’ora e la temperatura tra le altre caratteristiche. Questi file prendono le informazioni dal blocco HAL per conoscere la quantità di caratteri da visualizzare per la temperatura e il tempo, così come la posizione dei simboli utilizzati: livello batteria, riscaldamento, raffreddamento e simboli. In questo modo, è possibile avere lo stesso file HIL per entrambi gli LCD, anche quando l’hardware e le implementazioni HAL sono differenti. Il modulo LCD del micro MC9S08LL16 include una modalità di lampeggio per scrivere un messaggio nei 4bit inferiori della forma d’onda corrispondente e il messaggio alternato nei 4bit superiori del registro stesso e, a seconda della frequenza di lampeggio selezionata, il modulo LCD commuta automaticamente tra i due messaggi.

Questa funzione è disponibile e implementata solo per i display del termostato di fascia bassa. Per utilizzare la funzione di lampeggio, il driver LCD ha sempre questa modalità attivata con un periodo di lampeggio pari a un secondo e scrive gli stessi contenuti per entrambi i messaggi, visualizzando le stesse informazioni anche quando la modalità lampeggio è attiva. Il vantaggio principale di questa caratteristica è che il microcontrollore non deve essere attivo per modificare il contenuto del display LCD, perché questo avviene automaticamente, e il termostato si attiva solo per fare una nuova conversione di temperatura o quando viene premuto un pulsante, altrimenti rimane in modalità basso consumo aumentando la durata della batteria per avere un periodo di lavoro più lungo con una corrente consumata minore. Come anticipato precedentemente, per misurare la temperatura, il termostato utilizza un termistore e il modulo HAL S08ADC12 del micro progettato per configurare l’ADC, che fornisce varie funzioni e, tra le altre cose, si occupa dell’avvio di una conversione ADC per qualsiasi canale, della dichiarazione del vettore di interrupt per leggere l’ultima conversione ADC e della memorizzazione dei valori in un buffer. Invece, il blocco di misura della temperatura HIL ha due funzioni principali:

  • leggere il canale ADC collegato al sensore di temperatura e convertire in un valore la temperatura;
  • calcolare la tensione di alimentazione dopo aver effettuato una conversione ADC per il canale d’interesse.

Come visualizzazione e calcolo dei valori di temperatura il termostato può utilizzare sia i gradi Celsius che Fahrenheit. In più, c’è da precisare che per avere un’accuratezza maggiore nella conversione ADC del valore di temperatura, il processo è quello di ottenere la media di otto conversioni ADC e di conseguenza ridurre il rumore della misura. Un altro modulo interessante implementato nel software è il modulo TOD (Time of Day), che viene utilizzato per creare le funzionalità del calendario. Grazie ad esso il termostato esegue tutte le sue funzionalità in modo sincrono con le impostazioni dell’utente e mostra il giorno della settimana e l’ora per il termostato di fascia bassa mentre l’ora in un formato 24 ore nel termostato di fascia alta.

Per mantenere la configurazione memorizzata dall’utente, il termostato sfrutta la memoria flash per salvare una versione non volatile dei punti d’interesse per il riscaldamento e raffreddamento legati ad ogni giorno della settimana. Tutto questo è possibile perché la famiglia di microcontrollori MC9S08 è in grado di scrivere e cancellare la memoria flash senza il bisogno di alcuna tensione esterna. Ogni volta che i parametri sono cambiati, il micro cancella i parametri memorizzati precedentemente e scrive i nuovi valori nella memoria flash. In questo modo, i parametri vengono conservati anche se il termostato viene spento. Per qualsiasi altra informazione aggiuntiva si faccia riferimento al sito ufficiale di Freescale da cui è possibile scaricare tutto il software di riferimento e le linee guida per le sue modifiche.

CONCLUSIONI

Dopo questa panoramica hardware e software riguardo le funzionalità maggiori dei termostati proposti da Freescale e implementati mediante microcontrollore MC9S08LL16, possiamo affermare che questi sistemi sono adatti a vari campi d’impiego viste le loro alte prestazioni e la loro elevata flessibilità.

 

 

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend