HUB USB2 a 4 porte: Abbinamento con Raspberry Pi Zero

Più o meno tutti sappiamo che cos’è un hub USB, dal momento che almeno una volta ci abbiamo avuto a che fare a casa o al lavoro per collegare a una porta del Personal Computer tanti dispositivi, ossia per connettere più dispositivi di quante erano le porte USB disponibili nel PC.
Ebbene, l’hub è sostanzialmente un moltiplicatore di porte USB che permette, partendo da un canale connesso a un Host USB (quale la connessione USB interna al computer, per esempio…) di sdoppiarlo, quadruplicarlo e via di seguito, distribuendo, oltre al bus, anche l’alimentazione. Lo smistamento in realtà consiste in una ripetizione del canale dati, che è fattibile perché secondo il protocollo Universal Serial Bus, a un bus USB, composto dai canonici due fili di dati (D+ e D-) riferiti alla massa comune con l’alimentazione (GND), si possono affacciare 127 dispositivi (il 128° è l’Host, ossia l’unità Master del bus).
Sebbene in commercio si trovino hub di tutte le forme e dimensioni, alimentati e non, ci è sembrato interessante sviluppare un nostro progetto e proporvelo in queste pagine, per almeno due ragioni: si tratta di una piccola scheda facilmente integrabile in altri apparati elettronici e per di più il suo form-factor è stato studiato per sovrapporla alla popolare Raspberry Pi Zero, alla quale si connette dal connettore microUSB posto sul lato per espanderne le possibilità (la Raspberry Pi Zero dispone infatti di una sola USB).
Andiamo dunque ad analizzare lo schema elettrico del nostro piccolo hub universale, che supporta la versione 2.0 High Speed del protocollo e che consente quindi di collegare dispositivi consentendo una comunicazione tra essi alla velocità (data-rate) di ben 480 Mbit/s.

Schema elettrico

 

Il circuito

L’intero hub è stato realizzato praticamente da un solo componente, che è il circuito integrato FE1.1 della Terminus, il quale internamente ingloba un completo hub USB 2.0 High Speed a quattro porte (chiamate “di downstream”) più una d’ingresso (o di partenza, se preferite, che è quella di “upstream”), il tutto incapsulato in un package SMD da 14+14 pin SSOP, come vedete nella Fig. 1 in cui è mostrata la piedinatura dell’integrato.

Fig. 1

