24 julho 2014

Detectando campos magnéticos com o Sensor Hall KY-003

Sensor de campo magnético hall é um sensor que usa o efeito hall para detectar a aproximação de um campo magnético do sensor, gerando em sua saída um valor analógico ou digital, dependendo do tipo de construção do módulo.

Sensor Hall KY-003 Arduino



Existem diversos tipos de sensor hall para utilização com Arduino. Alguns deles detectam a variação e intensidade do campo magnético e transferem essas informações ao pino de sinal de forma analógica, permitindo medir essa variação de forma confiável e precisa.

Outros trabalham apenas com a saída de forma digital, que é o caso do Sensor Hall KY-003 que eu testei. Aproxime um ímã do sensor e você terá o valor 0 no pino de saída. Na ausência de campo magnético, o valor se manterá estável em 1. 

Desta forma, o funcionamento é o mesmo de qualquer outro sensor ou botão que utilizamos com o Arduino : ligamos o pino de sinal do módulo sensor hall à uma porta digital, e tomamos uma ação de acordo com o estado 0 ou 1 dessa porta.

Esse tipo de sensor é ideal para configurações onde não há possibilidade ou necessidade de contato, como em um medidor de RPM de um motor ou um sistema de alarmes.

Esse módulo pode ser alimentado (pino central) com os próprios 5v do Arduino (tensão máxima suportada pelo módulo é de 24v DC). Conecte o pino da esquerda (-) ao GND e o pino da direita (S) à porta digital do seu Arduino. Um led no lado esquerdo da placa indica a presença de sinal no pino de saída:

Sensor Hall - Pinagem

Circuito Arduino e sensor hall KY-003


O programa que utilizei para testar esse circuito é o mesmo que já usei no artigo Ligando uma lâmpada com relé e push-button, com pequenas alterações quanto às portas. A cada acionamento do sensor hall, o estado do led é invertido e permanece assim até que o sensor seja novamente acionado :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Programa : Teste de acionamento Sensor Hall KY-003
// Autor : Arduino e Cia

// define a porta para o acionamento do led
int pinoled = 6;      
// Porta ligada ao pino SINAL do sensor
int pinosinal = 4;    
// Armazena informações sobre a leitura do sensor
int leitura;          
// Armazena o estado do led (ligado/desligado)
int estadoled = 0;   

void setup()
{
  //Define o pino do led como saida
  pinMode(pinoled, OUTPUT); 

  //Define o pino do sensor hall como entrada
  pinMode(pinosinal, INPUT);      

}

void loop()
{
  leitura = digitalRead(pinosinal);
  if (leitura != 1)
  {
    while(digitalRead(pinosinal) != 1)
    {
      delay(100);
    }
    // Inverte o estado
    estadoled = !estadoled;
    digitalWrite(pinoled , estadoled);  
  } 
}


9 comentários:

  1. Parabéns pelo post. Você ja usou um sensor com saída analógica ? J Godoi joseneigodoi@yahoo.com.br

    ResponderExcluir
    Respostas
    1. Obrigado !

      Já vi esse tipo de sensor com saída analógica mas ainda não arrumei um para testar, mas é uma boa sugestão de post. :-)

      Abraço !

      Excluir
  2. Pode ser usado para informar se uma porta (porta de casa ) está aberta ou fechda? Instalando o sensor no batente e um imã na porta, quando fechada o sensor identifica o campo do imã e manda informacao pro arduino? qual a distancia maxima entre o arduino e o sensor? obrigado.

    ResponderExcluir
    Respostas
    1. Boa noite Rafael,

      Funciona exatamente como você descreveu. Para melhores resultados, recomendo um ímâ de neodímio. Quanto à distância máxima, não sei te informar, só testando mesmo.

      Abraço!

      Excluir
  3. Qual a distância que esse sensor pode ter dele até o arduino pois como o sinal e digital pode ser longa essa distância. ?

    ResponderExcluir
    Respostas
    1. Boa noite Rafael,

      Não tenho a distância exata, mas não pode ser muito longe, senão você vai ter alguma perda de sinal, interrupções intermitentes, etc.

      Abraço!

      Excluir
  4. A que distância o sensor detecta o campo magnético?

    ResponderExcluir
    Respostas
    1. Oi Danilo,

      O alcance do sensor, pelo menos esse que eu testei, é bem limitado, mas se você usar por exemplo um ímã de neodímio, vai conseguir bons resultados.

      Abraço!

      Excluir
  5. estou com uma duvida quanto a distância de acionamento poderia chutar: 3cm 5cm utilizando um imã? e quanto ao angulo do imã para acionar? vlw

    ResponderExcluir