Luca Gallucci - IU8BBM
Personal website, homebrewed server.

Header

Board CAN SMTR'13

Università degli Studi di Napoli "Federico II" - Ingegneria Elettronica Magistrale

Corso di "Sistemi di Misura in Tempo Reale" - Prof. F.Cennamo

Gruppo Hardware BGP - Baio Gallucci Picciafoco - II sem. 2012'13

 

smtr13-bottom

 

PER LA DOCUMENTAZIONE COMPLETA* CLICCA QUI!

(*I sorgenti sono disponibili solo su richiesta.)

 

Introduzione

 Il progetto SMTR‘13 svolto durante il secondo semestre dell’Anno Accademico 2012/13, mirato alla realizzazione di un sistema di misura remotizzato, multiprotocollo e multipiattaforma, ha impegnato gli studenti del corso di Sistemi di Misura in Tempo Reale, suddivisi in cinque gruppi diversi, ognuno con uno specifico obiettivo (hardware, firmware ecc).

Il gruppo da noi costituito, si è occupato della parte hardware ed in particolare sia della progettazione e realizzazione del prototipo, che del supporto agli altri gruppi per le problematiche legate all’hardware durante la realizzazione del firmware.

 

Obiettivi e procedure

 Il nostro gruppo si è occupato della progettazione di un scheda (su pcb monofaccia) per scopi didattici, in modo tale da consentire la comunicazione tra device diversi, a seconda del protocollo utilizzato (I2C, SPI e CAN).

Il lavoro è stato svolto in vari step:

  • Redazione delle specifiche di funzionamento
  • Realizzazione dello schematico
  • Realizzazione dello sbroglio
  • Produzione del prototipo e relativo testing
  • Generazione dei file gerber e di foratura per la produzione in fabbrica
  • Ordine delle board

Vediamo nel dettaglio ogni singola fase:

 Redazione delle specifiche di funzionamento

 La board è stata progettata per realizzare dei bus di comunicazione, utilizzando i seguenti device:

  1. Orbit16
  2. Raspberry Pi
  3. ByVac 4221-v2.

Per consentire il collegamento con i dispositivi elencati, sono stati previsti sia connettori con piedinatura simil ByVac che pin header 40 poli Orbit16 compatible, espandibili verso l’alto per il collegamento con ulteriori schede.

Per questo motivo, nella realizzazione si è tenuto conto della necessità di far funzionare il sistema a diverse tensioni di alimentazione a seconda dei device collegati, in particolare con tensioni +5V e +3,3V; tramite dei jumper è possibile selezionare le alimentazioni di controller (MCP2515) e transceiver CAN (MCP2551) separatamente: nella modalità a +5V, a seconda dei casi, è possibile anche alimentare la board mediante un connettore USB tipo B. Per consentire la comunicazione CAN con altri nodi, è stato previsto un pin header a 90° sul quale andrà collegato il bus; sul controller è stato inserito un jumper per effettuare il reset manuale.

Riguardo il protocollo SPI, sono stati previsti dei LED sui chip select 1 e 2 per segnalare all’utente l’apertura/chiusura della comunicazione.

Per il protocollo I2C, sono state inserite delle resistenze di pull-up, escludibili via jumper, in modo da rendere più flessibile il sistema.

Infine è stato previsto un pin header collegato a massa, per agevolare l’utilizzo dell’oscilloscopio.

 Realizzazione dello schematico & sbroglio

 Tutta la progettazione è stata realizzata tramite un software CAD per la realizzazione di circuiti stampati, Eagle Professional 6.10; esso è stato utilizzato sia per quanto riguarda la parte di progettazione dello schematico sia per quanto riguarda la realizzazione della board.

