Hall-Sensoren und Reed-Schalter

Über den Beitrag

Hall-Sensoren und Reed-Schalter sind elektronische Bauteile, die auf magnetische Felder reagieren. Sie funktionieren sehr unterschiedlich, werden aber für denselben Zweck benutzt, nämlich um Schaltungen oder mechanische Vorrichtungen mithilfe von Magneten zu steuern. Das ist der Grund, weswegen ich sie in einem Beitrag gemeinsam behandle. Darum geht’s im Einzelnen:

  • Funktionsprinzip Hall-Sensoren
  • Digitale Hall-Sensoren
  • Linear-Hall-Sensoren
  • Hall-Sensor-Module
  • Hall-Sensor auf dem ESP32
  • Funktionsprinzip Reed-Schalter
  • Reed-Schalter basiertes Fahrradtachometer

Hall-Sensoren

Funktionsprinzip

Fließt ein elektrischer Strom durch ein Magnetfeld, dann wird eine elektrische Spannung senkrecht zum Stromfluss und senkrecht zum Magnetfeld erzeugt. Dieser Effekt wurde von dem Physiker Edwin Hall nachgewiesen und wird deswegen Hall-Effekt genannt. Ursächlich für diesen Effekt ist die Lorentzkraft, die ihr vielleicht noch aus dem Physikunterricht kennt (Drei-Fingerregel). Sehr einfach und mit schönen Zeichnungen wird das hier erklärt.

Der Hall-Effekt ist recht klein. Hall-Sensoren haben deswegen Verstärkerschaltungen integriert. Dabei unterscheidet man Linear Hall-Sensoren und Hall-Sensoren mit digitalem Ausgang. Wenn nichts weiter angegeben ist, dann sind mit Hall-Sensoren meistens die digitalen Vertreter gemeint.

Weit verbreitete Hall-Sensoren: 3144 (digital) und 49E (linear)
Weit verbreitete Hall-Sensoren: 3144 (digital) und 49E (linear)

Digitale Hall-Sensoren

Ein weit verbreiteter, digitaler Hall-Sensor ist der 3144. Den 3144 könnt ihr unter dieser Bezeichnung oder als 3144E oder A3144E o.ä. für wenig Geld bei Amazon, ebay und Co bekommen.

Der 3144 hat die Anschlüsse VCC, GND und OUT. Seine Versorgungsspannung sollte zwischen 4.5 und 24 Volt betragen. Der Stromverbrauch des 3144 liegt bei wenigen Millivolt. Das Blockschaltbild sieht folgendermaßen aus:

Blockschaltbild des Hall-Sensors 3144
Blockschaltbild des Hall-Sensors 3144

Dabei ist der entscheidende Punkt, dass der Transistor zwischen OUT und GND durchschaltet, wenn das auf den 3144 wirkende Magnetfeld eine gewisse Grenze überschreitet. Allerdings ist auch zu beachten, dass die Wirkung des Magnetfeldes davon abhängt, wie die Feldlinien auf den 3144 treffen. Das könnt ihr mit der folgenden, simplen Schaltung testen:

Einfache Schaltung zum Testen des 3144
Einfache Schaltung zum Testen des 3144

Bringt ihr einen Magneten in die Nähe des 3144 Hall-Sensors, so stellt ihr fest, dass die LED nur bei Annäherung einer der beiden Pole leuchtet. Der andere ist scheinbar wirkungslos. Nehmt ihr den wirkungslosen Pol, nähert euch aber von der anderen Seite dem 3144, dann leuchtet die LED wiederum.

Bei welchem Abstand die LED leuchtet, hängt natürlich von der Stärke des Magneten ab. Üblicherweise sind das wenige Zentimeter. 

Mehr als eine LED dürft ihr nicht an den 3144 hängen. 25 Milliampere ist der maximale Strom, der durch OUT als Senke fließen darf.

Der 3144 am Arduino

Am Arduino könnt ihr den 3144 z.B. mit der folgenden Schaltung nutzen:

Hall-Sensor 3144 am Arduino
Hall Sensor 3144 am Arduino

Hier der Sketch dazu:

