Tutorial – Usar el Sensor KY-002 y Arduino + Programación
Un Sensor KY-002 y Arduino son una de las mejores combinaciones a la hora de querer elaborar un proyecto el cual tenga por objetivo la medición de las vibraciones que puedan existir en un entorno.
A primera vista medir vibraciones se cree que es únicamente para la detección o prevención de sismos que puedan afectar a un lugar determinado, sin embargo este no es el único uso que se le pueda dar, por ejemplo algunos tanques destinados para retener fluidos cuentas con sensores sensibles a las vibraciones, un tema de Tesis podria ser como prevenir o cual es el porcentaje de error que estos tanques tienen debido al nivel del incidencias causadas por el peso de maquinarias pesadas.
Otro uso que podría darse le seria la adquisición de las vibraciones que se tiene en cierto sistema antes de que este falle por completo, ya que como sabemos la vibración es el peor enemigo para sistemas electromecánicos que no cuentan con un amortiguamiento optimo.
La imaginación en el limite.
Programación para usar el Sensor KY-031 y Arduino
int shockPin = 10; // Use Pin 10 as our Input int shockVal = HIGH; // This is where we record our shock measurement boolean bAlarm = false; unsigned long beginShockTime; // Record the time that we measured a shock unsigned long endShockTime, shockDuration; int shockAlarmTime = 500; // Number of milli seconds to keep the shock alarm high int beginS, endS, durationS; void setup () { Serial.begin(9600); pinMode (shockPin, INPUT) ; // input from the KY-002 } void loop () { shockVal = digitalRead (shockPin) ; // read the value from our sensor if (shockVal == LOW) // If we're in an alarm state { beginShockTime = millis(); // record the time of the shock // The following is so you don't scroll on the output screen if (!bAlarm){ Serial.print("Shock detected after: "); beginS = beginShockTime/1000; Serial.print(beginS); Serial.println(" seconds the program started"); bAlarm = true; } } else { if( (millis()-beginShockTime) > shockAlarmTime && bAlarm){ //if complete time - time when shock was detected is bigger than //500 mille seconds (shockAlarmtime) AND bAlarm = True Serial.print(" Shock stopped after "); endShockTime = millis(); endS = endShockTime/1000; Serial.print(endS); Serial.println(" seconds"); durationS = endS - beginS; Serial.print(" The shock duration was "); Serial.print(durationS); Serial.println(" seconds\n"); bAlarm = false; } } }