Detectando campo magnético com reed switch e Arduino
O reed switch, também conhecido como interruptor de lâmina, é um dispositivo eletrônico formado por um bulbo de vidro com duas lâminas flexíveis, hermeticamente seladas, que se movimentam com a ação de campo magnético.
Em condições normais estas lâminas encontram-se separadas e não conduzem corrente elétrica, operando como uma chave aberta. Por sua vez, quando um gerador de campo magnético – como um imã, é posto próximo a este componente, o campo magnético magnetiza suas lâminas resultando em uma atração entre elas, o que ocasiona no fechamento dos contatos e na passagem de corrente elétrica, passando a funcionar como uma chave fechada.
O reed switch encontra-se ilustrado na Figura 1. Dentre suas aplicações estão alarmes, sensor de presença ou passagem de determinado objeto, sensor de nível, entre outras.
Sabendo dessa propriedade, a proposta deste projeto é utilizar um reed switch em conjunto com a placa uso para realizar a detecção de um campo magnético.
OBSERVAÇÃO: Por possuir um invólucro de vidro, o reed switch se torna bastante frágil e deve ser manuseado com bastante cuidado.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Protoboard;
- 1 x Reed switch;
- 1 x Resistor de 10 kΩ;
- 1 x Resistores de 220 Ω;
- 1 x LED difuso.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Conecte os componentes na protoboard como ilustra a Figura 2. Lembre-se que a placa Arduino UNO deve estar desconectada enquanto você monta o circuito.
Ao montar seu circuito na protoboard preste atenção nos seguintes pontos:
- Por possuir um invólucro de vidro, o reed switch se torna bastante frágil e deve ser manuseado com bastante cuidado;
- Assim como os resistores o reed switch não possui polaridade;
- Um terminal do reed switch deve ser ligado ao 5 V e o outro terminal deve ser conectado ao pino digital 8. Conectamos também uma resistência de 10 kΩ entre a porta 8 e o GND da placa UNO.
ELABORANDO O CÓDIGO
A proposta desse projeto é criar um detector de campo magnético utilizando o reed switch em conjunto com a placa Arduino UNO. Esse projeto deve funcionar da seguinte maneira: Se o reed switch detectar um campo magnético uma mensagem de alerta deve ser exibida no monitor serial e o LED de alerta será acionado. Por sua vez, quando submetido a condições normais, o LED de alerta deve ser desligado.
Sabendo disso, vamos a programação do Sketch. Para melhor compreensão do código acompanhe os seguintes passos:
1. Declarar as variáveis
Iniciaremos a programação declarando três variáveis. Atribuímos a porta 8, que o reed switch encontra-se conectado, a variável reedPin. Definimos o pino 11 a variável ledPin. Declaramos a variável valorLido, do tipo inteiro, para armazenar o estado do reed switch (ligado ou desligado).
2. Configurar os pinos de entrada e saída e inicializar a comunicação serial:
A variável reedPin (pino 8) será definido como entrada (INPUT) e ledpin será definido como saída (OUTPUT);
A comunicação serial deve ser inicializada por meio da instrução: Serial.begin(9600);.
3. Realizar a leitura do reed switch:
No loop, realizamos a leitura digital da variável reedPin (pino 8) e atribuímos este valor a variável valorLido;
4. Comparar valor lido:
Utilizaremos a lógica do if…elsepara comparar se a variável valorLido encontra-se em nível alto ou baixo (campo magnético detectado ou não detectado).
- Se a variável valorLido estiver em nível lógico baixo (LOW) o LED difuso será desligado;
- Senão, será exibida no monitor serial a mensagem “ALERTA: Campo magnético detectado” e o LED será ligado.
Com isso, o código deste projeto fica da seguinte forma:
/* = DETECTOR DE CAMPO MAGNÉTICO COM REED SWITCH = =============================================== == BLOG DA ROBOTICA - www.blogdarobotica.com == =============================================== Autor: Carol Correia Viana E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica =============================================== == CASA DA ROBOTICA - www.casadarobotica.com == =============================================== Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica =============================================== */ int reedPin = 8;//Atribui o pino 8 a variável reedPin int ledpin = 11;//Atribui o pino 11 a variável ledpin int valorLido = 0;//Variável responsável por armazenar o estado do reed Swith (LOW/HIGH) void setup() { Serial.begin(9600);//Inicializa a comunicação serial, com velocidade de comunicação de 9600 pinMode(reedPin, INPUT);//reedPin definido como entrada pinMode(ledpin, OUTPUT);//ledpin definido como saída } void loop() { valorLido = digitalRead(reedPin);//Armazena o valor digital de reedPin em valorLido if(valorLido == LOW) {//Se valorLido for igual a LOW digitalWrite(ledpin, LOW);//Coloca ledPin em nível baixo } else{//Senão Serial.println("ALERTA: Campo magnético detectado");//Escreve na serial "ALERTA: Campo magnético detectado" digitalWrite(ledpin, HIGH);//Coloca ledPin em nível alto } delay(100);//Intervalo de 100 milissegundos }
OBSERVAÇÃO: Ao aproximar um imã no sensor reed switch, o LED será acionado.
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.