MassaBus Temperature Sensor

I DISPOSITIVI MASSABUS SONO ORA IN VENDITA COMPLETI E AGGIORNATI QUI!

La scheda Temperature sensor è una scheda del sistema domotico MassaBus che provvede a misurare la temperatura in un ambiente o su una cosa. Per effettuare ciò utilizza un sensore di temperatura digitale della Dallas Semiconductor DS18S20 che permette di rilevare temperature da -55 a +125°C con una accuratezza di +/- 0,5°C. Essendo il sensore di tipo digitale esso può essere posto anche a distanza di qualche metro dalla scheda di gestione, permettendo l’attacco in maniera semplice su un oggetto di cui vi è necessario monitorare la temperatura.

SCHEMA A BLOCCHI


La scheda collegata al bus permette di fornire al sistema MassaBus la temperatura ambientale o di una cosa che potrà essere elaborata dal sistema domotico per eseguire azioni di vario genere. La scheda ha come cuore centrale in microcontrollore PIC 16F628 che si occupa di gestire sia il sensore, sia il bus domotico. La scheda può essere alimentata direttamente con l’alimentazione centralizzata del sistema MassaBus essendo dotata di stabilizzatore.

Il microcontrollore PIC 16F628

Il microcontrollore PIC 16F628 fa parte della stessa famiglia del microcontrollore PIC 16F876 utilizzato nella scheda “Multi I/O Device”, pertanto in questo capitolo verranno descritte solo le differenze che presenta rispetto al 16F876. Innanzitutto questo microcontrollore dispone di un package più piccolo a 18 pin , meno periferiche e meno memoria disponibile. Permette però di adattarsi meglio, rispetto al 16F876, ai sistemi più semplici garantendo compattezza e più economicità.


Le sue principali caratteristiche sono:

In figura sotto è visibile lo schema a blocchi dell’architettura interna del microcontrollore.

Per la descrizione dei componenti si rimanda alla descrizione fatta nell'articolo di descrizione della scheda "Multi I/O Device" essendo il PIC 16F876 della stessa famiglia del microcontrollore 16F628.

Sensore di temperatura ad alta precisione DS18S20

Il sensore di temperatura DS18S20 della Dallas Semiconductor è un trasduttore di temperatura digitale che consente di misurare temperature da -55 a 125°C con una accuratezza di +/- 0,5°C e di fornire direttamente in digitale la temperatura appena misurata. Nella figura superiore è possibile osservare l’aspetto esteriore del sensore di temperatura. Come si può notare esso presenta tre terminali di cui 2 necessari all’alimentazione ed uno per la comunicazione dati. Per la comunicazione questo sensore di temperatura utilizza uno speciale protocollo chiamato OneWire che permette a sensore di comunicare in maniera bidirezionale con un unico filo conduttore.

Il sensore di temperatura dispone internamente di un convertitore analogico digitale con una risoluzione di 9 bit, di una memoria che mantiene memorizzati gli ultimi valori e alcune impostazioni e di una interfaccia per il controllo del bus OneWire.

Le sue caratteristiche principali, da datasheet, sono:

Per interfacciare il sensore all’unità di controllo (es. microcontrollore) è necessario collegare il pin del protocollo OneWire a un terminale del microcontrollore di tipo Open-Collector (vedere la figura sotto) e collegare una resistenza di pull-up da 4,7K, inoltre è necessario alimentare il sensore tramite l’apposito pin o tramite una speciale modalità che non essendo usata non viene descritta. Per effettuare una misurazione è necessario fornire nel terminale del protocollo OneWire delle parole di comando che fanno capo sempre ad un reset del sensore.

La misurazione di una temperatura si articola in due fasi: inizio della conversione e lettura della misura nella memoria (la cui struttura è visibile in figura sotto) dopo almeno i 750ms necessari alla conversione. Come si può notare nella struttura della memoria la temperatura viene salvata nei primi due byte della memoria, mentre gli altri byte vengono utilizzati per alcune funzioni non utilizzate nella scheda.

I primi due byte assumono i valori visibili in figura sotto associati alla temperatura misurata. Si può notare come il primo byte meno significativo rappresenta il valore binario di temperatura convertito (che moltiplicato per 0,5°C fornisce il valore diretto della temperatura in gradi celsius), mentre il secondo byte più significativo rappresenta il segno.

Nella scheda si è scelto di consentire l’uso di un solo sensore, pertanto in questo caso andranno forniti al sensore una successione di comandi ben definiti senza utilizzare l’indirizzamento opzionale del sensore (per maggiori dettagli fare riferimento al datasheet).

  1. Comando di reset
  2. Comando di salto senza indirizzamento (detto skip rom)
  3. Comando della funzione (es. inizio conversione, lettura etc)

