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 weitverbreiteter, 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 Milliampere. 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 weitverbreitet 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 weitverbreiteter 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.

Nachtrag: Ein Leser hat tatsächlich ein Fahradtacho nachgebaut und festgestellt, dass sein Reed-Schalter auch bei Erschütterungen auslöst. Erschütterungsresistente Reed-Schalter scheinen damit das spezielle Know-How der Tachometerhersteller zu sein. Ich habe einen Sensor aufgedremelt um mal zu schauen, was wirklich drin ist. Das ist nicht so einfach, weil alles in Plastik vergossen ist, aber man erkennt den Reed-Schalter ganz gut:

Keine saubere Forensik, aber zu erkennen: der Reed-Schalter im Sensor des Fahrrad Tachos

Was auch dafür spricht, dass es sich um einen Reed-Schalter und nicht um einen Hall Sensor handelt, ist zum einen die Tatsache, dass nur zwei Leitungen zum Sensor führen. Zum anderen wird beim Ausrichten des Magnetes an den Speichen ein permanenter Kontakt erzeugt. Das könnt ihr zerstörungsfrei prüfen, wenn ihr mit einem Multimeter an die Kontakte des Halters (oben am Lenker) geht.  

Danksagung

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

18 thoughts on “Hall-Sensoren und Reed-Schalter

  1. Hallo!
    vielen Dank erstmal für diesen tollen Beitrag!
    Ich habe eine Frage zum Blockschaltbild des linearen Sensors. Erstens, wofür steht GND? und leider kann ich die Schaltzeichen nicht zuordnen. Wenn das 49er Modul auch einen digitalen Ausgang hat, inwiefern verändert sich dann das Blockdiagramm?
    Vielen Dank im Voraus,
    Gerta

    1. Hallo Gerta,

      GND = Ground = Masse = VSS oder „Minus“ (Für diese grobe Gleichsetzung der Begriffe möchten mich Elektrotechniker wahrscheinlich erschlagen!). Es ist der mittlere Pin (2). Ein Blockschaltbbild findet sich sowohl für den linearen wie auch den digitalen Hall Sensor im Beitrag. Die Blockschaltbilder finden sich auch in den technischen Datenblättern und werden dort auch näher erklärt.

      Der entscheidende Punkt ist, dass bei dem linearen Hall-Sensor eine Verstärkerschaltung das Ausgangssignal generiert, wohingegen der digitale Hall Sensor nach dem Verstärker einen Schmitt-Trigger besitzt. Der Schmitt Trigger im Prinzip ein Schalter, kennt also nur An und Aus. Ab einem bestimmten Potential kippt dieser Schalter. Hinter dem Schmitt Trigger sitzt die Basis eines Transistors. Ist der Schmitt-Trigger An, dann schaltet der Transistor durch. Dadurch wird die Verbindung GND-OUT leitend. Hoffe das hilft! Wie gesagt, sonst schau mal ins Datenblatt.
      VG, Wolfgang

  2. Lieber Wolfgang,
    ich verwende auch mal das Bastler Du. Vielleicht hast Du mal auf meinem Instagram Account christian.rempel52 den Magic Ball gesehen. Das ist ein D1 Mini mit einem Beschleunigungssensor, einem Acculadegerät und einem Knopfzellenaccu in einer Acrylglaskugel, der Beschleunigungswerte aufzeichnet und per WLAN überträgt.
    Der Akku hält so 20 Min. Dann muss man den Ball öffnen und nachladen.
    Meine Idee ist nun, den D1 und den MMA nur bei Bedarf einzuschalten. Würde einen Reedkontakt verwenden, weil sonst keinerlei Strom gezogen werden soll (z.B. bei Lagerung). Wenn man ihn einmal eingeschaltet hat, soll der D1 Mini anlaufen und selbst dafür sorgen, dass er eine bestimmte Zeit eingeschaltet bleibt. Dann soll sich der D1 Mini praktisch als letztes Lebenszeichen selbst abschalten. Meinst Du ob man das machen kann?
    Herzliche Grüße Christian

    1. Hallo lieber Christian,
      sehr schön, der Magic Ball! Hab ihn mir gerade mal angeschaut. Ich kann zwar ganz gut löten, aber sonst halten sich meine handwerklichen Fähigkeiten in Grenzen. Deswegen bin ich immer sehr beeindruckt, wenn jemand so etwas zaubert.
      Was eine Selbstabschaltung angeht, da habe ich mal was mit einer Waage gemacht. Im diesem Beitrag ganz unten:

      https://wolles-elektronikkiste.de/hx711-basierte-waage

      Ich konnte die Selbstabschaltung mit einem Thyristor realisieren. Das ist im Prinzip ein Transistor, der mit mit einem kurzen Spannungspuls öffnet und solange offen bleibt, wie ein bestimmter Mindeststrom fließt. Für die Unterschreitung des Wertes habe ich gesorgt, indem ich erst die Waage mit Display abgeschaltet habe und den Mikrocontroller dann in den Schlaf geschickt habe. Das sollte auch für deine Anwendung funktionieren.
      Viel Erfolg und vor allem Spaß!
      VG, Wolfgang

  3. Hallo Wolfgang,
    ich lese mich in die Arduinoprogrammierung ein. Für mich wichtig, von klein an meine Erfahrungen zu machen. Meine erste Aufgabe, lernen, wie ich Impulse von Encoderscheiben an DC-Motoren auszulesen, diese sollen dann kleine Modelle, wie auf der Eisenbahnplatte steuern. Ich habe mir die Motore 25GA310-100 12V, JGY-370 – 12V, JGA25-371-6V angeschafft. Jetzt möchte ich lernen über ein LCD-Display die Impulse die der Encoder abgibt, zu zählen. Letztlich soll die Impulszahl eines Tages lineare Bewegungen ansteuern. Schöne Sache und durch deine Internetseiteinhalte habe ich schon mal einen kleinen Fundus. Danke für die Superseiten. Ich hoffe du akzeptierst das Bastler-Du.

    1. Schönen Dank für den Kommentar – und das Bastler-Du kommt mir sehr entgegen! Ich wünsche viel Spaß und Erfolg bei der Umsetzung deiner Projekte!

  4. Reedschalter pellen, also geben unsaubere Signale beim Öffnen und Schließen. Einen 100nF bis 1uF Kondensator parallel schalten. Der Vorwiderstand für den Schalter darf auch nicht zu klein werden.

  5. An Herrn Thomas Mäule,
    in diesem Fall könnte ich mir aber auch einen Reedschalter bzw. Reedsensor vorstellen, weil dieser ohne Betriebsspannung auskommt.

    @Joachim bei solchen Anwendungen wie zB. Tacho kann duch die entsprechende Auswahl und des Reedschalters und die entsprechende Einbaulage das Risiko von Schaltspiele durch Erschütterungen minimiert werden.

  6. Hallo Hallo einen kommentar habe ich nicht ; dafür ne Frage : Bin auf der Suche nach einem Hallsensor Latch denke ich , so bin ich auf deinen Artikel gekommen. Elektronik ist nicht mein Hobby – bräuchte es aber für mein Hobby … ich müsste eine LED 3mm magnetisch dauerhaft An/Aus schalten und habe aus Platzgründen nur eine 3V mini Stabbattarie.
    Vielleicht klappts … Dankeschön erstmal
    Gruß Thomas

  7. Lieber Herr Ewald. Ihre Beschreibung ist klar und einfach gestaltet. Vielen Dank!
    Allerdings hat sich da ein kleiner Fehler eingeschlichen:
    „Der Stromverbrauch des 3144 liegt bei wenigen Millivolt. “
    mfG
    B.S.

  8. Hallo,
    einen Reed-Schalter als Geschwindigkeitsmesser am Fahrrad zu nutzen, funktioniert im Labor. Im Praxisbetrieb hatte ich Schwierigkeiten, denn auf holprigem Untergrund, verändert der Reed-Schalter seine Stellung, unabhängig vom Magnetfeld. Das führt zu Fehlmessungen.

    1. Hallo Joachim, schade, dass das nicht funktioniert hat. Vielleicht geht es mit einem Hall-Sensor? Ich habe noch einmal nachgeforscht und es werden tatsächlich Reed-Schalter in Fahrrad Tachos verbaut, aber genau dieser Knackpunkt mit den Erschütterungen scheint das spezielle Know-How von Sigma & Co zu sein. Wenn du mal nach „vibration resistant reed“ findest du einiges, aber ob die halten, was sie versprechen, weiß ich nicht. Weiteres findest du oben im Beitrag (Nachtrag).

      Ich bin wirklich dankbar für Hinweise dieser Art!

  9. 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.