terça-feira, setembro 29, 2020

Módulo Sensor de Vibração (com sensor SW-420)

Continuando a esvaziar o meu backlog de sensores, vamos ver outro sensor simples, o de vibração.


Existem vários tipos de detectores de vibração, este módulo usa o SW-420 que é uma opção de baixo custo mas com boa sensibilidade e omnidirecional. A figura abaixo é o mais próximo que encontrei de um datasheet:


Pelo que consegui entender, a peça em vermelho (roller) conecta os dois terminais do sensor; à medida que o sensor é movido ou vibrado a conexão é momentaneamente interrompida.

No módulo, estas conexões e desconexões controlam a descarga e carga de um capacitor. Desta forma a tensão no capacitor indica o quanto o sensor está sendo vibrado. Esta tensão é comparada com uma referência definida por um potenciômetro:

O resultado final é uma saída digital que muda de estado quando o sensor detecta uma vibração acima do limite definido através do potenciômetro. Como indicado acima, o módulo possui dois LEDs, um para indicar que está alimentado outro para indicar que foi detectada vibração.

No módulo que eu usei a saída está normalmente em nível alto (e o LED aceso) e passa para nível baixo (e LED apagado) quando uma vibração é detectada. Pelo que vi na internet existem versões com a saída invertida. As referências que eu encontrei falam em operação de 3,3 a 5V, mas não vejo motivo para não funcionar com3V.

Para testar o sensor vamos usar uma montagem minimalista com um Arduino Nano, um buzzer e o sensor (quem acompanha o blog vai perceber que usei a mesma montagem do teste do sensor de chama):

O nosso software simplesmente reproduzir no buzzer a saída do sensor:

  1. /** 
  2.  * Teste do Sensor de Vibração 
  3.  * DQ - 21/09/20 
  4.  * https://dqsoft.blogspot.com 
  5.  */  
  6.   
  7. // Conexões  
  8. const int pinBuzzer = 3;  
  9. const int pinSensor = 4;  
  10.   
  11. // Iniciação  
  12. void setup() {  
  13.   Serial.begin(115200);  
  14.   pinMode (pinBuzzer, OUTPUT);  
  15.   digitalWrite (pinBuzzer, LOW);  
  16.   pinMode (pinSensor, INPUT);  
  17. }  
  18.   
  19. // Laco eterno  
  20. void loop() {  
  21.   // Replica a saída do sensor no buzzer  
  22.   digitalWrite (pinBuzzer, digitalRead(pinSensor));  
  23.   // Dá um tempo entre as leituras  
  24.   delay (100);  
  25. }  

Aí é só ajustar o potenciômetro para o nível de vibração a partir do qual queremos que o buzzer seja acionado.

Nenhum comentário: