modulo 3 assi MPU-6050

ieri mi è arrivato il modulo a tre assi con MPU-6050 questo --> http://www.goodluckbuy.com/1pc-x-arduino-mpu-6050-module-3-axis-gyroscopeaccelerometer-module.html gli o saldato le stript e ora vorrei iniziare a giocare. sul sito di arduino si trova quest --> http://playground.arduino.cc/Main/MPU-6050 in fondo c'è un codice. è così complesso o si può semplificare ?? perché sono presenti così tanti #define ??

non so neanche come collegare il modulo avete da passarmi qualche tutorial corposo dove posso imparare?

per collegarlo basta alimentazione, SCL, SDA, e gnd (se vuoi ursarlo in i2c come nell'esempio), oppure puoi usartlo in SPI (ma per ora lasciamo perdere)

Ora, tutte qeulle define sono la posizione dei registri dove sono contenuti i dati. A te non servono: di solito per iniziare/testare il sensore si usano i settaggi base, quindi ti basta l'indirizzo del registro dove c'è il bit di start (per far iniziare il sensore,non sempre c'è), e quello dei registri che contengono i dati.

Cerca meglio e troverai dei codici mooolto più semplici, / righe al massimo :grin:

ps. ancheio quando ho provato i vari sensori mi sono sempre imbattuto in algoriutmi assurdamente complessi...

Qui trovi una libreria per il modulo --> https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

lesto: Cerca meglio e troverai dei codici mooolto più semplici, / righe al massimo :grin:

ps. ancheio quando ho provato i vari sensori mi sono sempre imbattuto in algoriutmi assurdamente complessi...

Quando dici "assurdamente" ti riferisci alla enorme complessità degli algoritmi o alla loro inutilità? nel senso che la gente riesce a complicarsi la vita con 100 righe di codice quando potrebbe ottenere risultati anche migliori con poche righe. Sono interessato al tuo parere perché in realtà tempo fa mi sono dovuto convincere del contrario. Stavo testando una banale NTC, collegata all'alimentazione e ad una pull-down, quindi tipica configurazione, cercando poi di ottimizzare una formula per avere una decente linearità nella risposta. Poiché vedendo le curve sul data-sheet mi sono reso conto che per ottenere buoni risultati dovevo limitare moltissimo il range di lavoro, ho cominciato a fare una ricerca e mi sono imbattuto in un sito in cui uno squilibrato aveva messo in piedi appunto un algoritmo per gestire correttamente l'NTC nell'intero range. L'ho provato da -2°C a oltre 400°C e funzionava che era una meraviglia, purtroppo non l'ho memorizzato ma all'occorrenza lo ritroverò. Allora mi resi conto che tutto poi diventa relativo: una NTC usata per un range di 20-30°C funziona senza particolari problemi, se lo aumenti devi cominciare a lavorare seriamente di software. Tu che sei un Esperto riconosciuto come la vedi questa cosa?

lesto: Ora, tutte qeulle define sono la posizione dei registri dove sono contenuti i dati. A te non servono:

Che delusione mi stai dando :D Quelle define sono i vari registri per inizializzare e settare il sensore, che è abbastanza complesso, servono tutte.

ps. ancheio quando ho provato i vari sensori mi sono sempre imbattuto in algoriutmi assurdamente complessi...

Questa è peggio di una coltellata al cuore :grin: Sensori complessi richiedono algoritmi complessi per gestire al meglio i dati.

ok, ma io registri dicevo sono inizializzati a cvalori di defult che di solito vanno bene...

Il codice base per imparare ad usare un sensore è assai più semplice, se poi vogliamo usarlo al meglio..

Però in effetti il MPU6050 so che è abbastanza complesso, magari sbaglio e i valori default non vanno bene per nulla

lesto: magari sbaglio e i valori default non vanno bene per nulla

Pensa che di default il sensore è spento :)

lesto: Ora, tutte qeulle define sono la posizione dei registri dove sono contenuti i dati. A te non servono: di solito per iniziare/testare il sensore si usano i settaggi base, quindi ti basta l'indirizzo del registro dove c'è il bit di start (per far iniziare il sensore,non sempre c'è), e quello dei registri che contengono i dati.

dopo una lunga ricerca non sono neanche riuscito a capire in che pin di arduino collegarlo.

lesto: per collegarlo basta alimentazione, SCL, SDA, e gnd (se vuoi ursarlo in i2c come nell'esempio), oppure puoi usartlo in SPI (ma per ora lasciamo perdere)

che come puoi notare http://arduino.cc/forum/index.php/topic,145531.0.html sono a4 (sda) e a5(scl) sull'arduino uno

a ok ora è tutto più chiaro grazie

a queto punto, datasheet alla mano, devi svegliare il chip, agendo sul registro "0x6B", poi richiedere delle letture dei seguenti registri:

#define MPU6050_ACCEL_XOUT_H       0x3B   // R  
#define MPU6050_ACCEL_XOUT_L       0x3C   // R  
#define MPU6050_ACCEL_YOUT_H       0x3D   // R  
#define MPU6050_ACCEL_YOUT_L       0x3E   // R  
#define MPU6050_ACCEL_ZOUT_H       0x3F   // R  
#define MPU6050_ACCEL_ZOUT_L       0x40   // R  
#define MPU6050_TEMP_OUT_H         0x41   // R  
#define MPU6050_TEMP_OUT_L         0x42   // R  
#define MPU6050_GYRO_XOUT_H        0x43   // R  
#define MPU6050_GYRO_XOUT_L        0x44   // R  
#define MPU6050_GYRO_YOUT_H        0x45   // R  
#define MPU6050_GYRO_YOUT_L        0x46   // R  
#define MPU6050_GYRO_ZOUT_H        0x47   // R  
#define MPU6050_GYRO_ZOUT_L        0x48   // R

sono esplicativi, notare che i registri temp, del sensore di temperatura, potresti evitarle per ora. Si usano per compensare le letture in base alla temperatura

lesto: a queto punto, datasheet alla mano, devi svegliare il chip, agendo sul registro "0x6B", poi richiedere delle letture dei seguenti registri:

#define MPU6050_ACCEL_XOUT_H       0x3B   // R  
#define MPU6050_ACCEL_XOUT_L       0x3C   // R  
#define MPU6050_ACCEL_YOUT_H       0x3D   // R  
#define MPU6050_ACCEL_YOUT_L       0x3E   // R  
#define MPU6050_ACCEL_ZOUT_H       0x3F   // R  
#define MPU6050_ACCEL_ZOUT_L       0x40   // R  
#define MPU6050_TEMP_OUT_H         0x41   // R  
#define MPU6050_TEMP_OUT_L         0x42   // R  
#define MPU6050_GYRO_XOUT_H        0x43   // R  
#define MPU6050_GYRO_XOUT_L        0x44   // R  
#define MPU6050_GYRO_YOUT_H        0x45   // R  
#define MPU6050_GYRO_YOUT_L        0x46   // R  
#define MPU6050_GYRO_ZOUT_H        0x47   // R  
#define MPU6050_GYRO_ZOUT_L        0x48   // R

sono esplicativi, notare che i registri temp, del sensore di temperatura, potresti evitarle per ora. Si usano per compensare le letture in base alla temperatura

Salve, volevo chiederti un informazione puramente didattica: a quale pagina del datasse hai trovato queste informazioni? Cordiali saluti, MP

Le allego il datasheet: http://www.invensense.com/mems/gyro/documents/PS-MPU-6000A-00v3.4.pdf

i dati puoi trovarli qui: https://www.olimex.com/Products/Modules/Sensors/MOD-MPU6050/resources/RM-MPU-60xxA_rev_4.pdf

il link che hai messo a me non va