Il nostro componente supporta funzionalità speciali come la GSMA Universal Charging Solution (UCS), è pienamente conforme alla specifica USB-IF “Universal Serial Bus rev. 2.0 e alla Battery Charging rev. 1.1; il dispositivo permette di implementare un hub USB 2.0 a 4 porte a basso consumo.
L’alta qualità dell’FE1.1 è garantita dalle funzionalità integrate di scansione complessiva di sistema e modalità di autotest integrate, che possono essere applicate sul front-end analogico (AFE) High, Full e Low Speed in fase di costruzione e collaudo.
L’FE1.1 potrebbe essere configurato opzionalmente per supportare la modalità Charging Downstream Ports, secondo quanto definito dalla specifica USB-IF; abilitando questa funzionalità, l’hub USB può essere facilmente trasformato in una soluzione di ricarica delle batterie di dispositivi portatili come smartphone e tablet.
Ciò stabilito, andiamo a esaminare lo schema elettrico, nel quale vediamo l’integrato U1 collegato nella classica configurazione che prevede un connettore USB di collegamento all’Host (USB H) e quattro per le periferiche device (USB1, USB2, USB3, USB4) che sono equivalenti tra loro; dall’USBH si preleva anche l’alimentazione per il chip e per le quattro USB device.
L’integrato ha un regolatore di tensione interno a 3,3V la cui tensione d’uscita, disponibile tra il piedino 21 e massa, viene filtrata dai condensatori C1 e C6 e va a portare a livello logico alto il pin OVCJ, che riguarda lo stadio di protezione dall’eccesivo assorbimento di corrente. Tutta la logica interna all’integrato funziona a 3,3V mentre a 5V opera invece il lato dati USB.
Il funzionamento del tutto ed in particolare il data-rate delle porte USB, è sincronizzato attraverso l’oscillatore interno che fa capo al quarzo Q1; nello schema elettrico vedete il solo quarzo perché i condensatori di “carico” che con esso concorrono a determinare la frequenza di oscillazione, sono integrati nell’FE1.1.
I resistori di pull-up che vedete nel circuito servono per impostare o disattivare alcune funzionalità facenti capo ai relativi piedini: per esempio quello collegato sul piedino XRSTJ pone a livello alto la linea di reset esterno, che in questo nostro progetto non utilizziamo e che perciò manteniamo a 1 logico (3,3V); la linea consente di resettare, per esempio con un pulsante, il funzionamento dell’hub, laddove si bloccasse, quindi se volete disporre di un hard reset collegate un pulsante unipolare normalmente aperto tra il pin 17 e GND e lo otterrete.
R4 imposta il funzionamento del Bus Power Sense attraverso il piedino VBUSJ, il cui stato identifica la fonte di alimentazione principale power dell’hub; nel nostro caso, il livello alto indica che l’hub è autolimentato e che la fonte ha sufficiente potenza da alimentare dispositivi High-Power sul lato delle porte downstream (è il caso dell’utilizzo di un alimentatore che fornisca corrente -attraverso un plug coassiale- ai piedini Vdd5 e GND).
Altrimenti, ossia se il pin 19 viene tenuto a livello basso, si presume che l’alimentazione provenga attraverso la presa USB Host e pertanto l’integrato limita la corrente di ogni porta USB downstream a 100 mA.
R5, applicata al pin 18, gestisce la funzione Upstream Port Power (VBUS) Monitor, nel senso che l’integrato monitora la presenza dell’alimentazione sul bus USB lato Host: livello alto significa che l’Host è alimentato e quindi l’hub può funzionare normalmente, mentre se il livello è basso significa che sulla presa di ingresso USBH manca alimentazione e quindi l’hub viene messo nella condizione di power-down state.
Nel circuito troviamo anche quattro LED montati a due a due in antiparallelo e pilotati tramite due pin specifici che sono LED1 (piedino 23) e LED2 (piedino 24); i quattro LED hanno a loro volta un pin comune che è DRV, il quale viene commutato dalla logica interna in modo da far accendere i diodi in modalità multiplex. In pratica il controllo dei LED avviene così: quando occorre accendere LD1 e LD2 (o uno solo dei due) si pone la linea DRV a livello alto e LED1 e/o LED2 a zero logico, mentre invece quando si deve illuminare LD3 e/o LD4, si manda la predetta DRV a zero logico e si mettono LED1 e/o LED2 a livello alto.
Con la prima uscita si gestiscono i LED indicanti che un device risulta connesso alle porte downstream 1 e 3, ovvero LD1 riguarda l’attività sul connettore USB1 e LD3 quella sul connettore USB3; quando a LD2, mostra la presenza di device collegati a USB2 (LD2) e al connettore USB4 (LD4).
Ciascuna coppia di LED assorbe una corrente limitata dal resistore che si trova in serie (R1 per D1/D3 ed R2 per D2/D4) e che chiaramente interviene su un solo diodo per volta, giacché, trovandosi, i LED, in antiparallelo, quando conduce uno l’altro è interdetto e viceversa, partanto nel resistore fluisce sempre la corrente di un diodo per volta.
Procediamo con l’analisi del circuito andando al resistore R6, che imposta la corrente di bias degli stadi analogici interni all’integrato.
Concludiamo la descrizione dello schema elettrico con i condensatori C2 e C5, posti tra il piedino VD18 e massa, i quali, al pari di quelli applicati ai piedini VDD3 (tra essi e la massa) servono a filtrare la tensione generata dal regolatore a 1,8V interno all’integrato.

Integrato Fe1.1

