Sensor de efecto Hall: todo lo que necesitas saber para tus proyectos con Arduino

sensor efecto Hall

Puede que estés buscando un dispositivo que te permita detectar campos magnéticos cercanos, o para usarlo como un interruptor sin contacto, para aplicaciones que necesiten protección al agua, etc. En ese caso, puedes usar los sensores de efecto Hall de los que te mostraré todo lo que necesitas saber para integrarlo con tus futuros proyectos con Arduino. De hecho, si los vas a usar junto con imanes de neodimio, las aplicaciones que puedes sacarles son muchas.

La conexión de este tipo de dispositivo es muy sencilla, como podrás comprobar. Además, son componentes electrónicos  muy baratos y que puedes encontrar fácilmente en muchas tiendas especializadas o por Internet. Si deseas saber algo más, puedes seguir leyendo…

El efecto Hall

efecto Hall diagrama

Su nombre proviene del primer descubridor, el físico estadounidense Edwin Herbert Hall. El efecto Hall es el fenómeno físico que ocurre cuando aparece un campo eléctrico por separación de las cargas eléctricas en el interior de un conductor por el que circula un campo magnético. Este campo eléctrico (campo Hall) tendrá componente perpendicular al movimiento de las cargas y a la componente perpendicular del campo magnético aplicado. De ese modo, entre otras cosas, se pueden detectar las presencias de campos magnéticos.

Dicho de otro modo, cuando por un conductor o semiconductor circula una corriente y existe un campo magnético cercano, se comprueba que aparece una fuerza magnética en los portadores de carga que los reagrupa dentro del material. Es decir, los portadores de carga se desviarán y se agruparan en un lado del conductor/semiconductor. Como puedes imaginar, esto causa una variación de potencial eléctrico en este conductor/semiconductor, produciendo ese campo eléctrico perpendicular al campo magnético.

¿Qué es un sensor de efecto Hall?

sensor efecto Hall

Por tanto, una vez sabes cómo actúa el efecto Hall, se puede hablar de los componentes o sensores de efecto Hall que son capaces de aprovechar este fenómeno para alguna aplicación práctica. Por ejemplo, con ellos se puede realizar mediciones de un campo magnético.

Estos elementos se usan ampliamente en muchos proyectos electrónicos y dispositivos de uso frecuente. Por ejemplo, en los vehículos los puedes encontrar en algunos sistemas de seguridad, para medir la posición del árbol de levas en el motor, para medir velocidades de fluidos, detectar metales, y un largo etc.

Lo bueno de este tipo de sensores de efecto Hall, a diferencia e otros, es que no necesitan contacto. Es decir, pueden hacer dichas tareas de forma distante, además de ser totalmente inmunes al ruido electrónico, polvo, etc, por lo que son bastante duraderos y fiables en sus mediciones. No obstante, su alcance es limitado, ya que necesitan estar a una cierta distancia del campo generado para que lo puedan captar.

Tipos

Dentro de los sensores de efecto Hall se pueden encontrar dos tipos básicos:

  • Analógicos: son dispositivos muy básicos, con un pin o salida que entregará una señal proporcional a la intensidad del campo magnético que estén captando. Es decir, son similares al sensor de temperatura, al de tensión, y a otros sensores que hemos detallado en este mismo blog.
  • Digitales: en el caso de los digitales, son mucho más básicos que los analógicos. Ya que no entregan una salida proporcional al campo, sino que dan un valor de tensión alto si existe un campo magnético y bajo si no existe campo magnético. Es decir, no pueden ser usados para medir campos magnéticos como los analógicos, simplemente para detectar su presencia. Además, estos digitales se pueden dividir en dos subcategorías adicionales:
    • Latch: los de este tipo se activan al acercar un y mantienen su valor a la salida hasta que se acerca el polo contrario.
    • Switch: en estos otros, no se mantendrá la salida, se desactivan al retirar el polo. No es necesario acercar el polo contrario para que la salida cambie…

Te aconsejo usar imanes de neodimio, son los mejores para que estos sensores de efecto Hall funcionen bien.

Si buscas un sensor de tipo analógico, una buena opción puede ser el sensor Hall 49E. Con él podrás detectar la presencia de campos magnéticos, y también medirlos. Por ejemplo, puedes medir campos magnéticos cercanos, fabricar un tacómetro mediante un imán para medir las revoluciones por minuto de un eje o velocidad, detectar cuando se abre o cierra una puerta con un imán, etc. Este sensor lo puedes encontrar en varias tiendas por unos cuantos céntimos, o por algo más si lo quieres montado en un PCB con todo lo necesario en un módulo listo para usar con Arduino:

