En este tutorial trabajaremos con algunos sensores que usan el principio de inclinación para generar una señal de salida , los cuales son: KY-027, KY-017 y KY-020. El KY-027 Y 017 cuentan con un interruptor por burbuja de mercurio y el KY-020 censa por medio de un balin de acero.
Observaremos el funcionamiento de cada uno de los módulos y concluiremos incluyendo un zumbador activo que nos ayudara a identificar cuando el sensor este inclinado.
Para ello requeriremos conocer el funcionamiento básico de cada dispositivo.
Características de los módulos de inclinación.
A diferencia del KY-017 en donde el Led tiene una configuración por default, el sensor KY-027 se puede configurar la relación del Led-Interruptor y decidir por programación si enciende o apaga cuando el mercurio cierre/abra el circuito. Contemplando estas características, pasaremos a desarrollar nuestro proyecto con el siguiente material:
- KY-020 Sensor de Inclinación
- KY-012 Zumbador Activo
- KY-027 Sensor Magic Light Cup
- Tarjeta de Desarrollo Arduino Uno Rev3
- Sensor Interruptor Mercurio KY-017
- Cables Dupont
Diagrama de Conexión para KY-027
Realizaremos la siguiente conexión para visualizar el funcionamiento del Sensor Magic Light Cup.
Código en Arduino IDE y KY-027
Con el siguiente programa realizaremos la lectura del sensor y cuando detecte inclinacion,el led se encenderá.
int ky27L = 5; // Definimos el LED del sensor int ky27 = 7; // Definimos el pin del sensor int inclina; // Definimos un valor a la variable void setup() { Serial.begin(9600); //inicia el Monitor Serial a 9600 bauds pinMode(ky27L, OUTPUT); // Definimos el pin del LED del sensor como Salida pinMode(ky27, INPUT); // Definimos el pin del sensor como entrada } void loop() { inclina = digitalRead(ky27); // Lectura del pin digital conectado al sensor Serial.println(inclina); // Se imprime el valor guardado en "inclina" delay(1000); //Duración del proceso 1 segundo if (inclina == 1) // Cuando el Mercurio abre el circuito nuestro sistema { digitalWrite(ky27L, HIGH); //detectara que hubo inclinación y prendera el led de lo contrario } else //De lo contrato será indicaron de que el sistema esta estable { digitalWrite(ky27L, LOW); //no encenderá el led } }
En el Monitor Serial, se visualizara el valor dependiendo de la posición del mercurio, las cuales son:
Usaremos un código similar para probar el módulo KY-017, solo variaremos un poco la conexión y programación en IDE Arduino.
Diagrama entre UNO R3 y KY-017
El Sensor Interruptor de Mercurio KY-017 también incluye un Led pero a diferencia de su análogo KY-027 no requiere un pin de salida para ser activado.
Código en Arduino IDE y KY-017
Con el siguiente programa podremos visualizar como es el funcionamiento del sensor de inclinación.
int ky17 = 7; // Definimos el pin del sensor int inclina; // Definimos un valor a la variable void setup() { Serial.begin(9600); //inicia el Monitor Serial a 9600 bauds pinMode(ky17, INPUT); // Definimos el pin del sensor como entrada } void loop() { inclina = digitalRead(ky17); // Lectura del pin digital conectado al sensor Serial.println(inclina); // Se imprime el valor guardado en "inclina" delay(1000); //Duración del proceso 1 segundo }
A diferencia del ejemplo anterior el Led se encenderá en estado de reposo.
Para finalizar el tutorial, probaremos el modulo de inclinación KY-20, que a diferencia de los dos primeros, el interruptor se basa en un pequeño balin de acero.
Diagrama entre UNO R3 y Sensor de Inclinación
Ya que el módulo KY-020 no incluye una alerta visual (Led)se incluirá un Buzzer Activo KY-012, el cual emite un tono cuando detecte una señal en ALTO/HIGH. A continuación el diagrama.
Código para el KY-020 y KY-012
A diferencia de los códigos anteriores declararemos una variable extra para poder controlar el buzzer activo ky-012, el cual alertará cuando el sensor sea inclinado.
#define buzz 9 // Definimos el pin del Buzzer Activo #define ky20 7 // Definimos el pin del sensor int inclina; // Definimos un valor a la variable void setup() { Serial.begin(9600); //inicia el Monitor Serial a 9600 bauds pinMode(buzz,OUTPUT); // Definimos el Buzzer como Dispositivo de Salida pinMode(ky20, INPUT); // Definimos el pin del sensor como entrada } void loop() { inclina = digitalRead(ky20); // Lectura del pin digital conectado al sensor Serial.println(inclina); // Se imprime el valor guardado en "inclina" delay(1000); //Duración del proceso 1 segundo if (inclina == 1) // Cuando el sensor detecta el estado en Alto se prende el led de lo contrario se apaga { digitalWrite(buzz, HIGH); } else { digitalWrite(buzz, LOW); } }
Si requieres otro ejemplo en donde la activación de una alerta sea mediante buzzer te recomendamos revisar los tutoriales: