Como usar o sensor de vibração SW-18010P com Arduino
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.
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.
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.
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 :
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!
O nível de vibração medido é dado em que unidade ? Hertz ?
Boa tarde,
O datasheet do sensor não informa o tipo de unidade. Creio que seja apenas uma variação da corrente elétrica na saída do sensor.
Abraço !
o q é esse dado mostrado na tela ?
e pq ele diminui?
Olá,
Esse é o nível de tensão na porta analógica, em um valor que vai de 0 a 1024. Quando o sensor está em estado de espera, ele está em nível alto (HIGH, valor 1, ou 1024, na porta analógica). Quando há vibração, o valor vai diminuindo até chegar a zero.
Abraço !
Olá, minha porta analogica varia entre dois valores apenas 1023 e 30 trocando a sensibilidade do sensor, agora se tiver com vibração ele não varia nada fica fixo numa dessas duas acima… oq pode ser??
Boa Tarde, gostaria que vc me orientasse, 1) se eu comprar este sensor de vibração ele funcionará sozinho? ( sem nenhum outro circuito eletrônico para fazer o reconhecimento da vibração pelo sensor ) 2) caso o sensor funcione somente com o arduino, qual arduino de menor tamanho vc tem e qual modelo vc me indicaria? O que eu quero, (VIBRAÇÃO -ja tenho) + (SENSOR – quero comprar) + (ALARME – já tenho). grato.
Olá meu nome e josé luiz, postei anteriormente, queria frisar que tenho urgência em executar meu projeto e se der certo precisarei de um numero considerado de sensores, se for melhor a comunicação deixo meu email [email protected]
Obrigado pela atenção.
Boa noite José,
Esse sensor não funciona sozinho, você precisará de algum microcontrolador ou algum outro circuito auxiliar para ler os dados do sensor.
O sensor é bem simples, ele funciona até em um Arduino Pro Mini ou um Arduino Nano.
Abraço!
estou com um projeto de ler as vibraçoes de uma ponte de ferro..
ja tenho ele em maos, so queria saber como vc poderia me ajudar na hora dessa leitura o que posso fazer no caso desse projeto !!
Boa noite,
O que você precisa exatamente ?
Abraço!
ola com esse sensor ligado ao arduino com audio e autofalnte poderia colocar numa fantasia e ao eu começar andar acionaria o som gravado e ao parar de andar desligaria o som.obrigado
Boa tarde,
Consegue sim, mas provavelmente você vai precisar de um amplificador para que ouçam os efeitos sonoros. 🙂
Abraço!
Como fazer o inverso. Tipo, mandar vibrações
Bom dia,
Use um motor de vibração, existem alguns modelos para Arduino, que funcionam com baixa tensão.
Abraço!
Pelo que entendi, esse sensor serve apenas para detectar vibração. Eu quero detectar o leve movimento de um dedo. Serve não, né?!
Oi Alexandre,
Na minha opinião não, pq se vc mover o dedo muito lentamente ele não vai acionar o sensor. Sugiro um módulo acelerômetro/giroscópio.
Abraço!
No caso seria como um espasmo.
Mas lento, voluntário. Digo o curso do movimento, como um espasmo.
Oi Alexandre,
Entendi.. mesmo assim eu usaria um acelerômetro… acho que vc conseguiria detectar o movimento com mais precisão.
Abraço!
Também estou pensando num sensor de força resistivo. O tais movimentos podem ser tipo que geram pressão. Eu detectaria poucos gramas de força. Sparkfun vende alguns modelos. É interessante que eles são fininhos. Com o devido suporte, penso que dá implementar inclusive interruptor para bochecha.
como ficaria para os dados aparecerem no monitor serial, retirando o lcd
Oi Maicon,
Você pode retirar os comandos e usar o Serial.print() e Serial.println(). O codigo fica mais ou menos assim (ficou meio baguncado, dá pra otimizar):
void setup()
{
pinMode(porta_A0, INPUT);
pinMode(porta_D0, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.print("Sensor: Deslig.");
Serial.print("Nivel : ");
Serial.begin(9600);
// 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)
{
Serial.print("Sensor: Vibracao");
Serial.print(" Nivel : )";
Serial.print(leitura_analogica);
leitura_analogica_ant = leitura_analogica;
delay(1000);
Serial.println("Sensor: Deslig.");
}
// Exibe os dados do nível de vibracao
if (leitura_analogica != leitura_analogica_ant)
{
Serial.print("Sensor: Deslig.");
Serial.print(" Nivel : )";
Serial.println(leitura_analogica);
leitura_analogica_ant = leitura_analogica;
}
delay(100);
}
Abraço!
Boa noite…
Eu gostaria de saber se é possível fazer com que a partir do momento que o Arduíno receber essa informação de vibração seja possível dar um start em um buzzer.
Por que não?
é possivel utilizar o sensor de vibração para sequencias de condicional? como por exemplo, acender/apagar uma lampada ao detectar duas vibrações ou abrir a cortina ao detectar 3???
Acho que tudo depende apenas da forma que você pensa os tempos. Em outras palavras, os tipos de vibração, como isolá-las.
Sorry for the english…
Where did you get the Fritzing icon for the sensor?
Thank you!
-Michael
Boa noite,
Qual seria a melhor opção para se fazer um sismógrafo com o arduíno? O sensor de vibração seria capaz de reconhecer esse tipo de tremor/vibração com precisão?
Olá. Como posso fazer para manter um histórico das medições, registrando continuamente o processo? De preferência registrando numa planilha de Excel.
Oi. No meu caso, eu gostaria que o mesmo vibrasse ao receber um determinado comando no qual ele deveria vibrar. Será que este funcionaria?
Boa noite Li,
Não. O que você precisa é de um motor de vibração como esse: https://www.makerhero.com/produto/motor-de-vibracao-1027/
Abraço!
Adilson
Boa noite,
Preciso montar um circuito para minha bateria, para toda vez que eu pisar no bumbo acionar um led por 2 segundos.
Alguem poderia me ajudar a montar o código com o sensor de vibração ??
Meu sensor é o TAP MODULE.
Boa noite a todos.
Preciso montar um circuito para quando eu pisar no bumbo da minha bateria, ele acionar um led por 2 segundos.
Estou usando o sensor TAP.
Alguém poderia me ajudar a montar ??
Talvez um sensor indutivo de proximidade possa ser mais interessante instalado no pedal que o de movimento/vibração no bumbo.
Como posso saber a faixa de frequência que este sensor pode ser aplicado? até 1Hz? até 1kHz? até 1 Mhz?
Não conheço o sensor mas acho que não será possivel. Não acredito que ele tenha frequencia para passar tantos pontos de posição para formar a onda de vibração suficientemente boa para isso.
SE possível você precisa fazer a transformada de fourier para descobrir as frequências de vibração.
A frequencia maxima é indicada nos acelerometros, o sw-420 outro sensor não fala nada , logo ele deve ser um idicador de vibração com estimativa de ''volume'' de vibração. Se esse não indica no data sheet deve valer a mesma afirmação.
Esse sensor conseguiria ler as vibrações de um fio de nylon não muito longo por exemplo?
É possível usar essa leitura para enviar algum comando dependendo da intensidade da vibração desse fio?
Boa Noite amigo Eu gostaria de saber o código para usar um sensor SW-420 para este procedimento pois ele possui apenas do pinos
Oi João,
Sim, o SW-420 tem apenas a saída digital (D0). Você pode usar o código normalmente.
Abraço!
Adilson
ola!
Qual sensor você indicaria para analise vibratoria em motores?
abraços
Oi Igor,
Recomendo procurar algum tipo de sensor industrial. Creio que este modelo que mostro no post sirva mais para fins didáticos.
Abraço!
Adilson
Olá! Gostaria de saber onde você encontrou o arquivo desse sensor – sw18010p – para fazer o circuito no Fritzing. Agradeço desde já.
Gostaria de saber onde você conseguiu o arquivo para Fritzing desse sensor. Estou procurando em várias bibliotecas e não encontro.
Agradecido desde já.