const int hallPin = A0;
int hallSignal = 0;
void setup(){
  Serial.begin(9600);
}

void loop(){
  hallSignal = analogRead(hallPin);
  Serial.println(hallSignal); 
  delay(1000);
}

 

Und so sieht dann die Ausgabe bei Näherung mit der „richtigen“ Seite des Magneten aus:

Hall-Sensor 3144: Ausgabe am seriellen Monitor
Hall-Sensor 3144: Ausgabe am seriellen Monitor

Die analogRead Funktion habe ich nur aus didaktischen Gründen gewählt, um den scharfen Übergang von HIGH zu LOW zu demonstrieren. In der Praxis sollte man natürlich die schnellere digitalRead Methode wählen. Oder ihr greift direkt auf das Port Input Pin Register zurück, so wie ich es hier beschrieben habe.

Andere digitale Hall-Sensoren

Ich habe den 3144 als Beispiel gewählt, da er sehr weit verbreitet ist. Er hat noch Geschwister, und zwar den 3141, 3142 und 3143. Diese unterscheiden sich vor allem in der Magnetfeldstärke bei der sie durchschalten. Bei der 314x Familie handelt es sich um unipolare Hall-Sensoren, da sie nur eine Polarität des Magnetfeldes erkennen. Daneben gibt es bipolare Hall-Sensoren, welche auf beide Magnetpole reagieren.

Der 3144 ist aber nicht nur ein unipolarer Hall-Sensor, sondern auch ein non-latching Hall-Sensor. Und wenn es non-latching Hall-Sensoren gibt, dann natürlich auch latching Hall-Sensoren. Letztere schalten wie gewohnt bei einer bestimmten Magnetfeldstärke, brauchen dann aber ein entgegengesetztes Magnetfeld um den Zustand wieder zu wechseln.

Linear Hall-Sensoren

Linear Hall-Sensoren unterscheiden sich von den digitalen Vertretern dadurch, dass sie nicht abrupt durchschalten. Vielmehr liefern sie eine Spannung an OUT, die proportional zur Magnetfeldstärke ist. Hier das Blockdiagramm:

Blockschaltbild eines Linear Hall-Sensors
Blockschaltbild eines Linear Hall-Sensors

Ein weit verbreiteter Linear Hall-Sensor ist der 49E. Den 49E könnt ihr unter dieser Bezeichnung oder ähnlich (SS49E, AH49E) für wenig Geld bei Amazon, ebay und Co bekommen. Die Versorgungsspannung ist meistens mit 3 – 6.5 Volt angegeben. Die Stromaufnahme liegt bei wenigen Milliampere.

Der 49E am Arduino

Ohne Magnetfeld liegt die Spannung an OUT bei ca. der Hälfte der Eingangsspannung. Das könnt ihr mit demselben Sketch wie weiter oben auslesen. Die „Schaltung“ ist noch einfacher:

Der lineare Hall-Sensor 49E am Arduino
Der lineare Hall-Sensor 49E am Arduino

Nähert ihr nun einen Magneten an den Linear Hall-Sensor, könnt ihr beobachten wie sich die Spannung an OUT verändert. Ob sie steigt oder sinkt, hängt davon ab, wie das Magnetfeld den Hall-Sensor durchdringt. Mit anderen Worten: es kommt darauf an, ob ihr euch mit dem Nord- oder Südpol nähert und in welchem Winkel die Magnetfeldlinien auf den Hall-Sensor treffen. Entsprechend kann das Ergebnis bei Annäherung so aussehen:

Ausgabe 1 am seriellen Monitor

Oder so, wenn das Magnetfeld umgedreht ist:

Ausgabe 2 am seriellen Monitor

Alternativ könnt ihr auch eine LED zwischen OUT und GND setzen und beobachten wie die LED je nach Magnetfeld heller oder dunkler wird. Dabei ist nur zu beachten, dass der 49E höchstens 10 Milliampere an OUT liefert.

Auch hier hängt die Distanz, ab der eine Spannungsänderung eintritt, natürlich von der Stärke des Magneten ab. Aber typischerweise spielt sich das Ganze im Bereich einiger Zentimeter ab, nicht mehr. Die Spannung ändert sich dabei linear mit der Magnetfeldstärke, solange ihr nicht die Winkel zwischen dem 49E und dem Magneten ändert. 

