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: da 2 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 livello 0 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 da 0,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

      Comments  

      Quoting Guido:

      Ciao, volevo chiedere se è possibile pilotare i relè della scheda anche con semplici pulsanti. Per intenderci vorrei capire se oltre alla gestione domotica posso interfacciarmi per comandare il relè e quindi il dispositivo direttamente dal frutto elettrico. E in caso affermativo se il comando dato da questi pulsanti vengono monitorati anche dalla gestione del programma.
      Spero di essermi spiegato.


      Ciao, Quello che richiedi è possibile farlo in vari modi, in particolare:
      1) essendo la scheda dotata di input puoi collegare gli interruttori li e attraverso il programma sul PC che gestirà il sistema leggere gli input e portarlo in output.
      2)Sempre usando gli input su scheda si può eventualmente effettuare una modifica al programma del microcontrollore per far si che gli ingressi vengano copiati direttamente dalla scheda stessa in output. Questo essendo implementato nel programma del pic può essere adattato per funzionare anche con il sistema domotico oltre che con i pulsanti.
      In entrambi i casi si può monitorare lo stato, solo che la prima soluzione è più semplice e più flessibile.
      Ciao, volevo chiedere se è possibile pilotare i relè della scheda anche con semplici pulsanti. Per intenderci vorrei capire se oltre alla gestione domotica posso interfacciarmi per comandare il relè e quindi il dispositivo direttamente dal frutto elettrico. E in caso affermativo se il comando dato da questi pulsanti vengono monitorati anche dalla gestione del programma.
      Spero di essermi spiegato.

      Quoting sampei:

      Ciao, complimenti per la realizzazione....come posso comandare la scheda??? cioè tramite parallela o che altro...


      Ciao, per comandare la scheda è necessario interfacciare il pc tramite la porta seriale con la "Scheda interfaccia MassaBus" che si collega a questa scheda con il bus RS485 costituito da due fili oltre a quelli di alimentazione. Il software utilizzabile nel computer è il " MassaBus Controller".
      -2
      Ciao, complimenti per la realizzazione....come posso comandare la scheda??? cioè tramite parallela o che altro...