Home Navigationspfeil Arduino Navigationspfeil Hall-Effekt-Sensoren am Arduino

Leitfaden zur Verwendung eines Hall-Effekt-Sensors mit dem Arduino

Einleitung

Vor einiger Zeit entdeckte ich bei einem Elektronik Händler Hall-Effekt-Sensoren zu einem unschlagbaren Preis. Also bestellte ich einige davon, bei 1,95€ für 10 Stk. kann man ja praktisch nichts verkehrt machen.

Während ich auf das Paket wartete machte ich mir gedanken wozu ich diese Sensoren denn nun verwenden könnte. Mir fielen auf Anhieb die folgenden Anwendungen für so einen Sensor ein, erkennen ob eine Tür- oder ein Fenster geschlossen ist, eine Drehzahlmessung oder einen Tachometer.

Der Sensor

Bei dem bestellten Hall-Effekt-Sensor HAL510UA-E-1-A-2-00 der Firma Micronas handelt es sich um einen unipolaren Sensor, das eigenartige an diesem Sensor ist, er taucht in keinem Datenblatt von Micronas auf. Der einzige Hinweis der sich finden lies, weisst darauf hin das die Typen mit den Temperaturbereichen "C" und "E" abgekündigt sind und das sind genau die Typen die der Händler anbietet.
Aus diesem Grund kann ich für die hier wieder gegebenen Angaben auch keine Gewähr übernehmen.

  1. Spezifikation der magnetischen Parameter bei TJ 25°C bis 100°C, VDD=3,8 V bis 24 V.
    Die typischen Werte gelten für VDD=12 V.
    Arbeitet mit statischen- und dynamischen Magnetfeldern bis 10 KHz.

    Gruppe 1: Sondertyp

    TJ (°C) BOn (mT) BOff (mT) Hyst (mT)
    min typ max min typ max min typ max
    -40 15,2 19,2 22 14,2 17 21,2 0,4 2,1 3
    25 16 18 20 15 17 19 0,4 1 3
    100 15 17 19 14 16 18 0,3 1 3

    Gruppe 2: Standardtyp

    TJ (°C) BOn (mT) BOff (mT) Hyst (mT)
    min typ max min typ max min typ max
    -40 15,2 19,2 22 14,2 17 21,2 0,4 2,1 3
    25 15 18 21 14 17 20 0,4 1 3
    100 14 17 20 13 16 19 0,3 1 3

    Bei den oben spezifizierten Parametern handelt es sich um Messgrenzen.

Wie funktioniert das nun?

Der Hall-Effekt-Sensor arbeitet nach dem Prinzip des Hall-Effekts, der nach dem Physiker Edwin Hall benannt wurde und seine Entdeckung 1879 veröffentlichte. Der Effekt besagt, dass immer dann, wenn ein stromdurchflossener Leiter sich in einem Magnetfeld befindet, eine elektrische Spannung induziert wird. Diese Spannung fällt dabei senkrecht zur Stromflussrichtung am Leiter ab. Durch diese Spannungsänderung kann nun festgestellt werden ob sich der Sensor in der Nähe eines Magneten befindet oder nicht. Mit Hilfe des Arduino oder eines anderen Mikrocontroller kann diese Spannungsänderung ausgewertet werden, beim Arduino bietet sich dafür einer der Interrupt-Pins an. Die grundlegende Funktionsweise eines an den Arduino angeschlossenen Hall-Effekt-Sensors ist in dem folgenden Blockbild dargestellt.

Arbeitsweise des Hall-Effekt-Sensor am Arduino

Zusammenfassend kann man sagen, ein Hall-Effekt-Sensor ist ein Bauteil, das auf Änderungen im Magnetfeld reagiert. Es gibt eine Reihe verschiedener Typen von Hall-Effekt-Sensoren einige davon eignen sich für bestimmte Anwendungen besser als andere. Für Anwendungen, bei denen die Erkennungsgeschwindigkeit nicht entscheidend ist, können einfache Hall-Effekt-Sensoren wie z.B. der Allegro A3144E verwendet werden. Für Anwendungen, die eine hohe Erkennungsgeschwindigkeit benötigen, wie z.B. bei Geschwindigkeitsmessgeräten, sollten auch schnelle Hall-Effekt-Sensoren wie z.B. die Micronas Sensoren HAL509 oder HAL502 zur Anwendung kommen.
Weiterhin gibt es bei den Hall-Effekt-Sensoren noch verschiedene Ausführungen, z.B: Unipolar, Bipolar und Latch sowie digitale und analoge Sensoren.

Hall-Effekt-Sensoren besitzen i.d.R. drei Pins: VCC (5V), GND und Vout (Signal). Die Pinbelegung des verwendeten Hall-Effekt-Sensors HAL510UA-E ist in der folgend Abbildung dargestellt:

Pinbelegung des HAL510

Pinbelegung des HAL510

Der Testaufbau

Für den Testaufbau werden nur wenige Bauteile benötigt. Die in der Liste aufgeführten Positionen 1 und 5 sind nur zur Vervollständigung mit aufgeführt.

Benötigte Materialien

Hardware:

  1. Arduino oder ein Arduino-Klone (z.B. Freeduino) oder einen Eigenbau Arduino
  2. Einen Hall-Effekt-Sensor wie z.B. den HAL510UA-E-1-A-2-00 von Micronas, der sehr preiswert zu bekommen ist.
  3. Einen kleinen Magneten.
  4. Einen 10KOhm Widerstand.
  5. Eine 9V Battery mit Batterie-Clip.
  6. Anschlussdrähte und ein Steckbrett.

Software:

Arduino IDE