Und nun könnt ihr eurer Fantasie freien Lauf lassen, wie ihr den Linear Hall-Sensor einsetzen wollt. Im einfachsten Fall nehmt ihr ihn einfach für eine Näherungsschaltung. In der Praxis werden die Teile aber eher für Positionierungsaufgaben aller Art benutzt. Einen kurzen Artikel dazu findet ihr hier.

Hall-Sensor Module

Hall-Sensor Module: 44E, 49E und 3144
Hall-Sensor Module: 44E, 49E und 3144

Man kann sich Hall-Sensoren auch als Module besorgen, aber die meisten bieten eigentlich keine wirklichen Vorteile. Zudem nehmen sie mehr Platz als notwendig ein. Die oben abgebildeten Module des 44E und des 3144 haben eine kleine LED die leuchtet, wenn die Sensoren durchschalten. Das 49E Modul hat keine zusätzlichen Features.

Das unten abgebildete 49E Modul hat neben dem analogen auch einen digitalen Ausgang. Der Punkt, sprich die Magnetfeldstärke, bei der der digitale Ausgang schaltet, lässt sich über das Poti einstellen. Diese Ausführung liefert deshalb einen gewissen Mehrwert. 

49E Hall-Sensor Modul mit Digitalausgang

Der integrierte Hall-Sensor des ESP32

ESP32 Board

Der eine oder andere von euch hat vielleicht schon einmal mit dem ESP32 Board gearbeitet. Dieses besitzt einen integrierten Linear Hall-Sensor, der sich unter der Abdeckung befindet. Wenn ihr das Board in der Arduino IDE integriert habt, dann könnt ihr den Hall-Sensor einfach über die hallRead() Funktion auslesen. Ohne Magnetfeld liefert die Funktion Werte um null. Im Magnetfeld liefert die Funktion je nach Ausrichtung des Magnetfeldes größere positive oder negative Werte. Mit einem recht starken Magneten habe ich Wert bis um +/- 140 erreicht. Nicht so schön ist, dass die Werte unabhängig von der Magnetfeldstärke vergleichsweise stark schwanken (um +/-5 und darüber). Für genauere Messungen würde ich deshalb die oben beschriebenen Hall-Sensoren verwenden.

Annäherung eines Magneten an den ESP32

Reed-Schalter

Beispiele für Reed-Schalter
Beispiele für Reed-Schalter

Reedschalter bestehen aus zwei sich überlappenden Metallzungen, die in einem Glasröhrchen eingeschmolzen sind. Zwischen den Metallzungen ist ein schmaler Spalt. Unter dem Einfluss eines Magnetfeldes ausreichender Stärke und in axialer Richtung richten sich die Zungen parallel zu den Magnetfeldlinien aus, überwinden die Federspannung und berühren einander. Dadurch wird der Kontakt geschlossen. Außerhalb des Magnetfeldes öffnet der Kontakt wieder.

Die Glasröhrchen sind nicht ganz unempfindlich. Alternativ bekommt ihr Reed-Schalter auch wie oben abgebildet mit Kunststoffhülle.

Bei den meisten Reedschaltern liegt der maximale Schaltstrom bei 0.5 und der maximale Dauerstrom bei 1 Ampere. Die maximale Schaltspannung wird meist mit 100 Volt DC angegeben.

Eine sehr einfache Testschaltung kann zum Beispiel so aussehen:

Testschaltung für den Reed-Schalter
Testschaltung für den Reed-Schalter

Die nächsten beiden Bilder demonstrieren noch einmal, dass die Magnetausrichtung in Bezug auf den Reed-Schalter entscheidend ist. Dabei muss ich noch erwähnen, dass sich bei dem verwendeten Magneten der Nord- und Südpol auf den flachen Seiten gegenüberliegen. Also anders als bei einem klassischen Stabmagneten.

Links: Magnetfeldlinien senkrecht zum Reed-Schalter, Rechts: parallel;
Links: Magnetfeldlinien senkrecht zum Reed-Schalter, Rechts: parallel;

