Detectar campos magnéticos con Arduino y sensor Hall A3144


arduino-hall

¿Qué es un sensor Hall?

Un sensor Hall es un dispositivo que nos permite realizar mediciones de campo magnético.

Los sensores Hall son ampliamente utilizados. Por ejemplo, en la industria del automóvil se usan para funciones tan dispares como para el accionamiento de los cinturones de seguridad, o la medición de la posición del árbol de levas. También se usan para medir velocidades de fluidos, detección de metales, factores de inducción, entre otras muchas aplicaciones.

Una ventaja importante de los sensores Hall es que realizan la medición a distancia, sin necesidad de contacto físico. Aunque su alcance es limitado (típicamente pocos centímetros) esto supone que apenas presentan desgaste mecánico. Además son inmunes a ruidos y polvo. Esto los convierte en sensores fiables y duraderos.

En general, encontramos dos tipos de sensores Hall:

Anuncio:

  • Analógicos. Generan una salida proporcional a la intensidad del campo magnético. Empleados para medir la intensidad de un campo magnético
  • Digitales. Proporcionan un valor Alto en presencia de campo magnético, y bajo en ausencia del mismo. Por tanto, son empleados para detectar la existencia de campos magnéticos. A su vez se dividen en,
    • Switch, se activan al acercar el polo, y se desactivan al retirar el polo
    • Latch, se activan al acercar un polo, y mantienen su valor hasta que se acerca un polo contrario

En esta entrada emplearemos un sensor Hall A3144, de tipo digital Switch. Podemos emplear este sensor para detectar la presencia de un objeto, al que previamente habremos colocado un pequeño imán, o para fabricar tacómetros (contadores de revoluciones) simplemente acoplando un pequeño imán de neodimio al eje.

Precio

Los sensores Hall A3144 son realmente baratos. Podemos encontrar 10 dispositivos A3144 por 0.6€ en vendedores internacionales en eBay o AliExpress.

hall-a3144

¿Cómo funciona un sensor Hall?

Su principio de funcionamiento es el efecto Hall, denominado así por su descubridor Edwin Herbery Hall, en 1849.

Al hacer circular una corriente eléctrica a lo largo de un semiconductor en presencia de un campo magnético, los electrones son desviados por efecto del campo magnético, dando lugar a una tensión perpendicular a la corriente y al campo magnético.

efecto-hall

Midiendo esta tensión originada por el efecto Hall podemos conseguir construir sensores y medidores de campos magnéticos.


Esquema eléctrico

El esquema eléctrico que necesitamos es el siguiente.

arduino-hall-esquema

Por lo que el esquema de conexión con Arduino quedaría así.

arduino-hall-esquema-electrico

El esquema y valores de resistencias mostrador corresponden con el sensor A3144. Otros sensores hall requieren otros esquemas de montaje. Consultar su datasheet correspondiente si vuestro componente es distinto.

Montaje

Mientras que el montaje en una protoboard sería el siguiente.

arduino-hall-montaje

Ejemplo de código

El código necesario para realizar la lectura es simple. Simplemente leemos el estado el estado del Pin del sensor Hall, tal y como vimos en la entrada entradas digitales en Arduino.

const int HALLPin = 5;
const int LEDPin = 13;

void setup() {
  pinMode(LEDPin, OUTPUT);
  pinMode(HALLPin, INPUT);
}

void loop() {
  if(digitalRead(HALLPin)==HIGH)
  {
    digitalWrite(LEDPin, HIGH);   
  }
  else
  {
    digitalWrite(LEDPin, LOW);
  }
}
Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github.



5 3 votes
Article Rating

Anuncio:

Previous Diferencias entre tipos de calderas domésticas
Next Medir distancia con Arduino y sensor de ultrasonidos HC-SR04
8 Comments
oldest
newest
Inline Feedbacks
View all comments
luisllamas
5 years ago

Hola. El Pin 13 está asociado en muchas placas con el LED integrado en la placa. Deberías empezar por las entradas de nivel básico, como “Nuestro primer programa en Arduino”, donde explicamos estas cosas https://www.luisllamas.es/nuestro-primer-programa-en-arduino/

luisllamas
5 years ago

El A3144 tiene una configuración de salida de colector abierto. La resistencia de 10K es una resistencia de Pull-Up sencilla “de toda la vida” 😀
Mira la implementación interna del A3144, así verás más fácilmente el papel de cada pin.
comment image
(De hecho, si pones la resistencia entre Output y GND, la salida siempre sería 0V)

luisllamas
5 years ago

Dependerá de la potencia del campo magnético 🙂

Loki
5 years ago

Con este sensor se puede detectar el polo del iman ?

Xavi
5 years ago

Excelente ejemplo! Muchas Gracias. Estoy deseando intentarlo.
He encontrado un sensor con placa que parece que incorpora la resistencia, tienes alguna experiencia con algún componente del estilo?

ManuAT
4 years ago

Tal y como está planteado el ejemplo, el led se apagaría al detectar el campo magnético ya que el A3144 tiene una configuración de colector abierto. ¿No sería más intuitivo hacerlo al revés? Puede llegar a confundir al ver la resistencia de pull-up y el código.

Gracias por el artículo.

Juani
4 years ago

Buenos días, alguien podría explicarme porque se debe colocar la resistencia entre los 5v y el pin digital? Desde ya muchas gracias.

Cesar
3 years ago

Hola, seria posible conectar varios sensores Hall A3144 via bus con una libreria tipo onewire