Projeto 41 - Sensor magnetômetro e arduino

  • Maio 03, 2015
  • Comentários

Olá pessoal, neste projeto iremos aprender como utilizar o sensor magnetômetro HMC5883L. Este projeto consiste em apenas demonstrar como o sensor é conectado ao arduino e a visualização dos dados extraidos ao movimentá-lo. Então vamos ao trabalho !! Os códigos serão todos comentados para melhor entendimento, podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!

Componentes necessários

1 Protoboard

1 Sensor magnetômetro HMC5883L

Fios jumper

Fazendo o download e importando as bibliotecas do magnetômetro

1) Acesse o link https://onedrive.live.com/?cid=F877FDED1DE63FAA&id=F877FDED1DE63FAA%21122;

2) Faça o download do arquivo Arquivos magnetometro;

3) Após o download descompacte o arquivo;

4) Agora entre no diretório (C:) e na pasta Arquivos de Programas, Arduino, libraries, copie os arquivos descompactados nesta pasta;

5) Pronto para utilizar;

Conectando os componentes

Código do projeto

// Projeto 41 - Sensor magnetômetro e arduino

// Adicionando as bibliotecas necessárias
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>

// Atribuindo um ID para o sensor
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(199851);

void displaySensorDetails(void)
{
  sensor_t sensor;
  mag.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:           "); Serial.println(sensor.name);
  Serial.print  ("Versao do driver: "); Serial.println(sensor.version);
  Serial.print  ("ID do sensor:     "); Serial.println(sensor.sensor_id);
  Serial.print  ("Valor maximo:     "); Serial.print(sensor.max_value); 
  Serial.print  ("Valor Minimo:     "); Serial.print(sensor.min_value); 
  Serial.print  ("Resolucao:        "); Serial.print(sensor.resolution);
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void setup(void) 
{
  Serial.begin(9600);
  
  // Inicializando o sensor
  if(!mag.begin())
  {
    // Checando se não houve nenhum problema de conexão com o... 
	//sensor HMC5883
    Serial.println("Ooops, sensor nao detectado ... Verifique as conexoes!");
    while(1);
  }
  
  // Mostra algumas informações básicas do sensor
  displaySensorDetails();
}

void loop(void) 
{
  // Obtem um novo evento do sensor 
  sensors_event_t event; 
  mag.getEvent(&event);
 
  // Exibe os resultados (valores do vetor magnético são expressos... 
  //em micro-Tesla (uT))
  Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print("  ");
  Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print("  ");
  Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print("  ");

  // Calculando a posição do eixo x e y 
  float heading = atan2(event.magnetic.y, event.magnetic.x);
  
  // Depois de ter sua posição, você deve em seguida, adicionar o seu... 
  //'angulo de declincação', que é o 'erro' do campo magnético em... 
  //sua localização.
  // Localizar o seu aqui: http://www.magnetic-declination.com/
  // O meu é: -20, que é ~ 20 graus, ou (o que nós precisamos) 0,34 radianos
  // Se você não conseguiu encontrar a sua declinação, comente estas... 
  //duas linhas, a bussola ficará um pouco defasada.
   
  float declinationAngle = 0.34;
  heading += declinationAngle;
  
  // Faz a correção quandos os sinais estão invertidos
  if(heading < 0)
    heading += 2*PI;
    
  // Verifica a adição de declinação
  if(heading > 2*PI)
    heading -= 2*PI;
   
  // Converter radianos em graus para facilitar a leitura
  float headingDegrees = heading * 180/M_PI; 
  
  Serial.print("Posicao em graus: "); Serial.println(headingDegrees);
  
  delay(500);
  
}

Após ter passado o código para o arduino abra o Serial Monitor pressionando simultaneamente as teclas Crtl + Shift + M. Moviemente o sensor e verá na tela os valores mudarem.

Vídeo do projeto pronto

- Se você gostou do post, por favor comente! Nos dê um feedback, isto nos incentiva a continuar! :)



Deixe seu comentário abaixo