
¿Que es un sensor de vibración?
Un sensor de vibración es un dispositivo que reacciona ante movimientos bruscos, golpes, o vibraciones, pero no a movimientos constantes o progresivos. En el caso de detectar una vibración genera una señal digital, que cesa al finalizar la vibración.
El principio de funcionamiento es muy sencillo. El dispositivo dispone de un cilindro, con dos contactos. Uno de los contactos está unido a una varilla metálica ubicada en el centro del cilindro. A su alrededor, el otro contacto se arrolla a su alrededor en forma de muelle.
En caso de una vibración, el muelle se deforma por efecto de la inercia, estableciendo contacto en varios puntos con el contacto fijo. De esta forma, se establece una conexión eléctrica entra ambos contactos, que puede ser leida con un microprocesador, como si fuera un pulsador, como vimos en entradas digitales en Arduino.
Anuncio:
Precio
Los sensores de vibración SW-18020P son dispositivos baratos. Podemos encontrar 10 sensores de vibración por 1€ en vendedores internacionales en Ebay o AliExpress.
Esquema eléctrico
El esquema eléctrico que necesitamos es el siguiente.
Esquema montaje
Mientras que el montaje en una protoboard sería el siguiente.
Ejemplo de código
A continuación tenemos un ejemplo de código para realizar la lectura del sensor. Leemos el estado del sensor mediante la entrada digital, usando la resistencia internar de Pull Up. Por otro lado, empleamos el valor shakeTime y la variable estado previo para controlar el cambio de estado, y así detectar la vibración.
const int sensorPin = 2; const int ledPin = 13; int tiltSensorPreviousValue = 0; int tiltSensorCurrentValue = 0; long lastTimeMoved = 0; int shakeTime = 50; void setup() { pinMode(sensorPin, INPUT); digitalWrite(sensorPin, HIGH); //activamos la resistencia interna PULL UP pinMode(ledPin, OUTPUT); } void loop() { tiltSensorCurrentValue = digitalRead(sensorPin); if (tiltSensorPreviousValue != tiltSensorCurrentValue) { lastTimeMoved = millis(); tiltSensorPreviousValue = tiltSensorCurrentValue; } if (millis() - lastTimeMoved < shakeTime) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Anuncio:
Hola, muchas gracias por tu artículo.
Cres que con este sensor, ubicado en el salpicadero de un coche, sería capaz de distinguir si el motor está en encendido o apagado ?
Muchas gracias de antemano,
Javi
Lo veo casi imposible
se puede hacer lo mismo pero con la raspberry pi?
Si, por supuesto 🙂
Buenas, podría detectar vibraciones pequeñas venidas del piso superior?. Gracias