Índice:

Sensor de efeito Hall Arduino com interrupções: 4 etapas
Sensor de efeito Hall Arduino com interrupções: 4 etapas

Vídeo: Sensor de efeito Hall Arduino com interrupções: 4 etapas

Vídeo: Sensor de efeito Hall Arduino com interrupções: 4 etapas
Vídeo: Arduino hall effect sensor with interrupts 2024, Novembro
Anonim
Image
Image
O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?

Olá a todos, Hoje vou mostrar como você pode conectar um sensor de efeito Hall a um Arduino e usá-lo com uma interrupção.

Ferramentas e materiais usados no vídeo (links de afiliados): Arduino Uno:

Sensores de efeito Hall:

Resistores sortidos:

Etapa 1: O que é um sensor de efeito Hall?

O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?
O que é um sensor de efeito Hall?

Um sensor de efeito Hall é um dispositivo usado para medir a magnitude de um campo magnético. Sua tensão de saída é diretamente proporcional à intensidade do campo magnético através dele.

Sensores de efeito Hall são usados para aplicações de detecção de proximidade, posicionamento, detecção de velocidade e detecção de corrente.

O que estarei trabalhando hoje é rotulado como 3144, que é um interruptor de efeito Hall usado principalmente para alta temperatura e aplicações automotivas. Sua saída é alta por padrão e baixa quando na presença de um campo magnético.

O sensor possui 3 pinos, VCC, aterramento e saída. Você pode identificá-los nessa ordem se segurar o sensor com as etiquetas voltadas para você. VCC está à esquerda e a saída está à direita. Para evitar qualquer desvio de tensão, um resistor de 10k está sendo usado entre o VCC e a saída em uma configuração pull-up.

Etapa 2: O que é uma interrupção?

O que é uma interrupção?
O que é uma interrupção?
O que é uma interrupção?
O que é uma interrupção?

Para conectar o sensor ao Arduino, usaremos um recurso simples, mas muito poderoso, chamado Interromper. Um trabalho de interrupção é para garantir que o processador responda rapidamente a eventos importantes. Quando um certo sinal é detectado, uma interrupção (como o nome sugere) interrompe tudo o que o processador está fazendo e executa algum código projetado para reagir a qualquer estímulo externo que está sendo alimentado para o Arduino. Uma vez que o código esteja finalizado, o processador volta ao que estava fazendo originalmente, como se nada tivesse acontecido!

O que é incrível sobre isso é que ele estrutura seu sistema para reagir de forma rápida e eficiente a eventos importantes que não são fáceis de prever no software. O melhor de tudo é que ele libera seu processador para fazer outras coisas enquanto aguarda o aparecimento de um evento.

O Arduino Uno tem dois pinos que podemos usar como interrupções, pino 2 e 3. A função que usamos para registrar o pino como uma interrupção é chamada attachInterrupt, onde como primeiro parâmetro enviamos o pino a ser usado, o segundo parâmetro é o nome da função que queremos chamar assim que uma interrupção for detectada e como um terceiro parâmetro enviamos no modo em que queremos que a interrupção funcione. Há um link na descrição do vídeo para a referência completa dessa função.

Etapa 3: conexões e código

Conexões e código
Conexões e código
Conexões e código
Conexões e código
Conexões e código
Conexões e código

Em nosso exemplo, conectamos o sensor de efeitos Hall ao pino 2 do Arduino. No início do esboço, definimos as variáveis para o número do pino do LED embutido, o pino de interrupção, bem como uma variável de byte que usaremos para modificar através da interrupção. É crucial marcarmos este como volátil para que o compilador possa saber que ele está sendo modificado fora do fluxo do programa principal por meio da interrupção.

Na função de configuração, primeiro especificamos os modos nos pinos usados e, em seguida, anexamos a interrupção conforme explicado anteriormente. Uma outra função que usamos aqui é digitalPinToInterrupt que, como o nome indica, traduz o número do pino para o número da interrupção.

No método principal, apenas escrevemos a variável de estado no pino do LED e adicionamos um pequeno atraso para que o processador tenha tempo para funcionar corretamente.

Onde anexamos a interrupção, especificamos blink como o segundo parâmetro e este é o nome da função a ser chamada. Dentro, apenas invertemos o valor do estado.

O terceiro parâmetro da função attachIntertupt é o modo em que ela opera. Quando o temos como CHANGE, a função de piscar será executada cada vez que o estado de interrupção mudar, então, ela será chamada uma vez quando colocarmos o ímã perto do sensor e acionado novamente quando o removermos. Dessa forma, o LED fica aceso enquanto seguramos o ímã próximo ao sensor.

Se agora mudarmos o modo para RISING, a função de piscar será acionada apenas quando uma borda de subida do sinal for vista no pino de interrupção. Agora, toda vez que aproximamos o ímã do sensor, o LED apaga ou acende, então basicamente fizemos uma chave magnética.

O modo final que vamos tentar é LOW. Com ele, quando o ímã estiver fechado, a função piscar será acionada constantemente e o LED piscará, tendo seu estado sempre invertido. Quando removemos o ímã, é realmente imprevisível como o estado vai acabar, pois isso depende do tempo. No entanto, este modo é realmente útil se precisarmos saber por quanto tempo um botão foi pressionado, pois podemos usar funções de temporização para determinar isso.

Etapa 4: Ações adicionais

Ações futuras
Ações futuras

As interrupções são uma maneira simples de tornar seu sistema mais responsivo a tarefas urgentes. Eles também têm o benefício adicional de liberar seu `loop ()` principal para se concentrar em alguma tarefa primária no sistema. (Eu acho que isso tende a tornar meu código um pouco mais organizado quando eu os uso - é mais fácil ver para que a parte principal do código foi projetada, enquanto as interrupções lidam com eventos periódicos.) O exemplo mostrado aqui é quase o mais caso básico para usar uma interrupção - você pode usá-los para ler um dispositivo I2C, enviar ou receber dados sem fio, ou até mesmo iniciar ou parar um motor.

Se você tiver um uso interessante de um sensor de interrupção ou de efeitos Hall, deixe-me saber nos comentários, curta e compartilhe este Instructable, e não se esqueça de se inscrever no meu canal do YouTube para mais tutoriais e projetos incríveis no futuro.

Parabéns e obrigado por assistir!

Recomendado: