O sensor MPU-6050 contém num único chip um acelerómetro e um giroscópio tipo MEMS. São 3 eixos para o acelerómetro e 3 eixos para o giroscópio, apresentando resultados satisfatórios e excelente grau de precisão.
Possui alta precisão devido ao conversor analógico digital de 16-bits para cada canal. Portanto o sensor captura os canais X, Y e Z ao mesmo tempo.
Não bastasse isso esta placa GY-521 tem um sensor de temperatura embutido no CI MPU6050, permitindo medições entre -40 e +85 ºC.
Características:
• Acelerómetro e Giroscópio MPU-6050;
• Tensão de Operação: 3-5V;
• Dois módulos numa única placa;
• 3 Eixos 6 DOF;
• Alta precisão;
• Conversor analógico digital de 16-bits para cada canal;
• Compatível com Arduino, Raspberry Pi, Pic, etc.
• Captura simultaneamente X, Y e Z;
• Sensor de temperatura integrado;
• Excelente desempenho;
• Acompanha barra de pinos 90 e 180°.
Esquema de Ligação:
Código Exemplo:
//Programa : Teste MPU-6050
//Carrega a biblioteca Wire
#include<Wire.h>
//Endereco I2C do MPU6050
const int MPU=0x68;
//Variaveis para armazenar valores dos sensores
int AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup()
{
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
//Inicializa o MPU-6050
Wire.write(0);
Wire.endTransmission(true);
}
void loop()
{
Wire.beginTransmission(MPU);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
//Solicita os dados do sensor
Wire.requestFrom(MPU,14,true);
//Armazena o valor dos sensores nas variaveis correspondentes
AcX=Wire.read()<<8|Wire.read(); //0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY=Wire.read()<<8|Wire.read(); //0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ=Wire.read()<<8|Wire.read(); //0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp=Wire.read()<<8|Wire.read(); //0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX=Wire.read()<<8|Wire.read(); //0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY=Wire.read()<<8|Wire.read(); //0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ=Wire.read()<<8|Wire.read(); //0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
//Mostra os valores no serial monitor
Serial.print("Acel. X = "); Serial.print(AcX);
Serial.print(" | Y = "); Serial.print(AcY);
Serial.print(" | Z = "); Serial.print(AcZ);
Serial.print(" | Gir. X = "); Serial.print(GyX);
Serial.print(" | Y = "); Serial.print(GyY);
Serial.print(" | Z = "); Serial.print(GyZ);
Serial.print(" | Temp = "); Serial.println(Tmp/340.00+36.53);
//Aguarda 300 ms e reinicia o processo
delay(300);
}