Reed-Schalter am Arduino

Am Arduino könnt ihr das Reed-Schalter Signal und die damit verbundene Aktion (hier: LED schalten) voneinander trennen:

Reed-Schalter am Arduino
Reed-Schalter am Arduino

So könnte ein Sketch dazu aussehen:

const int reedPin = 8;
const int ledPin = 12;
void setup(){
  pinMode(ledPin, OUTPUT);
}

void loop(){
 if(!digitalRead(reedPin)){
   digitalWrite(ledPin, HIGH);
 }
 else{
   digitalWrite(ledPin,LOW);
 }
}

 

Fahrrad Tachometer mit Reed-Schalter bauen

Ich habe nicht wirklich ein Fahrrad Tachometer gebaut, sondern möchte nur zeigen, wie es prinzipiell funktioniert. Dazu habe ich einen Magneten provisorisch auf einem Reifen befestigt und einen Reed-Schalter gegenüber an einem Fotostativ in Stellung gebracht. Die Schaltung dazu ist dieselbe wie oben.

Links: Reed-Schalter, Rechts: Magnet
Links: Reed-Schalter, Rechts: Magnet

Der simple Sketch dazu sieht folgendermaßen aus:

int tachoPin = 8;
int ledPin = 12;
void setup(){
  pinMode(ledPin, OUTPUT);
}

void loop(){
 if(!digitalRead(tachoPin)){
   while(!digitalRead(tachoPin));
   digitalWrite(ledPin, HIGH);
   delay(200);
   digitalWrite(ledPin,LOW);
 }
}

 

Und so sieht es dann in Aktion aus:

Reed-Schalter basiertes Fahrrad Tachometer – das Prinzip

Um ein Fahrrad Tachometer daraus zu machen, müsst ihr nun nur noch den Radumfang durch die Zeit zwischen den Schaltereignissen teilen und in Kilometer pro Stunde umrechnen.

Danksagung

Das Beitragsbild habe ich aus drei Bildern bzw. Bildteilen zusammengesetzt. Alle gefunden auf Pixabay.

 

2 thoughts on “Hall-Sensoren und Reed-Schalter

  1. Sehr gute Darstellung mit interessanten Links! Danke.
    Dein Artikel kommt gerade rechtzeitig, da ich gerade mit ESP32 experimentiere.
    Fragen:
    1) welchen Einfluss hat die Temperatur und wie wird sie kompensiert?
    2) Warum hat wohl der ESP32-Chip einen Hallsensor eingebaut?

    1. Hi Andreas, zur Temperaturabhängigkeit der Spannung an OUT bei den Linear-Hall-Sensoren findet man in einigen Datenblättern etwas z.B. hier für einen 49E:

      https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwipp4KQvJrnAhWGIlAKHd3iDj0QFjAAegQIBhAB&url=https%3A%2F%2Fwww.sunrom.com%2Fget%2F324700&usg=AOvVaw3Wk-Lx3QCevmS8Wil92G1H

      Auch für die digitalen Hall-Sensoren findet man Angaben wie sich die Magnetfeldstärke bei dem sie schalten mit der Temperatur ändert. Z.B. hier:

      https://www.elecrow.com/download/A3141-2-3-4-Datasheet.pdf

      Will man den Temperatureinfluss bei den Linear Hall-Sensoren kompensieren, dann muss man das wohl im Sketch über Umrechnungsfaktoren tun. Aber der Temperatureffekt ist nicht übermäßig groß. Bei den meisten Anwendungen wird man darauf verzichten können.

      Warum der ESP32 einen Hall-Sensor hat kann ich auch nicht beantworten. Aber ein guter Hinweis, ich werde den Beitrag noch um diesen Aspekt erweitern. Ich habe den Hall-Sensor mal getestet. Die Werte schwanken ziemlich. Ohne Magnetfeld habe ich Werte zwischen 3 und 13 gemessen. Mit einem starken Magneten + bzw. – 140 auch jeweils um 10 schwankend. Da kann man eine Temperaturkorrektur wohl auch vergessen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.