Die Verbindung des Hall-Effekt-Sensor mit dem Arduino

Die Verbindung des Hall-Effekt-Sensors mit dem Arduino ist wirklich einfach. Der VCC Pin des Sensors wird mit dem 5 V Pin des Arduino verbunden. Der GND Pin des Sensors wird mit dem GND Pin des Arduino verbunden. Der Vout - oder Signalstift des Hall-Effekt-Sensors wird mit einem Interrupt-Pin (Digital Pin 2) des Arduino verbunden. Weiterhin ist zwischen dem VCC - und dem Vout -Pin des Hall-Effekt-Sensors ein 10KOhm Widerstand anzuschließen. Dieser wird benutzt, um den Ausgang des Hall-Effekt-Sensors auf 5V zu ziehen. Die Verbindungen werden, wie in der folgenden Abbildung dargestellt, durchgeführt (Beschriftung des Hall-Effekt-Sensors zeigt dabei in Ihre Richtung):

Testprogramme

Erkennen ob ein Magnet in der Nähe ist

/*
  Hall-Effekt-Sensor
  Erkennt einen Magneten mit dem an Pin 2 (Int 0) Hall-Effekt-Sensor HAL510LUA E

  by Frank A. Dullinger
  2017/07/22

  Sensor
  HAL510LUA E
  VCC -> Arduino 5V Pin
  GND -> Arduino GND Pin
  Vout-> Arduino Digital Pin 2

  This example code is in the public domain.
*/


#define Eingang 2                             // Drehzahl-Eingang: Pin2 / Interrupt 0

void setup() {
  pinMode(Eingang, INPUT);                    // Eingangspin auf Eingang stellen
  //digitalWrite(Eingang, HIGH);              // und Pullup-Widerstand einschalten
   
  Serial.begin(9600);

  // Interrupt 0 auf Routine readmicros setzen
  attachInterrupt(0, detectMagnet, FALLING);

  Serial.println("Hall-Effekt-Sensor Test");
}


void loop() {

}


// Interrupt-Routine
// Diese Funktion wird immer dann aufgerufen, wenn ein Magnet vom Arduino erkannt wird
void detectMagnet() {
  Serial.println("Magnet erkannt");
}


 
Erkennen ob ein Magnet in der Nähe ist

Nachdem der Hall-Effekt-Sensor mit dem Arduino verbunden wurde, muss nun noch der Code, den obigen Code mit Copy & Paste in die Arduino-IDE kopieren, hoch geladen werden. Der verwendet Arduino Code erkennt wenn ein Magnet in die Nähe des Hall-Sensor gebracht wird. Dieser sehr einfache Sketch, verwendet den Interrupt Pin 0 (Digital Pin 2) des Arduino.

Jedes mal wenn der Hall-Sensor einen Magneten erkennt, gibt er einen LO-Pegel (0 V) am Vout-Pin aus, dies führt dazu das der Arduino einen Interrupt auf der fallenden Flanke auslöst und die Funktion detectMagnet aufgerufen wird. In dieser wird dann eine Mitteilung an die serielle Schnittstelle ausgegeben. Das Bildschirmfoto zeigt den seriellen Monitor, der die Meldung "Magnet erkannt" ausgibt, wenn ein Magnet in die Nähe des Sensors gebracht wird.

Der Hallsensor bei der arbeit

Arduino und Hall-Ssensor bei der Arbeit

LED mit einem Magneten schalten

/*
  Hall-Effekt-Sensor
  Einfache Schaltfunktion mit dem Hall-Effekt-Sensor HAL510LUA E
 
  Schaltet die interne LED ein
 
  by Frank A. Dullinger
  2017/07/23

  Sensor HAL510LUA E
  VCC -> Arduino 5V Pin
  GND -> Arduino GND Pin
  Vout-> Arduino Digital Pin 12

  This example code is in the public domain.
*/


const int hallSensorPin = 12; // Pin an dem der Hall-Sensor angeschlossen ist

int hallSensorStatus = 0;

void setup() {
  // Pin fuer die interne LED als Ausgang definieren
  pinMode(LED_BUILTIN, OUTPUT);
  // Pin fuerr den Hall-Sensor als Eingang definieren
  pinMode(hallSensorPin, INPUT);
}

void loop() {
  // Status des Hall-Sensors auslesen
  hallSensorStatus = digitalRead(hallSensorPin);

  if (hallSensorStatus == LOW) {    
    // LED einschalten    
    digitalWrite(LED_BUILTIN, HIGH);  
  } else {
    // LED ausschalten
    digitalWrite(LED_BUILTIN, LOW);
  }

}
 
LED mit einem Magnet einschalten

Das letzte

Zum Schluss möchte ich noch ein paar Anregungen aufzählen für die ein Hall-Effekt-Sensor verwendet werden kann.

Das war es erst mal, ich hoffe das diese Informationen für den einen oder anderen nützlich sind. Und viel Spaß beim experimentieren.

 

Da die dargestellten Schaltungen und Programme nur dem Grundverständnis dienen sollen, kann ich für die Funktion keine Gewähr übernehmen.
Wie üblich kann ich für Schäden die durch die Verwendung der hier veröffentlichten Schaltungen und Programme entstehen keine Haftung übernehmen.

Alle genannten und durch Dritte geschützten Marken- und Warenzeichen unterliegen uneingeschränkt den Bestimmungen des jeweils gültigen Kennzeichenrechts und den Besitzrechten der jeweiligen eingetragenen Eigentümer. Allein aufgrund der bloßen Nennung ist nicht der Schluss zu ziehen, dass Markenzeichen nicht durch Rechte Dritter geschützt sind!