Il nostro hub è praticamente tutto contenuto in un integrato contenente le sezioni di interfaccia Universal Serial Bus lato ingresso e uscita; esternamente, il nostro chip richiede davvero un minimo di componenti, che sono essenzialmente un quarzo per il clock che definisce la velocità delle porte in downstream (uscite per i device). L’integrato è pienamente compatibile con la specifica Universal Serial Bus Revision 2.0 (USB 2.0) e supporta, lato Host (Upstream Facing Port) la velocità massima dell’USB 2.0 (480MHz) e la modalità Full-Speed, mentre dal lato device (4 porte di downstream) è compatibile High-Speed, Full-Speed e Low-Speed (12MHz). È inoltre compatibile con il profilo Universal Charging Solution e con l’USB Battery Charging Specification 1.1. Il componente integra quattro transceiver USB 2.0 e i resistori di pull-up sulle linee dati (sull’upstream sono 1,5 kΩ e così pure downstream). Il relativo schema a blocchi è riportato in questo riquadro e in esso possiamo vedere che all’interno del chip c’è un blocco di Power-On-Reset ed uno di rilevamento del power failure. Il funzionamento dell’insieme è scandito da un oscillatore quarzato interno con clock principale a 12MHz con registro di feedback e controllo da quarzo esterno (i condensatori sono all’interno); per generare il clock per la massima velocità USB 2.0 è integrato un PLL che partendo dai 12MHz arriva a 480MHz. Integrata è anche la funzione di rilevamento automatico della connessione di dispositivi portatili per fornire il supporto UCS. Il blocco single Transaction Translator (Single TT) è unico per tutte le porte in uscita (downstream ports) e l’alimentazione per tutte le sezioni viene garantita da due regolatori di tensione LDO da 3,3V e 1,8V che funzionano a partire dai 5 volt presenti sul piedino VDD5. L’FE1.1 è disponibile in commercio in due package, uno dei quali è l’SSOP da 14 pin per lato utilizzato nel nostro progetto mentre l’altro è un 24 pin WQFN delle dimensioni di appena 4×4 mm con pad metallico centrale.

Realizzazione pratica

Bene, spiegato lo schema elettrico, passiamo ora alle note costruttive, iniziando dal circuito stampato sul quale prenderanno posto tutti i componenti occorrenti; questo è stato disegnato in modo da consentire il montaggio a sandwich su varie schede, comprese le Raspberry Pi e la piccola e semplice Raspberry Pi Zero: allo scopo, i quattro fori di fissaggio della basetta sono disposti analogamente a quelli delle predette schede. Per rispettare il passo di foratura delle Raspberry Pi, come vedete dalle fotografie del prototipo pubblicate in queste pagine, la USB1 non è stata posta equidistante dalla vicina USB2, come sono invece le altre tre prese (USB2 dista dalla 3 quanto la USB3 dista dalla USB4…) e questo perché nel mezzo dovrà starci la colonnina di montaggio utile per sovrapporre i due stampati e fissarli l’uno all’altro.
Il PCB da noi progettato è del tipo a doppia faccia e va realizzato per fotoincisione dopo aver ottenuto le necessarie pellicole dalle stampe delle rispettive tracce rame su carta da lucido o acetato.
I componenti richiesti per la realizzazione del nostro hub USB sono tutti per montaggio superficiale ad eccezione delle quattro prese USB-A, le quali sono ibride in quanto i pin dei contatti si montano in superficie e le alette di ancoraggio sono a foro passante.

PCB visto dal retro

Per il montaggio della scheda dell’hub avete bisogno di un saldatore da 20÷30W a punta fine per integrati, filo di lega saldante da 0,5 mm max di diametro, della pasta flussante di bassa densità (va bene anche quella reperibile in siringa, tipo Kester o Amtech) una pinzetta per posizionare i componenti e una lente di ingrandimento per verificare, a fine delle saldature, che tutto sia al proprio posto e che non vi siano “baffi di stagno” a unire componenti o piazzole estranei tra loro.
Una volta in possesso di tutti i componenti, spalmate le piazzole dell’integrato con il flussante e, posizionato il componente con il riferimento orientato come mostra il piano di montaggio che trovate in queste pagine, iniziate a stagnarne i piedini agli angoli, quindi procedete con gli altri pin uno alla volta alternando la saldatura dai due lati.

Piano di montaggio

Elenco Componenti:

R1, R2: 470 ohm (0805)
R3, R4, R5: 100 kohm (0805)
R6: 2,7 kohm 1% (0805)
C1, C2, C3: 10 µF 6,3V ceramico (0805)
C4, C5, C6, C7: 100 nF ceramico (0805)
LD1, LD2, LD3, LD4: LED verde (0805)
Q1: Quarzo 12 MHz (3.2 x 2.5 mm)
U1: FE1.1s
USB1, USB2, USB3, USB4: Connettore USB-A femmina da CS
USBH: Connettore micro-USB
Circuito stampato S1459 (86×37 mm)

