Hall-Sensor am Arduino: A3144 und 49E für Magnete und Drehzahl
Hall-Sensor am Arduino: digitaler A3144 und analoger KY-024 / 49E, Pull-up, Pol und Feldstärke, Drehzahl messen, Türsensor, ESP32-Hall-Sensor und Reedkontakt.
Ein Hall-Sensor ist ein kleiner Halbleiterchip, der Vorhandensein, Polarität und Stärke eines Magneten ganz ohne bewegliche Teile erkennt. In Arduino-Projekten zählt er die Drehzahl eines Motors, misst die Fahrradgeschwindigkeit, erkennt, ob eine Tür offen oder zu ist, oder liest die Stellung eines Joysticks. Die Klapphülle, die das Handydisplay abschaltet, das Drehzahlsignal eines PC-Lüfters und die Raddrehzahlsensoren im Auto arbeiten alle mit dem Hall-Effekt. In Bastelsets begegnen dir meist zwei Typen: der digitale A3144, der ein Ein/Aus-Signal liefert, und der analoge 49E (Modul KY-024), der die Feldstärke als Spannung ausgibt.
In dieser Anleitung erklären wir die Physik des Hall-Effekts in einfachen Worten, zeigen den Unterschied zwischen digitalen und analogen Sensoren, ihre Verdrahtung und warum sie einen Pull-up-Widerstand brauchen. Danach erkennen wir mit dem A3144 einen Magneten, messen mit dem 49E, welcher Pol sich nähert und wie viel Gauß das Feld hat, und zählen per Interrupt die Drehzahl eines Motors. Außerdem erfährst du, wozu der eingebaute Hall-Sensor des ESP32 taugt und warum neuere Versionen ihn gestrichen haben, findest MicroPython-Code für den Raspberry Pi Pico und einen Vergleich mit dem Reedkontakt.

