rs485 - Massari Electronics

  • MassaBus Application Example

     VERSIONE: 1.0 | SISTEMA OPERATIVO: WINDOWS (32/64bit) 2000, XP, Vista e 7 | RILASCIO: OPEN SOURCE

     

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

    Il software MassaBus Controller da solo non è in grado di controllare le funzioni affidate al sistema domotico MassaBus, per questo motivo esso dispone di una modalità automatica che permette ad un software esterno di controllare le varie unità del bus domotico attraverso un porta TCP/IP. Tale software può essere adattato al massimo per soddisfare le esigenze dell’utente finale. In questa parte si analizza un software di esempio per comprendere alcuni aspetti della domotica: il monitoraggio e la mutazione immediata delle funzioni.


    Il software di esempio progettato si occupa di visualizzare a video la temperatura di due sensori di temperatura (schede Temperature sensor) presenti nel bus e monitorare l’attivazione di un sensore di movimento piroelettrico PIR attraverso l’ingresso 1 di una scheda Multi I/O Device. Quando il sensore PIR rivelerà un movimento il software a seconda della modalità impostata via software può intraprendere due azioni: accendere una luce o attivare un allarme. Queste due funzioni vengono svolte in maniera immediata e senza alcuna modifica alla circuiteria del sistema, rappresentando quindi la praticità di utilizzo di un sistema domotico.

    La circuitazione di esempio utilizzata con il software di controllo e il sistema MassaBus è visibile in figura sotto, dove è anche possibile vedere un esempio di assegnazione degli indirizzi delle schede nel bus. 

     

    In tale circuito si nota la presenza di un campanello di allarme, di una luce e del sensore PIR per il rilevamento dei movimenti. Il campanello richiede una tensione di 12Vac, mentre la luce a led viene alimentata con 16Vdc eppure non vie è alcun problema di pilotaggio essendo il relè considerabile come un normale deviatore meccanico. Il sensore PIR invece provvede a fornire al primo ingresso una tensione di 16Vdc (che è supportabile dalla scheda nonostante l’ingresso sia progettato per una tensione di 12V) che si occupa di attivare il fotoaccoppiatore di ingresso e il led di segnalazione.

    Questa applicazione ovviamente ha una dubbia utilità, permette però di capire come un sistema domotico possa “interagire” con l’ambiente circostante. Ad esempio se nel computer master viene installato un cellulare GSM con opportuno software di controllo comunicante via TCP/IP con il software MassaBus Controller, sarà possibile controllare a distanza l’ambiente in cui il sistema MassaBus è installato. Tutto questo tramite normali SMS o chiamate dati.

    Il circuito descritto montato fisicamente è visibile in figura sotto dove si possono notare in centro la campana di allarme, il sensore PIR e introno le schede MassaBus utilizzate. 

    ALTRE IMMAGINI

    Sono disponibili i sorgenti per Visual Basic .NET (gratuito) o Visual Studio 2010 e l'eseguibile compilato per avviare direttamente l'applicazione.

    DOWNLOAD FILE SORGENTI

    DOWNLOAD ESEGUIBILE

  • MassaBus Controller

    {jcomments on}VERSIONE: 2.1.0.1 | SISTEMA OPERATIVO: WINDOWS (32/64bit) 2000, XP, VISTA e 7 | RILASCIO: OPEN SOURCE

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

    Il software MassaBus Controller è l’interfaccia software progettata tra il programma di gestione e il sistema domotico MassaBusEsso è diviso in due modalità operative: comando manuale e comando automatico.


    Nella modalità a comando manuale è possibile controllare direttamente dal programma MassaBus ogni singola caratteristica di ogni scheda presente nel sistema. In questa modalità è disponibile una comoda ricerca automatica che effettua una scansione degli indirizzi utilizzati dalle varie schede e li restituisce in ordine su una lista.

    Nella modalità a comando automatico, invece, MassaBus controller apre un porta TCP/IP da cui sarà possibile inviare i comandi direttamente da un programma di gestione realizzato ad hoc per l’utente finale in grado di eseguire le attività del bus domotico, garantendo la massima praticità. Il software MassaBus controller provvederà poi a girare le risposte al programma sempre via TCP/IP.

    ...in aggiornamento...

    Sono disponibili i sorgenti del programma utilizzabili con Visual Basic .NET (gratuito) e il programma eseguibile.


    DOWNLOAD SORGENTI

    DOWNLOAD ESEGUIBILE

  • MassaBus Mini I/O Device

     cimg1687

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

    Questa scheda è la versione ridotta della scheda Multi I/O Device del sistema domotico MassaBus. Dispone di 4 uscite a relè e di 4 ingressi digitali optoisolati e condivide la maggior parte dei comandi della scheda gemella più grande.

    SCHEMA ELETTRICO


    schminiio

    Lo schema è semplificato rispetto alla scheda Multi I/O Device, si nota in particolare l'uso di un microcontrollore più piccolo 16F628A e la mancanza del convertitore analogico-digitale. L'integrato ULN2803A è stato sostituito da 4 transistor per ottimizzare spazio e costi.

     

    FIRMWARE

    Il firmware è stotanzialmente identico a quello della scheda Multi I/O tranne per la mancanza delle istruzioni che eseguivano le funzioni del convertitore analogico-digitale che in questa scheda non è presente.

     

    REALIZZAZIONE PRATICA

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

    Attenzione che alcuni componenti (diodi, resistenze) sono montati in verticale quindi un terminale va sulla scheda e l'altro terminale assume la forma di "u" rovesciata per poter arrivare anch'esso alla scheda.

    Fate attenzione anche a montare i due ponticelli presenti sulla scheda, realizzabili con del filo nudo.

    brdminiio

     

    ALCUNE IMMAGINI

      

     

    I file per la realizzazione della scheda sono in formato PDF con sorgente in formato per FidoCAD, il firmware è compilato in formato HEX con il sorgente per l'IDE MikroBasic (in versione free).


    DOWNLOAD FILE PROGRAMMA MICROCONTROLLORE   

    DOWNLOAD FILE REALIZZAZIONE SCHEDA

                                                                     

       

  • MassaBus Multi I/O Device

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

    La scheda Multi I/O device del sistema MassaBus permette di controllare l’attivazione di 8 uscite a relè, lo stato di 8 ingressi digitali optoisolati e la tensione presente in un ingresso analogico. La scheda dispone di un microcontrollore di gestione PIC 16F876, programmato con opportuno firmware, che assolve a tutte le funzioni di gestione della scheda e alla comunicazione nel sistema MassaBus.

    La scheda viene alimentata a 16V dalla scheda di alimentazione del bus ed è dotata di due stabilizzatori (7812 e 7805) che permettono l’alimentazione dei dispositivi a 12V e 5V, per questo motivo la tensione entrante può discostarsi in eccesso dal valore minimo di 16V fino a 35V, ovvero il massimo consentito dall’integrato stabilizzatore, garantendogli però una adeguata dissipazione termica.

    SCHEMA A BLOCCHI


    La scheda dispone di 8 relè comandati dal microcontrollore attraverso l’integrato driver ad alte correnti ULN2803 che provvede a supportare la corrente richiesta dai relè e consente di ridurre i circuiti esterni necessari rispetto all’uso dei classici transistor, essendo la corrente dei relè superiore alla corrente massima assorbita dal microcontrollore (20mA contro i 60mA richiesti dai relè). Gli ingressi sono optoisolati attraverso dei fotoaccoppiatori 4N25, che permettono di garantire l’isolamento tra gli ingressi esterni e i circuiti elettronici presenti nella scheda. L’ingresso analogico è collegato, tramite un circuito di protezione, ad un convertitore analogico-digitale interno al microcontrollore che accetta tensioni da 0 a 5V ed il circuito di protezione permette proprio di limitare la tensione in ingresso al convertitore analogico digitale.

    La scheda, come tutti i dispositivi interfacciati al bus RS485, è dotata del transceiver MAX485 (descritto precedentemente) e di un dip switch a tre vie che consente di attivare la resistenza di terminazione e le due resistenze di polarizzazione del bus. La scheda presenta inoltre un interruttore che permette di discriminare la funzionalità normale dalla funzionalità di programmazione dell’indirizzo e un led di segnalazione accensione e attività.

    Ottuplo driver a darlington per alte correnti ULN2803

    Un microcontrollore o un integrato TTL/CMOS non è in grado di gestire direttamente carichi che assorbono alta corrente, pertanto per poterli gestire è necessario ricorrere ad appositi driver che si occupano di fare da buffer di corrente permettendo il controllo di carichi elevati anche tramite integrati a bassa potenza. In questo caso per far gestire i relè di output della scheda Multi I/O Device al microcontrollore PIC 16F876 si è scelto di optare per l’integrato ULN2803.

    Questo integrato presenta un ingresso attivo a livello alto collegabile direttamente all’uscita del microcontrollore, mentre in uscita presenta delle uscite attive basse (quindi il segnale viene invertito internamente) con dei diodi in antiparallelo che permettono di utilizzare dei relè o carichi induttivi (che creano tensioni inverse in grado i rompere, in mancanza di tale diodo, i componenti interni all’integrato) senza la necessità di diodi esterni, rendendo la realizzazione degli apparati più economica e integrata. Le uscite del relè, per essere attivate quando vi è attiva l’uscita del microcontrollore, debbono essere collegate ad un capo della bobina, mentre l’atro capo deve essere collegato insieme ai diodi in antiparallelo interni (terminale 10) alla tensione di alimentazione dei relè (in questo caso i 12V stabilizzati). Sotto è visibile lo schema interno.

    Le principali caratteristiche di questo integrato (in riferimento al datasheet) sono:

    • Tensione massima supportata in output 50V.
    • Tensione in ingresso massima di 30V.
    • Compatibilità input con tensioni caratteristiche TTL/CMOS.
    • Supporta in output una corrente massima di 500mA ad uscita.
    • Temperatura operativa da 0 a +70°C.

    Il microcontrollore PIC 16F876


    Il microcontrollore PIC 16F876 è il cuore della scheda Multi I/O del sistema MassaBus, esso si occupa di gestire tutto il funzionamento della scheda e implementa il protocollo di comunicazione del sistema MassaBus.

    Le sue principali caratteristiche (in riferimento al datasheet) 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.
    • Power on timer e watchdog timer e Brown-out Reset
    • Alto range di tensioni di funzionamento: da2 a 5,5V.
    • Uscite in grado di supportare fino a 20mA continuativamente.
    • 8Kbyte di memoria FLASH interna.
    • 13 tipi di interrupt supportati.
    • 3 porte di I/O denominate PORTA, PORTB, PORTC.
    • Basso consumo: con clock di 4Mhz l’assorbimento tipico è di 600uA a 3V.
    • Dispone di molte periferiche interne, tra cui: 3 timer, un convertitore A/D a 5 canali con una risoluzione di 10bit, USART interno implementato a livello hardware e una EEPROM interna di 256 byte.

    In figura è possibile notare la struttura interna, comprensiva di CPU, memoria, periferiche e pin di I/O.


     

    Come si può notare dalle caratteristiche un microcontrollore in generale permette di integrare la potenza dei sistemi programmabili in dispositivi semplici e a basso consumo permettendo di ottenere una elevata “intelligenza” di funzionamento e una altissima praticità nella realizzazione.

    Nel sistema MassaBus il microcontrollore permette di implementare tutto il protocollo di comunicazione, nonché di gestire tutta la scheda Multi I/O Device, permettendo anche la possibilità di modificarne il funzionamento senza alcuna modifica hardware.


    Nella figura è possibile notare il package e il pinout del microcontrollore, esso viene utilizzato nella scheda come package PDIP a 28 piedini. I terminali del package spesso svolgono più funzioni e tutte le funzioni del microcontrollore (modalità terminali input o output, periferiche, interrupts etc) sono selezionabili tramite dei registri di configurazione interna, per i dettagli si faccia riferimento al datasheet del microcontrollore e al firmware presente di seguito.

    La serie F dei microcontrollori PIC è caratterizzata dall’avere una ROM di tipo FLASH, ciò consente di effettuare più programmazioni del firmware senza dover necessariamente cambiare ogni volta microcontrollore. La programmazione può avvenire in due modalità: direttamente sulla scheda attraverso una interfaccia che va predisposta oppure attraverso un programmatore esterno, con la necessità di rimuovere dalla scheda di utilizzo il microcontrollore ogni qualvolta si debba riprogrammarlo. Nel sistema MassaBus non è stata prevista alcuna interfaccia di programmazione, pertanto per riprogrammare eventualmente il firmware interno del microcontrollore è necessario asportarlo dalla scheda e porlo sull’apposito programmatore.

    Il microcontrollore dispone al suo interno di numerose funzioni che ne garantiscono la sicurezza di funzionamento:

    • Power on timer: timer che permette di attendere la stabilizzazione della tensione di alimentazione del pic prima di avviare l’esecuzione del programma caricato.
    • Brown-out reset: permette di resettare il PIC quando la tensione di alimentazione scende sotto il livello minimo.
    • Watchdog timer: è un timer avente clock indipendente rispetto al clock del pic che, se attivato, viene incrementato e al raggiungimento del valore massimo contabile provoca un reset del microcontrollore. Per evitare il reset è necessario dare periodicamente nell’esecuzione del programma un istruzione di reset del conto del timer. Questa funzione permette in maniera molto efficace di evitare blocchi del programma in seguito a situazioni non previste o ad altre problematiche di vario genere.

    Queste impostazioni essendo critiche per il funzionamento del programma sono impostabili solamente durante la programmazione del PIC. Il timer1, unico utilizzato nel microcontrollore, è un timer a 16 bit che al raggiungimento del suo valore massimo si resetta e provoca un interrupt.

    Il sistema MassaBus utilizza in tutti i suoi dispositivi a microcontrollore come oscillatore un quarzo che consente di avere una alta stabilità della frequenza anche al variare della temperatura. Per la comunicazione sul bus viene utilizzato l’UART hardware del pic consentendo di risparmiare molto spazio nel firmware finale rispetto che ad una implementazione via software di tale dispositivo. L’EEPROM interna è utilizzata per memorizzare i parametri necessari al sistema per potersi ripristinare in caso di interruzione dell’alimentazione (es. gli indirizzamenti, i dati in output etc, per i dettagli fare riferimento al firmware).

     

    FIRMWARE DI GESTIONE

    Il firmware è il programma implementato sulla ROM FLASH del microcontrollore che esegue tutte le operazioni di gestione della scheda, della comunicazione nel bus e che premette quindi al microcontrollore stesso di funzionare.

    I microcontrollori, come tutti i sistemi programmabili, eseguono le istruzioni attraverso un linguaggio macchina binario, pertanto per poterli programmare facilmente è necessario utilizzare un linguaggio a livello più alto quale l’assembly. Sebbene l’utilizzo di questo linguaggio risolva il problema della realizzazione del codice da parte di un umano, spesso si preferisce adottare linguaggi ancora di più alto livello quali ad esempio BASIC, C e PASCAL.

    L’utilizzo di questi linguaggi consente di ottenere una maggiore semplicità nella stesura del codice e nella sua comprensione. Nella fattispecie per programmare il microcontrollore PIC si è fatto uso del compilatore “mikroBasic”, in versione freeware, facente uso del linguaggio BASIC e contenete al suo interno alcune librerie di gestione preprogrammate delle periferiche, tra cui quelle utilizzate nel firmware della scheda, ovvero le librerie ADC, EEPROM e UART.

    La libreria ADC si occupa di gestire in maniera semplice e diretta la conversione analogica di un canale (nel caso del sistema MassaBus il canale 0 corrispondente al terminale AN0 del PIC. La libreria EEPROM permette in maniera semplice di scrivere e leggere le locazioni di memoria della EEPROM di cui è dotato internamente il PIC, mentre la libreria UART permette di utilizzare in maniera semplice l’USART in modalità asincrona presente a livello hardware all’interno del microcontrollore.

    Il firmware del pic implementato nella scheda Multi I/O Device, con l’uso delle librerie citate, svolge nel dettaglio le seguenti funzioni:

    • Provvede ad implementare le caratteristiche del protocollo MassaBus nella comunicazione con il bus.
    • Verifica periodicamente a ciclo continuo il dato in input per aggiornare un registro chiamato H formato da 8 bit che rappresentano gli ingressi aventi avuto una transazione da livello0 a 1, ponendo tali bit a 1, ed un registro chiamato L formato da 8 bit che rappresentano gli ingressi che da livello 1 sono passati a 0, ponendo tali bit a 1. Questi registri vengono inoltre salvati in EEPROM in caso di variazione per poter essere ripristinati anche dopo un reset o spegnimento della scheda e sono liberamente resettabili tramite un comando.
    • Verifica periodicamente la disponibilità di dati dall’UART.
    • Le uscite dispongono di una modalità impulsiva che permette di attivare e disattivare le uscite impostate con un solo comando in un tempo da0,5 a 255 secondi. Tali impostazioni sono contenute in due registri chiamati pulse_byte, con a livello 1 i bit rappresentanti le uscite impulsive, e pulse_delay con in binario il valore del ritardo tra l’accensione e lo spegnimento. Il tempo di ritardo è stato gestito attraverso il timer1 a 16 bit del microcontrollore PIC che attraverso il circuito interno (mostrato in figura sotto), configurato con il prescaler a 8 divisioni e come frequenza base 1MHz proveniente dalla frequenza di clock (4MHz) diviso 4 (questo per l’architettura interna del pic), che provoca un interrupt ogni 0,526 secondi. Pertanto il valore del pulse_byte prima di essere confrontato con il numero degli interrupt avvenuti viene raddoppiato (come visibile nel firmware stesso) creando una temporizzazione che conta il secondo (in maniera ovviamente non precisa essendo 0,526 >0,5). L’utilizzo del timer consente al microcontrollore di eseguire altre operazioni durante il conteggio consentendo alla scheda di rimanere sempre vigile ai comandi impartitigli.

      • La scheda permette di convertire un valore di tensione analogico in digitale attraverso la gestione da parte del programma di un convertitore ADC interno. Questo convertitore può essere avviato singolarmente oppure insieme agli altri ADC con un comando in broadcast.
      • I registri H e L, il valore in output, i registri pulse_byte e pulse_delay nonché gli indirizzi vengono sono salvati nella memoria EEPROM ad ogni modifica consentendone il ripristino in caso di spegnimenti o reset.
      • Supporta la conversione del valore del convertitore A/D in maniera singola e in broadcast.
      • Essendo la conversione A/D 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 progettato 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 è possibile notare la presenza di un ciclo continuo (LOOP) che si occupa principalmente di resettare il Watchdog timer, controllare il valore binario degli ingressi input e di controllare la presenza di dati in transito nel bus. Tali dati se destinati alla scheda (direttamente o tramite indirizzo di broadcast) faranno eseguire al firmware le procedure richieste. E’ presente inoltre una speciale modalità che permette la programmazione iniziale degli indirizzi direttamente via software (con la necessità però di intervenire sull’apposito deviatore di selezione modalità presente sulla scheda).

      Diagramma di flusso

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

      SCHEMA ELETTRICO

       

      In figura è possibile vedere lo schema elettrico della scheda Multi I/O Device. Partendo dall’alimentazione è possibile notare la presenza di due stabilizzatori 78xx (IC1,IC2) che permettono di fornire tensioni rispettivamente di 12V per i relè e 5V per il resto del circuito. Gli stabilizzatori sono dotati, oltre che al classico diodo di protezione D1 per impedire la rottura del circuito in caso di inversioni di polarità, anche dei diodi D2 e D3 che proteggono gli stabilizzatori dalle tensioni inverse che potrebbero avvenire durante la scarica dei condensatori di livellamento inseriti tra gli stabilizzatori.

      Gli ingressi sono optoisolati, pertanto in ingresso vi deve essere un circuito in grado di attivare il led dei fotoaccoppiatori e un led di indicazione posto sulla scheda che indica in maniera chiara l’attivazione dell’ingresso. Il circuito in questione è visibile a destra di ogni fotoaccoppiatore (es. OC1) ed è composto da una resistenza di limitazione della corrente e un diodo (es. D4) che protegge i diodi led dalle tensioni inverse (avendo i diodi led una tensione di rottura inversa molto bassa). Tale diodo normalmente è interdetto ed interviene soltanto in caso di tensione entrante avente polarità errata.La resistenza facente capo al circuito (es. R1) in questo caso è stata dimensionata per un funzionamento a 12V, comunque la praticità della configurazione circuitale permette di adattare il circuito a varie tensioni entranti cambiando solamente la resistenza e utilizzando un diodo aventi caratteristiche idonee. 

      La formula per calcolare tale valore può essere realizzata considerando la prima legge di ohm e la maglia dei diodi led:

      Quando la tensione immessa negli ingessi ha polarità errata il diodo in antiparallelo protegge i diodi led dalla rottura ed anche se stesso è protetto dalla resistenza posta subito dopo l’ingresso che provvede a limitare la corrente. In questo caso è stato usato come diodo il modello 1N4148 che supporta, come detto da datasheet, una corrente di 200mA e una tensione inversa di 75V a 25°C pertanto è più che sufficiente per l’utilizzo con Vin = 12V. All’ uscita dei fotoaccoppiatori vi è presente un transistor che cortocircuita il terminale del microcontrollore (IC3) entrante (porte RB del PIC impostate come ingresso) ogni volta che il led interno viene attivato. Si nota la mancanza delle classiche resistenze di pull-up essendo queste attivate direttamente dentro il microcontrollore (come visibile nella figura rappresentante l’interno dei terminali RB usati) consentendo una realizzazione più economica e compatta.


      L’ingresso del convertitore A/D presente nel microcontrollore è protetto dalle tensioni fuori range 0-5V dal circuito visibile in basso a sinistra dello schema ed è composto essenzialmente da una resistenza (R12) ed un diodo zener (ZD1) che avendo tensione di soglia inversa 5,1V provvederà al superamento di 5,1V a far scorrere corrente mantenendo ai capi di R13 una tensione massima di 5,1V proteggendo l’ingresso del convertitore A/D del microcontrollore.

      Nello schema è poi possibile notare i terminali di output dei relè del microcontrollore che finiscono nell’integrato ULN2803 (IC4), che come precedentemente descritto, si occupa di gestire le correnti richieste dai relè e contiene al suo interno anche i diodi di ricircolo necessari essendo il relè un carico induttivo e al suo distacco provoca delle tensioni inverse che potrebbero rompere le porte dell’integrato. Si nota la resistenza della resistenza R9 di pull-up, necessaria essendo quell’uscita del microcontrollore di tipo open-collector.

      Tutti i relè hanno collegato in parallelo alla bobina un diodo led con resistenza di limitazione dimensionata per 12V che permette di indicare in maniera chiara l’attivazione del relè. I relè dispongono di un singolo contatto avente il terminale in comune, il terminale normalmente aperto e il terminale normalmente chiuso; permettendo il collegamento di dispositivi a corrente continua o alternata fino a tensioni di 250Vac o 110Vdc e una corrente di 16A, considerando i relè come fossero dei normali deviatori, quindi con la massima flessibilità dei collegamenti ed utilizzi. I relè permettono inoltre di isolare il circuito elettronico dai dispositivi comandati.

      A sinistra del microcontrollore è possibile notare il quarzo Q1 e i due condensatori C8 e C9 che provvedono a generare la frequenza di clock del microcontrollore a 4 MHz. Come in ogni scheda avente un microcontrollore del sistema MassaBus è presente un pulsante (P1) che effettua il reset manuale del il microcontrollore e un led di segnalazione attività (LD9) con relativa resistenza di limitazione (R11) dimensionata per 5V. Un ingresso del microcontrollore è usato per l’interruttore SW1 che consente di selezionare la modalità normale o la modalità di programmazione a livello hardware. E’ presente in basso a destra il circuito con l’integrato MAX485 che si occupa dell’interfacciamento tra l’UART del PIC e il bus RS485 del sistema MassaBus con il dip switch a 3 terminali che consente di attivare la resistenza di terminazione e le resistenze di polarizzazione del bus.

       

      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

      • 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:

        • 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

          • Scheda interfaccia MassaBus

            {jcomments on}

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

            La scheda di interfaccia bus MassaBus si occupa di adattare i segnali dell’interfaccia RS232 del computer master in segnali di tipo RS485, adatti alla comunicazione nel bus. La scheda può essere alimentata a 5V sia dalla scheda di alimentazione (che ha una apposita uscita riservata a questa scheda), sia dal computer master con cui è collegata via seriale RS232 visto che i PC solitamente dispongono già di linee interne di alimentazione stabilizzate a 5V.

            Nella figura sopra è possibile notare il layout della scheda che dispone nel lato sinistro del connettore standard RS232 a 9 pin, mentre nel lato destro trovano spazio un connettore morsetto a 3 vie per collegare il bus domotico alla scheda (linee A,B e GND), un connettore a due vie per l’alimentazione a 5V della scheda e un dip switch dotato di tre interruttori che permettono di attivare la resistenza di terminazione della linea e le resistenze di polarizzazione del bus. Le modalità di attivazione e di collegamento sono state descritte nel capitolo relativo al bus RS485.

            La scheda dispone inoltre di un led verde che indica la corretta alimentazione della scheda e di un led rosso che indica l’attività del bus domotico, attivandosi quando il master effettua una chiamata ai device slave.

            CARATTERISTICHE SCHEDA

            Questa scheda presenta le seguenti caratteristiche:

            • Alimentazione a 5V (da scheda di alimentazione o PC master).
            • Interfaccia verso PC master RS232, adattabile ad usb con appositi convertitori.
            • Isolamento galvanico tra bus RS485 e RS232 tramite fotoaccoppiatori e convertitore DC/DC isolato.
            • Comando direzione dati bus RS485 tramite segnale RTS RS232.
            • Adattamento segnali RS232 – TTL.
            • Presenza led di segnalazione alimentazione e attività bus.
            • Possibilità di attivazione terminazione e polarizzazione sulla linea bus.

            SCHEMA A BLOCCHI

            Le funzioni della scheda possono essere rappresentate tramite uno schema a blocchi.

            Partendo da sinistra è possibile notare la presenza di un convertitore RS232 – TTL (MAX232) che si occupa di convertire i segnali tipici dell’interfaccia RS232 in segnali 0-5V TTL compatibili. Questi segnali TTL vengono utilizzati dai fotoaccoppiatori di isolamento che si occupano di mantenere galvanicamente isolate la linea dati lato RS232 dalla linea lato BUS.

            Le due parti della scheda (lato RS232 e lato BUS) oltre che essere isolate a livello di segnali sono isolate anche a livello di alimentazioni attraverso l’uso di un convertitore DC/DC isolato. Nel lato bus i segnali elettricamente isolati dalla parte dell’ interfaccia RS232 vengono mandati all’integrato transceiver MAX485 che provvede ad adattare i segnali entranti ai segnali necessari al bus RS485. In particolare il segnale RTS presente nell’interfaccia RS232 viene utilizzato, dopo l’isolamento tramite fotoaccoppiatori, per la selezione della direzione di comunicazione del transceiver RS485.

            La parte lato bus è direttamente alimentata dalla tensione a 5V entrante a destra dello schema a blocchi, mentre tutta la parte relativa all’interfaccia RS232 viene alimentata tramite il convertitore DC/DC. Il convertitore DC/DC può anche essere omesso collegando rispettivamente i terminali + e - delle due sezioni con dei ponti sulla scheda.

            TRANSCEIVER MAX232

            Questo integrato si occupa dell’adattamento dei segnali di tipo RS232 provenienti dal PC di controllo master ai livelli logici TTL standard, utilizzati da microcontrollori e circuiti digitali sbilanciati per collegamenti tra componenti.

            Inoltre, per poter inviare i segnali RS232 ai fotoaccoppiatori è necessario adattare, oltre che le impedenze e i livelli di tensione, anche i livelli logici associati alle tensioni effettuando le opportune inversioni. Infatti i segnali utilizzati (TxD,RxD e RTS) presenti nell’interfaccia RS232 presentano una logica negativa mentre nelle parti successive del circuito è richiesta una logica positiva.

            Tutte queste funzioni di inversione ed adattamento vengono svolte dall’integrato MAX232 della Maxim che contiene al suo interno dei duplicatori e invertitori di tensione che fanno uso di circuiti detti a “pompa di carica”. Questo permette di garantire, con una sola alimentazione di 5V, la tensione positiva e negativa dello standard RS232 con una efficienza molto alta. Lo schema interno preso dal datasheet in figura 2.20 rappresenta in maniera chiara le inversioni logiche effettuate sui segnali e i circuiti di duplicazione e inversione della tensione. Nella pratica la tensione entrante a 5V viene duplicata a 10V per essere in linea con i livelli di tensione dei segnali di tipo RS232. Successivamente tale tensione viene invertita a -10V consentendo di utilizzare entrambi i livelli +10V e -10V necessari alla comunicazione in standard RS232. Per effettuare tali operazioni l’integrato necessita di 5 condensatori (solitamente da 1uF) come rappresentato nello schema interno. Sempre dallo stesso si notano le resistenze di pull-down e pull-up che permettono di poter lasciare gli ingressi non utilizzati dell’integrato scollegati. L’integrato supporta la conversioni di 2 canali RS232 a TTL e di 2 canali TTL a RS232.

            CONVERTITORE DC/DC


            La scheda di interfaccia bus RS485 per poter garantire un isolamento totale tra l’interfaccia master RS232 e il bus RS485 necessita, oltre che dei fotoaccoppiatori dei segnali, anche di un convertitore DC/DC isolato. Questo dispositivo permette di alimentare un carico mantenendo le masse e le alimentazioni separate come se fossero due circuiti indipendenti.


            Il principio sui cui si basano questi convertitori è basato sull’utilizzo di trasformatori di isolamento operanti ad alta frequenza, che hanno dimensioni drasticamente ridotte rispetto ai trasformatori classici. Infatti il trasformatore in questo contesto permette di isolare galvanicamente i due circuiti (quello in ingresso al convertitore e quello in uscita) trasferendo l’energia attraverso un flusso magnetico. Per poter effettuare questa operazione è necessario che il trasformatore venga alimentato con una corrente alternata ad alta frequenza generata da un circuito oscillatore che permette di convertire la corrente continua in corrente alternata ad alta frequenza. Il trasformatore può quindi elevare, diminuire o mantenere pressoché identica all’avvolgimento primario la tensione presente nel suo avvolgimento secondario.Quando la tensione rimante dello stesso valore tra gli avvolgimenti il convertitore funge semplicemente da isolatore di sicurezza tra due circuiti operanti in corrente continua, proprio come nel caso della scheda di interfaccia bus RS485.

            La tensione in uscita dal secondario viene quindi riconvertita in continua tramite l’uso di diodi rettificatori e capacità di filtro, riottenendo la corrente continua simile a quella entrante in origine (per tale motivo è chiamato DC/DC).

            Questa scheda è stata progettata per supportare vari modelli di convertitori DC/DC isolati della Texas Instruments:

            • DCH010505
            • DCH010505D (versione con anche uscita negativa)
            • DCP020505
            • DCP020505D (versione con anche uscita negativa)

              Per semplicità di seguito verrà illustrato il modello DCH010505 prodotto dalla Texas Instruments, un integrato convertitore DC/DC non regolato e isolato da 1W di potenza. Esso si presenta con un package visibile in figura. Il trasformatore garantisce isolamento fino a 3.000V.

              Si è scelto di utilizzare vari modelli di convertitori DC/DC per garantire la massima flessibilità e la facile reperibilità del componente.

              Questo componente, essendo abbastanza costoso (10€ circa) può anche essere escluso procedendo in due modi:

              • Isolando completamente le due alimentazioni, collegando l'alimentazione (5V e GND) della linea isolata ai 5V e GND del pc a cui è collegato e collegando all'ingresso di alimentazione della scheda l'alimentazione del bus.
              • Collegando la linea isolata all'alimentazione del bus, in questo caso al posto dei convertitori è necessario apporre dei ponticelli rispettando le polarità (5V e GND).

              TRANSCEIVER RS485 MAX485

              Questo integrato, facente parte anch’esso della scheda di interfaccia bus, si occupa dell’adattamento dei segnali in logica TTL entranti in segnali a logica RS485 e viceversa. Nel dettaglio si occupa di effettuare le necessarie negazioni per garantire le caratteristiche differenziali della linea RS485 e i livelli logici TTL associati utilizzati nel resto della scheda.

              L’integrato è composto da un trasmettitore e da un ricevitore le cui attivazioni sono controllabili tramite due terminali:

              • RE: a livello basso attiva l’unità ricevente dell’integrato.
              • DE: a livello alto attiva l’unità trasmittente sul bus.

              FOTOACCOPPIATORE 4N25

              I fotoaccoppiatori sono dispositivi che permettono l’isolamento galvanico tra due circuiti,effettuando il trasferimento del segnale da un circuito all’altro attraverso la luce.Internamente il fotoaccoppiatore 4N25 è composto da un diodo led e da un fototransistor inseriti in un unico package DIP6 integrato, permettendo una elevata praticità e sicurezza di funzionamento essendo la coppia led fototransistor non influenzata dalla luce esterna.

                SCHEMA ELETTRICO

                Lo schema elettrico del progetto rappresenta il circuito elettrico che assolve alle funzioni citate nello schema a blocchi precedente. Si nota la presenza dei 3 fotoaccoppiatori 4N25 utilizzati per isolare i segnali e del convertitore DC/DC di isolamento della linea +5Viso che alimenta il MAX232 ed i relativi fotoaccoppiatori. Il fotoaccoppiatore 4N25 è composto internamente da un led e da un fototransistor completamente isolati elettricamente, pertanto il trasferimento dei segnali e dei dati avviene attraverso la luce. I led dei fotoaccoppiatori sono stati collegati ai circuiti di comando per mantenere la logica positiva anche con il fototransistor ricevente in configurazione invertente ed in maniera da garantire la direzione del segnale, in particolare FC1 e FC3 sono (a lato RS232) in trasmissione, mentre FC2 è in ricezione .

                Si può notare come il segnale RTS proveniente dal fotoaccoppiatore FC3 sia collegato al terminale di attivazione dal ricevitore ed al terminale di attivazione del trasmettitore del MAX485 per poter selezionare la direzione di comunicazione nel bus. Questo segnale è anche collegato ad un transistor che comanda l’attivazione del led rosso di segnalazione attività bus.

                L’integrato di gestione del bus MAX485 (precedentemente descritto) ha collegato nelle uscite A e B un dip switch a 3 poli che permette ai attivare in ordine la resistenza di attivazione e le due resistenze di polarizzazione del bus RS485.

                Nello schema sono presenti due tensioni di alimentazione e due masse: la +5V con relativa massa è l’alimentazione del bus (che è poi la tensione in ingresso nel circuito), mentre la +5Viso e la relativa massa è la tensione in uscita isolata al convertitore DC/DC che alimenta il lato RS232 della scheda.

                REALIZZAZIONE PRATICA

                Nella realizzazione non tenete conto dell'immagine del master seguente, ma fate riferimento ai file scaricabili a fine articolo!

                Altra versione (notare il diverso convertitore DC/DC)

                 

                DOWNLOAD FILE REALIZZAZIONE SCHEDA

                   

                  • Sistema domotico MassaBus

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

                    Domotica fai da te. Il sistema MassaBusèun sistema domotico adatto per controllare ed automatizzare ambienti domestici ed aziendali. Esso si basa sullo standard di comunicazione RS485, molto usato a livello industriale per la sua elevata resistenza ai disturbi induttivi e capacitivi. L’interfacciamento del sistema al computer centrale avviene tramite una porta seriale standard RS232 mentre la comunicazione nel bus viene gestita in modalità MASTER – SLAVE con una rete RS485 di tipo half-duplex che permette di estendere il sistema fino ad una distanza di 1200 metri.

                    Il sistema può essere usato per automatizzare i vari dispositivi presenti in una abitazione o in una azienda e per monitorare degli ambienti interni o esterni. Attualmente il sistema permette di collegare fino a 32 dispositivi (limite dettato dalla rete RS485 ma espandibile fino  a 254 attraverso opportune schede di rigenerazione del segnale) comprendenti un dispositivo MASTER composto da un PC e dei dispositivi SLAVE che permettono di gestire uscite digitali e monitorare ingressi digitali, tensioni,  temperature e altro.

                    Caratteristiche principali:

                    • Interfacciamento al computer tramite seriale RS232;
                    • bus di comunicazione RS485 avente alta resistenza ai disturbi;
                    • interfaccia RS232 isolata elettricamente dal bus di comunicazione RS485;
                    • sistema estendibile senza rigeneratori fino a 1200m e 31 dispositivi slave, oppure oltre 1200m e fino a  253 dispositivi slave attraverso l’uso di rigeneratori di segnale;
                    • Alimentazione centralizzata;
                    • Flessibilità, possibilità di ampliamento ed adattamento agli ambienti in cui è predisposto;
                    • Controllo centralizzato tramite PC predisposto con software di gestione;
                    • I/O isolati dal sistema;
                    • Utilizzo componenti di facile reperibilità;
                    • Massima libertà nella programmazione degli indirizzi: ogni unità indirizzabile può avere da 1 a 254 come indirizzo e l’indirizzo può essere programmato direttamente via software;
                    • Le schede slave dispongono di alcune caratteristiche comuni quali: un led di segnalazione attività, un interruttore che consente di attivare la programmazione degli indirizzi e un pulsante di reset per applicare i nuovi indirizzi o per effettuare il reset della scheda;
                    • Tutte le schede interfacciate al bus RS485 dispongono di dip switch per adattare la scheda alle caratteristiche del bus.

                    Il sistema MassaBus prevede come mezzo fisico trasmissivo un doppino twistato non schermato (UTP) per il trasporto dei segnali differenziali A e B ed un terzo conduttore che si occupa di interconnettere la massa in comune ai vari dispositivi. Il doppino twistato può anche essere di tipo schermato (FTP o SFTP) che permette di avere una maggiore resistenza ai rumori esterni, utile soprattutto in ambienti particolarmente rumorosi dal punto di vista elettromagnetico. Oltre ai segnali è necessario prevedere anche 2 fili conduttori che collegheranno l’alimentatore del sistema con i singoli dispositivi del bus. Questi fili andranno scelti di opportuna sezione in accordo con la dimensione e la struttura del sistema adottata.

                    Il sistema MassaBus strutturalmente è composto dagli elementi visibili in figura.

                    Comunicazione logica del sistema

                    Il sistema MassaBus per poter gestire la propria architettura a bus non ha bisogno solo degli accorgimenti illustrati nel capitolo precedente, ma deve anche prevedere un ben preciso protocollo di comunicazione che permetta, oltre al trasferimento dati, anche l’indirizzamento dei dispositivi presenti nel bus. Questo tipo di protocollo viene detto “protocollo di linea”. Esso è stato ideato da me e si rifà ai protocolli di linea adottati a livello 2 ISO OSI nelle reti, adattati all’utilizzo specifico nel sistema MassaBus.

                    Tale protocollo ha le seguenti caratteristiche:

                    • E’ un protocollo di linea a pacchetti organizzati in trama.
                    • Indirizza fino a 254 dispositivi (da1 a 254).
                    • Permette 63 tipi di comando ai dispositivi (da1 a 63).
                    • Consente l’invio di 2 campi dati ad 8 bit per pacchetto.
                    • Utilizza una rivelazione (ma non di correzione) degli errori attraverso operazioni di XOR, detta “Checksum”.
                    • Ha una trama avente 11 byte.

                    Il protocollo di linea applicato nel sistema prevede per la comunicazione una forma a pacchetto avente una trama (figura 2.12) composta da 11 byte, aventi ognuno una funzione specifica.

                    I byte hanno le seguenti funzioni nella trama:

                    • Start byte (0): questo byte indica l’inizio della trama.
                    • Indirizzo destinatario(1): è un indirizzo ad 8 bit che indica il destinatario del pacchetto.
                    • Indirizzo mittente (2): è un indirizzo ad 8 bit che indica il mittente del pacchetto.
                    • Type e zero flag (3): questo byte è composto da 2 parti: i primi due bit meno significativi rappresentano gli “zero flag”, mentre gli altri bit indicano il tipo di comando a cui si riferisce il pacchetto. Gli zero flag sono bit posti a 1 quando il campo data 1 o data2 ha valore zero (il meno significativo indica uno zero, in data 1, quando ha valore 1, il secondo bit indica uno zero, in data 2, quando ha valore 1). Questo accorgimento è necessario poiché il master utilizza linguaggi di alto livello aventi spesso problemi nel trattare dati aventi in mezzo alla trama valori nulli (pari a 0).
                    • Data 1 e data 2 (4 e 5): rappresentano i 2 byte inviati dal pacchetto
                    • Checksum low (6): contiene come bit più significativo un 1 fisso e come 4 bit meno significativi i 4 bit meno significativi del Checksum calcolato prima della trasmissione.
                    • Checksum high (7): contiene come bit più significativo un 1 fisso e come 4 bit meno significativi i 4 bit più significativi del Checksum calcolato prima della trasmissione. I bit posti ad 1 fisso dei due byte di Checksum low e high consentono di evitare il formarsi di byte aventi valore 0 e di sequenze simili agli end byte.
                    • End byte (8,9 e 10): sono una sequenza di 3 byte aventi valore 3, che non può presentarsi in altri campi altri della trama, indicanti la fine del pacchetto.

                    Indirizzamento dispositivi

                    L’indirizzamento dei dispositivi MassaBus avviene tramite un codice binario ad 8 bit, permettendo di indirizzare fino a 254 dispositivi. Tale numero massimo è dovuto alle limitazioni sull’utilizzo degli indirizzi, in particolare:

                    • L’indirizzo 0 non può essere utilizzato
                    • L’indirizzo 255 è riservato al master per comunicazioni di broadcast ( a tutti i dispositivi slave, in contemporanea) e per la programmazione iniziale degli indirizzi.

                    Il master deve essere unico nella rete e deve disporre di un unico indirizzo tra 1 e 254, assegnatogli prima dell’ assegnazione degli indirizzi agli slave. I dispositivi slave possono essere al massimo 253 con indirizzi da1 a 254. Questo protocollo non si interessa del mezzo fisico utilizzato, pertanto per poter usare 254 dispositivi è necessario prevedere unità di rigenerazione del segnale essendo la rete RS485 limitata, nei transceiver utilizzati, a 32 dispositivi interconnessi senza rigenerazione.

                    Di seguito trovate una tabella che indica le vari funzioni dei campi presenti nel pacchetto. Solitamente la comunicazione di base avviene con una chiamata del master al slave e lo slave subito risponde al master. L'unica eccezione è appunto in caso di broadcast in cui gli slave comandati non rispondono. Nelle comunicazioni normali la tipologia pacchetto tra domanda master e risposta slave, salvo errori, non cambia. A cambiare è solo il campo dati che cambia significato di volta in volta. Di seguito la tabella permette di capire l'associazione tipologia pacchetto e significato campo dati in domanda e risposta al master.

                    Hardware & Software attuale del sistema MassaBus, cliccare sui link per i dettagli (tutte le parti sono in fase di pubblicazione)

                    La parte hardware del sistema MassaBus si articola attualmente su queste tipologie di dispositivi:

                    • Scheda alimentazione provvede ad alimentare l’intero sistema
                    • Scheda di interfaccia bus provvede a convertire i segnali dell’interfaccia PC RS232 in segnali adatti al bus RS485 del sistema
                    • Scheda Multi I/O device permette di controllare 8 uscite a relè, 8 ingressi optoisolati e dispone di un ingresso analogico 0-5V per collegare sensori o dispositivi aventi in uscita un segnale analogico
                    • Scheda Mini I/O device permette di controllare 4 uscite a relè e 4 ingressi optoisolati
                    • Scheda Temperature sensor permette il controllo della temperatura presente in un ambiente o in un oggetto
                    • Scheda PAN camera control permette di controllare la rotazione di una telecamera a 360°

                    Inoltre è possibile arricchire la dotazione sensoriale e di interazione del sistema con appositi dispositivi accessori da collegare agli input/output del sistema:

                    • Termostato elettronico permette di attivare un ingresso del sistema MassaBus quando la temperatura misurata tramite un sensore NTC supera la soglia impostata tramite trimmer
                    • Sensore di pioggia e allagamenti permette di attivare un ingresso del sistema MassaBus quando un sensore apposito rileva la presenza di liquidi come in caso di pioggia o allagamenti

                    Mentre la parte software del PC si articola su questi programmi:

                    • MassaBus Controller Il programma di gestione della comunicazione e di tutte le schede del bus, supporta una modalità manuale dove i comandi al bus vengono dati tramite l'intefaccia del software e una modalità automatica in cui un programma esterno (es. MassaBus Application Example) tramite una connessione TCP può invocare i comandi sul bus ed automatizzare tutto il sistema.
                    • MassaBus Application Example è un software dimostrativo che lavora in simbiosi con il programma MassaBus Controller e permette di dare "intelligenza" al sistema domotico. Questo programma può essere sostituito con uno creato appositamente per soddisfare le proprie esigenze.

                    Questo progetto è stato presentato per la mia tesina di maturità, nel link qui sotto è possibile visualizzare il pdf con la tesina completa di spiegazioni dettagliate sul funzionamento di ogni scheda. Infatti troverete tutto quello che è pubblicato sul sito (e che deve essere ancora pubblicato) con alcune spiegazioni in più ed una dettagliata analisi dei software coinvolti.


                    TESINA MASSABUS (PDF)