Progetto Arduino-DAQ National Instrument

In laboratorio al politecnico stiamo usando dei DAQ della National Instrument molto comodi. Hanno un tot di I/O analogici e digitali, similmente a quanto fa l'Arduino. Vorrei allora scrivermi un firmware per poter controllare l'Arduino completamente dalla seriale con un tot di funzioni come il campionamento analogico ad una data frequenza, generatore d'onda, etc...

Ho un po' di domande:

  • ho visto che il pinmode viene sempre fatto nella funzione setup. Questo però mi forza a definire a priori il numero e quali ingressi/uscite utilizzare. Vorrei poterli assegnare invece dinamicamente a seconda della specifica applicazione impostandoli con comandi dalla seriale. È possibile farlo? Quando lo scollego dalla usb perderà l'informazione sul setting dei pin?

  • dove posso trovare informazioni tecniche sulla dimensione del buffer di I/O della porta seriale? Solo sul datasheet del chip FTDI o anche l'AVR me ne limita la dimension?

  • qual è il baud rate massimo della seriale? 9600?

  • qual è il numero massimo di campioni (le tensioni aquisite, vettore di byte quindi) che potrei tenere in memoria prima di trasferirli sulla seriale al pc?

Per ora credo di aver esaurito le domande :)

Grazie

Ciao quale poli? milano? :)

Risposte:

  • pinMode si puo usare in qualunque punto del codice, se scolleghi la usb se lo dimentica si perche il programma si ferma. puoi salvare i settaggi in eeprom cosi quando riparte si riconfigura da solo
  • il buffer di IO della seriale è stabilito nel nostro ISR , di solito è 64 bytes, mentre per l'uscita (cioè arduino verso computer) dipende dal driver della FTDI. a basse velocità è di pochi bytes ma appena superi i 57600 passa a 4k e ti rovina se mandi solo poche manciate di bytes
  • direi che i baudrate massimo gestibile è 115200, si può salire ma la stabilità ne risente
  • quello dipende dal tuo protocollo, tipo se mandi solo i canali che sono cambiati

Molto di questo lavoro è stato fatto dal gruppo che ha creato il protocollo Firmata che usiamo esattamente per quello che descrivi tu e sono disponibile librerie che interfacciano questo protocollo per Processing (java), VVVV, PD, MAX, C# etc etc

La versione 2.0 nasce per essere estensibile con nuove funzioni.

lo trovi qui http://www.arduino.cc/playground/Interfacing/Firmata

se ce l fate ci terrei che voi provaste ad usare firmata cosi estendiamo il protocollo invece di fare n duplicati

massimo

No, Politecnico di Torino, facoltà di Vercelli.

Non ho capito il tuo commento alla seconda risposta: "ti rovina se mandi solo poche manciate di bytes" così come l'ultima risposta: "quello dipende dal tuo protocollo, tipo se mandi solo i canali che sono cambiati "

Per l'ultima mi spiego meglio. Voglio campionare un segnale collegato ad un pin analogico (uno solo, o al massimo due per misura differenziale) ad una data frequenza F, per una durata T generando quindi F*T campioni. La frequenza massima è limitata dalla velocità massima di lettura dei pin analogici. Mentre per la durata massima/numero massimo di campioni, il limite deve essere la RAM che rimane libera. Come faccio a determinare il limite sul numero dei campioni?

Per firmdata guarderò cosa fa... È che siamo 3 compagni di corso che ci siamo presi il Freeduino e volevamo provare a far qualcosa noi, senza usare roba fatta da altri. Siamo al quarto anno di ingegneria elettronica e di elettronica applicata, pura, vera autentica ne abbiamo vista pochissima. Anche per la parte di programmazione, sempre programmini stupidi per gestire vettori, stringhe. Solo ora abbiamo fatto un corso di sistemi di misura, e ora sistemi automatici di misura, con acquisizione dati da multimetro HP tramite porta seriale, IEEE488 e ora questi DAQ su USB della national instrument. Sono abbastanza performanti questi, raggiungiamo anche i 10kHz di campionamento. Abbiamo fatto così anche un analizzatore di spettro con l'fft sui campioni acquisiti dal DAQ.. vorremmo farci quindi qualcosa noi, sepur non preciso e veloce come quello, ma in ogni caso qualcosa di nostro.

vi siete presi il freeduino?

minchia... Arduino lo fanno a scarmagno (TO) e voi vi comprate il clone in america...

poi ci lamentiamo che l'italia va a bagasce....

forse mi conviene emigirare..

m.

:-[ ehm.. l'abbiamo preso su ebay dall'inghilterra.

Ma perchè avevamo sentito di uno li al poli che l'aveva preso li, xkè con anche le spese di spedizione veniva meno che da chivasso forse.. non mi ricordo...

:-[ ehm.. capisco che ti sarai scandalizzato, poi con la concorrenza... ma non hai risposto a ciò che non ho capito della tua precedente risposta...