Este es un proyecto en el cual usaremos el Arduino para leer un sensor de vibración SW-420 y encender un LED cuando hay vibraciones. Para este fin utilizaremos el módulo de vibración basado en el sensor SW-420
Este es otro de esos proyectos muy fáciles de implementar y de código muy sencillo.
Módulo sensor de vibración
Este módulo sensor de vibración consiste en un sensor SW-420, resistencias, capacitores, un potenciómetro, el integrado comparador LM393, LED de estado y LED en encendido. El SW-420 es un sensor que detecta las vibraciones a partir de un umbral que puedes fijar con el potenciómetro que incluye. El módulo puede detectar cualquier tipo de vibración por encima del umbral de vibración que tengamos configurado con el potenciómetro.
Es muy útil para una gran variedad de dispositivos que se deben activar/desactivar por las vibraciones, como por ejemplo la construcción de una alarma para tu moto o automóvil, alarma de terremoto, auto inteligente, etc.
Especificaciones:
- Voltaje de operación: 3.3 – 5V
- Consumo: 15mA
- Tipo de salida: Digital
Componentes
Basados en el diagrama lo primero que vamos a hacer es conectar el pin VCC del módulo a los 5V del Arduino, de igual forma conectamos el GND del módulo al GND del Arduino y el pin DO del sensor al pin 8 del Arduino. Luego conectamos la resistencia del 220Ω a la tierra del Arduino y al cátodo del LED, por último conectamos el ánodo del LED al pin 13 del Arduino.
Código
int pinSensor = 8; int pinLed = 13; void setup() { pinMode(pinSensor,INPUT); pinMode(pinLed,OUTPUT); } void loop() { if(digitalRead(pinSensor)) { digitalWrite(pinLed,HIGH); delay(1000); digitalWrite(pinLed,LOW); delay(1000); } else digitalWrite(pinLed,LOW); }
Comenzaremos a revisar el código, primero vamos a ver las declaraciones de las variables.
int pinSensor = 8; int pinLed = 13;
Declaramos 2 variables, la primera de tipo entero int pinSensor = 8
, la cual utilizaremos como referencia que al pin 8 del Arduino le conectaremos el pin digital de sensor, la siguiente variable que declaramos
int pinLed
= 13 es la que utilizaremos para definir al pin en el cual vamos a conectar el led al Arduino.
En la función setup:
pinMode(pinSensor,INPUT); pinMode(pinLed,OUTPUT);
Lo primero que hacemos es establecer que el pin del sensor es de entrada pinMode(pinSensor,INPUT)
, y luego establecemos que el pin del led es de salida pinMode(pinLed,OUTPUT)
.
Y en la función loop:
if(digitalRead(pinSensor)) { digitalWrite(pinLed,HIGH); delay(1000); digitalWrite(pinLed,LOW); delay(1000); } else digitalWrite(pinLed,LOW);
Normalmente con este tiempo de sensores creamos una variable en la cual capturamos el valor del sensor, pero podemos ahorrarnos ese paso al hacer la lectura del sensor directamente desde el «if» if(digitalRead(pinSensor))
donde preguntamos que si la lectura del sensor es 1 o verdadera, entonces haga digitalWrite(pinLed,HIGH)
con lo que energizamos el pin del LED es decir encendemos el LED, luego delay(1000)
donde hacemos una pausa de un segundo, luego apagamos el LED digitalWrite(pinLed,LOW)
, y hacemos una pausa de nuevo de 1 segundo delay(1000)
.
Por otro lado si la condición del if no se cumple el LED permanece apagado digitalWrite(pinLed,LOW)
y vuelve a comenzar el ciclo.
Resumen
En este proyecto nuestro Arduino estará conectado a un sensor de vibración que al detectar alguna vibración encenderá un LED por medio segundo y se apagará, si aun sigue el movimiento seguirá titilando y cuando cese el movimiento se apagará.
Buenas tardes. Es posible usar este sensor para medir las vibraciones naturales del suelo o estructuras. Cómo lo puedo adquirir. Qué sensibilidad tiene?
Gracias. Hugo coral celular 3128313716
Hola Hugo, este sensor de vibración no es el indicado para esta tarea que me comentas, por lo que entiendo quieres medir las vibraciones del suelo tal como lo haría un sismógrafo, no sabría a ciencia cierta que tipo de sensores serían los ideales para ese fin, pero si me confirmas puedo hacer la investigación de esos sensores.
Hola, gracias por compartir el proyecto, quiero hacer lo mismo para medir las vibraciones naturales de la tierra, un sismógrafo, necesitaria medir las vibraciones en X, Y y Z, en el plano eso es lo que lo diferencia.
¿Hay algún sensor que me pueda servir?
Y después pasar los datos a un programa que los interprete.
Es un proyecto para mis alumnos, quedaría muy agradecida por su respuesta.
Hola Carolina, el sensor de vibración como el SW-420 son sensores muy básicos, sólo detectan una vibración si existe pero no sirve para medir las magnitudes, para medir el movimiento en los ejes X, Y y Z te recomendaría utilizar un giroscopio con acelerómetro como podría ser el MPU6050 o solo un acelerómetro de 3 ejes como el ADXL335, con el que puedes medir movimientos e intensidad en estos 3 ejes. De momento no tengo un ejemplo del uso de este sensor ya que he estado muy ocupado en la oficina, pero pronto volveré a subir mas publicaciones.
Buenas noches. Le consulto si con varios sensores de vibración conectados a una sola placa Arduino podría obtener salida en sus correspondientes LED´s realizando las modificaciones en el código. La idea es tener como entrada por ejemplo a cuatro sensores de vibración y tener de salida a cuatro LED´s.
Gracias
Hola Iber, me disculpo por la tardanza en contestarte, la verdad no había visto el mensaje.
Claro que es posible que tengas 4 sensores de entrada y un LED reaccionando a cada uno de los sensores, solo es que añadas estos cambios al código. Si necesitas ayuda no dudes en consultarme.
hola este sensor se puede utilizar para un motor
Hola Rubén, si deseas utilizar proyecto para activar un motor, es posible, teniendo en cuenta que debes utilizar un puente H para manejar el motor, o un relé, ya que de lo contrario puedes quemar el pin del Arduino, debido a que no tienen mucha potencia para manejar algunos motores.
Hola, buenas tardes. Es posible graficar el comportamiento del sensor en tiempo real
Hola Israel, en programación siempre puedes tomar los datos y hacer con ellos lo que gustes, como por ejemplo el graficarlos, pero para esto debes crear tu propio sistema de gráficos, pero te recomiendo utilizar el serial plotter que trae el IDE de Arduino, solo debes ir al menú Herramientas -> Serial Plotter, en el IDE 1 de Arduino puedes utilizar el atajo Ctrl+Mayusculas+L, o en la versión 2 hay un ícono en la parte superior derecha del IDE oara graficar, ya los intervalos en los que quieres que se vayan graficando depende del delay que le des a tu código.
buenas tardes este sensor es adecuado para medir la vibración de las aspas de un aerogenerador de baja potencia
Hola José, si utilizamos el módulo es posible cambiar la sensibilidad del mismo. Me parece bastante probable sea capaz de detectar esta vibración.