RECURSOS

Lições e tutoriais

Usar o Sensor IMU


Esta pequena placa inclui três sensores: o ITG3205, o ADXL345 e o HMC5883L respetivamente o giroscópio, acelerómetro e magnetómetro todos eles apenas com três eixos para realizar os cálculos necessários.
O magnetómetro deteta os campos magnéticos, o acelerómetro medidas de aceleração física, por exemplo as forças G e o giroscópio mede a velocidade angular/rotação. Todos os valores lidos pelos sensores podem ser combinados para calcular a orientação, posição e velocidade no espaço tridimensional.

 

Existem placas de sensores IMU que incluem um sensor barométrico que permite ler valores da pressão atmosférica, mas, não é o caso especifico desta placa IMU pois apenas possui três sensores. Poderá verificar um sensor barométricos simples, como por exemplo o BMP180 ou o BMP280.

Guia de montagem

Use as instruções a seguir para ligar o sensor de UV.

 

Vídeo de montagem

Visualise o vídeo Missão 1 Tutorial: Sensor UV e acompanhe a montagem do sensor UV.

 

Diagrama de montagem

        

 

Instruções de montagem

  1. Fio Verde: Ligar o pino SDA no sensor IMU ao pino de A4 do Arduino Pro Mini.
  2. Fio Amarelo: Ligar o pino SCL do sensor IMU ao pino A5 do Arduino Pro Mini.
  3. Fio Preto: Ligar o pino GND do sensor IMU ao pino GND do Arduino Pro Mini.
  4. Fio Vermelho: Ligar o pino dos 3.3V do sensor IMU ao 3.3V do Arduino Pro Mini.

 

Código para o Sensor IMU

O código que se segue é o código mínimo necessário para ligar o sensor IMU à plataforma de experiências LUSOSAT.

ITG3205, ADXL345, HMC5883L
/***************************************************
 * Sensor IMU ITG3205, ADXL345, HMC5883
 ***************************************************
 * Este exemplo lê a quantidade de luminosidade do sensor IMU
 * Criado em 07/09/2016
 * Por Mesquita
 ****************************************************/
 
/******************Informações**********************
 * 1.Ligar o Sensor de luminosidade aos pinos A4 e A5 do Arduino
     http://www.lusosat.org/images/luminosidadeTSL2561.png
 * 2.Código testado com o Arduino UNO, Nano, Mega e Mega Pro Mini
 ****************************************************/
#include<Wire.h>
const int MPU_addr=0x68;  // Endereço I2C do sensor
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
	Wire.begin();
	Wire.beginTransmission(MPU_addr);
	Wire.write(0x6B);  // Registo PWR_MGMT_1
	Wire.write(0);     // acorda o sensor
	Wire.endTransmission(true);
	Serial.begin(9600);
}

void loop(){
	Wire.beginTransmission(MPU_addr);
	Wire.write(0x3B);  // inicia com o endereço 0x3B (ACCEL_XOUT_H)
	Wire.endTransmission(false);
	Wire.requestFrom(MPU_addr,14,true);  // solicita um total de 14 registos
	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)
	Serial.print("AcX = "); Serial.print(AcX);
	Serial.print(" | AcY = "); Serial.print(AcY);
	Serial.print(" | AcZ = "); Serial.print(AcZ);
	Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);  //equação da temperatura em graus
	Serial.print(" | GyX = "); Serial.print(GyX);
	Serial.print(" | GyY = "); Serial.print(GyY);
	Serial.print(" | GyZ = "); Serial.println(GyZ);
	delay(333);
}

 

Usos para o sensor IMU

Terra
  - Determinação da velocidade
  - Determinação de direção
  - Sistemas de guia/navegação
  - Registo de movimento

Espaço
  - Determinação de direção
  -Sistemas de guia/navegação

 

Experiências

  - Aceleração de objetos
  - Velocidade media de objetos
  - Sistema de guia do foguetão

 

Recursos Adicionais

  - Esquemas
  - datasheet (ITG-3200)
  - datasheet (ADXL345)
  - GitHub