Documentado por Marcos Martín Tascón
El KY-017 Sensor Interruptor Mercurio es un módulo que te permitirá detectar la inclinación de un objeto para que puedas generar una acción de control, es una buena alternativa de bajo costo para remplazar un acelerómetro de 6 ejes.
El KY-017 es el precursor de los ahora llamados acelerómetros utilizados en los dispositivos móviles como celulares inteligentes y tabletas. Cuando se ajusta o situada estratégicamente, puede ser muy sensible. Son útiles para nivelar sistemas.
Descripción
Este módulo contiene una cantidad de mercurio en una ampolla. Cuando el módulo gira un cierto ángulo, el mercurio cierra un circuito enviando una señal digital por su pin S. Sólo hay que conectar la alimentación (5V y GND) y detectar el cierre del circuito en el pin S.
¿Cómo funciona el módulo KY-031?
Este modulo consta de una resistencia de 680Ω y un LED que se enciende y se apaga cuando se detecta una inclinación, internamente el modulo cuenta con mercurio que cierra el circuito cuando se inclina el módulo. La clave para usar con éxito este interruptor está en la comprensión de los dos estados de funcionamiento:
Utilidades del sensor
Estos sensores reconocen las irregularidades del terreno durante el transporte e incluso detectan las inclinaciones causadas por cargas distribuidas de forma desigual. Los cilindros hidráulicos se accionan para estabilizar el vehículo y su carga.
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
Descarga el código AQUÍ
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:
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:
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 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.
Experiencia personal
En este caso el sensor al utilizar mercurio es más preciso y es improbable que tenga fallos, solo tiene dos estados por lo que no puede medir el grado de inclinación pero de todas formas sigue siendo muy útil.
Bibliografía
https://acortes.co/proyecto-19-sensor-de-inclinacion-de-mercurio-ky-017/
https://www.ifm.com/es/es/shared/productos/neigungssensoren/aplicaciones-y-casos-practicos