Per i dettagli sui comandi si faccia riferimento al datasheet e al firmware della scheda descritto di seguito e nei file allegati.

FIRMWARE DI GESTIONE

Il firmware di gestione è stato progettato, come per le altre schede aventi microcontrollore PIC, attraverso il compilatore mikroBasic pertanto valgono le stesse considerazioni fatte precedentemente. Il compilatore contiene al suo interno una libreria chiamata OneWire che permette la gestione diretta dei sensori di temperatura DS18S20 e del pin del microcontrollore adibito alla comunicazione con il sensore, attraverso delle subroutine apposite:

Vengono utilizzate inoltre anche le librerie EEPROM per la gestione della omonima memoria e la libreria UART per il controllo della seriale. Essendo il tempo di conversione di 750ms per non rallentare il funzionamento del bus si è scelto di articolare il funzionamento della scheda con due tipi di funzioni normali: una per la partenza della conversone e una per il prelievo del valore convertito.

Le funzioni svolte dal firmware sono le seguenti:

Di seguito è possibile osservare il diagramma di flusso del programma inserito nel pic. In esso si fa riferimento a delle procedure esterne (decodifica dati, controllo input e codifica dati) che possono essere ritrovate in dettaglio nel firmware in linguaggio BASIC fornito.

Nel diagramma di flusso progettato, analogamente a quello della Multi I/O Device, vi è presente un ciclo continuo (LOOP) che si occupa in questo caso principalmente di verificare la fine di un eventuale conversione del sensore iniziata precedentemente e la presenza di dati in transito nel bus. Se la scheda è richiamata (direttamente o tramite indirizzo di Broadcast) il firmware si occupa di effettuare l’operazione richiesta. Come in tutte le schede slave del sistema MassaBus è presente un speciale modalità (selezionabile sulla scheda tramite deviatore) che permette la programmazione degli indirizzi direttamente via software.

 

Il firmware è disponibile nei download della scheda (a fondo pagina), è comprensivo di sorgenti e file HEX per programmare il microcontrollore.

 

SCHEMA ELETTRICO

In figura sopra è visibile lo schema elettrico progettato della scheda sensore di temperatura del sistema MassaBus. Si nota la presenza dello stabilizzatore 7805 (IC4) che provvede a fornire i 5V stabilizzati necessari al corretto funzionamento dei circuiti integrati della scheda. Il microcontrollore PIC (IC1) ha collegato il bus OneWire del sensore attraverso una sua particolare porta con uscita di tipo open-collector chiamata RA4 (presente nel package sul pin 3) e il cui schema interno è visibile in figura sotto dove è evidenziato il particolare circuito di output.

In questa maniera è possibile utilizzare attraverso tale porta il protocollo OneWire utilizzato dal sensore, anche attraverso l’uso della resistenza di pull-up R3 da 4,7K prevista dal protocollo.

A sinistra del microcontrollore si può notare il pulsate di reset P1 collegato al pin di reset generale del microcontrollore e i pin che collegano l’interfaccia UART interna al PIC con il transceiver MAX485 ed il relativo dip switch a 3, entrambi descritti nello schema elettrico della scheda Multi I/O Device. Sono presenti inoltre i componenti presenti in tutte le schede slave del sistema MassaBus, ovvero il led di segnalazione attività con l’opportuna resistenza di limitazione della corrente e il deviatore che consente di selezionare la modalità normale o la modalità programmazione. A destra del microcontrollore è presente il quarzo a 4 MHz con i relativi condensatori che garantisce una maggiore stabilità e precisione rispetto all’oscillatore a 4 MHz interno al microcontrollore.

REALIZZAZIONE PRATICA

Di seguito è possibile osservare il circuito su PCB, l'immagine è puramente indicativa. Per realizzare le schede fate riferimento ai file allegati. 

Alcune immagini 

 

Sono allegati al progetto i file programma del microcontrollore (diagramma per il programma Diagram Designer, programma in basic per mikroBasic Pro, file HEX precompilato da inserire direttamente nel PIC) e i file di realizzazione della scheda (in formato PDF e FidoCAD).

Nota: Il programma mikroBasic permette nella sua versione gratuita di compilare con funzionalità complete programmi grandi fino a 2Kbyte, il programma di questa scheda è inferiore a questa soglia e pertanto potrete ricompilare a piacimento il programma utilizzando la versione FREE di mikroBasic.

DOWNLOAD FILE PROGRAMMA MICROCONTROLLORE

 DOWNLOAD FILE REALIZZAZIONE SCHEDA