Como ler um giroscópio / acelerômetro

10

Recentemente, comprei esta placa de expansão MPU6050 GY-521 . Eu tentei com o meu Arduino Mega usando este esboço do Arduino fornecido pelo arduino.cc oficial .
( MPU-6050 Folha de dados , Página InvenSence (produtor) )

Cara, dá essa saída estranha !!!

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, 

(Isso é apenas uma parte, dá a esse rei da produção continuamente). Eu tenho certeza, apenas a leitura da temperatura é significativa. Mas quais são os valores dados para aceleração e leituras de giroscópio?

OK, diz que esses são valores brutos. Se for assim, então como posso convertê-los em valores significativos. Esperando que possa ser útil (como muitos sugeriram), eu também gosto de saber como usar a chamada Jeff Rowbergbiblioteca.

Espero que haja alguém com experiência com o módulo MPU-6050. Apenas me dê um ponto para começar. Não tenho idéia de como usar o módulo ... :(

Qualquer ajuda é muito apreciada. Obrigado !

Anubis
fonte
11
Eu tive um problema semelhante que resolvido nesta questão electronics.stackexchange.com/questions/39024/...
JDD
Uau-- isso é um IMU bacana!
Scott Seidman

Respostas:

6

A leitura do acelerômetro parece fazer sentido. A folha de dados , página 13, indica 4 diferentes sensibilidades:

2 g  
4 g  
8 g  
16 g  

com resp. fatores de escala de sensibilidade:

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

A partir da leitura Z, presumo que você tenha selecionado a escala de 2 g, então 15 608 é 0,95 g, o que você pode esperar de uma leitura do eixo Z ao manter o sensor mais ou menos na horizontal. As leituras X e Y provavelmente também se devem à gravitação quando você não está segurando a peça perfeitamente na horizontal. E você também terá um erro na leitura.



Semelhante para o giroscópio . Com 131 contagens por grau / s, você pode ter esse tipo de leitura se estiver segurando a peça em suas mãos.

stevenvh
fonte
Obrigado! Todas as suas suposições estão corretas. Então você está sugerindo que eu multiplique acima da produção bruta por1g/16384 (ao usar a escala de 2g) para obter a leitura real da aceleração (para todos os eixos)? Então, como lidar com as leituras de giroscópio?
Anubis
E qual é o significado de LSBna unidadeLSB/g ?
Anubis
O giroscópio parece ser muito sensível, de modo que segurá-lo nas mãos pode dar uma leitura rotativa quando as mãos tremem um pouco (muito café? :-)). LSB = Bit Menos Significativo, que eu traduzi como "count". Indica a alteração mínima.
Stevenvh 07/09/12
Em geral, as leituras "brutas" desse tipo de dispositivo incluem erros de deslocamento (viés) e fator de escala. Eventualmente, você deseja calibrar esses erros subtraindo o valor do deslocamento e multiplicando por um valor de ajuste do fator de escala para cada eixo.
Dave Tweed
O link para a folha de dados foi quebrado. Você conhece o novo local desse documento?
Perna direita
11

Um giroscópio fornece os valores de velocidade angular (graus / s) nos três eixos respectivos (eixos de guinada, inclinação e rotação, respectivamente).

Mas qualquer valor bruto dado primeiro por esses sensores deve ser convertido em aceleração sensível ou em valores de velocidade angular por escala.

A Folha de Dados InvenSense da MPU-6050 diz que precisamos usar diferentes fatores de escala para diferentes faixas de valores de giroscópio. Vou explicar como usar esses fatores de escala no final.

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

9,81ms2

Fatores de escala para valores do acelerômetro:

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

Convertendo os dados brutos:

required_value=raw_valueProper_sensitivity

Por exemplo, nos primeiros dados, você obteve

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

A aceleração parece estar no limite de 2g. Então, fator de escala = 16384

umax=194416384g

250ºs

gyro_value=-34131degreessec

Espero que ajude. :)

sasebot
fonte
11
Eu sinto que esta resposta fornece uma explicação muito melhor em comparação com a aceita.
chutsu 04/08/2015
@ajmal Entendo os valores do sensor até o ponto que você descreveu. Eu também entendo que o giroscópio, por padrão, tem uma ligeira variação. Mas não entendo como visualizar os dados no posicionamento no mundo real. Eu leio muito sobre ângulos de Euler, quartéis, mas não entendo as vantagens e desvantagens entre as representações e a matemática por trás disso. Qualquer sugestão por onde começar.
Seetharaman