fbpx

Detectar inclinação utilizando sensor de inclinação e vibração SW200D e Arduino

O sensor de inclinação e vibração SW-200D (Figura 1) é um interruptor sensível que possui em seu interior um par de bolas, que fazem contato com os pinos quando inclinado na posição correta.

A imagem mostra uma foto real de um sensor de inclinação e vibração SW-200D
Figura 1- Sensor de inclinação e vibração SW-200D

O sensor SW-200D opera como um botão liga/desliga de acordo com sua inclinação, sendo usado como entrada digital. Seu modo de funcionamento de acordo com sua posição em relação a inclinação pode ser observado na Figura 2.

Quando o sensor é inclinado mais de 15º em relação a condição horizontal para o lado do terminal condutor dourado (B), o circuito torna-se fechado, ou seja, ligado. No entanto, quando a inclinação estiver voltada para o terminal prateado (A) ou não houver inclinação, o circuito se torna aberto, na condição desligado.

Modo de funcionamento do sensor de inclinação e vibração SW-200D - Blog da Robótica.
Figura 1 – Modo de funcionamento do sensor de inclinação e vibração SW-200D

Os sensores SW-200D podem ser encontrados em sistemas de segurança, dispositivos automotivos, eletrodomésticos, aparelhos de comunicação, brinquedos, entre outras aplicações.

Neste projeto, utilizaremos o sensor SW200D em conjunto com o Arduino para detectar inclinação. O LED deve ser acionado sempre que o sensor detectar inclinação.


MATERIAIS NECESSÁRIOS


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Inicialmente, certifique-se que sua placa Arduino esteja desligada. Monte o circuito da simulação baixo utilizando a protoboard, o sensor SW200D, o LED, os resistores e os fios.

Ao montar o circuito observe os seguintes pontos:

  • O terminal dourado do SW200D deve ser conectado ao 5V;
  • O terminal prateado do SW200D deve ser conectado ao pino digital 8. Precisamos conectar também uma resistência de 10 kΩ entre o pino 8 e o GND da placa Arduino;
  • O LED deve ser conectado ao pino digital 9 do Arduino.


ELABORANDO O CÓDIGO

Após a montagem do circuito, vamos a programação do Sketch. Conforme, mencionado anteriormente, o objetivo deste projeto é detectar a inclinação com o sensor SW200D. Quando o sensor detectar a inclinação, o LED deverá acender e retornará ao estado desligado quando não houver inclinação.

Vamos entender a lógica de programação deste projeto a partir dos seguintes passos:

1. Declarar as variáveis:
As variáveis sensorPin e ledPin serão utilizadas para representar os pinos digitais 8 e 9, em que sensor SW200D e o LED estão conectados, respectivamente;
A variável leituraSensor será criada para armazenar o valor digital lido do sensor.

2. Inicializar a comunicação serial e configurar as portas de saída e entrada:
Dentro da função setup(), inicializamos a comunicação serial através da instrução: Serial.begin(9600); e definimos ledPin como saída (OUTPUT) e sensorPin como entrada (INPUT).

3. Realizar a leitura da porta digital:
Iniciaremos a função loop() realizando a leitura digital do sensor SW200S e armazenando o valor lido na variável leituraSensor através da instrução leituraSensor = digitalRead(sensorPin);

4. Realizar a comparação:
Utilizaremos a lógica do if…else para comparar se a variável leituraSensor encontra-se em nível alto ou baixo (sensor inclinado ou não inclinado).
Se a variável leituraSensor estiver em nível lógico alto (sensor inclinado), o LED será ligado e a mensagem “Sensor inclinado” será exibida no monitor serial. Senão, o LED deve ser e a mensagem “Sensor não inclinado” será impressa no monitor serial.

Desta forma, o Sketch deste projeto ficará da seguinte maneira:

/*
  ---  DETECTAR INCLINAÇÃO COM SENSOR SW200D     ---
  ==================================================
  == BLOG DA ROBOTICA - www.blogdarobotica.com ==
  ==================================================
  Autora: Carol Correia Viana
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  ==================================================
*/

int sensorPin = 8; //Define sensorPin no pino digital 8
int ledPin = 9; //Define ledPin no pino digital 9
int leituraSensor = 0; //Variável para armazenar a leitura do sensor

void setup() {
  Serial.begin(9600); //Inicializa a comunicação serial
  pinMode(ledPin , OUTPUT); //Define ledPin (pino 9) como saída
  pinMode(sensorPin , INPUT); //Define sensorPin (pino 8) como entrada
}

void loop() {
  leituraSensor = digitalRead(sensorPin); //Lê o valor de sensorPin e armazena em leituraSensor

  if (leituraSensor == HIGH) { //Se leituraSensor for igual a HIGH ou 1
    digitalWrite(ledPin , HIGH); //Define ledPin como HIGH, ligando o LED
    Serial.println("Sensor inclinado"); //Imprime mensagem no monitor serial
    delay(100); //Intervalo de 100 milissegundos
  }
  else { //Senão = leituraSensor for igual a LOW ou 0
    digitalWrite(ledPin, LOW); //Define ledPin como LOW, desligando o LED
    Serial.println("Sensor não inclinado"); //Imprime mensagem no monitor serial
  }
}

Espero ter ajudado,

Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Carol Correia Viana

Dúvidas? Deixe seu comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.