Pagina 1 di 1

Scelta bus seriale per ADC e DAC

MessaggioInviato: 23 apr 2013, 21:37
da Lucast85
Ciao a tutti!
Ho la necessità di scrivere alcuni registri di circa 40 DAC e 30 ADC. Tali dispositivi non possono essere raggruppati in quanto saranno posizionati su diverse board (dove posso sceglierò ADC e DAC a più canali, ma saranno pochi i casi consentiti).
Tutti dovrebbero comunicare tramite la stessa interfaccia, una scheda USB-SPI-I2C della National Instruments o similari.
Studiando i due protocolli di comunicazione SPI e I2C ho notato che:
  • SPI-Ha bisogno del segnale di selezione dell'IC (SS o CS) e quindi dovrei prevedere 40+30 ulteriori segnali digitali. Troppi.
  • I2C-Pensavo di aver trovato l'alternativa giusta al protocollo SPI ma leggendo vari datasheet mi sono accorto che molto spesso (diciamo quasi sempre) i bit di configurazione degli indirizzi dei dispositivi sono solo 3; ciò mi consente di individuare univocamente solo 8 diversi dispositivi mentre io ne ho molti di più (almeno 30 dello stesso tipo).
Ho pensato a due soluzioni relative ai due casi:
  • SPI-prevedo un demultiplexer per ottenere più segnali di chip select (CS/SS) a partire da pochi, segnali digitali. Così avrei 2^N segnali per poter gestire i CS a partire da sole N linee.
  • I2C-utilizzo dei (de)multiplexer per I2C. Purtroppo però ne devono essere previsti più d'uno in cascata e la comunicazione si complicherebbe.
Quale via mi consigliate di seguire?
Sono ben gradite anche soluzioni alternative.
Grazie, O_/ O_/

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 30 apr 2013, 9:24
da IsidoroKZ
Problema interessante.
Hai valutato il throughput richiesto? Puoi accettare dei ritardi di comunicazione?
Can bus?

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 30 apr 2013, 10:43
da TardoFreak
Per dare una risposta sensata serve sapere la velocità di comunicazione, il numero di campionamenti/trasmissioni al secondo.

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 3 mag 2013, 11:12
da Lucast85
Ciò che devo realizzare è un banco test per BMS (Battery Management System). Dato che ci sono, però, vorrei dare la possibilità di inserire un DSP con un modello matematico per consentire un'accurata emulazione delle celle al litio, come descritto in quest'articolo.

Inizialmente le 18 board dovranno fornire delle tensioni variabili fra 0 V e 5 V e delle correnti fino a 3 A. Tali schede dovranno anche misurare queste tensioni e correnti generate per la validazione dei valori, come fanno le SMU (Source Measure Unit). Da qui l'esigenza di avere almeno un DAC ogni board per generare la tensione e di un paio di ADC per la misura della tensione e della corrente.

Fin qui non sono richieste tempistiche stringenti poiché l'obiettivo è quello di verificare le funzionalità del BMS.
Al contrario, se si aggiungerà un DSP col modello matematico della cella al litio, si dovranno avere dei tempi di reazione molto ridotti (i principali IC di controllo per BMS hanno tempi di risposta di circa 10-50 \mu s).

Nel caso in cui non ci sono vincoli temporali importanti pensavo di comunicare dall'interfaccia USB-SPI/I2c/CAN verso ogni singolo DAC e ADC (dunque 18 DAC + 18 ADC a 2 canali). In più dovrei comunicare anche con almeno 18 potenziometri digitali (256 step, 100 kohm) che simulano l'andamento di alcuni NTC (forse ce ne vorranno di più connessi in serie o parallelo per aumentare la risoluzione di ogni canale).

Se si userà il modello matematico e relativo DSP, sarà il DSP stesso a comunicare col PC tramite l'interfaccia USB-xx appena menzionata. Oltre a ciò rimangono i 18 potenziometri digitali da gestire.

Al CAN avevo già pensato, ma dovrei passare attraverso un micro-controllore/DSP poiché non ho trovato ADC o DAC direttamente controllabili col CAN. Il sistema si complicherebbe da subito e non è ciò che avevo in mente.

La scheda NI USB-8451 che possiedo ha un clock rate fino a 12 MHz (SPI) e 250 kHz (I2C). Volendo ho disponibile anche un'interfaccia USB-CAN con bit-rate fino a 1 Mbit/s.
Tutti gli integrati sono ancora in fase di definizione e non conosco il numero di campionamenti/trasmissioni al secondo. Posso dirvi che il DUT (il BMS) campiona potenzialmente fino a 12 kHz.
Credo di utilizzare DAC e ADC a minimo 14 bit.

Scusate se l'ho fatta lunga, spero di aver chiarito il problema.
A presto... O_/

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 7 mag 2013, 10:44
da Lucast85
Mi sto orientando verso la seguente soluzione. Utilizzerò 4 demultiplexer 4-16 linee (74HC154) e saranno controllati con le 8 uscite digitali che ha disponibili la scheda di interfaccia NI USB-8451.
Posso selezionare solo un IC alla volta, ma non dovrebbe essere un grosso problema.

Il datasheet dice che i tempi di propagazione sono dell'ordine delle decine di ns. Dovrebbe essere più che sufficiente. Purtroppo avrò qualche linea in più da gestire, ma non vedo alternative...
Così avrò 8 ingressi di selezione e 16*4 uscite.
Se vi venisse in mente qualcosa... O_/

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 7 mag 2013, 20:12
da bobina
Hai valutato anche l'integrato MCP23S17/MCP23S18 della microchip che si comanda in SPI ed ha 16 IO digitali?
Ha l'indirizzo impostabile da 0 a 7, quindi puoi usare con solo 4 IO fino a 16*8 IO ed ha un clock massimo di 10MHz.
Esiste anche la versione I2C ma il clock massimo è 1,7MHz.
Il protocollo è abbastanza semplice e dopo un procedura di init abbastanza piccola si legge e scrivono gli IO abbastanza velocemente.

Re: Scelta bus seriale per ADC e DAC

MessaggioInviato: 8 mag 2013, 11:22
da Lucast85
Grazie per il suggerimento, è diventato un candidato!
Forse posso anche risparmiare qualche linea di CS utilizzando IC con bus SPI utilizzabile in daisy chain...