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. Jedenfalls im Modell. Warum das Modell trägt und wo es aufhört, ist der eigentlich interessante Teil.
Warum der Offset das Vorzeichen wechselt und das Hall-Signal nicht
Der entscheidende Punkt ist, dass die beiden Spannungsanteile aus verschiedenen Quellen stammen und deshalb unterschiedlich auf die Rotation reagieren.
Der Offset kommt aus der Unvollkommenheit des Kristalls: leicht asymmetrisch platzierte Kontakte, örtlich schwankende Dotierung oder Dicke, mechanische Spannung aus dem Gehäuse (die über den piezoresistiven Effekt den lokalen Widerstand ändert). Elektrisch verhält sich das Element damit wie eine Wheatstone-Brücke aus vier Widerständen, die nicht exakt abgeglichen ist. Diese Verstimmung ist eine Eigenschaft des Materials und sitzt fest im Kristall -- sie dreht sich nicht mit, wenn wir die Kontaktbelegung weiterschalten. Bezogen auf das jeweils messende Kontaktpaar kehrt sie deshalb bei jeder 90°-Drehung ihr Vorzeichen um.
Die Hallspannung dagegen entsteht aus der Lorentzkraft und folgt dem Kreuzprodukt \(\vec{F} = q\,\vec{v} \times \vec{B}\). Dreht man die Stromrichtung um 90°, dreht sich die Kraftrichtung auf die Ladungsträger mit -- und damit auch die Achse, auf der sich die Ladung ansammelt. Genau diese Achse ist aber die neue Messachse. Das Hall-Signal behält sein Vorzeichen relativ zum Messpaar.
Zwei Größen, ein Schaltvorgang, unterschiedliches Vorzeichenverhalten: Das ist der ganze Trick. Die Mittelung trennt anschließend, was sich physikalisch nicht trennen ließ.
Warum vier Phasen und nicht zwei
Zwei gegenüberliegende Phasen genügen bereits, um den Offset erster Ordnung aufzuheben -- das ist die 2-Phasen-Variante, die die Firmware ebenfalls beherrscht. Der volle 4-Phasen-Zyklus mittelt zusätzlich über beide orthogonalen Stromrichtungen und hebt damit auch die Anteile auf, die von einer Vorzugsrichtung im Kristall herrühren: anisotrope Beweglichkeit, gerichtete mechanische Spannung, Gradienten in der Dotierung. Der Preis ist die doppelte Zykluszeit.
Und warum der Restoffset trotzdem nicht null ist
In der Praxis bleibt immer etwas übrig, und die Gründe dafür sind der interessante Teil an der Messtechnik:
- Ladungsinjektion beim Umschalten. Jeder Schaltvorgang koppelt über die Gate-Kapazitäten einen Ladungsstoß ins Signal. Ist er in allen vier Phasen exakt gleich groß, mittelt er sich mit heraus -- ist er es nicht, bleibt ein Rest. Dasselbe Problem in reiner Form steckt im Transfergate-Projekt.
- Unvollständiges Einschwingen. Nach jedem Wechsel braucht das Element eine Weile, bis sich die Potentialverteilung neu eingestellt hat. Wird zu früh gemessen, geht ein von der Phase abhängiger Fehler in den Mittelwert ein. Deshalb schaltet die Firmware den nächsten Biasstrom ein, bevor der alte abgeschaltet wird -- ein stromloser Moment wäre der schlimmste Fall.
- Ungleiche Schalterwiderstände. Unterscheiden sich die Durchlasswiderstände der vier Pfade, ist der Biasstrom nicht in jeder Phase gleich groß, und die Offsetbeiträge heben sich nicht mehr sauber auf.
- Thermospannungen. Temperaturgradienten über dem Element erzeugen Seebeck-Spannungen im Mikrovoltbereich. Die sind langsam gegenüber der Zyklusfrequenz -- was gleichzeitig heißt, dass eine höhere Zyklusfrequenz gegen sie hilft.
Daraus ergibt sich die zentrale Abwägung: Eine höhere Zyklusfrequenz drückt alles Langsame weg -- Thermospannungen, 1/f-Rauschen, Offsetdrift. Sie lässt aber pro Phase weniger Zeit zum Einschwingen und macht die Schaltartefakte relativ größer. Die optimale Frequenz ist genau der Punkt, an dem sich beide Fehlerbeiträge die Waage halten, und sie hängt an Element, Schaltern und Aufbau. Das ist der Grund, warum die GUI einen Schieberegler über sechs Dekaden hat.
Wie es andere machen
Spinning Current ist nicht das einzige Verfahren gegen den Offset, und es ist hilfreich zu wissen, wogegen man es vergleicht:
| Verfahren | Prinzip | Grenze |
|---|---|---|
| Trimmen | Offset einmalig im Werk abgleichen (Laser, Fuses) | fängt nur den Anfangswert; Drift über Temperatur und Alterung bleibt |
| Chopper-Verstärker | Signal wird moduliert, verstärkt, demoduliert -- der Verstärkeroffset bleibt zurück | korrigiert den Verstärker, nicht das Hall-Element |
| Spinning Current | Kontaktbelegung rotiert, Offset wechselt das Vorzeichen | Restoffset aus Schaltartefakten und Einschwingen |
| Kombination | Spinning Current am Element, Chopper im Verstärker | das, was in modernen Hall-ICs tatsächlich steckt |
Der Unterschied zum Chopper ist der wichtigste: Ein Chopper-Verstärker beseitigt den Offset seiner eigenen Eingangsstufe. Der Offset des Hall-Elements selbst sieht für ihn aus wie ein echtes Signal -- er kommt schließlich mit dem Nutzsignal aus derselben Quelle. Nur Spinning Current greift eine Ebene tiefer an, nämlich im Element.
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:
- GaAs hat ~6× höhere Elektronenbeweglichkeit als Si (\(\mu_n \approx 8500\) vs. \(1400\) cm²/Vs) → höhere Empfindlichkeit
- Die HG106C ist ein nacktes 4-Terminal-Element -- kein integrierter IC, keine versteckte Signalverarbeitung
- 4 Kontakte (Aa, Ab, Ac, Ad) symmetrisch → direkt geeignet für Spinning Current
- Verfügbar bei Mouser als Einzelstück
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:
- 2 unabhängige Kanäle (A und B) pro IC → 4 ICs für 8 Schaltpfade
- Kanal A: Strom-Pfad (Bias-Versorgung)
- Kanal B: Mess-Pfad (Sense-Ausgang)
- Schnelle Schaltzeiten (~30 ns) → Phasendauern bis in den Nanosekundenbereich
- TTL-kompatible Eingänge → direkt vom Teensy ansteuerbar
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:
- Verbindung: Auto-Erkennung des Teensy USB-Ports (
usbmodem) - Modi: Stop, 2-Phasen-Zyklus, 4-Phasen-Zyklus, statische Phase
- Frequenz: Log-Schieberegler von 0.1 Hz bis 1 MHz
- Startphase: Wählbar (Ph 1--4, Kontakte Aa--Ad)
- Serial Log: Live-Anzeige der Kommunikation
Geplante Messungen
- Offset-Bestimmung: Statische Phase, kein Magnetfeld → Offset-Spannung pro Kontaktpaar messen
- Spinning Current Kompensation: 4-Phasen-Zyklus, kein Magnetfeld → Restoffset nach Mittelung
- Empfindlichkeit: Bekanntes Magnetfeld (Permanentmagnet mit bekannter Feldstärke) → \(V_H\) vs. \(B\) Kennlinie
- Frequenzabhängigkeit: Offset-Kompensation bei verschiedenen Zyklusfrequenzen (1 Hz bis 100 kHz)
- Si vs. GaAs Vergleich: Gleiche Messung mit einem Silizium-Hall-Element zum Vergleich
Bezugsquellen
Alle Bauteile für dieses Projekt:
- Spinning Current Kit (LM334 + 4× TC4424A + 4× WIMA): blueberrye.io (Werbung)
- LM334MX: blueberrye.io (Werbung) · Mouser · DigiKey
- TC4424A: blueberrye.io (Werbung) · Mouser · DigiKey
- WIMA MKS2 1µF: blueberrye.io (Werbung) · Mouser · Reichelt
- Hall-Element AKM HG106C: Mouser
- Teensy 4.1: PJRC
Weiterführendes
- Hall-Sensoren: Physik, Typen und Praxis -- Theorie, Spinning Current im Detail, Wheatstone-Brücke-Modell
- Die Lorentzkraft -- die Physik hinter dem Hall-Effekt, vom Kreuzprodukt bis zur Hallspannung
- LM334: Einstellbare Konstantstromquelle -- Bias-Stromquelle für Hall-Elemente
- Zephyr RTOS auf dem Teensy 4.1 -- Zephyr/PlatformIO Setup
- Diskretes Transfergate -- verwandtes Projekt (analoge Schalter für Hall-Signale)