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:

  • CPU RISC ad alte prestazioni, cioè dispone di un ridotto set di istruzioni in assembly aventi tempi di esecuzione simile.
  • La maggior parte delle istruzioni richiede un solo ciclo della CPU per essere eseguita, un ciclo corrispondono a 4 impulsi di clock.
  • Supporta differenti tipi di generatori di clock e frequenze di clock fino a 20Mhz, dispone anche al suo interno di un oscillatore RC impostabile a 4 MHz o 37 KHz .
  • Power on timer e watchdog timer e Brown-out Reset.
  • Alto range di tensioni di funzionamento: da 3 a 5,5V.
  • Uscite in grado di supportare fino a 20mA continuativamente.
  • 2Kbyte di memoria FLASH interna.
  • 10 tipi di interrupt supportati.
  • 3 porte di I/O denominate PORTA, PORTB, PORTC.
  • Dispone di molte periferiche interne, tra cui: 3 timer, USART interno implementato a livello hardware e una EEPROM interna di 128 byte.

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:

  • Protocollo di comunicazione OneWire.
  • Possibilità di connessione multipla avendo ogni sensore un proprio indirizzo.
  • Range di alimentazione da 3 a 5,5V.
  • Range di temperatura misurata da -55 a +125°C.
  • Accuratezza della misura di +/- 0,5°C
  • Risoluzione conversione analogico digitale di 9 bit.
  • Tempo di conversione massimo pari a 750ms.
  • Permette il settaggio di temperature di allarme.
  • Possibilità di alimentare l’unità tramite l’apposito terminale o direttamente dal bus OneWire.

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:

      • Ow_Reset(Porta, pin) che effettua il reset del sensore di temperatura e restituisce 1 se il sensore non viene rilevato;
      • Ow_Read(Porta, pin) che permette di leggere un dato nel bus OneWire;
      • Ow_Write(Porta, pin, dato) che permette di scrivere un dato nel bus OneWire.

      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:

      • Provvede ad implementare le caratteristiche del protocollo MassaBus nella comunicazione con il bus.
      • La funzione di partenza della conversione della temperatura può essere effettuata singolarmente e in broadcast consentendo di inviare un unico comando di conversione a tutte le schede e permettendo successivamente di prelevare in maniera veloce il valore a tutte le schede senza attendere più volte il tempo di 750ms necessario alla conversione.
      • Il firmware utilizza il timer1 a 16 bit configurato per fornire un interrupt ogni 524ms (come nella scheda Multi I/O Device) che permette di scandire il tempo necessario alla conversione senza impegnare l’esecuzione del programma. Essendo l’unità temporale dell’interrupt di 524ms per effettuare un conversione coprendo i 750ms del sensore sono necessari due interrupt per poter poi prelevare il valore di temperatura.
      • In accordo con le funzioni del sensore la scheda può rilevare la presenza del sensore.
      • Essendo la conversione in broadcast senza conferma, il firmware della scheda può permettere tramite una funzione una sola lettura a conversione, permettendo di capire se il comando era stato ricevuto correttamente.
      • Gestione del transceiver MAX485 per permettere la comunicazione nel bus condiviso.
      • Programmazione degli indirizzi diretta via software.

      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