Raspberry - Scheda di Espansione ed Interfaccia con Arduino
TT-FT1041M

TT-FT1041M
Progettata per essere utilizzata in abbinamento con Raspberry Pi (non compreso), questa shield permette di espandere le funzionalità del GPIO con un convertitore ADC a quattro canali singoli o differenziali, convertire i livelli da 3,3V a 5V (e viceversa), degli I/O digitali, dei bus I2C, SPI e della porta seriale, per rispettare sia i requisiti elettrici di Raspberry Pi che dei sensori e dispositivi esterni. Inoltre permette di utilizzare molte delle shield disponibili per Arduino e di collegarsi a convertitori aggiuntivi esterni USB/I2C e USB/SPI. Dispone di connettore a 26 pin per il collegamento con il connettore GPIO di Raspberry Pi, ponticelli (EXT e INT) che permettono di scegliere se ricevere l’alimentazione a 5V dal pin 2 del connettore GPIO oppure dall’alimentazione esterna tramite il regolatore 7805. In questo modo è possibile evitare un’alimentazione esterna, quando non sia necessario. Il pin 2 di Raspberry Pi è in grado di erogare 500 mA nella rev. 1 e 300 mA nella rev. 2. Per shield e sensori con assorbimenti maggiori o per shield che richiedono tensioni maggiori come lo shield relè, è necessario utilizzare un alimentatore esterno. N.B. La scheda viene fornita con già tutti i componenti SMD montati, tutti gli altri componenti quali strip, presa DC, pulsanti e jumper devono essere montati dall'utente.
FUNZIONAMENTO NELLE DIVERSE CONDIZIONI
Nessuna comunicazione in corso. - Nessun dispositivo porta le linee di segnale a livello basso e di conseguenza la linea di segnale a 3,3V è mantenuta a livello alto dalla resistenza R13 di pull-up. Il gate ed il source del MOS-FET sono entrambi a 3,3V, di conseguenza la VGS (gate-to-source voltage) è al di sotto della soglia di innesco ed il MOS-FET non conduce. In questa condizione la linea di segnale a tensione maggiore (5V) è mantenuta a livelloalto dalla resistenza di pull-up R14. Entrambe le sezioni della linea di segnale sono a livello alto, ma ai rispettivi livelli di tensione.
Comunicazione proveniente dal dispositivo a 3,3V. - Un dispositivo collegato alla sezione a 3,3V della linea di segnale porta la linea stessa a livello basso. Il source del MOS-FET T7 viene portato anch’esso a livello basso, mentre il gate si mantiene al livello di 3,3V. La VGS viene a trovarsi al di sopra della soglia di innesco ed il MOS-FET entra in conduzione. In questa condizione la sezione della linea di segnale a livello maggiore viene portata anch’essa a livello basso, pilotata dal dispositivo a 3,3V e dal MOS-FET in conduzione. In conclusione entrambe le sezioni della linea di segnale vengono a trovarsi a livello basso.
Comunicazione proveniente dal dispositivo a 5V. - Un dispositivo collegato alla sezione a 5V della linea di segnale porta la linea stessa a livello basso. In questa condizione la sezione a 3,3V viene portata a livello basso dal diodo drain-substrate finchè la VGS supera la soglia di innesco ed il MOS-FET T7 entra in conduzione. Ora la sezione a 3,3V della linea di segnale viene tenuta a livello basso pilotata dal dispositivo a 5V e dal MOS-FET in conduzione. In conclusione anche in questo caso entrambe le sezioni della linea di segnale vengono a trovarsi a livello basso.
In questo modo i livelli logici sono convertiti e trasferiti in entrambe le direzioni, indipendentemente dal device che guida la comunicazione.
Le condizioni 2 e 3 realizzano la funzione “wired AND” tra le due sezioni della linea di segnale come richiesto dalle specifiche i2C, e non sono affette dalle resistenze di pull up presenti sul bus stesso.Veniamo ora alla conversione ADC per la quale è stato adottato l’integrato MCP3428 della Microchip (U2). Nella conversione ADC si è dovuto accettare un piccolo compromesso nella mappatura dei pin sui connettori che accolgono gli shield Arduino. Arduino possiede sei ingressi ADC ma due di questi, attestati sui pin A4 e A5 sono condivisi con gli ingressi i2C. In ambiente Arduino, le diverse destinazioni dei pin sono configurabili a programma, in base alle esigenze della applicazione.
Questa possibilità non è riproducibile con il nostro shield che impiega in permanenza i pin del bus i2C per colloquiare con il convertitore ADC, impegnando i relativi pin e lasciandone solo quattro pin liberi per gli ingressi ADC. In compenso l’integrato MCP3428 permette conversioni sino a 16 bit di precisione sia di segnali lineari che differenziali.I terminali da CH1+ a CH4+ sono collegati rispettivamente ai pin da A0 ad A3 sul connettore AD di Arduino. I terminali da CH1- a CH4- sono attestati sullo strip A-, e possono essere posti a massa singolarmente mediante i jumper J0, J1, J2 e J3. In questo modo è possibile configurare ciascun pin per acquisire segnali analogici sia lineari sia differenziali. I pin SDA e SCL dell’integrato sono collegati da un lato ai pin corrispondenti sul connettore Arduino e dall’altra al drain dei transistor T7 e T8. I pin Adr0 e Adr1 permettono di assegnare diversi indirizzi all’integrato a seconda della combinazione dei livelli alto e basso assegnati ai pin stessi. Nel nostro caso teniamo entrambi i pin a livello basso collegandoli a massa in modo da impostare l’indirizzo 0x68. Ovviamente il pin VCC è collegato ai 5V ed il pin VSS a massa. Le linee del bus SPI, MISO, MOSI, SCLK e CS vanno dai piedini 19, 21, 23 e 24 del connettore GPIO ai pin SPI del connettore Arduino ed anche al connettore ICSP. Le linee del bus seriale provenienti dai pin 8 e 10 del connettore GPIO vanno anch’essi ai corrispettivi circuiti a transistor di conversione dei livelli e poi ai pin TXD e RXD del connettore Arduino.