Per quanto riguarda la realizzazione dello schematic sono state adottate tutte le soluzioni previste nelle specifiche espresse in linguaggio naturale nella fase precedente ed in particolare, riferendoci allo schematico in appendice, seguendo la medesima nomenclatura:

  • Connettori ORBIT_CONN1, ORBIT_CONN2 da 20 poli ognuno, con passo 0.1 inch distanti tra loro 1.8 inch, tali da poter montare la scheda in configurazione shield sulla board OrBit16;
  • Connettori SPI_BYVAC ed I2C_BYVAC, rispettivamente da 8 e 4 poli, con passo da 0.1 inch distanti tra di loro di 0.2 inch, tali da poter connettere direttamente la board con il modulo ByVac4236;
  • Connettore USB_B per l’alimentazione tramite connettore USB tipo B, connesso direttamente alla linea di alimentazione +5V;
  • Header GND_TP per la connessione dei morsetti delle sonde degli oscilloscopi;
  • Selettore CTRL_JP, per la selezione dell’alimentazione del controller tra +3V3 e +5V;
  • Selettore TRSC_JP, per la selezione dell’alimentazione del transceiver tra +5V e VCC;
  • Jumper SCK_I2C e DAT_I2C, per l’inserzione dei resistori di pullup di 10k sul bus I2C;
  • Predisposizione per quarzo da 10MHz (Q) e condensatori (C1, C2) a disco ceramici da 5mm;
  • Jumper RST_JP, per il reset del controller;
  • Controller MCP2515 package DIP18 e transceiver MCP2551 package DIP4.

 Per il piazzamento dei componenti sono state utilizzate, oltre alle librerie standard incluse con Eagle, anche la libreria Sparkfun (https://github.com/sparkfun/SparkFun-Eagle-Libraries); sono stati utilizzati componenti THT (through-hole-technology) per favorire non tanto un montaggio manuale di qualità quanto piuttosto un semplice debugging in circuit tramite lo sniffing dei segnali. Per la progettazione dello schematico, abbiamo lavorato in sinergia con il gruppo che ha realizzato il firmware Orbit16, in particolare per quanto riguarda la rimappatura della periferica sui pin della board.

Completato lo schematico, siamo passati alla realizzazione dello sbroglio, ed in particolare è stato eseguito puntando ad alcuni aspetti chiave (in ordine di importanza):

  • Componentistica full-tht;
  • PCB a singola faccia;
  • Minima dimensione del PCB;
  • Posa del piano di massa.

Queste scelte sono derivate da un mero aspetto economico in quanto la realizzazione di board più grandi o di layer multipli avrebbe si semplificato lo sbroglio, ma avrebbe inciso in maniera significativa il budget disponibile (100€/20PCB); essi sono stati eseguiti con successo realizzando un PCB a singola faccia con 1 solo ponticello, limitato nelle sue dimensioni al più possibile realizzando una scheda di dimensioni minime (56x56mm) che era la dimensione minima data la distanza dei due connettori dell’OrBit16.

Si è scelto di prevedere anche un piano di massa, il che ha consentito, oltre ad una migliore distribuzione dell’alimentazione (per certi versi superflua nella seguente applicazione, date le correnti in esame), ad una maggiore semplicità del processo di realizzazione del prototipo.

In ultima battuta è stato anche realizzato il layer delle serigrafie, che, oltre ad indicare la funzionalità dei vari componenti sulla board, presenta anche una tabella esplicante l’esatta posizione dei jumper da adottare per la corretta alimentazione degli integrati nelle varie modalità di funzionamento.

 Produzione del prototipo e check elettrico

 Per la realizzazione del prototipo è stata utilizzata la tecnica della fotoincisione. Essa ha previsto varie fasi:

  • Stampa del master;
  • Taglio di una basetta presensibilizzata;
  • Sensibilizzazione della basetta grazie all’ausilio di un bromografo autocostruito;
  • Sviluppo della basetta in una soluzione acquosa di soda caustica;
  • Incisione del rame in eccesso in una soluzione acquosa di percloruro ferrico;
  • Foratura manuale del PCB con l’ausilio di un trapano a colonna;
  • Saldatura dei componenti.

Dopo la fase di incisione non è stato rimosso il fotoresist in eccesso, il che garantirà non solo una protezione elettrica alle varie piste, ma consentirà un’ottima protezione riguardo l’ossidazione.

Infine con un multimetro sono stati verificati i collegamenti elettrici al fine di identificare e rimuovere eventuali corti ed interruzioni tra le piste. In ultima battuta si è passati ad una verifica del prototipo grazie ad un modulo ByVac, il prototipo ha passato a pieni voti anche questa fase di testing, il che ci ha consentito di passare all’ultima fase.

 Generazione dei file gerber e di foratura per la produzione in fabbrica & ordine delle board

 Per realizzare i circuiti stampati ci siamo rivolti alla “Millennium Dataware Srl” (http://www.mdsrl.it/) a partire da un budget di 100€ gentilmente donato dalla Fondazione Cennamo.

Innanzitutto siamo passati alla revisione del circuito caricando le regole di progetto indicate dalla stessa nella sezione checklist del sito affinché la board fosse correttamente realizzabile dall’azienda in oggetto; dopodiché abbiamo lanciato il DRC, Design Rule Checker per verificarle. Come ultimo check è stato anche lanciato l’ERC, Electrical Rule Checker per garantire, oltre che l’assenza di errori nello schmatic, soprattutto la coerenza tra quest’ultima e la board.

In particolare le regole alle quali ci siamo dovuti attenere sono:

  • Isolamento minimo 6 mils;
  • Larghezza minima delle piste 6 mils;
  • Scontornatura meccanica 0.2mm;
  • Drill diameter 16 mils, Anular ring 6mils.

 Appurato che anche in questo senso il progetto non contenesse errori, abbiamo generato i seguenti file, richiesti dall’azienda:

  • .cmp : Informazioni lato componenti
  • .sol : Informazioni lato saldatura
  • .plc : Informazioni silkscreen lato componenti
  • .gpi : Informazioni relative alle forme geometriche e tolleranze
  • .drd : Informazioni sui fori
  • .dri : Informazioni sugli strumenti da usare per forare

Come ulteriore verifica dell’esattezza dei file Gerber, abbiamo utilizzato il programma GC-Prevue (http://www.graphicode.com/GC-Prevue) che ci ha permesso di visualizzare in forma grafica i files prodotti.

 Le schede sono stare ricevute entro i tempi previsti, in particolare le board, versione PLUS, presentano le seguenti caratteristiche:

  • Singola Faccia
  • Rame 35 um su FR4 1,6 mm
  • Finitura in Argento
  • Serigrafia e Solder su un solo lato (anche opposti)
  • Test elettrico di ogni singola scheda accompagnata da certificato

 

 Funzionamento

Come anticipato è possibile utilizzare la scheda con diverse modalità, a seconda dei device collegati. Ogni connessione deve essere effettuata in via esclusiva: non è possibile collegare alla board CAN più device contemporaneamente (tra quelli elencati), anche se fisicamente possibile.

Per collegare la board con l’OrBit16 è necessario inserirla grazie alla doppia fila di connettori da 20 poli alla relativa morsettiera sull’Orbit16, tenendo conto che l’orientamento corretto è tale da avere il connettore USB-B della board nella stessa direzione del connettore USB-A dell’Orbit16.

Per quanto riguarda invece i moduli Byvac, ne è stata rispettata la relativa piedinatura, inclusa della distanza dei due connettori per rendere la board direttamente compatibile con i moduli Byvac comprendenti sia dell’ICSP che dell’I2C. E’ possibile quindi connetterle direttamente inserendo dapprima un connettore maschio-maschio e nel connettore femmina della board, e poi, dopo averlo ribaltato, inserendo su quest’ultimo il modulo ByVac stesso.

Infine, per la connessione con la RaspberryPi la soluzione più diretta è quella di prelevare i relativi segnali direttamente dal connettore simil-byvac.

Volta per volta, a seconda della configurazione, gli jumper di alimentazione degli integrati devono essere settati appropriatamente, segue una tabella (tralaltro riportata anche sulla board stessa) indicante l’esatta posizione:

JP SET

CTRL

TRSC

OrBit16

2

1

ByVac 4236 (+3V3 mode)

1

1*

ByVac 4236 (+5V mode)

2

1

Raspberry Pi

2

1*

 (*) Alimentazione +5V al MCP2551 fornita dal connettore USB

 Ovviamente la scheda è espandibile per ulteriori infinite modalità di utilizzo non previste in questa documentazione, per questo motivo è possibile inoltre impostare il JP_TRSC in modo tale da prelevare l’alimentazione del transceiver direttamente dal pin VCC del connettore simil-byvac (utilizzo non previsto per le modalità precedenti per il quale è sempre alimentato dal pin a 5V dell’USB o degli ORBIT_CONN1/2).

 smtr13-top

Michele Baio

Luca Gallucci – Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.http://lucagallucci.dlinkddns.com

Paolo Picciafoco