Hoje vamos falar do Sensor de vibração SW-18010P, um sensor que, como o próprio nome diz, serve para medir a vibração e/ou movimentação de algum objeto.

sensor de vibração SW-18010P

Com esse módulo, você pode montar alarmes (detectando, por exemplo, movimentação de uma porta), utilizá-lo em brinquedos (emitir algum som de acordo com a movimentação) ou algum outro sistema no qual você necessite medir o nível de vibração.

O sensor de vibração SW-18010P

O módulo tem em uma das extremidades o sensor SW-18015P (ou SW-18010P, dependendo do modelo), que internamente possui uma mola que detecta se o sensor foi movimentado ou não.

Esse sensor transfere para os pinos D0 e A0 as informações referentes à vibração. Pela sua construção, pode ser usado em qualquer ângulo, e também detecta movimentos em qualquer direção.

Sensor de vibração - Estrutura

O pino D0 (digital), indica se o sensor foi movimentado (sinal LOW – 0), ou não (sinal HIGH – 1). Já o pino A0 (analógico) tem a mesma função, porém emitindo sinais intermediários, ou seja, com ele podemos medir o nível de intensidade da vibração.

Sensor de vibração Ligado

A alimentação do módulo é de 3.3 à 5v e ele possui dois leds na sua estrutura. O led verde indica que o módulo está ligado, e o led vermelho indica presença de vibração e o envio de dados pelos pinos D0 e A0. Com o potenciômetro, é possível alterar o nível de sensibilidade do módulo.

Conexão ao Arduino

Você pode ler as informações desse módulo usando tanto os pinos digitais como os analógicos do Arduino, ou então utilizando os dois ao mesmo tempo; como nesse circuito que eu montei utilizando o sensor de vibração e um display LCD 16×2, que mostra na parte superior se o sensor está ligado (vibrando), ou desligado, e na parte inferior o nível de intensidade da vibração, com o valor lido diretamente da porta analógica, ligada ao pino A0 do módulo :

Circuito Arduino - sensor de vibracao SW-1810P

O programa usa apenas a biblioteca LiquidCrystal para enviar dados ao LCD. A comunicação com o módulo utiliza apenas uma porta digital (porta 7) e uma analógica (porta A5):

// Programa : Sensor de vibracao com LCD 16x2
// Autor : Arduino e Cia

#include <LiquidCrystal.h>

// Porta ligada ao pino A0 do sensor de vibracao
int porta_A0 = A5;
// Porta ligada ao pino D0 do sensor de vibracao
int porta_D0 = 7;

int leitura_analogica = 0;
int leitura_analogica_ant = 0;
int leitura_digital = 0;

// Define os pinos de ligacao ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2); //Inicializa LCD
  lcd.clear();     //Limpa o LCD
  pinMode(porta_A0, INPUT);
  pinMode(porta_D0, INPUT);
  //Informacoes iniciais no LCD
  lcd.setCursor(0,0);
  lcd.print("Sensor: Deslig.");
  lcd.setCursor(0,1);
  lcd.print("Nivel : ");
  Serial.begin(9600);
}

void loop()
{
  // Leitura dos dados das portas do sensor
  leitura_analogica = analogRead(porta_A0);
  leitura_digital = digitalRead(porta_D0);
  // Exibe os dados da porta digital (se houver alteracao), e 
  // nivel de vibracao
  if (leitura_digital != 1)
  {
    lcd.setCursor(8,0);
    lcd.print("Vibracao");
    lcd.setCursor(8,1);
    lcd.print("      ");
    lcd.setCursor(8,1);
    lcd.print(leitura_analogica);
    leitura_analogica_ant = leitura_analogica;
    delay(1000);
    lcd.setCursor(8,0);
    lcd.print("         ");
    lcd.setCursor(8,0);
    lcd.print("Deslig.");
   }
  // Exibe os dados do nível de vibracao
  if (leitura_analogica != leitura_analogica_ant)
  {
    lcd.setCursor(8,1);
    lcd.print("      ");
    lcd.setCursor(8,1);
    lcd.print(leitura_analogica);
    leitura_analogica_ant = leitura_analogica;
  }
  delay(100);
}

Vale a pena dar uma olhada no datasheet do sensor, que contém mais detalhes e informações sobre o funcionamento do componente.

Vídeo do circuito em funcionamento? Tem sim:


Gostou? Confira outros posts com sensores aqui mesmo no Arduino e Cia!

Avalie este post!