Salve a tutti, sono in procinto di acquistare un sensore IMU. il sensore verrà usato per calcolare l'angolo d'inclinazione di una balance board tramite l'utilizzo di un accelerometro e un giroscopio.
L'attenzione è caduta su IMU a 6 gradi di libertà. Non vorrei spendere tantissimo, ma vorrei evitare di usare i controller della WII perchè non ne parlano molto bene in quanto a precisione.
Qualcuno ha esperienze in merito? Sott'occhio ho i sensori di Sparkfun e Drotek...sapete dirmi le differenze e quale dei due hai il miglior rapporto qualità/prezzo/reperibilità?
A mio modesto parere il miglior rapporto prezzo/qualità va assegnato alla IMU di Drotek.
Il giroscopio è lo stesso ITG3200, mentre l'accelerometro di Drotek è il BMA180 della Bosch che misura accelerazioni fino a +/- 16G con una risoluzione di 14 bit, contro i 13 bit dell' ADXL345.
Ma è anche il costo più basso che lo rende decisamente appetibile.
BMA180 vs ADXL345:
BMA180 pro:
maggior precisione, termocompensato
BMA180 cons:
"solo" 2.4kHz di letture/s
ADXL345 pro:
3.2kHz letture/s
visto che con il fast i2c al massimo avrai 1kHz letture, e anche usando la SPI comunque dubito che riusciresti ad elaborare un tale flusso dati abbastanza in fretta, va da sè che la scelta è BMA180
il giroscopio ITG3200 ha una precisione fissa di 2000°/s, è troppo alto come valore.
una buona alternativa ANALOGICA è il IDG500 (500°/sec) (ora fuoiri produizione, ma c'è il sostituto)
oppure la IMU-3000 (250°/s, 16bit ADC)
un'altra ottima soluzione a 6 DOF è l'MPU-6000(spi e i2c) o l'MPU-6050(solo i2c)
sono indeciso se consigliare il 9dof MPU-915, per via del fatto che è solo i2c
Io contavo di prendere o la drotek 10 dof o la analoga (identica credo) freeimu 0.4 con mpu6050 altimetro figo e mag. Questa la venderei, la 9 dof i2c, appena scelgo cosa prendere...
lesto:
visto che con il fast i2c al massimo avrai 1kHz letture,
Con l'I2C a 100 kHz (poco meno di 100 kbps reali) hai un transfer rate reale di circa 8 kByte/sec ipotizzando un flusso dati continuo, tenuto conto che ogni operazione I2C prevede l'uso di almeno tre byte, address + comando + risposta, ottieni un transfer rate minimo (worst case) di almeno 2600 Bytes/sec di dati reali, a 400 kHz arrivi a oltre 10 kByte di dati reali.
Poi tocca vedere cosa devi farci con i dati in oggetto, anche se l'I2C è gestita in hardware, ovvero durante la trasmissione e ricezione dei singoli byte la cpu non è impegnata, gestire un flusso di 2600 Bytes/sec con un ATmega 328, con relative operazioni per la manipolazioni dei dati, è praticamente impossibile.
Comunque l'ITG3200 in realtà garantisce un flusso dati pari ad un massimo di 256 letture al secondo perché le letture raw analogiche sono preventivamente filtrate con un passo basso, programmabile come banda, in modo fornire dati già filtrati rendendo più semplice il lavoro del micro.
Per leggere 3 valori interi dal gyro basta una singola operazione I2C con lettura di tutti e sei i registri dati, ovvero complessivamente occorrono 8 byte tra trasmessi e ricevuti, per leggere 256 volte al secondo i dati occorre una banda reale leggermente maggiore di 2 kHz pertanto anche utilizzando il bus I2C a 100 kHz è perfettamente possibile leggere il gyro alla massima velocità possibile.
Le considerazioni sulla banda reale valgono anche per gli accelerometri visto che pure loro prevedono sistemi di filtri analogici interni che permettono di scremare i dati raw.