Volendo, in alternativa potete procedere con una stazione ad aria calda, stagnando prima le piazzole (fatelo delicatamente, altrimenti il calore e l’azione meccanica della punta del saldatore potrebbero farle saltare via) dell’integrato, quindi spalmando della pasta flussante e deponendo il componente sulle piazzole così trattate; fatto ciò, centrate l’integrato, stagnatene un pin di un angolo e poi scaldate i terminali con il getto d’aria calda, facendolo girare intorno ai piedini finché non vedrete lo stagno diventare brillante e i pin affondare in esso. A questo punto rimuovete l’aria calda e lasciate raffreddare.
Avete così sistemato il componente più critico e potete passare agli altri, che sono tutti di facile montaggio con saldatore e filo di lega saldante; al termine montate il connettore microUSB, spalmando il flussante sulle sue piazzole e sui suoi terminali per agevolare la deposizione della lega saldante, quindi stagnate i pin uno per volta badando di non unirli con lo stagno. Curate la stagnatura delle alette di ancoraggio, altrimenti nell’uso dell’hub, dopo un paio di inserzioni del connettore maschio vi ritroverete la presa spostata o, peggio, con le piazzole strappate.
Gli USB tipo A si montano inserendone per prima cosa a fondo nei rispettivi fori le linguette di ancoraggio finché sia il corpo che i piedini dei contatti (posti sul retro) non siano bene appoggiati alla superficie del PCB, quindi stagnando le alette abbondantemente e saldando solo dopo i quattro contatti.
Fatto ciò il montaggio del circuito è completato: non resta che fare una verifica con la lente di ingrandimento per accertare che non vi siano cortocircuiti tra piazzole o piste attigue, facilmente rimovibili con l’aiuto del saldatore e di un pezzo di trecciola dissaldante.
A questo punto potete pensare a un contenitore per l’hub o all’abbinamento e montaggio a sandwich su Raspberry Pi Zero; per il contenitore potete orientarvi verso quello mostrato di seguito, che potrete stampare da voi in PLA o ABS se possedete una stampante 3D come la 3Drag, partendo dal file presente nella sezione download di questa pagina. Nella Fig. 2 e nella Fig. 3 vedete due rendering di tale contenitore completo di coperchio da due angolazioni differenti e in quella dal basso sono evidenti le viti di fissaggio dei distanziali.

Fig. 2

Fig. 3

Per stabilizzare la scheda e mantenerla ben orizzontale anche quando si inseriscono e si sfilano i connettori USB per i device, il contenitore da noi disegnato prevede delle colonnine da incastrare nei blocchi a tubo del coperchio (Fig. 4).

Fig. 4

Se pensate all’integrazione con la Raspberry Pi Zero o con altri apparati, considerate che per l’interconnessione occorre un cavetto con connettori microUSB maschio alle due estremità, per connettere la porta di ingresso (upstream) al dispositivo da abbinare; la presa microUSB Host dell’hub è laterale e va collegata a una delle due microUSB della Raspberry Pi Zero.
Invece volendo abbinare l’hub a una scheda Raspberry Pi 2, 3 ecc, il cavo da utilizzare è da un lato microUSB e dall’altro USB-A.

Hub con applicato sopra il modulo Raspberry Pi Zero

Conclusioni

Il piccolo hub USB che vi abbiamo descritto assolve agli stessi compiti cui assolvono gli hub USB 2.0 che trovate in commercio e permette quindi di connettere fino a quattro dspositivi USB (per esempio stampanti, mouse e tastiere, scanner…) in modalità device a un’unica porta USB, quale può essere quella di un Personal Computer.
Provvede anche all’alimentazione dei device, a patto che assorbano, tutti insieme, la corrente massima prelevabile dalla USB del computer e sopportabile dalla presa microUSB che costituisce la porta d’ingresso.
Per poter contare su una corrente più elevata alle porte di uscita bisognerebbe interrompere la pista che trasporta il +5V dalla presa microUSB alle quattro USB-A e alimentare la linea +5V di queste ultime con un alimentatore esterno, capace di erogare tutta la corrente che lo standard Universal Serial Bus 2.0 contempla per le porte USB; la cosa è perfettamente fattibile, anche se non è stata fatta nel nostro hub perché il circuito non nasce con tale scopo.
Il circuito potrà comunque essere utilizzato come hub stand-alone o integrato in apparati esistenti, magari abbinato a una board Raspberry Pi.

Download

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu