En este tutorial explicaremos el funcionamiento de los sensores KY-021, KY-025, KY-024 y KY-035, que basan su principio de operación en la detección de campos magnéticos.
Realizaremos pruebas de funcionamiento a cada uno y finalizaremos usando el Módulo KY-034, el cual es un LED Flash de 7 colores que se activará en presencia de un campo magnético.
Introducción
A continuación explicaremos cada uno de los dispositivos:
Teniendo en cuenta las características de cada uno de los módulos, probaremos su funcionamiento en la tarjeta de desarrollo UNO R3. Para esto requeriremos:
- Módulo KY-021 Sensor Interruptor Magnético
- Interruptor por Campo Magnético Modulo KY-025
- Sensor Magnético Analógico Efecto Hall Módulo KY-035
- Modulo KY-034 Sensor 7 Color Flash Led
- Sensor de Campo Magnético KY-024
- Tarjeta de Desarrollo UNO R3 Con Cable
- Cables Dupont
Diagrama de Conexión entre UNO R3 y KY-021
Primero revisaremos la lectura de datos de forma digital del Sensor Interruptor Magnético, para lo cual realizaremos la siguiente conexión:
Código en Arduino IDE e Interruptor Magnético
En el siguiente programa se observa como usaremos el LED de la tarjeta de desarrollo UNO R3 correspondiente al pin 13, el cual, se encenderá en presencia de un imán.
int Led = 13; // Led del pin13 de la tarjeta UNO R3 int ky21 = 2; // Pin2 de Digital para el sensor magnético KY-021 int interruptor; // variable INTERRUPTOR para guardar el dato del KY-021 void setup() { Serial.begin(9600); //Inicialización de puerto serial a 9600 baudios pinMode (Led, OUTPUT); //Declaración de pin13 como pin de Salida pinMode (ky21, INPUT); //Declaración del KY-021 como pin de Entrada } void loop() { interruptor = digitalRead (ky21); // El valor que sea leído de la interfaz digital de ky-021 será asignado a la variable INTERRUPTOR Serial.println(interruptor); // En el Monitor Serial se imprimirá el valor leído por ky-021 //Se comprobó que en estado de reposo el sensor nos arroja un 1 lógico por lo tanto... if (interruptor == HIGH) { // Cuando este en alto/1 apagaremos el led digitalWrite(Led, LOW); } else{ //De lo contrario cuando detecte algún imán, dará una señal en bajo por lo cual digitalWrite(Led, HIGH); //Encenderá el led Serial.println("Campo magnético detectado"); } }
En el siguiente video se puede observar el correcto funcionamiento del interruptor, puedes conectar directamente un LED en el pin 13 de la tarjeta de desarrollo para hacer mas notoria la salida. También se pueden observar los datos desde el Monitor Serial.
Notese que en estado de reposo el sensor nos arroja estado en 1/ALTO/HIGH y cuando detecta el campo del imán un estado en 0/BAJO/LOW.
Diagrama de Conexión entre UNO R3 y KY-025
Ahora procederemos a realizar la conexión entre nuestra tarjeta de desarrollo y el Interruptor por Campo Magnético, este a comparación del anterior tiene 4 pines, ya que cumple con darnos información de datos analógicos y digitales.
Código para el Interruptor Magnético KY-025
Para comprender mejor este módulo el siguiente programa solo realizaremos lectura de los datos digitales y analógicos cada medio segundo.
int Dky25 = 3; // KY-025 para la interfaz digital int Aky25 = A0; // KY-025 para la interfaz analógica int D; //Variable D, para almacenar valores digitales de KY-025 void setup() { pinMode(Led, OUTPUT); //Declaración de Led,pin12 como pin de Salida pinMode(Dky25, INPUT); //Declaración del KY-021 como pin de Entrada Digital Serial.begin(9600); //Inicialización de puerto serial a 9600 baudios } void loop() { Serial.print("Digital"); //Mensaje en el Monitor Serial, para identificar... Serial.print("-"); //...los valores de lectura por puerto digital o... Serial.println("Analógico"); //... analógico Serial.print(digitalRead(Dky25)); //Impresión de valores provenientes del pin digital Serial.print("-"); Serial.println(analogRead(Aky25)); // impresión de valores provenientes del pin analógico delay(500); //este proceso dura medio segundo }
Diagrama de Conexión Tarjeta UNO R3 y KY-035
Finalmente revisaremos como es el funcionamiento del Sensor Magnético Analógico, el cual, a diferencia de los otros dos modulos su funcionamiento se basa en el sensor AH49E.
Código para el Interruptor Magnético Analógico en IDE Arduino
Ahora bien, realizaremos de la misma manera el programa para entender el funcionamiento del sensor y visualizaremos la detección de un imán por medio del Monitor Serial y el Led en el pin 13, como anteriormente ya realizamos.
int senal = A0 ; //Pin Analógico del Arduino A0 para el KY035 int valor; //Variable en donde estará guardando el valor leído por el sensor int Led = 13; // Pin13 para el Led void setup() { Serial.begin(9600); //Inicialización de puerto serial a 9600 baudios pinMode (senal, INPUT); //Declaración del KY-021 como pin de Entrada Analógica pinMode (Led, OUTPUT); //Declaración de Led,pin12 como pin de Salida } void loop() { valor = analogRead(senal); //Se guarda la lectura de KY035 en la variable valor Serial.println(valor); //Imprima los valores de guardados, esto nos ayudara a //saber el comportamiento del sensor y que valores arroja detecte o no el imán delay(500); //este lectura durara medio segundo if (valor >= 518 && 528 >= valor) { //sabiendo que en estos rangos no detecta presencia magnética Serial.println("NO hay Imán"); // se realizara la condición e imprimirá que no hay detección de imán digitalWrite(Led,LOW); //No hay detección de imán } else { //Cuando los valores analógicos se encuentren fuera .. Serial.println("Hay Imán"); //...de los rangos propuestos entonces.. digitalWrite(Led,HIGH); //...Detección de imán y encenderá } }
A diferencia de los otros dos sensores , tuvimos que delimitar un rango por medio de la función IF, en los valores analógicos donde NO se detecta el campo magnético del imán; estos valores pueden variar por sensor. A continuación un video en donde muestra lo antes explicado:
Diagrama de conexión para el Sensor de Campo Magnético
Así como el sensor KY-025, este sensor tiene 4 pines para poder también realizar muestreo de datos analógico dependiendo el campo magnético detectado. Añadiremos un led en el pin 12 para que sea mas visible el cambio del interruptor.
Código para visualizar funcionamiento del KY-024
En el siguiente código probaremos la lectura analógica y digital de nuestro sensor, notaremos que el Monitor Plotter nos arrojara los valores que la entrada analógica detectará y por el lado del pin digital nos ayudará a tener una salida (0,1) para que el led pueda encender.
int led=12; int kyD=3; void setup(){ Serial.begin(9600); pinMode (led, OUTPUT) ; pinMode (kyD, INPUT); } void loop(){ int iman=analogRead(A0); Serial.println(iman); delay(1); int val=digitalRead(kyD); if (val==HIGH){ digitalWrite(led,HIGH); } else{ digitalWrite(led,LOW); } } void setup() { Serial.begin(9600); pinMode (Led, OUTPUT); // Definimos el LED como salida pinMode (pin_s, INPUT); // Definimos el pin del sensor como entrada } void loop() { val = digitalRead(pin_s) ; // Lectura del pin digital conectado al sensor Serial.println(val); // Se imprime el valor val delay(1000); if (val == 1) // Cuando el sensor detecta el estado en Alto se prende el led de lo contrario se apaga { digitalWrite(Led, HIGH); } else { digitalWrite(Led, LOW); } }
Se puede observar en el siguiente video que los valores en donde registra la detección del imán es por debajo de 530 aproximadamente y se puede observar las variaciones que tiene en presencia del campo magnético.
Ahora que ya sabemos el funcionamiento de cada uno de los módulos KY; realizaremos una una prueba en donde incluiremos al KY-034, el cual es un Led Flash que se activara cuando el KY-025 detecte un campo magnético.
Prueba con Led Flash 7 Colores
Realizaremos la siguiente conexión entre los módulos KY, el Led-KY034 lo conectaremos a 3.3V aunque también funciona a 5V y usaremos el pin12 para que reciba la señal de activación.
Código para los módulos KY-025 y KY-034
Usaremos parte del código del interruptor por campo magnético que anteriormente programamos e incluiremos una variable “D” que es la que activara a nuestro Led Flash.
int Led=12; // Pin12 para el Led int Dky25 = 3; // KY-025 para la interfaz digital int Aky25 = A0; // KY-025 para la interfaz analógica int D; //Variable D, para almacenar valores digitales de KY-025 void setup() { pinMode(Led, OUTPUT); //Declaración de Led,pin12 como pin de Salida pinMode(Dky25, INPUT); //Declaración del KY-021 como pin de Entrada Digital Serial.begin(9600); //Inicialización de puerto serial a 9600 baudios } void loop() { Serial.print("Digital"); //Mensaje en el Monitor Serial, para identificar... Serial.print("-"); //...los valores de lectura por puerto digital o... Serial.println("Analógico"); //... analógico Serial.print(digitalRead(Dky25)); //Impresión de valores provenientes del pin digital Serial.print("-"); Serial.println(analogRead(Aky25)); // impresión de valores provenientes del pin analógico D=digitalRead(Dky25); //guardaremos el valor del pin Digital en la variable D if (D==0){ //Si D es igual a 0 digitalWrite(Led,LOW); //No hay detección de imán } else { //de lo contrario D=1 digitalWrite(Led,HIGH); //Detección de imán y encenderá el led delay(8000); } }
El código incluye un delay de 8 segundos, esto para poder observar como es el funcionamiento del Led.
Adicional a estos sensores KY, te recomendamos el tutorial Proyecto con Sensor Magnético KY-003 , que también es otro tipo de interruptor magnético y funcionalidad se basa en el principio de Efecto Hall.