Como usar um sensor de efeito Hall com Arduino - MakerHero
Como usar um sensor de efeito Hall com Arduino

Como usar um sensor de efeito Hall com Arduino Deixe um comentário

Neste post, você aprenderá como utilizar um sensor de efeito Hall com Arduino para detectar campos magnéticos e criar projetos práticos. Vamos explicar o que é o efeito Hall, como ele funciona e como um sensor de efeito Hall converte campos magnéticos em sinais elétricos. Em seguida, mostraremos como conectar o sensor ao Arduino, realizar testes simples e explorar algumas aplicações práticas. 

conectar o sensor hall ao Arduino

Ao final, incluímos um projeto para controlar o sentido de rotação de um servo motor usando o sensor Hall, mostrando como esse dispositivo versátil pode ser aproveitado em diferentes contextos.

O que é o efeito Hall?

O efeito Hall é um fenômeno físico descoberto pelo cientista Edwin Hall em 1879. Esse efeito ocorre quando uma corrente elétrica passa por um condutor ou semicondutor que está imerso em um campo magnético perpendicular. Devido à ação do campo magnético, os elétrons em movimento sofrem uma força (conhecida como força de Lorentz) que os “empurra” para um dos lados do material. Esse desvio dos elétrons cria uma diferença de potencial entre as extremidades do material.

O que é o efeito Hall

Essa diferença de potencial, chamada de tensão Hall, é proporcional à intensidade do campo magnético aplicado e pode ser medida. Assim, o efeito Hall permite detectar e quantificar a presença de um campo magnético próximo ao material condutor. É justamente essa propriedade que é explorada em um sensor de efeito Hall, que converte as variações de campos magnéticos em sinais elétricos mensuráveis.

Como funciona o sensor de efeito Hall?

O sensor Hall é um dispositivo que utiliza o efeito Hall para detectar a presença de um campo magnético e convertê-la em um sinal elétrico. Ele é composto por um material semicondutor por onde passa uma corrente elétrica. 

Quando um campo magnético externo é aplicado perpendicularmente ao fluxo da corrente, o efeito Hall gera uma diferença de potencial (tensão) no sensor. Essa variação de tensão é capturada e interpretada como sinal de detecção.

Existem basicamente dois tipos de sensores Hall:

  • Sensor Hall analógico: Esses sensores produzem uma saída de tensão contínua que varia proporcionalmente à intensidade do campo magnético detectado. Ou seja, quanto maior o campo magnético, maior será a tensão de saída. Eles são indicados para medições contínuas e precisas, como em medidores de corrente elétrica.
  • Sensor Hall digital: Esse tipo de sensor funciona como um interruptor magnético. Ele possui um ponto de limiar: quando o campo magnético atinge certa intensidade, o sensor ativa sua saída, passando de “desligado” para “ligado” (0 para 1). Esse tipo é bastante utilizado em aplicações que precisam apenas detectar a presença ou ausência de um campo magnético, como em contadores de rotações ou sensores de posição.

No Arduino, o sensor de efeito Hall pode ser utilizado como um dispositivo prático para detectar a aproximação de objetos magnéticos, acionando outras portas ou funções programadas no microcontrolador. 

O sensor Hall KY-003 opera de forma semelhante a um interruptor ou botão: quando não há campo magnético próximo, ele envia um sinal de nível alto (HIGH) ao Arduino; ao detectar um campo magnético, o sinal muda para nível baixo (LOW).

sensor Hall KY-003

Como muitos outros módulos para Arduino, o possui apenas três pinos: VCC (+), GND (-) e Sinal (S), o que facilita a conexão. Este módulo é compatível com uma faixa de tensão entre 4,5 e 24 VDC, oferecendo flexibilidade para diferentes aplicações. Além disso, ele possui um LED indicador que se acende sempre que um campo magnético é detectado, facilitando a visualização do estado do sensor.

Como conectar o sensor Hall com o Arduino?

Para conectar o sensor Hall ao Arduino, basta seguir estes passos:

  • Conecte o pino VCC (+) do sensor ao pino de 5V do Arduino para alimentar o sensor.
  • Conecte o pino GND (-) do sensor ao GND do Arduino para completar o circuito.
  • Conecte o pino Sinal (S) do sensor a uma entrada digital, como o pino digital 2, que será responsável por ler o estado do sensor.

Como conectar o sensor Hall com o Arduino

Como testar o sensor de efeito Hall?

Para testar o funcionamento do sensor de efeito Hall, você pode usar um código abaixo na Arduino IDE:

// Programa: Sensor Hall com Arduino
// Autor: MakerHero

int pinoSensor = 2;   // Pino digital onde o sensor está conectado
int estadoSensor = 0; // Variável para armazenar o estado do sensor

void setup() {
  pinMode(pinoSensor, INPUT);    // Define o pino do sensor como entrada
  Serial.begin(9600);            // Inicializa a comunicação serial para monitorar o estado
}

void loop() {
  estadoSensor = digitalRead(pinoSensor);  // Lê o estado do sensor
  if (estadoSensor == LOW) {
    Serial.println("Campo magnético detectado!");
  } else {
    Serial.println("Nenhum campo magnético.");
  }
  delay(500);  // Pequeno atraso para evitar muitas leituras
}

O código acima (Hall detector) lê o estado do sensor continuamente. Quando o sensor detecta um campo magnético, o pino de saída é ativado e envia um sinal LOW (0) ao Arduino. Se não há campo magnético, o sinal fica em HIGH (1). A leitura do sensor é exibida no Serial Monitor, indicando se há ou não um campo magnético próximo.

Como testar o sensor

Aplicações

Os sensores de efeito Hall podem ser utilizados em variadas aplicações, sendo as mais comuns:

    • Medição de velocidade e RPM: Sensores Hall são usados para medir a velocidade e rotações por minuto (RPM) em motores e rodas, detectando a passagem de um ímã para calcular a velocidade.
    • Detectores de posição: Esses sensores monitoram a posição exata de peças móveis, como pistões e eixos, sendo usados em sistemas industriais para controle de movimento.
    • Sensores de corrente: Sensores Hall medem a intensidade da corrente elétrica através do campo magnético gerado por fios condutores, sem contato direto com o circuito.
    • Sistemas de segurança e alarmes: Detectam a abertura de portas e janelas em sistemas de segurança. A ausência de um ímã no sensor pode acionar alarmes.
  • Identificação de objetos: Em linhas de produção, sensores Hall detectam a presença de objetos magnéticos, verificando o posicionamento correto de peças.
  • Controle de posição de pedais e volantes: Usados em carros para medir a posição de pedais e ângulo do volante, auxiliando em funções de controle e segurança.
  • Detectores de porta aberta em eletrodomésticos: Detectam a abertura de portas de geladeiras e máquinas de lavar, ajudando a economizar energia e controlar operações.
  • Controle de posicionamento em impressoras e robôs: Essenciais para controlar o posicionamento de cabeçotes e braços mecânicos, garantindo precisão em impressoras e robôs industriais.

Controle de servo motor com sensor de efeito Hall

Abaixo, mostramos como utilizar um sensor de efeito Hall em conjunto com um servo motor SG-5010 Tower Pro com rotação infinita. Nesse exemplo, fixamos um ímã no motor; assim, a cada acionamento do sensor, o sentido de rotação do motor é invertido automaticamente.

Para o servo SG-5010 que estamos utilizando, lembre-se:

  • Fio laranja: pino de dados/controle.
  • Fio vermelho: alimentação (5V).
  • Fio marrom: terra (GND).

Controle de servo motor

No programa, usamos apenas a biblioteca Servo.h, pois o sensor de efeito Hall não requer uma biblioteca específica. No início do código, definimos os pinos do sensor (pino_hall) e do controle do servo (sinal_servo). 

Dentro do loop principal, criamos uma rotina que alterna o valor da variável estado a cada detecção do sensor de efeito Hall. Essa variável controla o sentido de rotação do motor por meio da variável sentido.

// Programa : Sensor Hall com Servo Tower Pro SG-5010
// Autor : MakerHero
 
#include <Servo.h>
 
Servo myservo;
 
int sinal_servo = 2; // Pino de sinal para o servo
int pino_hall = 4;   // Pino de sinal do sensor
int leitura;         // Armazena a leitura do sensor
int estado = 0;      // Variável auxiliar para controle
int sentido = 0;     // Sentido de rotação do motor
 
void setup() {
  pinMode(sinal_servo, OUTPUT);    // Define o pino do servo como saída
  pinMode(pino_hall, INPUT);       // Define o pino do sensor como entrada
  myservo.attach(sinal_servo);     // Conecta o servo ao pino especificado
  myservo.write(0);                // Inicializa o servo em posição 0
}
 
void loop() {
  leitura = digitalRead(pino_hall);    // Lê o estado do sensor de efeito Hall
  if (leitura == LOW) {                // Verifica se há um campo magnético
    if (estado == 0) { 
      sentido = 180;                   // Define o sentido para 180°
      estado = 1;                      // Altera o estado
    } else {
      sentido = 0;                     // Define o sentido para 0°
      estado = 0;                      // Retorna o estado original
    }
    myservo.write(sentido);            // Atualiza a rotação do servo
    delay(300);                        // Pequeno atraso para evitar múltiplas leituras
  } 
}

YouTube video

Esse código pode ser expandido para outras funcionalidades, como usar o sensor de efeito Hall para contar o número de rotações do motor ou realizar tarefas específicas após um determinado número de ativações.


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe