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.
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.
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.
Qual o contato? gostaria e tirar algumas dúvidas!
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
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);
}
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
Obrigado pelo auxílio
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
Thank you
O sensor de inclinação SW520D funcioná a uma distância de 500 metros do Arduino Uno?
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
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
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
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?
Posso ligar ele é série? semelhante ao esquema desse senhor:
http://www.eletroesters.com.br/files/Nota_de_Aplicacao_Sensores_em_Serie.pdf
Obrigado por me ajudar a entender, realmente me foi útil.
Olá , consigo medir a vibração de rolamentos de motores de corrente continua usando este modulo???
Esse sensor só vai te dizer se está vibrando ou não. Para sua aplicação, penso que seja melhor usar um acelerômetro
Mas na analogica dele vou ter um valor, nao vou conseguir medir a intensidade da vibracao?
Boa Noite Felipe o meu sensor só possui 3 saídas e não 4, não está dando certo;
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
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
Boa noite Eduardo,
Esse módulo tem um potenciômetro para ajuste da sensibilidade.
Abraço.
Adilson – Equipe MakerHero
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.
Boa noite Lucas,
Infelizmente não temos essa informação.
Adilson – Equipe MakerHero
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
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
Muito Interessante, quando o sensor de vibração SW18010P estará disponível novamente para compra ?
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!
Posso usar ele para substituir o piezzo eletronico ?
Boa tarde Julio,
Pode sim. Abraço.
Adilson – Equipe MakerHero