skule.sormo.no

ORG NR 885 947 522

Aktivisering av kompassfunksjonen i IMU med MPU6050

 
GY-86, GY-87 og GY-88 er 10 DOF (Degree Of Freedom)  Inertial Measurement Unit (IMU). Den består av 3-akse gyro, 3-akse aksellerator, 3 akse magnetometer   pluss en trykkmåler. Den er produsert i Kina og har utmerkede egenskaper med unntak av én. Det er ikke mulig uten videre å aktivisere kompassfunksjonen. Kortene består av kretsene MPU6050 (aksellerator/gyro)+HMC5883L (kompassfunksjon (magnetometer)) + temperatur/trykksensor. Kommunikasjonen skjer gjennom I2C-buss til Arduinokortet. Men HMC5883L-kretsen er koblet via til den alternative I2C-bussen i MPU6050 . I utgangspunktet er ikke denne koblingen aktivisert

.

Den aktiviseres manuelt i Arduino-skissen (dvs-programmet) med følgende kommandoer:
 

#include <HMC5883L.h>
#include <MPU6050.h>
MPU6050 mpu(0x68);

I setup() må disse linjene være med:

  mpu.initialize();
  mpu.setI2CMasterModeEnabled(0);
  mpu.setI2CBypassEnabled(1);

Alternativt, kan følgende kode settes inn i skissen for å aktivisere HMC5883L før og i setup():

#Include <I2Cdev.h>
#include <HMC5883L.h>
#include <MPU6050.h>

HMC5883L compass;
MPU6050 mpu;

void setup()
{
  Serial.begin(9600);
  mpu.setI2CMasterModeEnabled(false);
  mpu.setI2CBypassEnabled(true);
  mpu.setSleepEnabled(false);

}

For å sjekke adressene for enheter som er koblet til I2-bussen kan scannes ved hjelp av dette programmet 

Merk også at to MPU6050 kan kobles til den samme I2-bussen der adressen til den andre MPU6050 settes med kommandolinjen 

   MPU6050 mpu1(0x69);

Tilgangen til denne enheten skjer som variabelen mpu1 i eksemplet over.