fbpixel
Etiquetas: ,
5
(1)

O módulo MPU6050 é uma plataforma inercial que mede a evolução de um objeto no espaço. Ele permite medir acelerações lineares e angulares nos três eixos do espaço. Este componente é encontrado em várias aplicações, incluindo consoles de video game e smartphones. Ele também pode ser utilizado para controlar a atitude de um drone ou para equilibrar um robô sobre duas rodas.

Neste tutorial, usaremos o módulo GY-521, no qual o MPU6050 está incorporado.

Pré-requisito: comunicação I2C

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/B Macho
  • MPU6050 (Módulo GY-521)

Princípio de funcionamento

O módulo GY-521 é uma placa de desenvolvimento para o sistema microeletromecânico MPU6050 (MEM- Microelectromechanical systems). O módulo MPU6050 é composto por um sensor de temperatura e dois sensores micromecânicos: um giroscópio para medir rotações e um acelerômetro para medir acelerações no espaço. Estes sensores possuem normalmente uma parte mecânica e uma parte piezoelétrica. Quando o objeto está em movimento, a parte mecânica move-se contra a parte piezoelétrica, que envia um sinal elétrico.

Esquema

O módulo GY-521 pode ser alimentado diretamente pelo pino 5V da placa Arduino. O módulo utiliza comunicação I2C para fazer interface com o microcontrolador.

  • SDA no pino A4
  • SCL no pino A5
  • VCC no pino 5V
  • GND no pino GND

Código

Para fazer interface com o módulo GY-521, e portanto com o MPU6050, utilizaremos a biblioteca com o mesmo nome, a Adafruit_MPU6050.h. É importante notar que, dependendo do módulo utilizado, poderá ser necessário modificar o endereço I2C para obter as medidas. O código aqui proposto é o programa básico para exibir e utilizar as medições do sensor. A biblioteca oferece muitas outras configurações e parâmetros. Para mais funcionalidades, não hesite em consultar a documentação e os exemplos da biblioteca.

//Libraries
#include <Wire.h>//https://www.arduino.cc/en/reference/wire
#include <Adafruit_MPU6050.h>//https://github.com/adafruit/Adafruit_MPU6050
#include <Adafruit_Sensor.h>//https://github.com/adafruit/Adafruit_Sensor

//Objects
Adafruit_MPU6050 mpu;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
 if (!mpu.begin(0x69)) { // Change address if needed
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }

  mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
  mpu.setGyroRange(MPU6050_RANGE_250_DEG);
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
}

void loop() {
  readMPU();
  delay(100);
}

void readMPU( ) { /* function readMPU */
  ////Read acceleromter data
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  /* Print out the values */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println("°C");
}

Resultado

Depois de carregar o código no Arduino, pode mover o sensor para observar os valores de aceleração evoluírem nas diferentes direções do espaço. Também pode verificar o funcionamento do sensor de temperatura encostando o seu dedo no módulo.

Aplicações

  • Estabilizar um drone
  • Controlar um robô com movimentos manuais
  • Dar equilíbrio a um robô de duas rodas

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 1

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?