Spinning Current Hall-Sensor

Integrierte Hall-Sensoren (Allegro, Infineon, TI) haben Spinning Current eingebaut -- aber als Black Box. Man sieht nicht was passiert. In diesem Projekt bauen wir Spinning Current extern auf, mit einem nackten Hall-Element und diskreter Ansteuerung. Alles offen, alles messbar.

Warum dieses Projekt?

Ein nacktes Hall-Element hat eine Offset-Spannung -- auch ohne Magnetfeld liegt am Ausgang nicht exakt 0V. Bei einem typischen Silizium-Hall-Element können das 10--50 mT Äquivalent sein. Das ist ein Problem: Wenn du das Erdmagnetfeld messen willst (~50 µT), ist dein Offset 1000× größer als das Signal.

Integrierte Hall-ICs lösen das intern mit Spinning Current. Aber die Details sind verborgen. Hier machen wir das Ganze von außen, mit einem diskreten Hall-Element und einer eigenen Ansteuerung. So kann man jeden Schritt messen, jede Phase einzeln betrachten, und verstehen was wirklich passiert.

Das Prinzip

Die Theorie ist ausführlich im Hall-Sensor Artikel beschrieben. Hier die Kurzfassung:

Ein symmetrisches Hall-Element hat 4 Kontakte. Durch Rotation der Kontaktbelegung (welcher Kontakt bekommt Strom, welcher wird gemessen) ändert sich das Vorzeichen des Hall-Signals -- der Offset bleibt aber ortsfest im Kristall. Durch Mittelung über einen vollen Zyklus hebt sich der Offset auf.

4-Phasen-Zyklus

Phase Strom Messung Hall-Signal Offset
1 Aa → Ac Ab − Ad \(+V_H\) \(+V_{off}\)
2 Ab → Ad Ac − Aa \(+V_H\) \(-V_{off}\)
3 Ac → Aa Ad − Ab \(+V_H\) \(+V_{off}\)
4 Ad → Ab Aa − Ac \(+V_H\) \(-V_{off}\)

Mittelwert: \(\bar{V} = V_H + \frac{1}{4}(+V_{off} - V_{off} + V_{off} - V_{off}) = V_H\)

Der Offset ist exakt eliminiert -- keine Näherung.

Hardware

Stückliste

Bauteil Typ Bezugsquelle Bemerkung
Hall-Element AKM HG106C Mouser GaAs, 4-Terminal, SOT-143
Gate Driver (4×) TC4424A Mouser Dual MOSFET Driver, schaltet Stromrichtung
Controller Teensy 4.1 PJRC iMXRT1062, 600 MHz ARM Cortex-M7
Breakout-Board SOT-143 Adapter diverse HG106C ist SOT-143 — braucht Adapter für Breadboard

Warum AKM HG106C?

Wir verwenden bewusst ein GaAs-Element statt Silizium:

Warum TC4424A als Schalter?

Die 4 Kontakte des Hall-Elements müssen schnell zwischen Strom und Messung umgeschaltet werden. Der TC4424A ist ein Dual-MOSFET-Gate-Driver:

Pin-Belegung Teensy 4.1

IC Kontakt inpA (Strom) inpB (Messung)
IC1 Aa Pin 31 Pin 30
IC2 Ab Pin 29 Pin 28
IC3 Ac Pin 27 Pin 26
IC4 Ad Pin 12 Pin 11

Jeder TC4424A hat zwei Eingänge: inpA steuert den Bias-Strom, inpB den Mess-Ausgang. Pro Phase wird genau ein inpA und ein inpB auf HIGH gesetzt.

Firmware

Zwei Versionen existieren:

Arduino-Version (HallBiasing.ino)

Einfachere Variante, nutzt Teensy-spezifische digitalWriteFast() und delayNanoseconds(). Für den schnellen Einstieg.

Zephyr RTOS-Version (main.c)

Produktionsnahe Variante auf Zephyr 2.7 via PlatformIO. Verwendet ARM DWT Cycle Counter für Nanosekunden-Timing.

Serielle Kommandos

Beide Versionen verwenden dasselbe Protokoll (USB Serial, Newline-terminiert):

Kommando Funktion
STOP Alle Pins LOW, Leerlauf
CYCLE:n,s n-Phasen-Zyklus (n=2 oder 4), Start bei Phase s (1--4)
FREQ:xxxxx Phasendauer in Nanosekunden setzen
STATIC:s Phase s dauerhaft halten (für Einzelmessung)
STATUS Aktuellen Zustand abfragen

Timing

Der iMXRT1062 auf dem Teensy 4.1 läuft mit 600 MHz -- ein Taktzyklus ist 1,67 ns. Über den ARM DWT Cycle Counter (k_cycle_get_32() in Zephyr, ARM_DWT_CYCCNT direkt) können wir Phasendauern im Nanosekundenbereich steuern.

Default: 10 µs pro Phase → 25 kHz Zyklusfrequenz bei 4 Phasen.

Kontinuierlicher Strom

Ein wichtiges Detail: Beim Phasenwechsel geht der Strom des nächsten Kontakts zuerst an, bevor der aktuelle abgeschaltet wird. So fließt immer ein Biasstrom durch das Hall-Element -- es gibt keinen stromlosen Moment. Das vermeidet Einschwingeffekte.

// Phase transition: next ON before current OFF
pin_high(dev_a[next], inp_a[next].pin);  // next current ON
pin_low(dev_a[cur], inp_a[cur].pin);     // current OFF

Python-GUI

Die Steuerung erfolgt über eine Python/Tkinter-GUI (hall_ui.py), die über USB Serial mit dem Teensy kommuniziert:

Geplante Messungen

  1. Offset-Bestimmung: Statische Phase, kein Magnetfeld → Offset-Spannung pro Kontaktpaar messen
  2. Spinning Current Kompensation: 4-Phasen-Zyklus, kein Magnetfeld → Restoffset nach Mittelung
  3. Empfindlichkeit: Bekanntes Magnetfeld (Permanentmagnet mit bekannter Feldstärke) → \(V_H\) vs. \(B\) Kennlinie
  4. Frequenzabhängigkeit: Offset-Kompensation bei verschiedenen Zyklusfrequenzen (1 Hz bis 100 kHz)
  5. Si vs. GaAs Vergleich: Gleiche Messung mit einem Silizium-Hall-Element zum Vergleich

Bezugsquellen

Alle Bauteile für dieses Projekt:

Weiterführendes


Erstellt: 07.04.2026 · Zuletzt geändert: 20.04.2026