Icono del sitio AranaCorp

Uso de un sensor de efecto Hall con Arduino

El sensor magnético lineal de efecto Hall KY-024 reacciona en presencia de un campo magnético. Está equipado con un potenciómetro para ajustar la sensibilidad del sensor y proporciona dos salidas analógicas y digitales.

Material

Principio de funcionamiento

El módulo KY-024 consta de un sensor lineal de efecto Hall SS49E y un comparador diferencial doble LM393, un potenciómetro BOCHEN 3296). El comparador acoplado al potenciómetro permite comparar el valor del sensor con un valor umbral para utilizar el sensor como un sensor de todo o nada. Hay dos leds en el módulo. El led1 indica que el sensor recibe tensión y el led2 indica que se detecta un campo magnético.

Esquema

El sensor Hall tiene una salida analógica y otra digital. La salida analógica devuelve una imagen de la medición y la salida digital devuelve un estado alto o bajo en función del umbral dado por el potenciómetro. Puede utilizar uno u otro dependiendo de su aplicación. El módulo puede ser alimentado por la salida de 5V del microcontrolador.

Código

Para probar el sensor, leeremos la salida digital y mostraremos la salida analógica. Para ello utilizamos las funciones analogRead y digitalRead.

//initiation des pins
int ledPin = 13; //pin pour la LED
int digitalPin = 2; //pin pour le capteur
int analogPin = A0; //pin pour le capteur
int digitalVal;
int analogVal;


void setup()
{
  Serial.begin(9600); // vitesse de transmission
  pinMode(ledPin, OUTPUT); //la pin est en sortie
  pinMode(digitalPin, INPUT); //la pin est en entrée
}

void loop()
{
  digitalVal = digitalRead(digitalPin);
  if (digitalVal == HIGH) //condition "si" : la valeur numérique est au niveau haut
  {
    digitalWrite(ledPin, HIGH); //alors la led s'allume
  }
  else
  {
    digitalWrite(ledPin, LOW); // sinon la led s'éteint ou reste éteinte
  }
  analogVal = analogRead(analogPin);
  Serial.println(analogVal); //afficher la valeur analogique
  delay(100); //délai 100ms
}

Para pasar el valor analógico a un valor físico, puede utilizar la función map()

//transforme la valeur de 0 à 1023 vers 0 à 5V
int volt=map(analogVal, 0, 1023, 0, 5);

//transforme la valeur lue en Gauss
int gss = map(volt, 1, 4, -1000, 1000);

Resultado

Si acercas y alejas un imán del sensor, deberías ver cómo se enciende y apaga el LED y cómo cambia el valor del sensor.

Aplicaciones

Fuentes

Salir de la versión móvil