Alarme com o sensor de vibração SW18010P 29

Componente recomendado para alarmes, sensores de presença e brinquedos, entre outros, o módulo Sensor de Vibração SW18010P é uma placa composta pelo sensor de vibração SW18010P propriamente dito, um chip comparador de tensão LM393, e um potenciômetro para ajuste da sensibilidade do módulo.

Sensor de Vibração SW18010P

Possui também em sua estrutura dois leds: um verde, indicando que o módulo está ligado (tensão de operação de 3.3 à 5 volts), e outro vermelho, que acende quando há mudança de estado da saída digital (pino D0).

Na ausência de vibração, a saída digital se mantém em estado alto (HIGH). Da mesma forma, a saída analógica A0 mantém o seu valor máximo, variando a tensão conforme a movimentação do sensor.

Sua estrutura e funcionamento permitem que o módulo seja conectado diretamente a um microcontrolador como o Arduino, onde podemos verificar tanto o estado da saída digital D0 como da analógica A0, observando essa variação de valores no Serial Monitor.

Como sugestão de utilização, vamos utilizar este sensor de vibração para acionar um buzzer  quando for detectada vibração, manter o buzzer ativo por 5 segundos, e depois deixar o módulo novamente em estado de espera.

Esse princípio pode ser usado para criar um alarme e acionar, por exemplo, relés, lâmpadas ou sistemas de som, tudo vai depender da sua criatividade na utilização das saídas do Arduino ou qualquer outro microcontrolador que você estiver usando.

Circuito Sensor de Vibração e Buzzer

Observe no programa que estamos lendo os valores das saídas A0 e D0 do módulo, e mostrando esses valores no serial monitor.

Para acionamento da porta 4, onde se encontra o buzzer, o programa verifica se o valor da saída D0 é diferente de 1 (1 = sem vibração) e, caso positivo, aciona a porta 4 por 5 segundos, retornando depois ao loop do programa e aguardando o próximo acionamento :

//Programa : Sensor de vibração com buzzer
//Autor : MakerHero

//Pino ligado a porta A0 do sensor
int porta_a0 = A0;
//Pino ligado a porta D0 do sensor
int porta_D0 = 2;
int leitura_porta_analogica = 0;
int leitura_porta_digital = 0;
//Pino ligado ao buzzer
int pinobuzzer = 4;

void setup()
{
  pinMode(porta_a0, INPUT);
  pinMode(porta_D0, INPUT);
  pinMode(pinobuzzer, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  //Leitura dos dados das portas do sensor
  leitura_porta_analogica = analogRead(porta_a0);
  leitura_porta_digital = digitalRead(porta_D0);
  //Mostra os valores no serial monitor
  Serial.print("Porta Digital : ");
  Serial.print(leitura_porta_digital);
  Serial.print(" Porta Analogica : ");
  Serial.println(leitura_porta_analogica);

  //Testa se o sensor foi acionado e liga o buzzer
  if (leitura_porta_digital != 1)
  {
    digitalWrite(pinobuzzer, HIGH);
    delay(5000);
    digitalWrite(pinobuzzer, LOW);
  }
  delay(100);
}

O ajuste da sensibilidade do módulo é feito girando o potenciômetro para a esquerda (diminui a sensibilidade), ou para a direita (aumenta a sensibilidade).

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

29 Comentários

  1. Qual o contato? gostaria e tirar algumas dúvidas!

    1. Olá, Leonardo,

      Caso seja dúvidas relacionadas a projeto e coisas assim, acoselho seguir para o nosso fórum.

      Caso seja uma dúvida básica, pode mandar um email para: [email protected]

      Abraços!
      Diogo – Equipe MakerHero

  2. Boa tarde, estou tentando implementar um teste no buzzer, de uns 5 segundos. Sempre que ligar ele faça esse teste para identificar que o buzzer está funcionando independente de ter ou não vibração e só então ler o sensor. Tinha um buzzer queimado e não percebi. Fiz essa alteração mas não fui eficaz, poderia me ajudar nessa implementação? Obrigado

    void loop()
    {
    //Leitura dos dados das portas do sensor
    leitura_porta_analogica = analogRead(porta_a0);
    leitura_porta_digital = digitalRead(porta_D0);
    //Mostra os valores no serial monitor
    Serial.print(“Porta Digital : “);
    Serial.print(leitura_porta_digital);
    Serial.print(” Porta Analogica : “);
    Serial.println(leitura_porta_analogica);

    //teste do buzzer por 5 segundos
    {
    digitalWrite(pinobuzzer, HIGH);
    delay(5000);
    digitalWrite(pinobuzzer, LOW);
    }
    delay(100);

    //Testa se o sensor foi acionado e liga o buzzer
    if (leitura_porta_digital != 1)
    {
    digitalWrite(pinobuzzer, HIGH);
    delay(5000);
    digitalWrite(pinobuzzer, LOW);
    }
    delay(100);
    }

    1. Olá Ilsomberto!

      Você deve colocar seu trecho de código do teste do buzzer no setup do seu programa.

      Aí ele só roda uma única vez esse trecho de código 😉

      Abraços!

      André – Equipe MakerHero

      1. Obrigado pelo auxílio

  3. Estou com problemas com o sensor, ele apresenta que sempre está tendo vibração (a analógica fica em 0 e a digital em 0 também). Será um defeito? Utilizo o código apresentado

  4. O sensor de inclinação SW520D funcioná a uma distância de 500 metros do Arduino Uno?

  5. Olá, tudo bem?
    Gostaria de saber como eu posso arrumar um ploblema, pois quando eu coloco essa parte do codigo:
    //Testa se o sensor foi acionado e liga o buzzer
    if (leitura_porta_digital != 1)

    Aparece a seguinte mensagem : exit status 1
    expected unqualified-id before ‘if’
    Como posso resolver isso? Grato

  6. Olá, tudo bem?
    Gostaria de saber como eu posso arrumar um ploblema, pois quando eu coloco essa parte do codigo:
    //Testa se o sensor foi acionado e liga o buzzer
    if (leitura_porta_digital != 1)
    {
    digitalWrite(pinobuzzer, HIGH);
    delay(5000);
    digitalWrite(pinobuzzer, LOW);
    }
    delay(100);
    }

    Aparece a seguinte mensagem : exit status 1
    expected unqualified-id before ‘if’
    Como posso resolver isso? Grato

  7. Olá, tudo bem?
    Gostaria de saber como eu posso resolver um ploblema, pois quando eu coloco essa parte do codigo:
    //Testa se o sensor foi acionado e liga o buzzer
    if (leitura_porta_digital != 1)
    {
    digitalWrite(pinobuzzer, HIGH);
    delay(5000);
    digitalWrite(pinobuzzer, LOW);
    }
    delay(100);
    }

    Aparece a seguinte mensagem : exit status 1
    expected unqualified-id before ‘if’
    Como posso resolver isso? Grato

  8. Olá,
    Utilizei o mesmo código no mesmo sensor, mas infelizmente n funciona, a diferença e que eu estou utilizando um shield com buzzer , isso pode afetar no código?

  9. Obrigado por me ajudar a entender, realmente me foi útil.

  10. Olá , consigo medir a vibração de rolamentos de motores de corrente continua usando este modulo???

    1. Esse sensor só vai te dizer se está vibrando ou não. Para sua aplicação, penso que seja melhor usar um acelerômetro

      1. Mas na analogica dele vou ter um valor, nao vou conseguir medir a intensidade da vibracao?

  11. Boa Noite Felipe o meu sensor só possui 3 saídas e não 4, não está dando certo;

    1. Bom dia,

      Ele tem apenas saída digital ou apenas saída analógica ? Deve funcionar do mesmo jeito, você apenas vai ter as informações do tipo de saída do seu módulo.

      Abraço.

      Adilson – Equipe MakerHero

  12. Estou querendo medir vibração de Coolers, sabe me dizer se este sensor consegue medir a vibração gerada pela rotação do cooler? A saída analógica varia bastante ou precisa de vibrações fortes?

    Obrigado

    1. Boa noite Eduardo,

      Esse módulo tem um potenciômetro para ajuste da sensibilidade.

      Abraço.

      Adilson – Equipe MakerHero

  13. Qual a unidade da escala de vibração que ele retorna ? Estou montando ele junto a um display para mostrar o valor da vibração , gostaria de saber a unidade que interpreta essa vibração para que eu possa converter em frequência.

    1. Boa noite Lucas,

      Infelizmente não temos essa informação.

      Adilson – Equipe MakerHero

  14. Bom dia,
    Comprei um módulo deste, mas não consegui entender muito bem a escala que ele trabalho no analógico.
    Estou querendo fazer um programa que me mostre a escala de vibração em %.
    Pelo que percebi o 0% fica em 1023 e o 100% um número bem mais baixo que esse, é isso mesmo?

    Abraços

    1. Boa tarde Anderson,

      Exato. Na ausência de vibração a saída digital fica em 1 e a analógica em 1023 (ou próximo disso).

      Abraço.

      Adilson – Equipe MakerHero

  15. Muito Interessante, quando o sensor de vibração SW18010P estará disponível novamente para compra ?

    1. Olá Thadeu,
      Dentro de 1-2 semanas. No anúncio clique em esgotado para cadastrar o teu e-mail e assim que chegar nós enviaremos um comunicado a ti.
      Abraço!

  16. Posso usar ele para substituir o piezzo eletronico ?

    1. Boa tarde Julio,

      Pode sim. Abraço.

      Adilson – Equipe MakerHero