Was ist der Hall-Effekt und wie funktioniert ein Hall-Sensor?
1879 entdeckte Edwin Hall, dass an den Rändern eines dünnen, stromdurchflossenen Leiters eine kleine Spannung entsteht, wenn ein Magnetfeld senkrecht zu ihm wirkt. Der Grund: Bewegte Ladungen werden im Magnetfeld seitlich abgelenkt (Lorentzkraft). Elektronen sammeln sich an einer Kante des Plättchens, an der anderen fehlen sie, und der Unterschied ist als Hall-Spannung messbar. Sie ist proportional zur Feldstärke und wechselt das Vorzeichen, wenn sich die Feldrichtung umkehrt. In Halbleitern ist der Effekt viel stärker als in Metallen, aber immer noch nur im Mikro- bis Millivoltbereich. Deshalb stecken in Hall-Sensor-Chips neben dem Hall-Plättchen ein Spannungsregler, ein Verstärker und bei digitalen Typen ein Schmitt-Trigger mit Ausgangstransistor.
Die magnetische Flussdichte wird in Gauß (G) oder Millitesla (mT) angegeben; 1 mT = 10 G. Das Erdmagnetfeld hat nur etwa 0,25–0,65 G und stört Hall-Sensoren deshalb nicht. An der Oberfläche eines kleinen Neodym-Magneten herrschen einige tausend Gauß, aber das fällt mit dem Abstand sehr schnell ab: Bei doppeltem Abstand bleibt grob ein Achtel. Deshalb liegt der Erfassungsabstand je nach Schaltschwelle und Magnetgröße meist zwischen einigen Millimetern und wenigen Zentimetern.
Hall-Sensor-Typen: A3144, KY-024 / 49E und weitere
Nach ihrem Ausgang teilt man Hall-Sensoren in drei Gruppen. Bei unipolaren Schaltern wie dem A3144 geht der Ausgang nur auf LOW, wenn ein Pol (beim A3144 der Südpol) nah genug kommt, und kehrt auf HIGH zurück, wenn sich der Magnet entfernt. Bei Latch-Typen wie dem US1881 schaltet der Südpol den Ausgang in einen Zustand, der Nordpol in den anderen, und der letzte Zustand bleibt erhalten, auch wenn der Magnet weg ist; ideal für Motoren mit abwechselnd angeordneten N- und S-Magneten. Bei linearen Typen wie dem 49E ist der Ausgang kein Schalter, sondern eine zur Feldstärke proportionale Analogspannung: Ohne Magnet liegt sie bei halber Versorgungsspannung, bei einem Pol steigt sie, beim anderen fällt sie.
| Eigenschaft | A3144 (digital) | 49E / SS49E (analog) | US1881 (Latch) |
|---|---|---|---|
| Versorgung | 4,5–24 V | 2,7–6,5 V | 3,5–24 V |
| Ausgang | Open Collector, LOW am Magneten | Analog, VCC/2 ohne Feld | Open Drain, LOW bei S, HIGH bei N |
| Reagiert auf | Nur Südpol (S) | Beide, mit Vorzeichen | S schaltet ein, N aus |
| Schwelle / Empfindlichkeit | Schaltpunkt etwa 70–350 G | Typisch 1,4 mV/G bei 5 V | Typisch ±95 G |
| Pull-up nötig? | Ja (10 kΩ oder INPUT_PULLUP) | Nein | Ja |
| Modulname | KY-003 | KY-024 (mit DO über LM393), KY-035 | Als Modul selten |
| Pins (Beschriftung zu dir) | VCC, GND, OUT | VCC, GND, OUT | VDD, GND, OUT |
Hall-Sensor am Arduino anschließen: der Pull-up-Widerstand
Der Ausgang des A3144 ist ein Open-Collector-Transistor: Mit Magnet verbindet er den Ausgang mit GND, ohne Magnet verbindet er ihn mit gar nichts und lässt ihn offen. Ein offener Pin liest durch Störungen zufällig HIGH und LOW. Deshalb muss der Ausgang über einen Widerstand zur Versorgung gezogen werden; das nennt man Pull-up. Am Arduino schaltest du dafür am einfachsten mit pinMode(pin, INPUT_PULLUP) den internen 20–50-kΩ-Widerstand ein. Bei langen Kabeln, störender Umgebung oder schnell drehenden Wellen liefert ein externer 10-kΩ-Widerstand zwischen Ausgang und Versorgung sauberere Flanken. Der Open Collector hat einen praktischen Nebeneffekt: Versorgst du den Sensor mit 5 V und ziehst den Ausgang auf 3,3 V, können auch 3,3-V-Boards wie ESP32 und Pico ihn gefahrlos nutzen.
| Verbindung | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| A3144 VCC | 5V | VIN (5 V) | VBUS (5 V) |
| A3144 OUT | D2 + INPUT_PULLUP (oder 10 kΩ → 5V) | GPIO 27 + INPUT_PULLUP (oder 10 kΩ → 3V3) | GP15 + PULL_UP (oder 10 kΩ → 3V3) |
| 49E VCC | 5V | 3V3 | 3V3 |
| 49E OUT | A0 | GPIO 34 | GP26 (ADC0) |
| GND (beide) | GND | GND | GND |
Magnet erkennen mit dem A3144
- Mit der beschrifteten Seite des A3144 zu dir sind die Pins von links nach rechts VCC, GND und OUT. Verbinde VCC mit 5V, GND mit GND und OUT mit D2.
- Lade den Code unten hoch und öffne den seriellen Monitor mit 9600 Baud.
- Nähere eine Seite des Magneten der beschrifteten Seite des Sensors. Leuchtet die Board-LED nicht, dreh den Magneten um; der A3144 reagiert nur auf den Südpol.
- Notiere die Abstände, bei denen die LED an- und ausgeht; der Unterschied ist die eingebaute Hysterese des Sensors.
1const byte HALL_PIN = 2; // A3144 OUT
2const byte LED_PIN = 13; // dahili LED / onboard LED
3
4bool lastMagnet = false;
5
6void setup() {
7 pinMode(HALL_PIN, INPUT_PULLUP); // açık kolektör çıkış için pull-up / pull-up for the open-collector output
8 pinMode(LED_PIN, OUTPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 bool magnet = digitalRead(HALL_PIN) == LOW; // mıknatıs varken LOW / LOW when a magnet is present
14 digitalWrite(LED_PIN, magnet ? HIGH : LOW);
15
16 if (magnet != lastMagnet) { // yalnız durum değişince yaz / print only on change
17 Serial.println(magnet ? F("Miknatis var / magnet detected") : F("Miknatis yok / no magnet"));
18 lastMagnet = magnet;
19 }
20}Anders als Reedkontakt oder Taster braucht der A3144 kein Entprellen. Der Schmitt-Trigger im Sensor sorgt dafür, dass der Einschaltpunkt (BOP) mindestens 20 G über dem Ausschaltpunkt (BRP) liegt; selbst wenn der Magnet an der Grenze wackelt, springt der Ausgang nicht hin und her. Ohne beweglichen Kontakt sind die Flanken sauber, und er kann tausende Male pro Sekunde schalten. Denk an die umgekehrte Logik: Mit INPUT_PULLUP liest du LOW, wenn der Magnet da ist, und HIGH, wenn nicht; es ist dieselbe Pull-up-Logik wie beim Taster-Anschluss.
Pol und Feldstärke messen mit KY-024 / 49E
Der 49E ist ein linearer Sensor: Mit 5 V versorgt liegt sein Ausgang ohne Magnet bei etwa 2,5 V und ändert sich typisch um 1,4 mV pro Gauß. Nähert sich der Südpol der beschrifteten Seite, steigt die Spannung, beim Nordpol fällt sie. So misst du nicht nur, ob ein Magnet da ist, sondern auch welcher Pol sich nähert und wie stark das Feld ist: B (G) = (Vaus − Vnull) / 0,0014. Beim KY-024 ist AO direkt der Ausgang des 49E, DO der digitale Ausgang des Komparators LM393, der umschaltet, wenn das Feld die mit dem Poti eingestellte Schwelle überschreitet. Der Code misst beim Start den Nullpunkt und gibt dann das Feld in Gauß und Millitesla sowie den Pol aus.
1const byte HALL_PIN = A0; // 49E OUT ya da KY-024 AO / 49E OUT or KY-024 AO
2const float VCC = 5.0;
3const float SENSITIVITY = 0.0014; // 1,4 mV/G (5 V'ta tipik) / 1.4 mV/G (typical at 5 V)
4const float DEAD_BAND = 20.0; // bu değerin altını yok say (G) / ignore below this (G)
5
6float zeroVolt = 2.5;
7
8float readVolt() {
9 long sum = 0;
10 for (byte i = 0; i < 32; i++) sum += analogRead(HALL_PIN); // 32 ölçüm ortalaması / average of 32 readings
11 return sum / 32.0 * VCC / 1023.0;
12}
13
14void setup() {
15 Serial.begin(9600);
16 delay(200);
17 zeroVolt = readVolt(); // mıknatıs yokken sıfır noktası / zero point with no magnet nearby
18 Serial.print(F("Sifir / zero: "));
19 Serial.print(zeroVolt, 3);
20 Serial.println(F(" V"));
21}
22
23void loop() {
24 float gauss = (readVolt() - zeroVolt) / SENSITIVITY;
25 Serial.print(gauss, 0);
26 Serial.print(F(" G ("));
27 Serial.print(gauss / 10.0, 1); // 10 G = 1 mT
28 Serial.print(F(" mT) "));
29 if (gauss > DEAD_BAND) Serial.println(F("Guney kutbu / south pole"));
30 else if (gauss < -DEAD_BAND) Serial.println(F("Kuzey kutbu / north pole"));
31 else Serial.println(F("Alan yok / no field"));
32 delay(250);
33}Der 10-Bit-ADC des Uno teilt 5 V in 1024 Schritte, ein Schritt sind also etwa 4,9 mV; mit dem 49E entspricht das rund 3,5 G Auflösung. Da die Polbezeichnung je nach Hersteller abweichen kann, prüfe sie beim ersten Versuch mit einem Kompass: Die Nadelspitze, die nach Norden zeigt, dreht sich zum Südpol des Magneten. Der Sensor geht bei etwa ±1000 G in die Sättigung; hältst du einen sehr starken Magneten fast daran, steigt der Wert nicht weiter. Der Nullpunkt kann mit der Temperatur um einige Millivolt wandern, wiederhole die Nullung bei genauen Messungen also kurz vorher.
Drehzahl und Geschwindigkeit mit einem Hall-Sensor messen
Für die Drehzahl eines Motors, Lüfters oder Rads klebst du einen kleinen Magneten auf Welle oder Felge und befestigst den A3144 so, dass der Magnet einmal pro Umdrehung vorbeikommt. Bei jedem Vorbeilauf geht der Ausgang einmal auf LOW. Wer die Impulse mit digitalRead() in loop() fangen will, verpasst bei hoher Drehzahl welche; richtig ist ein Interrupt. Der Code unten misst die Zeit zwischen zwei Impulsen auf die Mikrosekunde genau und berechnet die Drehzahl mit U/min = 60.000.000 / (Periode_µs × Anzahl_Magnete). Kommt 2 Sekunden lang kein Impuls, gilt die Welle als stehend. Wie Interrupts funktionieren, erklärt der Beitrag Arduino-Interrupts.
1const byte HALL_PIN = 2; // A3144 OUT, Uno'da kesme pini (INT0) / interrupt pin on the Uno (INT0)
2const byte MAGNETS = 1; // mildeki mıknatıs sayısı / magnets on the shaft
3const unsigned long MIN_GAP_US = 2000; // 2 ms'den sık darbeler gürültüdür / pulses closer than 2 ms are noise
4const unsigned long STOP_US = 2000000; // 2 sn darbe yoksa durdu / no pulse for 2 s means stopped
5
6volatile unsigned long lastPulse = 0;
7volatile unsigned long period = 0; // iki darbe arası süre (µs) / time between pulses (µs)
8
9void onPulse() {
10 unsigned long now = micros();
11 unsigned long gap = now - lastPulse;
12 if (gap > MIN_GAP_US) {
13 period = gap;
14 lastPulse = now;
15 }
16}
17
18void setup() {
19 pinMode(HALL_PIN, INPUT_PULLUP);
20 attachInterrupt(digitalPinToInterrupt(HALL_PIN), onPulse, FALLING); // mıknatıs gelince LOW'a iner / falls LOW when the magnet arrives
21 Serial.begin(9600);
22}
23
24void loop() {
25 noInterrupts(); // iki değişkeni birlikte oku / read both variables together
26 unsigned long p = period;
27 unsigned long last = lastPulse;
28 interrupts();
29
30 float rpm = 0;
31 if (p > 0 && micros() - last < STOP_US) {
32 rpm = 60000000.0 / ((float)p * MAGNETS);
33 }
34 Serial.print(F("RPM: "));
35 Serial.println(rpm, 0);
36 delay(500);
37}Der Code nutzt eine Sperrzeit von 2 ms; mit einem Magneten misst du damit bis 30.000 U/min, mehr als genug für die meisten Bastelmotoren. Mit zwei oder vier Magneten auf der Welle wird die Messung bei niedriger Drehzahl häufiger aktualisiert; du änderst nur MAGNETS. Verteile die Magnete gleichmäßig, denn einseitiges Gewicht bringt eine schnelle Welle zum Vibrieren. Das gelbe Kabel eines PC-Lüfters ist übrigens ein Open-Collector-Ausgang eines eingebauten Hall-Sensors und liefert zwei Impulse pro Umdrehung; mit MAGNETS = 2 liest derselbe Code die Lüfterdrehzahl. Umfang und km/h-Rechnung für einen Fahrradtacho findest du im Beitrag zum Reedkontakt; die Formel gilt genauso für den Hall-Sensor.
Tür- und Deckelsensor mit Hall-Sensor
Für einen Türsensor kommt der Magnet an den beweglichen Türflügel und der A3144 an den Rahmen, sodass bei geschlossener Tür der Südpol des Magneten zur beschrifteten Seite zeigt. Bei geschlossener Tür ist der Ausgang LOW, beim Öffnen HIGH. Reißt das Kabel, zieht der Pull-up den Pin auf HIGH und das System meldet „Tür offen“; ein Fehler bleibt also auf der sicheren Seite. Zwei Vorteile hat der Hall-Sensor hier: Ohne beweglichen Kontakt verschleißt er weder an vibrierenden Türen noch an Deckeln, die oft pro Sekunde auf- und zugehen, und er erkennt den Magneten sogar durch die Wand eines dichten Gehäuses. Der Nachteil: Er braucht ständig Strom. Der A3144 zieht etwa 4–5 mA und würde einen 2000-mAh-Akku allein in rund 18 Tagen leeren. Für einen Türsensor, der monatelang mit Batterie laufen soll, passt deshalb ein stromloser Reedkontakt besser.
Der eingebaute Hall-Sensor des ESP32
Der ursprüngliche ESP32-Chip enthält einen kleinen Hall-Sensor, den du in den 2.x-Versionen des Arduino-ESP32-Cores mit hallRead() auslesen kannst. Er rauscht aber stark und zeigt nur dann eine deutliche Änderung, wenn ein starker Magnet die Metallabschirmung des Moduls fast berührt; außerdem belegt er beim Messen GPIO 36 und GPIO 39, sodass andere Bauteile an diesen Pins die Ergebnisse verfälschen. Neuere Chips wie ESP32-S2, S3 und C3 haben ihn gar nicht, und weil Espressif die Unterstützung mit ESP-IDF 5 gestrichen hat, gibt es hallRead() im Arduino-ESP32-Core 3.x nicht mehr. Der Code unten lässt sich mit beiden Versionen kompilieren: Unter 2.x gibt er den Mittelwert aus, unter 3.x stattdessen einen Hinweis. Für ernsthafte Projekte ist ein externer A3144 oder 49E am ESP32 immer besser; allgemeine Infos zum Board findest du unter Was ist ein ESP32?.
1// ESP32 dahili Hall sensörü (yalnız orijinal ESP32) / built-in Hall sensor (original ESP32 only)
2void setup() {
3 Serial.begin(115200);
4}
5
6void loop() {
7#if ESP_ARDUINO_VERSION_MAJOR < 3
8 long sum = 0;
9 for (int i = 0; i < 100; i++) {
10 sum += hallRead(); // GPIO 36 ve 39'u kullanır / uses GPIO 36 and 39
11 }
12 Serial.println(sum / 100); // gürültülü, ortalama al / noisy, so average it
13#else
14 Serial.println("hallRead() 3.x cekirdekte yok / not available in core 3.x");
15#endif
16 delay(200);
17}Drehzahl messen mit dem Raspberry Pi Pico (MicroPython)
Am Pico versorgst du den A3144 mit 5 V von VBUS, verbindest den Ausgang mit GP15 und schaltest den internen Pull-up ein; da dieser an 3,3 V liegt, sieht der Pin nie 5 V. Der Code zählt die Impulse per Interrupt und liest den Zähler jede Sekunde aus und setzt ihn zurück. Interrupts beim Auslesen kurz zu sperren verhindert, dass zwischen Lesen und Zurücksetzen ein Impuls hineinrutscht und verloren geht. Mit einem Magneten beträgt die Auflösung dieser Methode 60 U/min; genauer wird es, wenn du wie im Arduino-Beispiel die Zeit zwischen zwei Impulsen mit time.ticks_us() misst.
1from machine import Pin, disable_irq, enable_irq
2import time
3
4hall = Pin(15, Pin.IN, Pin.PULL_UP) # A3144 OUT (sensör VBUS'tan 5 V ile) / A3144 OUT (sensor on 5 V from VBUS)
5MAGNETS = 1 # mildeki mıknatıs sayısı / magnets on the shaft
6count = 0
7last_us = 0
8
9def on_pulse(pin):
10 global count, last_us
11 now = time.ticks_us()
12 if time.ticks_diff(now, last_us) > 2000: # 2 ms gürültü filtresi / 2 ms noise filter
13 count += 1
14 last_us = now
15
16hall.irq(trigger=Pin.IRQ_FALLING, handler=on_pulse)
17
18while True:
19 time.sleep(1)
20 state = disable_irq() # sayacı güvenle oku / read the counter safely
21 pulses = count
22 count = 0
23 enable_irq(state)
24 print("RPM:", pulses * 60 // MAGNETS)Hall-Sensor oder Reedkontakt?
Beide erkennen Magnete, aber auf völlig verschiedene Weise. Ein Reedkontakt ist ein mechanischer Schalter, bei dem sich zwei Metallzungen in einem Glasröhrchen durch den Magneten berühren; er braucht keinerlei Strom. Ein Hall-Sensor ist ein elektronischer Chip ohne bewegliche Teile, der eine Versorgung braucht. Die Faustregel: Reedkontakt für einen selten auslösenden Sensor, der monatelang mit Batterie läuft; Hall-Sensor für schnell drehende Wellen, vibrierende Umgebungen und alles, wo Pol oder Feldstärke gefragt ist.

| Eigenschaft | Hall-Sensor (A3144 / 49E) | Reedkontakt |
|---|---|---|
| Funktionsweise | Halbleiter, keine beweglichen Teile | Mechanischer Kontakt |
| Versorgung | Nötig (etwa 4–6 mA) | Nicht nötig |
| Pol und Stärke | A3144 nur Süd; 49E liefert Pol und Stärke | Pol egal, nur da / nicht da |
| Tempo | Bis zu einigen zehn kHz, saubere Flanken | Hunderte Hz, Kontaktprellen |
| Lebensdauer und Robustheit | Verschleißfrei, vibrationsfest | Millionen Schaltspiele, Glas kann brechen |
| Bester Einsatz | Drehzahl, Geschwindigkeit, Position, Polerkennung | Batteriebetriebene Tür- und Fenstersensoren |
Projektideen mit einem Hall-Sensor
- Fahrradtacho: Ein Magnet an die Speiche, ein A3144 an die Gabel; Geschwindigkeit, Strecke und Durchschnitt auf einem OLED-Display anzeigen.
- Drehzahlmesser für Motor und Lüfter: Miss die Drehzahl eines Gleichstrommotors oder PC-Lüfters und beobachte die echte Drehzahl beim Regeln per PWM.
- Windmesser (Anemometer): Magnet an die Welle eines Schalenkreuzes, aus der Drehzahl die Windgeschwindigkeit berechnen und mit dem ESP32 aufzeichnen.
- Wasserdurchflusszähler: Auch in Durchflusssensoren wie dem YF-S201 steckt ein Hall-Sensor; durch Zählen der Impulse misst du Liter, mehr dazu unter Durchflusssensor.
- Geheimkiste oder Schubladenschloss: Ein im Deckel versteckter 49E öffnet das Schloss nur, wenn ein Magnet genau an die richtige Stelle gehalten wird.
- Tür- und Deckelalarm: Ein Alarm mit A3144, der beim Öffnen einen Buzzer auslöst oder per ESP32 eine Nachricht ans Handy schickt.
Häufige Fehler und ihre Lösungen
| Symptom | Mögliche Ursache | Lösung |
|---|---|---|
| Pin liest zufällig HIGH und LOW | Kein Pull-up am Ausgang des A3144 | INPUT_PULLUP nutzen oder 10 kΩ zwischen Ausgang und VCC |
| Beim Annähern des Magneten passiert nichts | Falscher Pol: Der A3144 reagiert nur auf den Südpol | Magnet umdrehen und senkrecht zur beschrifteten Seite halten |
| Sensor am ESP32 oder Pico instabil | A3144 läuft mit 3,3 V | Sensor mit 5 V versorgen, Pull-up an 3,3 V legen |
| Bei hoher Drehzahl zu niedrige oder springende Werte | Impulse werden in loop() gelesen und verpasst | Interrupt mit attachInterrupt() verwenden |
| 49E zeigt ohne Magnet einen Wert | Nullpunkt liegt nicht bei 2,5 V oder ist gewandert | Nullpunkt beim Start messen und abziehen |
| hallRead() lässt sich am ESP32 nicht kompilieren | Arduino-ESP32-Core 3.x im Einsatz | Externen Hall-Sensor nutzen oder auf Core 2.x wechseln |
Ein Hall-Sensor ist die vielseitigste Art, Magnete berührungslos, geräuschlos und verschleißfrei zu erkennen: Der A3144 liefert ein schnelles, sauberes Ein/Aus-Signal, der 49E Pol und Feldstärke, und mit Interrupts misst du zuverlässig die Drehzahl. Denkst du an den Pull-up, den richtigen Pol und die Versorgung bei 3,3-V-Boards, klappt es beim ersten Versuch. In der BlueGrays-App findest du die Projekte Reedkontakt auslesen und Reedkontakt-Türsensor sowie Taster- und Interrupt-Beispiele, den ESP32-Bewegungsalarm und Pico-Entprellprojekte mit Schritt-für-Schritt-Schaltplänen und Code.
Häufige Fragen
Wie funktioniert ein Hall-Sensor?
Im Hall-Sensor steckt ein dünnes, stromdurchflossenes Halbleiterplättchen. Trifft ein Magnetfeld senkrecht darauf, werden die Ladungen zu einer Kante gedrängt, und zwischen den Kanten entsteht eine kleine, zur Feldstärke proportionale Spannung. Ein Verstärker im Sensor hebt sie an; bei digitalen Typen macht eine Schwellenschaltung daraus ein Ein/Aus-Signal.
Warum braucht der A3144 einen Pull-up-Widerstand?
Der Ausgang des A3144 ist ein Open Collector: Mit Magnet verbindet er den Ausgang mit GND, ohne Magnet mit nichts. Ein offener Pin liest durch Störungen zufällige Werte, deshalb muss der Ausgang über einen Widerstand zur Versorgung gezogen werden. Am Arduino reicht INPUT_PULLUP; bei langen Kabeln und hoher Drehzahl sind externe 10 kΩ besser.
Auf welchen Pol reagiert der A3144?
Der A3144 ist ein unipolarer Schalter und zieht seinen Ausgang nur auf LOW, wenn der Südpol nah genug an die beschriftete Seite kommt. Beim Nordpol passiert nichts. Kennst du den Pol deines Magneten nicht, probiere beide Seiten oder prüfe ihn mit einem linearen Sensor wie dem 49E.
Was ist der Unterschied zwischen KY-024 und KY-003?
Das KY-003 ist ein Modul mit dem digitalen A3144 und meldet nur, ob ein Magnet da ist oder nicht. Das KY-024 trägt einen linearen 49E und einen Komparator LM393; AO liefert die Feldstärke als Analogwert, DO ein digitales Signal nach einer mit dem Poti eingestellten Schwelle.
Aus welcher Entfernung erkennt ein Hall-Sensor einen Magneten?
Das hängt von der Magnetstärke und der Schaltschwelle ab. Ein kleiner Neodym-Magnet löst einen A3144 meist aus 1–3 cm aus; mit einem schwachen Ferritmagneten sind es nur wenige Millimeter. Da das Magnetfeld mit dem Abstand sehr schnell abnimmt, vergrößerst du die Reichweite am wirksamsten mit einem größeren oder stärkeren Magneten.
Kann man den eingebauten Hall-Sensor des ESP32 nutzen?
Der ursprüngliche ESP32 hat einen eingebauten Hall-Sensor, den du im Arduino-ESP32-Core 2.x mit hallRead() liest. Er rauscht aber stark, bemerkt nur sehr nahe, starke Magnete und belegt GPIO 36 und 39. ESP32-S2, S3 und C3 haben ihn nicht, und im Arduino-ESP32-Core 3.x wurde hallRead() entfernt; für ernsthafte Projekte nimm einen externen Sensor.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
LED mit Taster schalten (Push)
Wie bei einer Türklingel: Das Licht leuchtet, solange du drückst, und geht aus, wenn du loslässt. Der Arduino horcht ständig auf den Taster; solange er gedrückt ist, leuchtet die LED, und sobald du de

ESP32 LED-Steuerung mit Drucktaste (Push)
Die LED leuchtet auf, wenn die Taste gedrückt wird und geht aus, wenn sie losgelassen wird. Zeigt, wie der digitale Eingangspin des ESP32 und der interne Pull-up-Widerstand verwendet werden. Dank des INPUT_PULLUP-Modus ist kein externer Widerstand erforderlich.

Reedschalter auslesen
Hast du dich schon mal gefragt, wie der Magnetschalter in Tür- und Fensteralarmen funktioniert? Kommt ein Magnet in die Nähe des Reed-Relais-Moduls, schließt sich der winzige Schalter darin; der Ardui

Türsensor mit Reedschalter
Erkenne an einem Licht, ob deine Tür offen oder zu ist. An der Tür befestigst du einen kleinen Magneten, am Rahmen einen Schalter, der Magnete spürt; ist die Tür zu, liegen beide nebeneinander und die

ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)
Ein intelligentes Sicherheitsalarmsystem, das Buzzer und LED aktiviert, sobald der PIR-Sensor Bewegung erkennt, und gleichzeitig eine sofortige Benachrichtigung per Telegram an den Besitzer sendet. Ein 30-sekündiger Cooldown begrenzt die Häufigkeit wiederholter Alarme; dieser Mechanismus überprüft weder die Gültigkeit der PIR-Erkennungen noch verhindert er Fehlauslösungen. Geeignet für Heimsicherheit, Garagenüberwachung, Lagerräume oder Arbeitszimmer. Mit ESP32-CAM sind Foto-Benachrichtigungen m

Raspberry Pi Pico Taster Debounce: IRQ vs Software Polling
Einmal Taster gedrückt, Code zählt 3-4? Das ist Contact Bounce! Vergleiche 2 Zählmethoden in Serial: RAW Polling (fängt Bounce, zählt falsch) vs IRQ + Software Debounce (genau). Lerne Contact Bounce Physik, Software Debounce, Pin.irq() Interrupt, IRQ_FALLING Trigger, ISR Handler, global Variablen ISR-Sicherheit.

Bewegungsmelder mit Bewegungssensor
Ein einfacher Wächter, der Bescheid gibt, wenn jemand den Raum betritt. Der Bewegungsmelder spürt die Wärme, die der menschliche Körper abgibt; der Arduino lässt die LED leuchten, solange sich etwas b
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 200 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

