domingo, 25 de agosto de 2019

Interface Efeito Hall, usando o Arduino

Os sensores sempre foram um componente vital em qualquer projeto. Estes são os que convertem os dados ambientais reais em tempo real em dados digitais/variáveis para que possam ser processados por eletrônica. Existem muitos tipos diferentes de sensores disponíveis no mercado e você pode selecionar um com base em suas necessidades. Neste projeto vamos aprender como usar um sensor Hall a.k.a Sensor de efeito Hall com Arduino. Este sensor é capaz de detectar um imã e também o pólo do imã.
Por que detectar um imã?, Você pode perguntar. Bem, há muitas aplicações que praticamente usam o sensor de efeito Hall e talvez nunca as tenhamos notado. Uma aplicação comum deste sensor é medir a velocidade em bicicletas ou em qualquer máquina rotativa. Este sensor também é usado em motores BLDC para detectar a posição dos ímãs do rotor e disparar as bobinas do estator de acordo. As aplicações são infinitas, então vamos aprender como Interface de sensor de efeito Hall Arduino para adicionar outra ferramenta em nosso arsenal. 




Neste tutorial vamos usar a função interrupções do Arduino para detectar o imã perto do sensor Hall e acender um LED. Na maioria das vezes, o sensor Hall será usado apenas com interrupções devido às suas aplicações, nas quais é necessária alta leitura e velocidade de execução, portanto, vamos também usar interrupções em nosso tutorial.

Materiais requisitados:

  1. Sensor de efeito Hall (qualquer versão digital)
  2. Arduino (Qualquer versão)
  3. Resistor de 10k ohm e 1K ohm
  4. LED
  5. Conectando Fios

Sensores de efeito Hall:

Antes de mergulharmos nas conexões, há algumas coisas importantes que você deve saber sobre os sensores do efeito Hall. Na verdade, existem dois tipos diferentes de sensores Hall: um é o sensor Digital Hall e o outro é o sensor analógico Hall. O sensor digital Hall só pode detectar se um ímã está presente ou não (0 ou 1), mas a saída de um sensor analógico varia com base no campo magnético ao redor do magneto, que é capaz de detectar quão forte ou distante está o ímã. Neste projeto terá como objetivo apenas os sensores digitais Hall, pois são os mais utilizados.

Como o nome sugere, o sensor de efeito Hall funciona com o princípio de “efeito Hall”. De acordo com esta lei “quando um condutor ou semicondutor com corrente fluindo em uma direção é introduzido perpendicularmente a um campo magnético, uma tensão pode ser medida perpendicularmente ao caminho atual”. Usando esta técnica, o sensor de salão será capaz de detectar a presença de ímã em torno dele. Chega de teoria, vamos entrar no hardware.

Diagrama de Circuito e Explicação:

O diagrama completo do circuito para interface do sensor Hall com o Arduino pode ser encontrado abaixo.
circuit diagram of interfacing hall effect sensor with arduino
Como você pode ver, o diagrama de circuito do sensor de efeito hall arduino é bem simples. Porém, o lugar em que geralmente cometemos erros é descobrir o número de pinos dos sensores de salão. Coloque as leituras voltadas para você e o primeiro pino à sua esquerda é o Vcc e, em seguida, Sinal e Terra, respectivamente.
Vamos usar interrupções, como dito anteriormente, portanto, o pino de saída do sensor Hall está conectado ao pino 2 do Arduino. O pino está conectado a um LED que será ligado quando um ímã for detectado. Simplesmente fiz as conexões em uma tábua de pão e parecia algo assim abaixo depois de concluída.
interfacing hall effect sensor with arduino

Código de Arduino do sensor do efeito de salão:

O código completo do Arduino tem apenas algumas linhas e pode ser encontrado na parte inferior desta página, que pode ser carregado diretamente em sua placa Arduino. Se você quiser saber como o programa funciona, leia mais.
Temos uma entrada, que é o sensor, e uma saída, que é um LED. O sensor deve ser conectado como uma entrada de interrupção. Então, dentro do nosso setup function, inicializamos esses pinos e também fazemos com que o pino 2 funcione como uma interrupção. Aqui o pino 2 é chamado Hall_sensor e o pino 3 é chamado LED.
void setup() {
  pinMode(LED, OUTPUT); //LED is a output pin
  pinMode(Hall_sensor, INPUT_PULLUP); //Hall sensor is input pin
  attachInterrupt(digitalPinToInterrupt(Hall_sensor), toggle, CHANGE); //Pin two is interrupt pin which will call toggle function
}
Quando houver uma  interrupção detectada, , a função de alternância será chamada conforme mencionado na linha acima. Existem muitos parâmetros de interrupção, como  ToggleChange, Rise, Fall  etc., mas neste tutorial estamos detectando a alteração da saída do sensor Hall

Agora, dentro da  toggle function, usamos uma variável chamada “state”, que apenas mudará seu estado para 0 se já for 1 e para 1 se já for zero. Desta forma, podemos fazer o LED acender ou desligar.
void toggle() {
  state = !state;
}

Finalmente dentro da nossa função de loop , temos apenas que controlar o LED. O estado variável será alterado toda vez que um ímã for detectado e, portanto, ele será usado para determinar se o LED deve permanecer ligado ou desligado..
void loop() {
  digitalWrite(LED, state);
}

Arduino Hall Effect Sensor Funcionando:

Quando estiver pronto com seu hardware e código, basta fazer o upload do código no Arduino. Eu usei uma bateria de 9V para alimentar toda a instalação. Você pode usar qualquer fonte de energia preferida. Agora aproxime o ímã do sensor e seu LED acenderá e, se você o retirar, ele se apagará.

Nota: O sensor Hall é sensível ao pólo, o que significa que um lado do sensor pode detectar apenas o pólo norte ou apenas o pólo sul e não os dois. Portanto, se você aproximar um pólo sul da superfície norte, seu LED não acenderá.
working of interfacing hall effect sensor with arduino
O que realmente acontece por dentro é que, quando aproximamos o ímã do sensor, o sensor muda de estado. Essa mudança é detectada pelo pino de interrupção que chamará a função de alternância dentro da qual alteramos a variável "estado"; de 0 a 1. Portanto, o LED acenderá. Agora, quando afastamos o ímã do sensor, novamente a saída do sensor muda. Essa mudança é novamente percebida por nossa declaração de interrupção e, portanto, a variável "state". será alterado de 1 para 0. Assim, o LED se desligará. O mesmo se repete toda vez que você aproxima um ímã do sensor.  
Espero que você tenha entendido o projeto e tenha gostado de criar algo novo. Caso contrário, use a seção de comentários abaixo ou os fóruns para obter ajuda.
Código: 
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
int val=0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), test, CHANGE);
Serial.begin(9600);
}
void loop() {
digitalWrite(ledPin, state);
Serial.println(val/2);
}
void test() {
state = !state;
val++;
}

Nenhum comentário:

Postar um comentário

Peço que use somente caixa baixa, não todo escrito em letra grande.