Come leggere un giroscopio / accelerometro


10

Di recente ho acquistato questa scheda breakout MPU6050 GY-521 . L'ho provato con il mio Arduino Mega usando questo sketch di Arduino fornito da arduino.cc ufficiale .
( Foglio dati MPU-6050 , pagina InvenSence (produttore) )

Amico, dà questo strano risultato !!!

InvenSense MPU-6050
June 2012
WHO_AM_I : 68, error = 0
PWR_MGMT_2 : 0, error = 0

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1944, 368, 15608
temperature: 30.576 degrees Celsius
gyro x,y,z : -34, -204, -247, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1952, 364, 15304
temperature: 30.435 degrees Celsius
gyro x,y,z : -38, -216, -274, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1864, 388, 15356
temperature: 30.482 degrees Celsius
gyro x,y,z : -34, -233, -278, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1888, 324, 15260
temperature: 30.576 degrees Celsius
gyro x,y,z : -14, -220, -261, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1904, 392, 15316
temperature: 30.624 degrees Celsius
gyro x,y,z : -34, -241, -238, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1856, 308, 15604
temperature: 30.435 degrees Celsius
gyro x,y,z : -33, -252, -235, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1892, 444, 15528
temperature: 30.624 degrees Celsius
gyro x,y,z : 20, -236, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1924, 356, 15520
temperature: 30.576 degrees Celsius
gyro x,y,z : -19, -224, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1844, 280, 15732
temperature: 30.529 degrees Celsius
gyro x,y,z : -1, -240, -249, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 2004, 372, 15396
temperature: 30.671 degrees Celsius
gyro x,y,z : -20, -252, -255, 

(Questa è solo una parte di essa, dà continuamente a questo re di uscita). Lo so per certo, solo la lettura della temperatura è significativa. Ma quali sono quei valori dati per le letture di accelerazione e giroscopio ??

OK, dice che sono valori grezzi. In tal caso, come posso convertirli in valori significativi. Sperando che possa essere utile (come molti hanno suggerito), mi piace anche sapere come usare la cosiddetta Jeff Rowberglibreria.

Spero che ci sarà qualcuno con esperienza con il modulo MPU-6050. Dammi solo un punto per iniziare. Non ho idea di come utilizzare il modulo ... :(

Qualsiasi aiuto è molto apprezzato. Grazie !


1
Ho avuto un problema simile che è stato risolto in questa domanda electronics.stackexchange.com/questions/39024/…
JDD

Wow, questa è una piccola IMU elegante!
Scott Seidman,

Risposte:


6

La lettura dell'accelerometro sembra avere un senso. Il foglio dati , pagina 13 indica 4 diverse sensibilità:

2 g  
4 g  
8 g  
16 g  

con resp. fattori di scala di sensibilità:

16 384 counts/g  
8 192 counts/g  
4 096 counts/g  
2 048 counts/g  

Dalla lettura Z presumo che sia selezionata la scala 2 g, quindi 15 608 è 0,95 g, che è quello che ci si può aspettare da una lettura dell'asse Z quando si tiene il sensore più o meno orizzontale. Le letture X e Y sono probabilmente dovute anche alla gravitazione quando non si tiene la parte perfettamente orizzontale. E avrai anche un errore nella lettura.



Simile per il giroscopio . Con 131 conteggi per grado / i potresti avere questo tipo di lettura se tieni la parte tra le mani.


Grazie! Tutti i tuoi presupposti sono corretti. Quindi mi stai suggerendo di moltiplicare sopra l'output grezzo per 1g/16384(quando si utilizza la scala 2g) per ottenere la lettura di accelerazione reale (per tutti gli assi)? Quindi, come gestire le letture giroscopiche?
Anubi

E qual è il significato LSBnell'unità LSB/g?
Anubi

Il giroscopio sembra essere molto sensibile, quindi tenerlo tra le mani può dare una lettura a rotazione quando le tue mani si scuotono un po '(troppo caffè? :-)). LSB = Bit meno significativo, che ho tradotto come "count". Indica la variazione minima.
Stevenvh,

In generale, le letture "non elaborate" da questo tipo di dispositivo includeranno errori di offset (bias) e fattore di scala. Alla fine, vorrai calibrare questi errori sottraendo il valore di offset e moltiplicandolo per un valore di regolazione del fattore di scala per ciascun asse.
Dave Tweed,

Il collegamento al foglio dati è stato interrotto. Conosci la nuova posizione di quel documento?
Gamba destra,

11

Un giroscopio fornisce i valori della velocità angolare (gradi / sec) nei tre rispettivi assi (rispettivamente asse Yaw, Pitch e Roll).

Ma qualunque valore grezzo dato per primo da questi sensori dovrebbe essere convertito in valori di accelerazione sensibile o velocità angolare mediante ridimensionamento.

La scheda tecnica InvenSense di MPU-6050 afferma che dobbiamo utilizzare diversi fattori di ridimensionamento per diversi intervalli di valori giroscopici. Spiegherò come utilizzare questi fattori di ridimensionamento alla fine.

Angular Velocity Limit  |   Sensitivity
----------------------------------------
250º/s                  |    131
500º/s                  |    65.5 
1000º/s                 |    32.8 
2000º/s                 |    16.4

9.81ms2

Fattori di scala per i valori dell'accelerometro:

Acceleration Limit  |   Sensitivity
----------------------------------------
2g                  |    16,384
4g                  |    8,192  
8g                  |    4,096 
16g                 |    2,048 

Conversione dei dati grezzi:

required_value=raw_valueproper_sensitivity

Ad esempio, nei primi dati, hai

accel x,y,z: 1944, 368, 15608
gyro x,y,z : -34, -204, -247

L'accelerazione sembra essere nel limite di 2g. Quindi, fattore di ridimensionamento = 16384

ax=194416384g

Il giroscopio sembra essere nel limite di . Quindi, fattore di scala o sensibilità = 131250ºs

implicagyro_value=34131degreessec

Spero che aiuti. :)


1
Sento che questa risposta fornisce una spiegazione molto migliore rispetto a quella accettata.
Chutsu,

@ajmal Capisco i valori del sensore fino al punto che hai descritto. Capisco anche che il giroscopio di default ha una leggera deriva. Ma non capisco come visualizzare i dati nel posizionamento nel mondo reale. Ho letto molto riguardo agli angoli di eulero, ai quartieri, ma non capisco i compromessi tra le rappresentazioni e la matematica dietro di essa. Qualche suggerimento da dove cominciare.
seetharaman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.