Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Utilizando o Sensor Magnetômetro HMC5883L com Arduino

O sensor HMC5883L é um magnetômetro de três eixos amplamente utilizado para detectar campos magnéticos. Este sensor é essencial em aplicações que exigem orientação e navegação, como bússolas eletrônicas e sistemas de navegação para robôs. Integrar o HMC5883L com o Arduino permite que desenvolvedores e entusiastas de eletrônica criem projetos que necessitam de detecção precisa de direção e orientação. Neste artigo, vamos explorar como conectar e programar o HMC5883L com o Arduino, fornecendo exemplos de código e uma lista detalhada de componentes.

Project: Neste projeto, vamos criar uma bússola digital utilizando o sensor HMC5883L e um display LCD para mostrar a direção detectada. O objetivo é ler os dados do sensor, calcular a direção magnética e exibir essa informação em um display LCD. Este projeto pode ser a base para aplicações mais complexas, como sistemas de navegação para robôs ou drones.

Components List:

  • 1x Arduino Uno
  • 1x Sensor Magnetômetro HMC5883L
  • 1x Display LCD 16x2 com interface I2C
  • 1x Protoboard
  • Jumpers (fios de conexão)

Examples:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HMC5883L.h>

// Inicializa o display LCD com o endereço I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Inicializa o sensor HMC5883L
HMC5883L compass;

void setup() {
  // Inicia a comunicação serial
  Serial.begin(9600);

  // Inicia a comunicação I2C
  Wire.begin();

  // Configura o display LCD
  lcd.begin();
  lcd.backlight();
  lcd.print("Iniciando...");

  // Configura o sensor HMC5883L
  if (!compass.begin()) {
    Serial.println("Erro ao iniciar o HMC5883L");
    lcd.clear();
    lcd.print("Erro no sensor");
    while (1);
  }

  // Configura o ganho do sensor
  compass.setRange(HMC5883L_RANGE_1_3GA);

  // Configura o modo de operação
  compass.setMeasurementMode(HMC5883L_CONTINOUS);

  // Configura a taxa de dados
  compass.setDataRate(HMC5883L_DATARATE_15HZ);

  // Configura o modo de amostragem
  compass.setSamples(HMC5883L_SAMPLES_8);

  lcd.clear();
  lcd.print("Bussola Pronta");
}

void loop() {
  // Lê os valores de x, y, z do sensor
  Vector norm = compass.readNormalize();

  // Calcula o ângulo em graus
  float heading = atan2(norm.YAxis, norm.XAxis);

  // Compensa declinação magnética (exemplo para São Paulo, Brasil)
  float declinationAngle = 4.0 / (180 / PI);
  heading += declinationAngle;

  // Ajusta o ângulo para ficar entre 0 e 360 graus
  if (heading < 0) {
    heading += 2 * PI;
  }
  if (heading > 2 * PI) {
    heading -= 2 * PI;
  }

  // Converte o ângulo para graus
  float headingDegrees = heading * 180 / PI;

  // Exibe o ângulo no display LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Direcao:");
  lcd.setCursor(0, 1);
  lcd.print(headingDegrees);
  lcd.print(" graus");

  // Aguarda um segundo antes de atualizar novamente
  delay(1000);
}

Comentários detalhados:

  • #include <Wire.h>: Inclui a biblioteca Wire para comunicação I2C.
  • #include <LiquidCrystal_I2C.h>: Inclui a biblioteca para controlar o display LCD via I2C.
  • #include <HMC5883L.h>: Inclui a biblioteca para controlar o sensor HMC5883L.
  • LiquidCrystal_I2C lcd(0x27, 16, 2);: Inicializa o display LCD com o endereço I2C 0x27.
  • HMC5883L compass;: Cria uma instância do sensor HMC5883L.
  • void setup() { ... }: Configuração inicial do Arduino, display LCD e sensor HMC5883L.
  • void loop() { ... }: Função principal que lê os dados do sensor, calcula a direção e exibe no display LCD.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.