Por otro lado, si lo que buscas es uno de tipo digital, entonces puedes comprar el sensor Hall A3144, que además es de tipo switch, es decir, no hará falta el cambio de polo. Así podrás detectar la presencia de un objeto metálico, o si existe o no un campo magnético, e incluso también crear un contador de RPM como el anterior caso. Este también es sencillo de encontrar, y resulta tan económico o más que el anterior, tanto suelto como en módulo:

En el caso de analógico, debes consultar el datasheet del modelo que hayas adquirido. Por ejemplo, en el del 49E encontrarás una gráfica de cómo se puede medir el campo magnético y ella te ayudará a crear la fórmula que luego tienes que implementar en el código fuente de Arduino para que calcule la densidad del flujo magnético detectado (mT). En el caso del 49E sería: B=53.33V-133.3, debido al rango magnético y al voltaje que puede entregar a su salida…

Lo que sí es común para el digital y el analógico es la cantidad de pines que tiene (pinout), en ambos casos es 3. Si pones el sensor Hall con su cara mirándote, es decir, con la cara donde tiene las inscripciones hacia ti, entonces el pin de la izquierda será el 1, el central el 2 y el de tu derecha el 3:

  • 1: tanto en el 49E y en el A3144 es el pin de alimentación a 5V.
  • 2: el central va conectado en ambos casos a GND o tierra.
  • 3: en ambos casos es la salida, es decir, la que mide o detecta el campo magnético generando a través de ella una tensión. Recuerda que en el digital tomará solo dos valores, alto o bajo, mientras que en el analógico puedes aplicar la fórmula anterior para saber cómo es dicho campo detectado…

Integración del sensor efecto Hall con Arduino

diagrama de conexión del sensor efecto Hall con Arduino

Una vez visto cómo actúa y lo que necesitas saber de este sensor de efecto Hall, con el pinout descrito, deberías ya saber cómo se conecta a tu placa Arduino. En este caso, se conectará así:

  • Ya sabes que el pin 1 lo debes conectar a la salida de voltaje 5V de Arduino para que pueda alimentarlo, tanto en el caso del digital como el analógico.
  • El pin central o 2, lo tienes que conectar a GND o tierra de tu placa Arduino.
  • En el caso del pin 3, varia en función de si es para uno analógico o digital:
    • Analógico: conecta directamente el pin 3 del sensor Hall a una de las entradas analógicas de tu placa Arduino.
    • Digital: debes puentear el pin 1 y el 3 con una resistencia pull-up, de por ejemplo 10K para que el circuito funcione correctamente con el A3144. Otros modelos podrían necesitar valores de resistencia diferentes… Una vez tienes en cuenta eso, puedes conectar el pin 3 a una entrada digital de tu placa Arduino.

No importa el número de la entrada de la placa a la que lo hayas conectado, solo recuerda el número para luego crear de forma correcta el código fuente para que funcione tu proyecto. En este caso, también habrá diferencias entre si has optado por el analógico o el digital:

  • El código simple para el analógico es:

const int pinHall = A0;
 
void setup() {
  pinMode(pinHall, INPUT);
  Serial.begin(9600);
}
 
void loop() {
 
  //Filtro para ruido con 10 medidas
  long measure = 0;
  for(int i = 0; i < 10; i++){
      int value = 
      measure += analogRead(pinHall);
  }
  measure /= 10;
  
  //Calcular el voltaje en mV que da la salida del sensor Hall
  float outputV = measure * 5000.0 / 1023;
  Serial.print("Voltaje de salida = ");
  Serial.print(outputV);
  Serial.print(" mV   ");
  
  //Interpolación a densidad del campo magnético (fórmula)
  float magneticFlux =  outputV * 53.33 - 133.3;
  Serial.print("La densidad del flujo magnético del campo es = ");
  Serial.print(magneticFlux);
  Serial.print(" mT");
  
  delay(2000);
}

  • El código simple para el digital sería:
const int HALLPin = 2;
const int LEDPin = 13;
//El pin 13 en el esquema de nuestro ejemplo no pinta nada, pero se podría agregar un LED a dicho pin para que se encienda si detecta campo magnetico
 
void setup() {
  pinMode(LEDPin, OUTPUT);
  pinMode(HALLPin, INPUT);
}
 
void loop() {
  if(digitalRead(HALLPin)==HIGH)
  {
    digitalWrite(LEDPin, HIGH);   
  }
  else
  {
    digitalWrite(LEDPin, LOW);
  }
}

Espero que te haya servido de ayuda esta guía…


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.